After more then 7 years of development here is the ScuiLib successor: HGui.
After many delays caused by the complexety of this project itself, I’ve finally released HGui, a GUI Toolkit for Hollywood-MAL, this project is probabily the my biggest project ever and I’m very happy to share for FREE with all Hollywood coders.
At this time HGui is not completely compatible with Android but I’ve already planned some nice features that will make HGui run also on Android devices avoiding all the unsupported features (like multiple displays) and replacing them with fake windows, something I was already using on the previous ScuiLib project.
HGui is complete at 90% because of a couple of missing gadget classes and because documentation is still insufficient, but the library itself is really stable, easy to code and fast. It also features a complete skinning system to unleash your creativity or to mimic native OSes systems.
One of the most important features of HGui is that you don’t need any code change to let it run on all Hollywood supported OSes (excluding the brief note above about Android devices).
I’ve spent a couple of days to think about a simple way (for me to maintain and for you to download) to share my work with you.
So I decided to share my libraries using GoogleDrive, for me it is easy enough to maintain and I hope the same is for you.
The user have the ability to navigate throught the folders and see what’s inside, you also have the ability to download the entire content as a zip file (managed by GoogleDrive) hitting the button “Download All” in the top-right corner.
All the included stuff inside the shared folder is needed by HGui, so in order to run the examples you have to download all the included libraries, I suggest to use the “Download All” button available in the top-right corner to get all the included files in a single zipped archive.
I’ve also included some basic examples you can find in the “Examples/HGui” folder, but before running them you have to change a line of code in the +Includes.hws file.
At line 13 of the “+Includes.hws” file you have:
Const #INC_PATH = "C:/Users/Fabio.NB-FABIO/Dropbox/+HWLibs/"
All you have to do is change this path to the location where +Includes.hws file has been copied.
For example, if you have copied the contents in:
The +Includes.hws file should be in:
So the line to change should become:
- Const #INC_PATH = “C:/MyHollywoodWorks/HWLibs/”
And that’s all!
After you have changed that line you should be able to run the examples with a double click. Of course you Hollywood to be able to use HGui and to run the examples!
Feedback is very important, so please let me know if you find bugs or if you need missing features.
- Object Oriented Programming
- Flexible and multi-layered skin system
- Easy of use
- Scalable (tuning the cache system and the theme)
Since HGui does not depend on any system specific command/library all developed projects can be compiled for any system supported by Hollywood, your GUIs will be the same on every platform, exactly the same.
- Each window you create supports the following events:
- User definable minimum and maximum sizes
- Automatic control of the window’s order
- Methods to control/edit on the fly the created windows
- Various background type supported
- Special windows to build up quickly progress indicator and/or messages for long operations.
- Window’s menu (not the ones available with Hollywood but a custom one that allow you to include any gadget type into it.
- Functions to find window objects by name, by Hollywood ID, and to check if a window exists or not.
- Ability to attach hotkeys to any window to execute specific tasks when a keypress occurs.
- Supported gadget classes
- Vertical Divider
- Horizontal Divider
- Group (Generic, Radio, Check)
- Scrollbar (Vertical/Horizontal)
- Slider (Vertical/Horizontal)
- Text (for user input)
- Virtual Area
- Planned gadget classes
- Ability to switch the cache system on or off
- On: each gadget state will be cached, faster but more memory required
- Off: each gadget state will be rendered directly, slower but with a lower memory footprint.
- Each gadget can be skinned individually
- Each gadget class can be skinned globally
- Support for icons inside gadgets with custom alignment and text adjustment
- Flying tips for some gadgets
- Sounds on some actions (OnOver, OnOut, OnPushed, OnDown)
- Supported actions:
- Some classes can have additional actions
- Functions to search buttons by their names
- Methods to control and modify on the fly existing gadgets
- Gadgets drag and drop (planned)
- Ability to attach a right-mouse action or a pop up menu
Gadgets can be arranged using the MUI concept, you define some gadgets that will be grouped inside another gadget, this way your GUI is represented by a tree where the tree root is a special gadget called ‘rootGadget’ already created for you when a window is created.
Supported layout are:
When you define child gadgets you can define the following properties:
- Gadget weights (percentual variable, percentual fixed, pixel variable, pixel fixed)
- Borders (top, bottom, left, right) from the father gadget
- Gap between childs in pixel
WHAT’S MISSING/NEED MORE LOVE
- Some little glitches to be fixed
- Keyboard navigation system
- Gadget’s hotkeys
- Gadget’s drag & drop
- Tabs class
- Spin class
- Documentation (incomplete at this stage)
- Tutorials (Some basic examples are provided)
- Global theme management functions are not completed
- Support for XML Gui definition
Below you can find some screenshots of HGui in action and a demo that show all supported classes in action for every supported platform.
I really hope that this work will help Hollywood to get even more users and more applications, I also hope to get some feedback from you despite my English!
Screenshot of a complex Interface with many gadget classes in action:
Here is a video of the provided showcase example (available in the example folder):