Jump to content




Graffiti v1.7.2 - The first IDE for GUIs

api

54 replies to this topic

#41 Blade88

  • Members
  • 4 posts

Posted 05 October 2013 - 11:48 AM

i think it is a good program ;P ^^

i will test it on my server

#42 Encreedem

  • Members
  • 39 posts
  • LocationVirgo Supercluster

Posted 10 October 2013 - 08:49 AM

View Post44shades44, on 05 October 2013 - 02:33 AM, said:

The biggest advantage so far that I've discovered is better customization of windows. Using the program alone, one of the worst things was I didn't really know what I planned to do, so i set out my window (a todo list) on mainWindow... but then I wanted to add a links page with links to my other windows, so i scrapped the whole .sav file, and remade the todo list on a new Window called Crafting, and the links page on mainWindow. Then I wanted to add a log in page... but that would have to be mainWindow, editing the .sav made this very easy.

-- snip snip snip --

I understand the changing working code, If i knew much LUA, I'd be glad to help. As I said above, the .sav file is, in my opinion, very handy to have access to, and I don't know if you did it intentionally or not, but I find it very easy to understand when it is in my format but anyway, I understand.


I was bored so I looked at your suggestion and implemented a feature which makes the save-file more beautiful and readable. Honestly, it was far easier than I thought it would be. As always the new features will be in the next update.

View Post44shades44, on 05 October 2013 - 02:33 AM, said:

I've made a bit of progress on the program thingy, and i've got some questions (I'm a pretty big LUA noob). But i'll ask you later all in one big batch.

1) Sure, feel free to ask. I'd be glad if I can help.
2) Everybody says it. Now I can finally say it too: "It's Lua, not LUA!" :P
3) It doesn't matter whether you are a Lua noob or not. Practice makes perfect! I knew almost nothing about Lua when I started writing Screens (the old Graffiti). If you want to contribute to this program then feel free to send me your code and I will take a look at it.

I'm also thinking about your suggestion regarding making a save-file for every window. Considering the fact that I would like to make Graffiti like Visual Studio (just realized that I never mentioned that) it would actually make much sense.

Your suggestions and explanations how you are using this program help me very much in my attempt to make Graffiti more user-friendly. Thank you. :D

#43 44shades44

  • Members
  • 17 posts

Posted 11 October 2013 - 02:15 AM

Quote

I was bored so I looked at your suggestion and implemented a feature which makes the save-file more beautiful and readable. Honestly, it was far easier than I thought it would be. As always the new features will be in the next update.

Woohoo :D

Quote

2) Everybody says it. Now I can finally say it too: "It's Lua, not LUA!" :P

Close enough :P

Quote

Your suggestions and explanations how you are using this program help me very much in my attempt to make Graffiti more user-friendly. Thank you.

Any time.

I'm gonna be busy with school for the next month (ish) but I'll continue finding bugs/improvements for you when I can ;D.

#44 Encreedem

  • Members
  • 39 posts
  • LocationVirgo Supercluster

Posted 15 October 2013 - 03:15 PM

I wanted to implement some other features before I release it but I think that it is awesome enough already. Here's the 1.6.1 update: 9JUUk7Dp
Changelog:
- Added "toggle" function type for buttons.
- Added ScrollView container.
- Improved the save-file.
- Bugfixes

Known bugs:
- The progress bar can't be moved or scaled correctly when it faces up. (I still have no idea why this is happening. Still working on it...)

Notes:
Most of the testing went into the containers and the progress bar. There might still be bugs therefore I'm not giving up on asking you guys to report them.

Edit:
Hmmm... I just realized that the ScrollView wouldn't be easy to use because you can't scroll while editing it. I'll find a way around that.

Edited by Encreedem, 17 October 2013 - 01:31 PM.


#45 Encreedem

  • Members
  • 39 posts
  • LocationVirgo Supercluster

Posted 02 November 2013 - 02:07 PM

Here's one minor update (1.6.2) before version 1.7 comes out: igxw4tWP

