HGUI

INTRODUCTION

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).

DISTRIBUTION

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.

USING HGUI

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:

C:/MyHollywoodWorks/

The +Includes.hws file should be in:

C:/MyHollywoodWorks/HWLibs/+Includes.hws

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.

LINKS

If you think this work deserves it, consider the possibility of supporting me with a PayPal donation or by using Patreon.

PAYPAL DONATIONS

Enjoy!

GENERAL FEATURES

Object Oriented Programming

Flexible and multi-layered skin system

Easy of use

Fast

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.

WINDOWS SYSTEM

Each window you create supports the following events:

OnClose

OnMove

OnActivate

OnDeactivate

OnHide

OnShow

OnSize

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.

GADGETS SYSTEM

Supported gadget classes

Box

Vertical Divider

Horizontal Divider

Label

Group (Generic, Radio, Check)

Button

Switch

Scrollbar (Vertical/Horizontal)

Slider (Vertical/Horizontal)

ProgressBar

Knob

Text (for user input)

ListView

TreeView

DropDown

Image

Virtual Area

Planned gadget classes

Spin

Tabs

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:

OnPushed

OnDown

OnOver

OnOut

OnDrop

OnDropOut

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

LAYOUT SYSTEM

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:

Vertical

Horizontal

Grid

When you define child gadgets you can define the following properties: