Jump to content

GuiBuilderPlus [updated May 10, 2023]

Recommended Posts

Hey everyone! Check the first post for the latest update with a whole slew of improvements and new features!

Much time and care was put into improving the functionality and stability of selecting and manipulating controls (selection rectangle, copy, paste, drag, resize, etc...)
Everything seems to be working pretty well, but slows down considerably when selecting massive groups. I've done what I could for now, but will need to think about how to improve this.

Particularly neat is the new feature for aligning the selected controls. Select several controls, then right click on a control or use the edit menu to arrange and align the selected controls. Everything will be aligned to the FIRST selected control.

Also cool is that groups of controls can be selected and resized together proportionally. Also, when copying and pasting multiple controls at once, they maintain their relative positions instead of stacking on top of each other.

Unfortunately, the rich edit control for syntax highlighting was removed. It was causing so many issues and was not worth it to me to fight it. Standard edit works fine for now.

I still need to add control style properties, but I am running out of ideas. Needing some suggestions! But keep it simple. ūüėŹ

What's Changed?

  • FIXED:¬†¬†¬† Lots of handling of copy+paste scenarios
  • FIXED:¬†¬†¬† Tooltip when resizing multiple controls
  • FIXED:¬†¬†¬† Changed the selection rectangle so controls don't bounce around during right-to-left selection anymore
  • FIXED:¬†¬†¬† Right-click when multiple controls are selected
  • FIXED:¬†¬†¬† Lagging when dragging many controls at once
  • FIXED:¬†¬†¬† Improved a lot of flickering when dragging things
  • FIXED:¬†¬†¬† Select a control after drawing (instead of drawing on top of it)
  • ADDED:¬†¬†¬† New menu item, shortcut key Ctrl+X, and context menu item to 'Cut' selected controls
  • ADDED:¬†¬†¬† Cut/Copy/Paste will now maintain relative positions and spacing
  • ADDED:¬†¬†¬† Improved paste functionality
    • When pasting with Ctrl+V, control will follow mouse waiting to be placed by single click
    • When pasting with menu or right-click, control will be placed at mouse position
  • ADDED:¬†¬†¬† Resizing multiple-selected controls will resize proportionally as a group
  • ADDED:¬†¬†¬† Resize using any of the selected grippies, not just the last selected
  • ADDED:¬†¬†¬† Status messages for changing some settings (F3, F7)
  • ADDED:¬†¬†¬† Tool button icons now built into the exe, so resources folder is not necessary to run
  • ADDED:¬†¬†¬† Improved selection detection
    • Left-to-right selection requires entire control to be in the rectangle
    • Right-to-left selection selects anything that crosses the rectangle
  • ADDED:¬†¬†¬† Right-click menu items: Arrange-> Align left/center/right, top/middle/bottom, space vertical/horizontal
  • ADDED:¬†¬†¬† Ask to save (definition) dialog when closing, only when a change was detected since the last save
  • MAINT:¬†¬†¬† Added logging function and debug flag for testing/development
  • MAINT:¬†¬†¬† Downgraded to AutoIT v3.3.14.5 for personal reasons (removed maps)
  • UPDATED:¬†¬†¬† Better startup loading, so windows open at the same time
  • UPDATED:¬†¬†¬† Better redrawing with working with multiple controls
  • UPDATED:¬†¬†¬† Reverted back to standard edit box for code preview due to more issues with rich edit than it was worth
  • REMOVED:¬†¬†¬† DPI scaling - not reliable enough to keep for now
Link to comment
Share on other sites

First post updated to v0.28.

I haven't had much time lately for new features, but there are a number of bug fixes and enhancements, such as reduced flickering and speed improvements throughout.


What's changed?

  • FIXED:¬†¬† ¬†UpDown control shrinks when dragging
  • FIXED:¬†¬† ¬†Missing ListView icon in compiled app
  • FIXED:¬†¬† ¬†Fixed clicking away from certain controls
  • FIXED:¬†¬† ¬†Clicking a blank area should end the drawing, but did not work for some controls (combo, updown)
  • FIXED:¬†¬† ¬†Multiple tab controls should not be allowed
  • FIXED:¬†¬† ¬†Flickering when selecting and moving controls
  • FIXED:¬†¬† ¬†Selection rectangle should not snap to grid
  • FIXED:¬†¬† ¬†Grid disappears in some situations when clicking with no controls on the form
  • ADDED:¬†¬† ¬†Hide tooltip when selecting more than 4 items
  • ADDED:¬†¬† ¬†Allow a select number of keyboard shortcuts from tool window (ex: Press F5 to test the GUI after adjusting properties)
  • ADDED:¬†¬† ¬†Better handling of IP control
  • MAINT;¬†¬† ¬†Improved selection rectangle (again)
  • MAINT:¬†¬† ¬†Improved some of the behind-the-scenes object handling
  • MAINT:¬†¬† ¬†Significant speed improvements with object explorer
  • MAINT:¬†¬† ¬†Other general speed improvements


Link to comment
Share on other sites

On 6/14/2022 at 6:21 AM, kurtykurtyboy said:

creating an au3 parser from scratch seems like a daunting task.

My good buddy @TheDcoder has been doing something like that. :) 

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.


What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)


Link to comment
Share on other sites