Changelog:
Bugfix: The ScrollView wan't scrollable in edit mode.
It's not the most beautiful solution but you can scroll the ScrollView by clicking one of the arrows when its selected (which means that you have to click twice to move the scrollbar once).

Added "GraffitiData" folder which contains all data for Graffiti.
I think this is one of the most important changes. Graffiti automatically creates a folder called "GraffitiData" which currently stores all saves, logs, language files, and the settings file.
As far as I know Graffiti is not able to determine where it is (I mean its path) if it's getting used as an API. This is why the folder will be in the root directory "/" by default. You can, however, change the variable "root" to the path which should contain the "GraffitiData" folder.

Windows get saved separately now.
I thought that this could be useful if you wanted to use e.g. a login-window in other projects too. The disadvantage: The "Graffiti.sav" file doesn't work anymore. I'm planning to include an automatic conversion to newer versions so that this won't happen again.

Added Settings-file.
As I mentioned above Graffiti automatically creates a folder which contains all files. For now the settings file allows you to change the project (or save) that you are working on, the color theme (right now there's "Default" and "Windows CC"), whether the "GraffitiData" folder should be hidden or not and the language (more details below). Just ignore the "root" option. I didn't realize that having this option wouldn't make much sense because Graffiti wouldn't know where the settings file is if it doesn't know the root-path.

Added multi-language support.
This feature is not really finished because I still have to make the text of all buttons in the editor-window changeable. Right now I only included "en-US" but if you want to make your own language-pack then you can easily make a copy of the default language file ("GraffitiData/Language/Graffiti.en-US.lang"), change the text and adapt the language in the settings file.


Bugs :(
  • The List object can't be used correctly when it's inside a ScrollView container.
  • The Variable object seems to act strange inside containers (again! :angry: )
  • The ProgressBar object is still messed up when it's facing up.
  • The GraffitiData folder can't be hidden by changing the settings file. (You can do it manually if you want)
I really hope that those are all bugs but I'm pretty sure that there are more. There are always more...
I hope that you like this update and I'm sure that the 1.7 update...
  • will be awesome.
  • will take forever.
One last point before I finally stop writing: I'm already working on the next video. The last one is from version 1.1! That would finally be one less point of my "Things that I should have done a long time ago." list.

#46 44shades44

  • Members
  • 17 posts

Posted 05 November 2013 - 12:35 AM

Quote

Added "GraffitiData" folder which contains all data for Graffiti.
I think this is one of the most important changes. Graffiti automatically creates a folder called "GraffitiData" which currently stores all saves, logs, language files, and the settings file.
As far as I know Graffiti is not able to determine where it is (I mean its path) if it's getting used as an API. This is why the folder will be in the root directory "/" by default. You can, however, change the variable "root" to the path which should contain the "GraffitiData" folder.
Weeeeeeeeeeeeeeeee :D

Sorry I haven't been on in a while, the server I was using this program on went down D:

Looking forward to 1.7

#47 Encreedem

  • Members
  • 39 posts
  • LocationVirgo Supercluster

Posted 15 December 2013 - 04:19 PM

I really wanted to add some other features but I think it's finally time for the 1.7 update. This time I actually focused on adding code instead of changing the existing one (I added more than 1000 LOC).
As usual here's the detailed changelog:

Added CheckBox object.
Added RadioButton object.
Added Slider object.
Added DropDownList object.
Fun fact: It took me hours to change Graffiti so that I could easily add new objects. I never added those objects until now. ._.

Added converter.
The converter should automatically change existing files so that Graffiti won't crash after an update. It doesn't mean that a program will work perfectly after an update. The converter is still very small and I will try to make it better over time.

Added color theme "Fire".
Inspired by the color theme of GravityScore's LuaIDE. I think it looks much better than my "Default" theme but I'm open for suggestions if you think that it could look even better.

Added "load" attribute to some objects and removed the "getVariableValue" and "getProgressBarValue" functions.
By specifying the load-attribute you can simply add a function inside the "UserData" folder which returns the value that the object should have (I hope that makes sense, I'll write some instructions later).

Improved editor GUI.
Pretty much everything on the front-end looks better now.

Implemented "mouse_drag" support for objects and the editor.
You can now move and scale objects by clicking and dragging one of its edges instead of having to click every time. I have to improve the performance while an object is getting dragged but it works for now.

Changed the event handling of buttons: The user-function with the button's objID attribute (instead of the param attribute) as its name gets called now.
Instead of writing
function userFunctions.objectParam()
  ...
end

you have to write
function UserData.objectID()
  ...
end

Added a list editor and removed the old way of setting the elements of a List object.
Another change to the front-end of Graffiti which I really like.

Renamed "elements" attribute of the List object to "Items" (Just trying out whether it looks better that way).
I'm not sure whether this change is good or bad. I simply think the name "Item" makes more sense than "Element".

Renamed most tables to have an uppercase first letter.
I simply needed to do that.

Bugfix: Graffiti crashes after writing something into an Input-object.
Bugfix: The Input object isn't reading correctly when it was inside a container.

Bugfix: The move- and scale-pixels of a ProgressBar object have an incorrect position when it was facing up.
Yes, I finally fixed the bug that I couldn't fix for a very long time. I wrote "absolutey" instead of "absoluteY".
I don't hate this bug because of the mistake itself but because of the fact that the ProgressBar had no problems with the other 3 directions...

The program crashed when you try to load a non-existent window.
Another one of the features that should have been implemented a long time ago.

TL;DR: Lots of awesome changes.

As usual, I really hope that everyone who uses Graffiti likes this update and I hope you have fun making GUIs! :D


EDIT: I was a bit tired when I wrote this. Here is some detailed information:

As I mentioned above, all table names have been modified. Additionally I completely changed the ones I didn't like. One of those changes includes the "userFunctions" table which contains (as you might have guessed) all of your functions which get called after a button click. I renamed the table to "UserData" because I simply wanted to have only one table for all user-related functions and variables.

The table "userLists" has been modified in the following way: It's gone.
Instead of writing something into the userLists-table you can assign the items of a List object in two ways:
  • Use the list editor: By changing the Items-attribute of a List (or the new DropDownList object) you automatically get into the ListEditor-window.
  • Specify the "load" attribute: You can insert a function, which returns the value that an object should have, into the "UserData" table. The load attribute of the object should be the name of the new function.
Example:
-- Variable objects
function UserData.getTime()
  return os.getTime()
end

-- List or DropDownList objects
function UserData.getListItems()
  return { "Listitem 1", "Listitem 2", os.getTime() }
end


A note to the new converter:
Right now the only change the converter would make is changing the "children" attribute of all containers to "Children". That way I simply prevent Graffiti from crashing on startup. The update might still cause some less serious issues. One of them is that the windows don't get loaded properly (a.k.a. "at all").
For now I would simply recommend to recreate the windows if necessary.

Now to the last (and most annoying) point: The new video.
I'm sorry but I'm still preparing everything. I wanted to wait for 1.7 because this is the update which mostly changed the front-end of Graffiti's editor. Making a video before the update would simply make no sense in my opinion.

I hope I mentioned everything now, otherwise I'll make this post even longer! ^^

Edited by Encreedem, 16 December 2013 - 10:27 AM.


#48 Encreedem

  • Members
  • 39 posts
  • LocationVirgo Supercluster

Posted 16 January 2014 - 01:50 PM

Hey Guys! I remembered that I didn't write any instruction for version 1.7, so I somehow felt obligated to say that I've finally added some instructions which include pretty much everything you have to know to use Graffiti.
(Actually I got reminded by a guy called "Віталій Ноуль" on YouTube)
I hope that this helps everyone who's using Graffiti and that nobody minds the fact that I kinda keep necroing this thread on a regular basis. ^^

#49 apoc123

  • Members
  • 34 posts

Posted 18 February 2014 - 12:52 AM

Awsome program pls keep the features and updates coming

#50 surferpup

  • Members
  • 286 posts
  • LocationUnited States

Posted 18 February 2014 - 03:03 PM

Very cool. Nice IDEa.

#51 Encreedem

  • Members
  • 39 posts
  • LocationVirgo Supercluster

Posted 19 February 2014 - 02:07 AM

Hey, I just realized that this project apparently can't die and that it's still great to hear compliments! ^^
Of course I'm still working on Graffiti but I'm also a little bit busy at the moment, therefore the next update will take longer than the other ones. On the positive side: It will be awesome.

Also: YAY, over 50 posts! Don't you guys have anything better to do!? :D

#52 FlashingLight

  • Members
  • 70 posts

Posted 06 March 2014 - 03:04 PM

When i make a button, i click on it, click attributes and then whenever i click on a button id or button text it gives me an error: 3447:assertion failed.
Pls fix this if you can.. :)

#53 TechMasterGeneral

  • Members
  • 149 posts
  • LocationUnited States

Posted 06 March 2014 - 05:18 PM

I for some reason.. can't figure out how to get the gui's i made working... it won't even draw the screen correctly... maybe i'm calling the functions wrong.... if you can help that would be great.

#54 Encreedem

  • Members
  • 39 posts
  • LocationVirgo Supercluster

Posted 07 March 2014 - 08:51 AM

View PostFlashingLight, on 06 March 2014 - 03:04 PM, said:

When i make a button, i click on it, click attributes and then whenever i click on a button id or button text it gives me an error: 3447:assertion failed.
Pls fix this if you can.. :)
This bug has already been reported and I fixed it. I just forgot to upload a new version.
Here it is: YE2WetaX (It's only a version which prevents Graffiti of crashing because of this bug. Other features or bugfixes are not included.)

View PostLuaCrawler, on 06 March 2014 - 05:18 PM, said:

I for some reason.. can't figure out how to get the gui's i made working... it won't even draw the screen correctly... maybe i'm calling the functions wrong.... if you can help that would be great.
Of course I can help. I just need more info e.g.
  • Are you using the newest version?
  • Did you create the GUI using the graphical editor, your code or by editing the save-file?
  • Can you send me your code and window-files? I'll take a look at them if you want.
I planned to do this about 6 months ago but I'm making a video right now in which I will explain how to make your GUI and how to use it. Until then, if you haven't already done that, you can check out the instructions at the bottom of the original post.

I hope I could help everyone, otherwise feel free to post again or pm me.

#55 TechMasterGeneral

  • Members
  • 149 posts
  • LocationUnited States

Posted 07 March 2014 - 02:58 PM

View PostEncreedem, on 07 March 2014 - 08:51 AM, said:

View PostFlashingLight, on 06 March 2014 - 03:04 PM, said:

When i make a button, i click on it, click attributes and then whenever i click on a button id or button text it gives me an error: 3447:assertion failed.
Pls fix this if you can.. :)
This bug has already been reported and I fixed it. I just forgot to upload a new version.
Here it is: YE2WetaX (It's only a version which prevents Graffiti of crashing because of this bug. Other features or bugfixes are not included.)

View PostLuaCrawler, on 06 March 2014 - 05:18 PM, said:

I for some reason.. can't figure out how to get the gui's i made working... it won't even draw the screen correctly... maybe i'm calling the functions wrong.... if you can help that would be great.
Of course I can help. I just need more info e.g.
  • Are you using the newest version?
  • Did you create the GUI using the graphical editor, your code or by editing the save-file?
  • Can you send me your code and window-files? I'll take a look at them if you want.
I planned to do this about 6 months ago but I'm making a video right now in which I will explain how to make your GUI and how to use it. Until then, if you haven't already done that, you can check out the instructions at the bottom of the original post.

I hope I could help everyone, otherwise feel free to post again or pm me.
I'm using 1.7 and i made the windows with the graphical editor...
here is the link to the window files... i just can't figure out how to get it to implement...
https://copy.com/zt0IKpBaS1DUzGtF





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users