NitrousGUI

BlitzMax Forums/BlitzMax Programming/NitrousGUI

Helios(Posted 2007) [#1]
NitrousGUI is a project I've been working on and off on for the last couple of weeks to fill up some spare time. Simply put its a GUI module designed to be as powerfull and flexible as possible, with support for most modern GUI components.

The module is build on a completely OOP framework, which tends to make things far easier to implement. The system is similar in style to MaxGUI bar the fact that every control must have a manager (a manager is simply a type that deals with all the mundane GUI tasks, it also has the added effect of allowing you to control numerous GUI scenes at once).

Feedback generated by events is also slightly different from the way most GUI libraries work, in the case of NitrousGUI function callbacks are used (though I'm thinking of scrapping this in favour of a more flexible system).

The system is also entirely skinnable using theme files (A sort of breed between xml and ini) which are relatively easy to create. Themes can also be easily changed on the fly with little or no overhead.

Prebuilt controls can also be loaded in from a special kind of file (similar to the theme files). When I'm done I'm going to have a crack at writing a GUI designer that emits these files.

Anyway down to business, currently the following controls are supported (each with numerous features, that can in effect turn them into other controls).

# Button
# Check Box
# Combo Box
# Group Box
# Label
# List View
# Menu
# Panel
# Progress Bar
# Radio Button
# Scroll Bar
# Spinner
# Status Bar
# Tabber
# Text Box
# Tool Bar
# Tool Trip
# Tree View
# Window
# Several standard dialogs.

I'm also currently implementing / designing the following;

# Graphs (Pie charts, frequency diagrams, etc)
# Grid View
# Knobs
# Property Grids
# Rulers
# Sliders
# Spliiters

The current themes that are available are;

# Windows XP (Only 1 because I suck at designing themes :P)


... etc ... etc ... etc


---- Module & Source Code

First version (bugs and all!) - www.binaryphoenix.com/index.php?action=download&id=78


---- Old Demo

Anyway I'm currently writing some chm help files and cleaning up / polishing off some of the source code (theres about 450kb of it). Once I'm finished I'm going to release it. Until then if you could have a try of this demo and give me a rough idea of what FPS your getting on it and notify me of any bugs (There are bazillions of them, I already know a great deal of them and am currently fixing them) then that would be helpfull.

http://www.binaryphoenix.com/index.php?action=download&id=76

Heres a random screenshot if you wish to see what your downloading!




xlsior(Posted 2007) [#2]
Looks nice!


Regular K(Posted 2007) [#3]
FPS: ~250

I found a bug, it's a bit difficult to explain. To reproduce it, slide alpha below 100 then slide it back up. I notice that the selector selects one character by itself.

Selecting text is a bit weird. I type a lot of random stuff into the "Text" textbox then I quickly select it from right to left while moving the mouse down a bit. It sometimes selects Minimum size, and the selection tends to twitch.

In the second scene, I click the drop down box to open it. Then I click the same button to open it. It closes the box then reopens it. If I put the mouse where the scroll right arrow is in the drop down box when its open, it shows the tooltip.

In the menu, when I open the Root Menu 1 then go to the submenu one, if I click on the submenu when its open, it closes then reopens.



Theres a lot of little bugs. I have some questions: can textfields be limited to a certain character count? And, can textboxes (multiline) be wrapped?


Helios(Posted 2007) [#4]
Yeh I know of most of those bugs. I'm currently going through and fixing each one. Its a long, tedious job as theres a pretty large amount of code >.>.

Can textfields be limited to a certain character count?: Yep
Can textboxes (multiline) be wrapped?: Currently no, but I may implement that soon.


rockford(Posted 2007) [#5]
I'm getting around 170FPS, but with other apps running.

As well as those bugs above, it's possible to select more than one button at a time (look at Maximum size buttons) -



It's a nice start :)


Gabriel(Posted 2007) [#6]
Looks great. I'm particularly interested in the new gadgets being designed/implemented. Certainly going to have to keep an eye on this.


kochOn(Posted 2007) [#7]
Realy great GUI and without those small bugs it will become one of the best Windows looking GUI.

It missed a flushkey command for the EditBoxes to trap pressed keys before an EditBox is selected. (Hope you will understand)


Kev(Posted 2007) [#8]
very cool

i will keep an eye on this. Im intrested in seeing how far you take this.

kev


plash(Posted 2007) [#9]
There is a slight bug with resizing a window, if you hold down the left mouse button when resizing then go over buttons, you get this:




Helios(Posted 2007) [#10]
Yep, thats already been mentioned. I've already fixed it. Thanks anyway.


Regular K(Posted 2007) [#11]
Do you plan on making this free?

And how are events handled? MaxGUI style or ?

I am planning a new project and I am trying to find a GUI for it...


North(Posted 2007) [#12]
Hi,

im getting:

~750FPS in window Test1
~850FPS in window Test2
~1000FPS in window Test3
~1100FPS in window Test4
~1250FPS in window Test4 in the 'drewing tab'

I noticed a bug with tooltips being shown even if the corresponding list entry isn't visible at all. Just hover over the position where there was a listbox that has been closed and the tooltips reappear.

Also using Plus and Minus to switch through the windows results in text entries in input fields currently selected. These inputs vanish when you select another gadget.

Love that this is skinnable! :)


Ratchet(Posted 2007) [#13]
Got your GUI a multi line text edit (Memo/TextArea)?


xlsior(Posted 2007) [#14]
very steady 545 FPS. ATI Radeon X1650XT

Two bugs:

1) After maximizing/minimuzing a couple of times, only the starting window responded to GUI items. I could cycle to the other screens with the '+' key, but none of their elements responded to the mouse at all

2) not really a bug, but non-standard and counter-intuitive: in the primary screen, where you adjust the alpha: the 'up' button decreases the value, while the 'down' button increases it. The normal windows controls work exactly the other way around. (up = higher, down = lower)

Also: I notice that there are horizontal and vertical scrollbars shown in a bunch of the windows where there shouldn't be a need for them (yet). Is it possible to only draw the scrollbars if the contents don't fit without them? In general it's a cleaner look without the bars, after all.


Helios(Posted 2007) [#15]
Do you plan on making this free?
- Probably, depends how it turns out.

And how are events handled? MaxGUI style or ?
- Function callbacks. May be changed though.

I noticed a bug with tooltips being shown even if the corresponding list entry isn't visible at all. Just hover over the position where there was a listbox that has been closed and the tooltips reappear.
- I didn't attach any tooltips to listbox items. The only tooltip in that demo is attached to that blue panel.

Also using Plus and Minus to switch through the windows results in text entries in input fields currently selected. These inputs vanish when you select another gadget.
- *Shrugs* I can't really do much about that. The selected text box does have to recieve input. I guess I could just flush out the key list after checking if they have been pressed.

Got your GUI a multi line text edit (Memo/TextArea)?
- Yes. Check the forth scene.

After maximizing/minimuzing a couple of times, only the starting window responded to GUI items. I could cycle to the other screens with the '+' key, but none of their elements responded to the mouse at all
- O_o, thats pretty odd. The majority of it only uses the standard input commands. I'll check into it though.

not really a bug, but non-standard and counter-intuitive: in the primary screen, where you adjust the alpha: the 'up' button decreases the value, while the 'down' button increases it. The normal windows controls work exactly the other way around. (up = higher, down = lower)
- Hum. Sorry thats just my stupidity. I couldn't remember which way round they went >.>. I'll fix it in a sec.

Also: I notice that there are horizontal and vertical scrollbars shown in a bunch of the windows where there shouldn't be a need for them (yet). Is it possible to only draw the scrollbars if the contents don't fit without them? In general it's a cleaner look without the bars, after all.
- Yeh. I've been fixing the scrollbars recently. It works slightly better now.


JoshK(Posted 2007) [#16]
I like it. I might consider using something like this for future tools, but I wish people would stop using DX canvases filling the window. They should use a MaxGUI window so that windows can actually come out from inside the main one, and draw the GUI using GDI or something.

Automatic tabbing between gadgets would help, too.


Helios(Posted 2007) [#17]
First version (bugs and all!) - http://www.binaryphoenix.com/index.php?action=download&id=78

Hope you enjoy it (if you do, you can always donate to payment@..., *hint* *hint* :P).

I need to quickly run off now and work on some other projects I've been neglecting recently, or my team mates will get a bit pissed at me.


*(Posted 2007) [#18]
175fps looks good, but has a drag effect when holding some of the colour buttons down for a while.


William Drescher(Posted 2007) [#19]
For some reason, I get this:



Whenever I run the program...


HCow33(Posted 2007) [#20]
Try setcolor 255,255,255 before the gui render statement


William Drescher(Posted 2007) [#21]
that doesn't work either. Also, if i download the exe demo and run that i get the same issue. Is it my graphics card?


doswelk(Posted 2007) [#22]
Rem the Framework brl.glmax2d line and all seems to work


Dreamora(Posted 2007) [#23]
Sounds like you have an intel onboard
Are the textures used on the UI square power of 2?
Otherwise this is something that sadly is to be expected on intel onboards pre GMA950 ...


doswelk(Posted 2007) [#24]
Yeah My laptop does, but my Main PC does not


Helios(Posted 2007) [#25]
Sorry for the delay, been buzy. Anyway, as the others have said that sounds like a graphics card issue. Try resizing the image Themes\WinXP\winxp.PNG to 256x256 (the theme system works on a coordinate system, if you don't modify any of the pixels in the theme image it should work fine at any size), that may help if Dreamora is correct.


Armitage 1982(Posted 2007) [#26]
Finally something i was waiting for a long time !
Well there is still some weird bugs and nasty reactions but it's probably the best solution to come for Max.
Since maxgui wasn't really what i was searching for.

Keep good work !