Jump to content
Sign in to follow this  
_Kurt

Gorganizer - Drag, Resize, and organize your GUI Controls

Recommended Posts

_Kurt

(Update June 24th 07)

- Fixed several minor bugs

- Fixed variable bug

- Added Coordinate Tooltip

(Update June 10th 07)

- Fixed 3 bugs

- Added Drag Menu

Although no one even took a look at this project, I will continue to work on it for my own interest. With only 25 downloads, it makes me wonder why I even bother posting this. Anyways, new update includes optional coordinate tooltips, controlled dragging through menuitem, and fixed plenty of bugs so it will work with more scripts! Also, if you only want to organize a gui within a large script, use the new #region Gorganize & #endregion Gorganize method. I'd really appreciate it if anyone could post me some scripts that do not seem to work.

Description:

Having trouble organizing or placing controls on a GUI? Once the file is loaded, the Gorganizer will make your controls draggable and resizable. When you're done shifting your controls, it will generate a new script, exactly like your old one, but containing the new coordinates and sizes of your controls.

Hello,

Throughout all my scripting days, I've always had difficulty finding the perfect coordinates for my GUI. Changing coords & sizes, ALT+F5.. Changing coords & sizes, ALT+F5.. It always took me several tests before I could get my desired coordinates and sizes.

The Gorganizer

Although the name may seem like some sort of scary monster, it's not. Couldn't think of a better name, but I called it the Gorganizer since it's a Gui organizer. I think it could be a great addition to the GuiBuilder. Run the script, choose your .au3 file (containing a GUI), click Gorganize, and voila! It will then run your script with draggable and resizable controls. Once you've finished organizing your GUI, simply exit and it will write a new file, exactly the same as it was before, but with your new coordinates. Remember that this script cannot overwrite or modify your original chosen script!

EXAMPLE SCRIPT (save file & run through script):

#include <GUIConstants.au3>

GuiCreate("Test") ;Notice thatÈÚ[ÝH[ÛYYYHÈHXÝ]HÈHÜYÚ[ÛÛÜØ[^¤wV6WE7FFR´¶VWâÖæBFBFR7&VvöâÖWFöB2æ÷BÖæFF÷' ¢7&¥½¸½É¹¥é)1½°ÀÌØíÑÍÑlÍtíÉÉäÙÉ¥±ÌÉÁÑÌÌì(ÀÌØGUI1 = GuiCreate("MyGUI")
$test[1] = GUICtrlCreateLabel(&quoÝÝX[^H][ÝËLL

BÌÍÝÝÌHHÕRPÝÜX]S&VÂgV÷C·FW7DÆ&"gV÷C²Â#Â#Â#ÂC¢b33c·FW7FçWBÒuT7G&Ä7Ñ%¹ÁÕÐ ÅÕ½ÐíÑÍÑ%¹ÁÕÐÅÕ½Ðì°ÈÀÀ°Ô°àÀ°ÈÀ¤(ÀÌØíÑÍÑÕÑѽ¸ôU%
ÑɱreateButton("testButton", 0, 200, 80, 25)
GUISetState()
#endregioÛÜØ[^BÚ[HB ÌÍÛÙÈHÕRQÙ]ÙÊ
BY  ÌÍÛÙÈH ÌÍÑÕôUdTåEô4Äõ4RFVâWDÆö÷¥tVæoÝ÷ Øú,²&åx[­º·y«n­ëÚ?Eçh2Þ¸²Úâäè¢[b¥Ë«­éír+v)Úµë?²ÚâæÀ1ý°®®·§´¸¦Ö­ì"Ü"Z'*®¢ÚbrK©ªê-¶»-{-jw¡ñ *Þj×¢*.«Þém^B7öȧʫ±Êâ¦Ú'+ayø«²Ñ!©ÝÝý±Ê'¶º%³¥ªiyªÀÊ&ÊÇ+BÓNM·¢jbçm¡©ÞÅì(mÂä"Ü"Z'(+i»ayÊ'¶º%²ØZµªÞuç%j·o&¯j¸nWçèZ0x0YZÊ'¢Ü(®FÞq«¬zØ^­è¬)iǬmëpyéíëÚ®&æ§vØ^z«È «­¢+ØÀÌØí5åYÈõU%
Ñɱ
ÉÑ1° ÅÕ½ÐíÑÍÐÅÕ½Ðì°À°À°ÈÀÀ°ÈÀ¤ì    (ÀÌØí5åYr = GUICtrlCreateLabel("test",0,0,200,20) ; GOOD

Current Bugs/Errors: [Please Read]

- If you have a variable within your GUICtrlCreate(?) line, it will not work. FIXED

- Scripts that contain GUICtrlCreateObj will not work. FIXED

- GUICtrlCreate*("," ... Any comma within the controls data will not work. FIXED

- GUICtrlCreate*("( )" ... Any bracket within the controls data will not work. FIXED

I hope it works for most of your scripts, post any scripts that do not work, or any comments, suggestions, or errors. I apologize for not commenting the script, but looking over it even I am somewhat confused :).

Thanks,

Kurt

PS: also attached my original project that contains a draggable & resizable control incase anyone is interested.

GUIDragNResize.au3

Gorganizer.au3

Edited by _Kurt

Awaiting Diablo III..

Share this post


Link to post
Share on other sites
SleepyXtreme

This seems like a very good project for extending gui builder.

I'd like to make a few suggestions.

Try modeling it after other design/art programs because other programs have developed really nice ways of doing things.

For instance, photoshop has the possibility to save the last 100+ moves to undo til with a history list, you can also move all the objects by using the arrows keys. Also, the grid is MUCH smaller so that you can evenly fit everything while still lining it up. Another good solution that's in Adobe Flash is to center, allign right, allign left, with objects; this is probably the most useful idea that would make making gui's easier and neater.

Thanks for reading :)

Share this post


Link to post
Share on other sites
_Kurt

Yes, Undo/Redo is very possible, an array and some work ought to do it. I will add that in sooner or later.

Kurt


Awaiting Diablo III..

Share this post


Link to post
Share on other sites
_Kurt

Yepee, 2 more bugs found, see first post. Will try to resolve them ASAP, sorry for the inconvenience. FIXED

Kurt

Edited by _Kurt

Awaiting Diablo III..

Share this post


Link to post
Share on other sites
martin

Throughout all my scripting days, I've always had difficulty finding the perfect coordinates for my GUI. Changing coords & sizes, ALT+F5.. Changing coords & sizes, ALT+F5.. It always took me several tests before I could get my desired coordinates and sizes.

Does this mean you haven't looked at Koda?


Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

Share this post


Link to post
Share on other sites
_Kurt

Yes, of course I have, but the problem is that you cannot load a GUI from it, and also the GuiBuilder has a permanent 10x10 scale, sometimes I need coordinates to be precise. I find this could be a powerful and useful tool because I'm sure other people have the same problem..

Kurt


Awaiting Diablo III..

Share this post


Link to post
Share on other sites
Toady

Nice. I like this idea.

I got an error when trying to give it a GUI that is created via for loops. Is this supposed to only work with very basic layout?


www.itoady.com

A* (A-star) Searching Algorithm - A.I. Artificial Intelligence bot path finding

Share this post


Link to post
Share on other sites
RazerM

I like the idea, i noticed you pass /ErrorStdOut to autoit exe and use StdoutRead (should be StderrRead?) with the PID but don't use $STDERR_CHILD.

Edited by RazerM

My Programs:AInstall - Create a standalone installer for your programUnit Converter - Converts Length, Area, Volume, Weight, Temperature and Pressure to different unitsBinary Clock - Hours, minutes and seconds have 10 columns each to display timeAutoIt Editor - Code Editor with Syntax Highlighting.Laserix Editor & Player - Create, Edit and Play Laserix LevelsLyric Syncer - Create and use Synchronised Lyrics.Connect 4 - 2 Player Connect 4 Game (Local or Online!, Formatted Chat!!)MD5, SHA-1, SHA-256, Tiger and Whirlpool Hash Finder - Dictionary and Brute Force FindCool Text Client - Create Rendered ImageMy UDF's:GUI Enhance - Enhance your GUIs visually.IDEA File Encryption - Encrypt and decrypt files easily! File Rename - Rename files easilyRC4 Text Encryption - Encrypt text using the RC4 AlgorithmPrime Number - Check if a number is primeString Remove - remove lots of strings at onceProgress Bar - made easySound UDF - Play, Pause, Resume, Seek and Stop.

Share this post


Link to post
Share on other sites
_Kurt

Nice. I like this idea.

I got an error when trying to give it a GUI that is created via for loops. Is this supposed to only work with very basic layout?

It should work with any script containing a GUI. If a GUICtrlCreate* contains a variable within it, example:

$var = GUICtrlCreateLabel("Label", 0, 0, 100+$x, 200)

This won't work because of the +$x. I'm just about done fixing 2 errors, I will update it within the next 2 days. My To-Do list is currently pretty full, and I'm short on spare time.

FIXED

I like the idea, i noticed you pass /ErrorStdOut to autoit exe and use StdoutRead (should be StderrRead?) with the PID but don't use $STDERR_CHILD.

I tested a script with a mistake in it using StderrRead, and it didn't return anything, I then tried StdoutRead and it worked marvelously.

Kurt

Edited by _Kurt

Awaiting Diablo III..

Share this post


Link to post
Share on other sites
RazerM

You cannot read from stdout or stderr stream without using $STDOUT_CHILD or $STDERR_CHILD respectively for the standard i/o flag.

Edited by RazerM

My Programs:AInstall - Create a standalone installer for your programUnit Converter - Converts Length, Area, Volume, Weight, Temperature and Pressure to different unitsBinary Clock - Hours, minutes and seconds have 10 columns each to display timeAutoIt Editor - Code Editor with Syntax Highlighting.Laserix Editor & Player - Create, Edit and Play Laserix LevelsLyric Syncer - Create and use Synchronised Lyrics.Connect 4 - 2 Player Connect 4 Game (Local or Online!, Formatted Chat!!)MD5, SHA-1, SHA-256, Tiger and Whirlpool Hash Finder - Dictionary and Brute Force FindCool Text Client - Create Rendered ImageMy UDF's:GUI Enhance - Enhance your GUIs visually.IDEA File Encryption - Encrypt and decrypt files easily! File Rename - Rename files easilyRC4 Text Encryption - Encrypt text using the RC4 AlgorithmPrime Number - Check if a number is primeString Remove - remove lots of strings at onceProgress Bar - made easySound UDF - Play, Pause, Resume, Seek and Stop.

Share this post


Link to post
Share on other sites
martin

Yes, of course I have, but the problem is that you cannot load a GUI from it, and also the GuiBuilder has a permanent 10x10 scale, sometimes I need coordinates to be precise. I find this could be a powerful and useful tool because I'm sure other people have the same problem..

Kurt

Good luck with this project. I think you should aim, as you said, to produce something better than is available. Koda for example has got shortcomings but not the ones you describe.(I think you must be thinking of some other program) It can import au3 scripts, set the grid from 1 pixel upwards, align groups of controls in just about any way you want, move and resize using the arrow keys or by property values etc. Have a look at it to get a good idea of what you need to achieve.


Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

Share this post


Link to post
Share on other sites
_Kurt

Good luck with this project. I think you should aim, as you said, to produce something better than is available. Koda for example has got shortcomings but not the ones you describe.(I think you must be thinking of some other program) It can import au3 scripts, set the grid from 1 pixel upwards, align groups of controls in just about any way you want, move and resize using the arrow keys or by property values etc. Have a look at it to get a good idea of what you need to achieve

I really appreciate the feedback, martin. You're right, I was confusing the Koda from another program.

Kurt

Edited by _Kurt

Awaiting Diablo III..

Share this post


Link to post
Share on other sites
_Kurt

New Update, Fixed 3 nasty bugs, Added menu. With some free time here and there, I will try to add my ideas for future features. If you have any script that aren't working, and the bug has not yet been reported, please post them.

Kurt


Awaiting Diablo III..

Share this post


Link to post
Share on other sites
martin

I really appreciate the feedback, martin. You're right, I was confusing the Koda from another program, and once I actually checked out the Koda, it made me realize that this program would be useless since the Koda is simply amazing. Unfortunately, I will probably discontinue the making of this project soon because of that reason.

Kurt

Sorry if I dampened your spirits, but you have taken it very well. I did a similar thing myself. I wrote a script to enable Koda designs to automatically update another script and then the next release of Koda did it but much better.

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

Share this post


Link to post
Share on other sites
_Kurt

Yeah, but I probably will continue updating this project, just for my interest. I am still amazed by Koda, it truly is near flawless.. However the gorganizer could still be very helpful, if you need a quick way to organize, drag, resize your GUI, it's a really easier way to make quick changes.

Kurt

Edited by _Kurt

Awaiting Diablo III..

Share this post


Link to post
Share on other sites
_Kurt

Updated Again.. hopefully I will see more than 25 downloads this time :rolleyes:

Kurt


Awaiting Diablo III..

Share this post


Link to post
Share on other sites
MrCreatoR

Hi Kurt,

I have litle play with it, and i found a bug (he founds me :rambo: )...

Posted Image

after this the control is not moving...

and also when you trying to click on the control and then quickly you click on the gui body, and then drag the control, then there is error:

Posted Image

P.S

hopefully I will see more than 25 downloads this time

Look here on my example post, no one even say a word about it, and only 30 views :rolleyes: Edited by MsCreatoR

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×