Logic Gui 2.0 Released

BlitzMax Forums/MaxGUI Module/Logic Gui 2.0 Released

jsp(Posted 2007) [#1]
Logic Gui Version 2.0 is released

Those who don't know Logic Gui yet, it's an easy to use feature rich Gui Designer.
There is a free and a full version available (including help)!
Forum discussion of version 1.x : http://www.blitzbasic.com/Community/posts.php?topic=65578
Logic Gui Home Page: http://jsp.LogicZone.de and Forum

Updates:

Version 2.3
- Unlimited undo / redo - Gadget Morphing - Syntax highlight - Layout Control window...

Version 2.2
- New window design, Grid and Snap - Window Anchor Points - Raw Event Support - Fit Client Area...

Version 2.1
- LogicXML version 1.1 - Language Import - XML Menu Loading...

Main new features in Version 2.0 :

Multi Language Support
– Powerful but easy to use. Define the languages needed, all the administration is done by Logic Gui.
Gui to XML Export
– Let Logic Gui create a XML file with all gadget properties, structured as your Gui is.
XML to Gui Import
– Let Logic Gui create a bmx source file, which automatically loads the xml data into your Gui. Separate the values from your code!
LogicXML
– A module which enables you to load xml data into your Gui easily .

Use the link in the signature to check out all news.


TaskMaster(Posted 2007) [#2]
You should write a plugin for BLIde for this thing.

If it was closely integrated to the IDE, it would be great.


jsp(Posted 2007) [#3]
Haven't tried BLIde yet. Need to check how the plugin interface looks like.
But also in Logic Gui there is already some integration to your editor. When editing a function you can call your favorite editor and Logic Gui sends the complete source and also the function you want to work on. You can then do all your things you want to do in your normal programming environment and when you finish Logic Gui catches the output. This is all done on one single click!
The only prerequisite is, that the editor should be able to be started with several files (but even that can be customized in the ini file).
It's may just the other way round, so could be a good idea to see how BLIde works.


ziggy(Posted 2007) [#4]
I'm working on a new PlugIn interface for the next BLIde major update that will make integration of this kind of applications very easy. I'll give more information if anyone is interested as soon as it gets done. Anyway, it will take a couple of months or so to be done.


jsp(Posted 2007) [#5]
OK, i have installed BLIde and check if the integration works (at least from Logic Gui). What i have seen is, that i can send BLIde one file only, but not two.

@Ziggy Is it true that BLIde does not open a tab for every file which comes as parameter?
If you are writing a new plugin interface let us know here when ready and we can may integrate both programs.

@TaskMaster So, if you like to use BLIde from Logic Gui you need to edit one value in the ini file and Logic Gui will only send the function currently working on. That works here for me just fine.


jsp(Posted 2007) [#6]
I have uploaded a small language + xml example to the user area which can be downloaded with the LogicXML module. As things are getting more complex i thought that's may a good idea.
Tell me if it works for you.


TaskMaster(Posted 2007) [#7]
Sorry, I was thinking more integrated, along the lones of changes made in BLIde affecting Logic_GUI and vice versa.

Like if I were to fire up BLIde, then use it to start Logic_GUI. I design a form and the class appears in BLIde. Then, updates made in BLIde being seen in Logic_GUI and vice versa. If I change the CreateWindow line in BLIde and change the width or height, then that change being in Logic_GUI the next time I start it up. So, changes in one do not over write the other.

Does that make sense?


ziggy(Posted 2007) [#8]
Yes, this would be the perfect functioning for a RAD on BLIde, and this will be possible with the new BLIde SDK, but this new SDK will come at september or october.


jsp(Posted 2007) [#9]
@TaskMaster
Yes of course that makes sense and i understand that, but gave the explanation above just to let you know, you can do something about from Logic Gui.
The problem i see when transferring code from BLIde to Logic Gui might be that you coded no static values. Like:
CreateWindow:TGadget(name$,x,y,w,h,group:TGadget,style)
or
CreateWindow:TGadget(“”,((x/2)*percentage)/100,y,w,h,group:TGadget)

So where is the position of the window, what is the title? Who can say what is actually inside those variables? Or even worse when you start using formulas. What is the exact value now? You need to compile...

I can write a parser for MaxGui commands but this would solve only a small part of the problem, because what happens to the eventqueue and functions called by an event. While all this is no problem when it stays intact in Logic Gui and calling an editor (as it is now), it could be a huge problem the other way round. Could be interesting what the BLIde SDK can do about it.


Stu_ovine(Posted 2007) [#10]
Nice update ....


ziggy(Posted 2007) [#11]
@Jsp is logicGui being written in BlitzMax?


jsp(Posted 2007) [#12]
Yes, all done in BlitzMax and MaxGui.


jsp(Posted 2007) [#13]
Version 2.1 is out.

Major improvements:
- LogicXML is updated to version 1.1 - New functions are GetMenuItem and SetWindowMenu!
- Logic Gui can create now source to load a complete menu from xml.
- You can now import a language file.

With this new update you are now able to load a complete menu during runtime and not only the text! That means the menu-structure can change without recompiling the source. A user could add a hotkey of his own choice or you could reorganize your menu and move an entry to another place.

Import a language file! The problem with foreign languages is, that you may not know the correct word or spelling. So if you decide to go for a multi language application, it is may wise to have somebody who talks the language as mother tongue. The idea is now to spread the program together with the xml file and let people/user fill in the right words. You can then collect from various sources and import all pending languages without extra work. As the xml file contains also the 'comment' of Logic Gui you can give extra information for best results.

As usual: Check out the news on my website for all details and pictures (use the link from the signature)


Stu_ovine(Posted 2007) [#14]
Small bug

No global/Local definition code is generated for the window.

i.e. windowname:CreateWindow:TGadget(......


jsp(Posted 2007) [#15]
OvineByDesign,
could you confirm that it happens only to the main window and only for the Global and Field definition?!
I found, that i missed the main window when jumping into the header function. This is fixed now and will be in the next update. In the meantime you could put the Global definition in the Header file instead, that should work just fine.
Thanks for reporting.


SpaceAce(Posted 2007) [#16]
I bought LogicGUI a few days ago. I like it a lot but I have a few suggestions and a couple of bug reports. I haven't read through every post in every LogicGUI discussion, so sorry if these are duplicates.

Bug 1: Let's say I am editing a gadget called "Widget1" in the Gadget Control Center. I adjust Widget1's height, width, and so on, click "update", then hit the little green "run" arrow to preview my layout. When I close the preview window, Widget1 is still in the Gadget Control Center window, and the program allows me to change values and click "update", but no changes are made to the actual Widget1 object. I have to deselect and re-select Widget1 to make changes after running the code from LogicGUI.

Bug2 + suggestion: I have a vertical splitter. One the left, I have a tabber and a listbox. On the right, at the top, I have a panel. In the right-hand side of the splitter, under the panel, I created a scroll panel. When I tried to run the code, I got a "Duplicate identifier" error. LogicGUI generated the code like this:
Local ScrollPanel1_Type:TScrollPanel = TScrollPanel.Create:TScrollPanel( 221,37,578,563,2000,2000,MainWindow:TGadget,0,19 )
Local ScrollPanel1_Main:TGadget = ScrollPanel1_Type.MainPanel
SetGadgetLayout( ScrollPanel1:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_RELATIVE,EDGE_ALIGNED )
Local ScrollPanel1:TGadget = ScrollPanel1_Type.VirtualPanel

If you look closely at the bottom two lines, you'll see they should be swapped. SetGadgetLayout creates ScrollPanel1 then the next line tries to create a Local ScrollPanel1. Now I cannot preview my layout. Whenever I want to test my layout, now, I have to generate the code, go into the editor, manually swap those two lines and then compile. That leads me to my suggestion (you may already be doing this, but the error above made me think of it): It would be great if you made sure the LogicGUI code was SuperStrict compatible.

A few suggestions: Drag-on rulers would be very useful. I am thinking along the lines of the rulers in Photoshop that you can drag onto the canvas in order to align stuff and give gadgets extra places to snap to.

LogicGUI really needs an undo command. Because of all the grouping and the complicated layouts that can be created, it is very easy to majorly screw something up by accidentally resizing or moving a bunch of gadgets. An undo feature would really be nice.

The "snap" feature doesn't work very well for me. I find it very hard to make use of snapping objects to the grid. Sometimes, items move very jerkily as I try to slide them to the left and they want to snap back to the right and most of the time, I end up off by a few pixels because it is really easy to move gadget after it has snapped. Even when I am very careful with my trackball, I find it easy to nudge a gadget one or two pixels even after it has snapped. I think this has something to do with the snap only working when you are moving in a certain direction, which is counter-intuitive.

Also, I would really like to see snap work when resizing a gadget. For instance, if I drag a panel to the right, I would like that right edge to snap as I drag.

It would be nice to be able to see the grid on top of the gadgets. Right now, once you lay a gadget on top of the grid, the grid is gone. It would be nice to have a "bring to front/send to back" for the grid.

FInally, I wish LogicGUI would warn me when I try to put a gadget in an illegal place. It took me forever to figure out that I couldn't put stuff at 0, 0 relative to parent gadgets. I would design a layout, hit "run" and my window would be empty. I finally realized that LogicGUI wasn't generating code for any of my gadgets because they were one pixel too far to the left or right, or one pixel too wide or tall.

I hope you find some of that useful.

SpaceAce


jsp(Posted 2007) [#17]
Hi SpaceAce,
Bug1 is confirmed and fixed!
Bug2 is also confirmed and fixed!
The source code created by Logic Gui 'is' SuperStrict compatible! If you ever encounter anything else please let me know. In the above bug there were only two lines swapped and SuperStrict is turned on as default in the Header file.

Drag-on rulers are on my to do list, but didn't have any priority. Others out here who want them, i can push them up a bit in my list...

Interesting that nobody ever asked for a undo, i was waiting for it :) There will be an undo for certain functions, but i have no date yet.

The snap is snapping to the top left corner. When moving fast the snap is suppressed to avoid jumping. If you move slow the snap is snapping when in range of the grid. This range can be adjusted in the ini file. So when using a coarse grid you can position your gadget everywhere in between without problems, when coming close to the grid the gadget will snap. I didn't have any plan to snap to the right but can put it on my list. When using snap may use the magnifier to verify.

I never saw a grid on top, but that can be may useful and should not that hard to do. So – wish granted :) But i wonder if you could use the Layer Window. Please open it and select all layer on top and move the slider on the right towards zero. This will make your gadgets shine through and your grid underneath visible.

But for the last point i have to say sorry, there will be no warning. We had some discussion about that before and i took out all references in the code to prevent putting gadgets at 0,0 - i will not put them back. Once you know it should be ok (it's somewhere in the docs and is used by the parser), but can be also very useful, because you could 'park' your gadgets easily and fast just outside and there will be no source for them, best during trying several things out. Move them back and they are active again you don't have to delete them and re-create afterwards.

Thanks for reporting all this, very appreciated.

I can send you a new version this weekend if that's ok.


SpaceAce(Posted 2007) [#18]

Bug1 is confirmed and fixed!
Bug2 is also confirmed and fixed!
The source code created by Logic Gui 'is' SuperStrict compatible! If you ever encounter anything else please let me know. In the above bug there were only two lines swapped and SuperStrict is turned on as default in the Header file.


Great!


But i wonder if you could use the Layer Window. Please open it and select all layer on top and move the slider on the right towards zero. This will make your gadgets shine through and your grid underneath visible.


Actually, I have all windows open at all times. It didn't occur to me to adjust transparency so I could see the grid. I will try that next time I use LogicGUI.

As for the snap, I think it would work better if it snapped from any direction.


But for the last point i have to say sorry, there will be no warning.


Well, it's your product and your decision. Can I ask why you sound so stern about this issue?


I can send you a new version this weekend if that's ok


That'd be great, I look forward to it.

SpaceAce


jsp(Posted 2007) [#19]
@SpaceAce and OvineByDesign check your mail for the last fixes and changes.

If anybody else needs an update before the next release, pls let me know.


SpaceAce(Posted 2007) [#20]
jsp - I've received the update and sent you an email with comments as you asked. The new snap behavior is fantastic, great work.

SpaceAce


tonyg(Posted 2007) [#21]
Hi JSP,
I thought I would work through Assari's MaxGUI tutorials but using LogicGui to create each example.
The first tutorial uses
SetStatusText MyFirstWindow, "My current size (w,h) is " + ClientWidth(MyFirstWindow)+ "," + ClientHeight(MyFirstWindow)

.
1) Is there a way I can use function returns in the SetStatusText field of Window properties / View tab?
I'm guessing I can't and just need to edit the source.
2) Why is my Setstatustext field divided into 3 segments in LogicGui 2.1?
The .pdf suggests a single field.


jsp(Posted 2007) [#22]
@tonyg
1. Yes you can, it's just a bit 'static' because the SetStatusText is called during creation of your gui and never again.
For your example Type: My current size (w,h) is " + ClientWidth(MyFirstWindow)+ "," + ClientHeight(MyFirstWindow)+" in the View/Tab.
Notice the missing “ at the start and the leading “ at the end, that's all.

2. I know the help is already quite big, what can i do... The change happened in Version 1.3! :) So if you look there you will find it. Nevertheless, the three fields are there for left, midlle and right justified text. Nothing special, just for convenience.

Hope this helps


tonyg(Posted 2007) [#23]
Super stuff. A bit fiddly but works fine.


Filax(Posted 2007) [#24]
Great !


tonyg(Posted 2007) [#25]
Hi jsp,
I might be doing something wrong but attempting to create the following from Assari's tutorial using LogicGui:

Notice the SetStatusText for the mainwindow (mywindow) is at the end of the loop.
However, adding SetStatusText within LogicGui adds just after the creation of MYWindow.
I can change the source no problem but LogicGui keeps changing it back. It's a shame as it is useful for debugging while creating the forms.
Is this possible? Am I missing something simplce? If so, what is the best way of doing it
or am I being too lazy?


jsp(Posted 2007) [#26]
@tonyg
No i don't think you did something wrong. Logic Gui adds the SetStatusText command always gadget related, but you need it inside the event loop. Normally this is not needed as all events are handled and you could put any command in the specific event function, but you found a good example where it make sense to have also access to the inner loop itself to be event unspecific. I can add a raw event function or a add an inner loop file. I will check it this weekend.


tonyg(Posted 2007) [#27]
thanks jsp.
I appreciate any effort to include this sort of thing but I 'm not really expecting it. I'm simply doing this to get the hang of creating the forms rather than find issues with LogicGui.


Dreamora(Posted 2007) [#28]
Definitely great app.
Speed up the creation process quite far.

The only issue I have right now is the highly unstructured (tab intend wise) output, that thats luckily only a cosmetic issue, no bug :)


jsp(Posted 2007) [#29]
@tonyg and SpaceAce
Please check your mail.

@Dreamora
Thanks.
The rule for the indent i put should work like this: Every command related to a gadget get a tab indent – to see immediately where it belongs to. Every gadget on top of a panel or other container gadget gets also an indent, this way you can directly see who is the parent of the gadget you are may looking for. Didn't come up with a better idea. If you don't like to have always a full tab as indent i could make it may customizable via the ini file to one space or so. What do you think?


Dreamora(Posted 2007) [#30]
I would prefer some kind of setting there.

Problem is that I have a "deeper" kind of hierarchy and if I hadn't a 1680x1050 screen, I would be unable to get the lasted items on the screen without a wrap already, which I think is a serious problem (on my tablet *1024x768*, the whole thing isn't readable anymore)

By replacing the tabs with a single space, it would be much more readable.

But otherwise, the "tabbing" behavior is fine as it helps getting the hierarchy without having to jump up and down the tree.

The only other thing that would help the problem would be an empty line between items on the same hierarchy level. With 50 gadgets and a few menues it gets quite overloaded.


tonyg(Posted 2007) [#31]
The raw file works very nicely.
I'm not sure whether I prefer seperate files or a tabbed entry field within LogiGui itself.
I keep having to stress thought that this is all personl 'nice to haves'. The application has already gone far beyond what I expected when I bought it.


jsp(Posted 2007) [#32]
Just for information:
I am the next seven days without mail and can't answer any questions or process any orders of Logic Gui during that time.
Thank you for understanding.

The next release of Logic Gui is scheduled for the end of this month and will bring quite some nice improvements (new window design) and comfort (smarter container handling) and a lot more.


jsp(Posted 2007) [#33]
Version 2.2 is released!

Major improvements:
New window design and handling
New grid window with better snap
Window anchor points
Automatic fit client area function
Automatic container sorting during paste
and more...

With the new window design it is far better to adjust your gadgets. Have all window details visualized and access the individual controls of it via a double click on the design counterpart.
Use the window anchor points together with x and y offsets to position your windows easily.
The 'fit client area' function stretches your gadgets relative to the parent gadget no matter which type.

All together there are 42 improvements which again saves your time during gui creation.

As usual: Check out the news on my website for all details and pictures (use the link from the signature)

I have also added screenshots in XP style from Logic Gui, all others were still done in W2K standard. Have a look if interested. (found under the info page)



Dreamora(Posted 2007) [#34]
definitely a great release :)


jsp(Posted 2007) [#35]
Thanks,
did it help for your display problem? I tried one space instead of a tab, but for me personally that was not enough, may ok with two though.


jsp(Posted 2007) [#36]
LogicGUI really needs an undo command. Because of all the grouping and the complicated layouts that can be created, it is very easy to majorly screw something up by accidentally resizing or moving a bunch of gadgets. An undo feature would really be nice.


I just finished the undo type. You will be able to undo / redo all gadget related steps in a session! As this undo now monitors all events (and i have a lot of them) i would much appreciate to have this more tested before release. If someone has some spare time to do so, please post.


tonyg(Posted 2007) [#37]
I *might* be able to try it out as I'm hoping to write a MaxGUI application soon but can't promise anything.
.
In addition, I have a request.
If I make changes to a gadget's properties but then switch tabs, can my changes be remembered when I switch back?

<EDIT> In addition, any chance of an Image Button Special Gadget?


jsp(Posted 2007) [#38]
Thanks tony, that's quite ok for me. Just any report would help. I'm testing already a lot but there are so many possible combinations...

For your request:
The idea behind the system now was to be prepared for a future possibility to change groups of gadgets in one go. So e.g. All selected gadgets or all buttons, something like this. If you than apply all tabs on all gadgets that would not be nice so that is the reason you have to apply on tab level.
But having said that i just got an idea, because now there is an undo we didn't had before.
Please check your mail!

Image buttons are on the list!


tonyg(Posted 2007) [#39]
Will do.
Another quick question.
How do I parent a gadget to a tabber using LogicGUI?
The aim is to have each tab associated and display a different gadget when selected.
Currently, I use the method in the documentation to add the gadget into an array where the index number matches the tab number.
If this could be a Special Gadget it would be handy.


jsp(Posted 2007) [#40]
Place a tabber, double click and open the properties, select Items, and enable the items. In the Textbox type (example) Tab1,Tab2,Tab3 and hit ok.
The tabber has now three tabs, switch between them by clicking on them. Move your gadgets on every tab as needed. Logic Gui will do the rest.


tonyg(Posted 2007) [#41]
Move your gadgets on every tab as needed. Logic Gui will do the rest.

I did everything up to this point.
I have a tabber with 3 tabs.
On tab1 I want a treeview so I :
1) Select tab1
2) Create my treeview
3) Position the treeview over tab1
Is that right?
I then do the same with tab2 which is a listbox.
When the application should selecting tab1 showgadget treeview1 and selecting tab2 showgadget ListBox1?
<edit> Hold on. I have created a smaller text form and it DOES do that. Thats super. Just need to get it to do it in my more complicated form.
Very very useful. I *do* hope LogicGui is selling well as it deserves to.
<edit2> OK, my gadgets were a bit too big so, I think, we deselecting the tab. Made them a bit smaller and it works superbly (and looks better).


jsp(Posted 2007) [#42]
If you have for example your listbox and this listbox should cover the complete inner area of one tabber/tab then just select the listbox (should stay inside the tabber) and choose from the popup menu 'Inside Container' -> 'Fit client area' and your listbox gets automatically adjusted to the biggest possible area without clipping. So you don't need to move it around by hand and may miss the gadget edge.


jsp(Posted 2007) [#43]
Version 2.3 is released!

Major improvements:

- Unlimited undo and redo
- Gadget morphing
- Syntax highlight in the build in editor
- Layout Control window
- Print
- and a lot more...

Very nice new time savers can be found in this version. The undo alone can help creating your form in a much shorter time. Not only mistakes can be taken back, but also just other layouts you tested.
Convert your list based gadgets among themselves without loosing all your settings.
Get your BlitzMax syntax highlighted and save the time to call your favorite editor.
Use the Layout Control window to set the layout rule of your gadgets just with one click.
Print out your form, create screenshots, move and size in grid steps, more visual feedback and more...

Also new users asked for an Logic Gui forum, so this can be found now > here! <.

As usual: Check out the news on my website for all details and pictures (use the link from the signature)


Muttley(Posted 2007) [#44]
Tried out the demo earlier and this looks fantastic, and exactly what I need right now for something I'm working on.

I've just placed an order. :)

Muttley


jsp(Posted 2007) [#45]
@Muttley Thanks and check your mail!

@All As the new BlitzMax Version 1.26 uses a different path for docs and keywords, the syntax highlight doesn't work in the latest Logic Gui release. I have fixed this and put the path customizable into the ini file. Thus you could use the old or new BlitzMax version. If you need this update before the next release please drop me a mail.
Latest News can be found here!


jsp(Posted 2007) [#46]
@SpaceAce
Could not sent you a new version! The new email address you send me reports a spam block!