After more then 14 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 but the library itself is really stable, easy to code and fast. It also features a complete skin 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 platforms (excluding the brief note above about Android devices).
I’ve spent some time to think about how to share my work with you.
So I decided to share my work on GitHub.
For those who are willing to support me via Patreon there is direct support & on-request examples as an extra 🙂
All is here, on my GitHub page 🙂
- 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 have its own skin.
- Each gadget class can have its own skin.
- 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!
Head on my YouTube channel to see some recent examples running HGui 🙂