@Sunblood, adding controls to tabs is on the project roadmap, but I need to lay some behind the scenes groundwork first in order to make that happen. The foundation of the code currently is not at all friendly for this kind of functionality, so I plan to redo a few things first instead of applying band-aids over and over to force it to work 

For now, the best we can do is add the blank tab sheets.

Link to comment
Share on other sites

Thanks for this awesome project.


But i can't save any project?

If i save the "start window" all goes well


If i just add 1 GUI element and try to save it get this error:


AutoIt Error
Line 32354  (File "U:\Development\AutoIT\GuiBuilderPlus v0.28 - 2022-06-26\GUIBuilderPlus v0.28.exe"):

Error: Variable must be of type "Object".


For now, i maybe have enough for the live code..




Link to comment
Share on other sites

Just a small update due to the issue reported by @trekker here. The latest updates can be found in the first post.

  • FIXED:¬†¬† ¬†Color and Background values of 0x000000 were saved as -1
  • FIXED:¬†¬† ¬†Setting "Paste at mouse position" incorrect behavior when turned off
  • FIXED:¬†¬† ¬†Error when saving GUI to file
  • FIXED:¬†¬† ¬†Crash when loading GUI file and resizing control
  • FIXED:¬†¬† ¬†Improved GUI file load times
  • ADDED:¬†¬† ¬†"Save As..." menu item (File menu)
  • ADDED:¬†¬† ¬†Change background color of checkbox and radio controls
  • CHANGED:¬†¬† ¬†You can now draw "on top of" other controls (instead of switching to selection)
  • CHANGED:¬†¬† ¬†GUI definition files now use json formatting to prepare for future features


Are people actually interested in seeing these small updates or should I just wait until we are finally at version 1.0?

Link to comment
Share on other sites

Feel free to check the first post for the latest update, v1.0.0-beta, which is kind of a big deal. ūüėŹ

This is probably the most significant update to date as far as new features. Several major features have been added which you can see below.
This release has caused me so many headaches, but I think it was worth it and is working pretty well. If you take a peak at a new agd file with tabs containing controls, you'll understand why I switched it to a json file!

Also, the program is very much usable now so I think it is past time to call this v1.0.0-beta and start using a coherent versioning system.

As always, please report any bugs you find. I'm sure there will be a lot with these new features, which is why we'll call this a pre-release for now.


  • FIXED:¬†¬† ¬†Crash when using Ctrl+O shortcut key
  • FIXED:¬†¬† ¬†GUI should not close when cancelling the save dialog
  • ADDED:¬†¬† ¬†Ability to add child controls to Tabs
  • ADDED:¬†¬† ¬†Ability to add child controls to Groups
  • ADDED:¬†¬† ¬†Ability to lock controls to prevent from moving, resizing, deleting
  • ADDED:¬†¬† ¬†New Styles tab to set GUI and control styles
  • ADDED:¬†¬† ¬†Font size property
  • ADDED:¬†¬† ¬†Shortcut key Ctrl+A to select all in code preview
  • CHANGED:¬†¬† ¬†Properties list is now in alphabetical order


I thought maybe I should explain how to add to tab or group controls. There are 2 ways to do it.

  1. The first way is to draw a new control on top of a tab or group parent.
  2. The 2nd way is to copy a control then select the tab or group control before pasting.

Also, you can use the move up/down buttons to move child controls up or down the tree within its parent. Or you can move the parent along with all of its children.

Edited by kurtykurtyboy
Link to comment
Share on other sites

Big update:

  • FIXED:¬†¬† ¬†#include's are now more dynamic (don't include constants unless they are needed)
  • FIXED:¬†¬† ¬†Removed extra GuiCreateTabItem("") for each tab
  • FIXED:¬†¬† ¬†Extra GuiCreateTabItem("") for each tab
  • FIXED:¬†¬† ¬†Radio and Checkbox control size when drawing
  • ADDED:¬†¬† ¬†Button styles BS_LEFT, BS_RIGHT
  • ADDED:¬†¬† ¬†Import/parse an existing AU3 file as GUI
  • CHANGED:¬†¬† ¬†Cleaner generated code by spacing Tabs and Groups
Link to comment
Share on other sites

for non-standard / portable use:

Global $au3InstallPath = IniRead($sIniPath, "Settings", "AutoIt3FullPath", @ProgramFilesDir & "\AutoIt3\AutoIt3.exe")
If StringInStr(@AutoItExe, "\AutoIt3.exe") Or StringInStr(@AutoItExe, "\AutoIt3_x64.exe") Then $au3InstallPath = @AutoItExe

.... ....

    ;run the temporary file
    If Not FileExists($au3InstallPath) Then
        Local $sFileOpenDialog = FileOpenDialog("Select AutoIt3.exe", @ProgramFilesDir, "(*.exe)", $FD_FILEMUSTEXIST, "AutoIt3.exe")
        If @error Then
            MsgBox(1, "Error", "Could not find AutoIt3.exe")
            $au3InstallPath = $sFileOpenDialog
            IniWrite($sIniPath, "Settings", "AutoIt3FullPath", $au3InstallPath)


Edited by argumentum

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.

Link to comment
Share on other sites

  • kurtykurtyboy changed the title to GuiBuilderPlus [updated May 10, 2023]

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

  • Create New...