QB64.org Forum

Active Forums => Programs => Topic started by: RhoSigma on November 23, 2018, 08:44:35 am

Title: The GuiTools Framework
Post by: RhoSigma on November 23, 2018, 08:44:35 am
If you're just here for my Libraries Collection or any other Bonus Stuff, then please scroll down approx. half a wheel spin to get there. For the GuiTools Framework otherwise just continue reading.

GuiTools - Another graphic UI framework

GuiTools is a ready to use program template/skeleton to create neat graphic UI applications with QB64, ie. to build your own UI forms you just need to add the desired object definitions into the template and the handler code which shall be called when your objects are triggered, while leaving all other parts of the template as is.
Note that GuiTools does not implement the usual Windows like look and feel, but is inspired by the AmigaOS (http://os.amigaworld.de/index.php?lang=en&page=16) versions 2.0 to 3.9, which have a simple yet elegant look (find some screenshots at the end of this post).

Release v0.14 (latest changes)

The entire GuiTools Framework got an overhaul to not longer relying on the old recursion bug, which got finally fixed in QB64 v2.0 development builds (see https://qb64forum.alephc.xyz/index.php?topic=4209). For the full list of changes see the docs\ReleaseNotes.txt file in the archive.

            (Oct/21)(Windows only (Linux/Mac see here (https://www.qb64.org/forum/index.php?topic=809.msg106146#msg106146)))

Make sure to move the extracted QB64GuiTools folder with its entire contents into your QB64 folder (where qb64.exe is in). If you're new to GuiTools, then please also read the GuiTools-Info.html file in the main folder for a short introduction of the project structure.


Bonus Stuff - This is not related to, nor required by GuiTools

              (Oct/21)(My libraries collection (Image processing/Data buffering/MD5/SHA2/LZW...))
         (Jul/21)(Just some simple Screen blankers for fun)
           (Nov/21)(My QB64/Notepad++ integration pack (for npp 8.1.1 and up))

Make sure to move the extracted QB64Library folder with its entire contents into your QB64 folder (where qb64.exe is in). You find an overview of all libraries in the QB64Library-Info.html file.

The Screen blankers and the Notepad++ stuff can be placed freely, although the QB64 folder might be the best choice for them too.


Forum Links - Quickly find my other useful code snippets

(F) Bin$() --- Convert any numbers into a binary string similar as HEX$ and OCT$ do for its respective bases (https://qb64forum.alephc.xyz/index.php?topic=4261.msg136390#msg136390)
(F) IndexFormat$() --- Format strings and numbers in PRINT USING style but with several useful extensions (https://qb64forum.alephc.xyz/index.php?topic=2932.msg121898#msg121898)
(F) ParseLine&() --- Parse a string and split it into its individual parts using the given separators and quotes (https://qb64forum.alephc.xyz/index.php?topic=4142.msg134974#msg134974)
(L) External Module Player --- How to play the well known Tracker Music Modules using XMP (for 32bit only) (https://qb64forum.alephc.xyz/index.php?topic=2879.msg139491#msg139491)
(P) MakeDATA --- Convert any file into DATAs and embed it in your program for later write back (also part of GuiTools) (https://qb64forum.alephc.xyz/index.php?topic=790.msg6907#msg6907)
(F) Alternative INKEY$ --- Maps international chars to CP437 without the need to use _MAPUNICODE and TTF fonts (https://qb64forum.alephc.xyz/index.php?topic=1385.msg105704#msg105704)
(L) Falcon Wrapper --- Print unicode strings as easy as possible using falcon.h functions and TTF fonts (https://qb64forum.alephc.xyz/index.php?topic=2248.msg114890#msg114890)

(F) = Function, (P) = Program/Application, (L) = Library


Screenshots - This is the usual look of GuiTools Applications








Attachments Displayed Below Message Body

  QB64GuiTools.7z  

  QB64Library.7z  

  ScreenBlankers.7z  

  NppThemesQB.7z  

Title: Re: The GuiTools Framework
Post by: RhoSigma on December 28, 2018, 06:22:27 am
bump to v0.9 (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: ForSe on December 28, 2018, 07:37:44 am
How did you compile this? The demo always returns an error. :/
It said "File 'QB64GuiTools\dev_framework\classes\GuiClasses.bi' not found", then I tried to copy the whole of "QB64GuiTools" folder into the "QB64GuiTools\src_GuiAppDemo", but now the '$INCLUDE: 'QB64GuiTools\dev_framework\GuiAppFrame.bm' said "File 'QB64GuiTools\dev_framework\GuiAppIcon.bm' not found".
Title: Re: The GuiTools Framework
Post by: RhoSigma on December 28, 2018, 08:08:27 am
How did you compile this? The demo always returns an error. :/
It said "File 'QB64GuiTools\dev_framework\classes\GuiClasses.bi' not found", then I tried to copy the whole of "QB64GuiTools" folder into the "QB64GuiTools\src_GuiAppDemo", but now the '$INCLUDE: 'QB64GuiTools\dev_framework\GuiAppFrame.bm' said "File 'QB64GuiTools\dev_framework\GuiAppIcon.bm' not found".

It's a simple Out of the Box installation. The extracted QB64GuiTools folder must go inside your QB64 folder (where also qb64.exe is in), but don't change the folder structure inside QB64GuiTools.

BTW - What did I wrote above you shall do, if you're new to GuiTools? ;-)
Title: Re: The GuiTools Framework
Post by: ForSe on December 28, 2018, 09:17:34 am
BTW - What did I wrote above you shall do, if you're new to GuiTools? ;-)

Oops, sorry, I forgot to read the whole post before download it. xP

Anyway, these are my two cents:
- I noticed that the text of check boxes & radio[ button]s cannot be clicked.
- Lists and radios should can be navigated by arrow keys.
- Sliders also should can be controlled by arrow keys.
- Also I found it interesting that both of the arrow buttons of the list are below or only one side of the scrollbar.

That's it for now. (pardon my poor grammar, I'm a non-native speaker)

Cheers.
Title: Re: The GuiTools Framework
Post by: RhoSigma on December 28, 2018, 10:01:01 am
Anyway, these are my two cents:
- I noticed that the text of check boxes & radio[ button]s cannot be clicked.
- Lists and radios should can be navigated by arrow keys.
- Sliders also should can be controlled by arrow keys.

That's all true, and it will probably never change to do so. Baam, that sounds hard I know, but when you find time in the next few hours/days to read at least the Introduction part of docs\GuiToolsFramework.pdf, then you will notice that I'm not going to reinvent Windows, but the Commodore Amiga's GadTools user interface. Hence look and operation of my GUIs will (mainly) follow Amiga-style, not usual Windows-style. Nevertheless this is no strict guideline, so you may still hope, but it's certainly not 1st priority for me to implement keyboard controls for things which were mainly developed for mouse control (except input fields of course :))

BTW - Did you try the scrollwheel + Ctrl on lists/radio/cycle on sliders/scrollers also without Ctrl or with Shift pressed. Also lists/radio/cycle have shortcuts (shown in the tooltips).

- Also I found it interesting that both of the arrow buttons of the list are below or only one side of the scrollbar.

For sure, I think this is one of the BEST inventions of the AmigaOS. Think about a big window, maybe even a fullscreen one, and now you wanna single step back and forth vertically and horizontally. You need extreme mouse movements from arrow to arrow button, moving up/down/left/right and even diagonal accross the entire screen (guess that's why windows needs key controls for scrollers :)). In the Amiga's GUI and now in my GuiTools you reach every arrow with minimal mouse moves.

BTW - Have you tried holding down any scroll arrow for more than 0.5 sec, it will start repeating the single step.

Have fun...

Title: Re: The GuiTools Framework
Post by: RhoSigma on March 01, 2019, 08:11:59 pm
bump to v0.9 (Repackaged) (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 11, 2019, 10:02:34 am
bump to v0.10 (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: keybone on June 12, 2019, 10:12:46 pm
What about GuiTools makes it windows only?
Or is it just untested under any other OS?
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 13, 2019, 01:50:19 am
What about GuiTools makes it windows only?
Or is it just untested under any other OS?

Hi keybone,
it's mainly the Win API calls i use in some support functions in dev_framework\GuiAppFrame.h and in the DECLARE LIBRARY block (line 160) in GuiAppFrame.bi,
but it could also be that i use keywords here and there, which are unsupported under Mac/Linux (never checked that).

If you're familiar with Mac and/or Linux and their internals, then feel free to try replacing the Win API calls with respective Mac/Linux API calls (if compareable calls exist for these). I would be happy to include these via conditional pre-compiler sections in the future, but I've never ever been in touch with any Mac/Linux system and have no idea, if the Win API calls have their native counterparts on Mac/Linux.
Title: Re: The GuiTools Framework
Post by: keybone on June 13, 2019, 06:40:32 am
Hi keybone,
it's mainly the Win API calls i use in some support functions in dev_framework\GuiAppFrame.h and in the DECLARE LIBRARY block (line 160) in GuiAppFrame.bi,
but it could also be that i use keywords here and there, which are unsupported under Mac/Linux (never checked that).

If you're familiar with Mac and/or Linux and their internals, then feel free to try replacing the Win API calls with respective Mac/Linux API calls (if compareable calls exist for these). I would be happy to include these via conditional pre-compiler sections in the future, but I've never ever been in touch with any Mac/Linux system and have no idea, if the Win API calls have their native counterparts on Mac/Linux.

Thanks for the info, your GUI toolkit is awesome, I primarily use linux. I have tried it before on a windows system when i had access to one, and one of these days when i get time ill try to mess around with it and see if i can make it work. Im not the best programmer in the world so no guarantees but if i figure it out ill let u know. :D
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 14, 2019, 02:25:25 am
QB64 (the win version) runs very fine if you have installed Wine under Linux and the GuiToolsFramework runs too. It needs a little bit mor time for compiling.

So Wine is some kind of an emulator? And it does even emulate the WinAPI calls? Well obviously it does, otherwise the Windows version of QB64 won't run either i guess.

Well that's an alternative for Keybone and anybody else who wanna give GuiTools a try on Linux.

Thanks for that valuable info BSpinoza.
Title: Re: The GuiTools Framework
Post by: SMcNeill on June 14, 2019, 02:41:59 am
So Wine is some kind of an emulator? And it does even emulate the WinAPI calls? Well obviously it does, otherwise the Windows version of QB64 won't run either i guess.

Wine (originally an acronym for "Wine Is Not an Emulator") is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.

******************

Think of it as similar to WOW64. 

In computing on Microsoft platforms, WoW64 (Windows 32-bit on Windows 64-bit) is a subsystem of the Windows operating system capable of running 32-bit applications on 64-bit Windows.

The WoW64 subsystem comprises a lightweight compatibility layer that has similar interfaces on all 64-bit versions of Windows. It aims to create a 32-bit environment that provides the interfaces required to run unmodified 32-bit Windows applications on a 64-bit system.
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 14, 2019, 02:49:20 am
...
Think of it as similar to WOW64. 

In computing on Microsoft platforms, WoW64 (Windows 32-bit on Windows 64-bit) is a subsystem of the Windows operating system capable of running 32-bit applications on 64-bit Windows.
...

Ahh, i see, good to know.
Title: Re: The GuiTools Framework
Post by: KingRat on June 14, 2019, 03:07:28 am
Hi everyone!

I´ve downloaded it and I extracted the folder to my qb64 directory, but It doesn´t compiles the demos :\

It returns:
Quote
C:\Users\Sti\AppData\Local\Temp\ccVpsX2N.o:qbx.cpp:(.text+0x23): undefined reference to `__glutInitWithExit'
C:\Users\Sti\AppData\Local\Temp\ccVpsX2N.o:qbx.cpp:(.text+0x46): undefined reference to `__glutCreateWindowWithExit'
C:\Users\Sti\AppData\Local\Temp\ccVpsX2N.o:qbx.cpp:(.text+0x68): undefined reference to `__glutCreateMenuWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x23): undefined reference to `__glutInitWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x46): undefined reference to `__glutCreateWindowWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x68): undefined reference to `__glutCreateMenuWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x31211): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x31226): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x69442): undefined reference to `glutSetCursor'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x69695): undefined reference to `glutSetCursor'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x69a62): undefined reference to `glutWarpPointer'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xa4a60): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xa4aae): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xa4af7): undefined reference to `glutIconifyWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaecc7): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaecd3): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaed10): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaed1c): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaed28): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaeda5): undefined reference to `glutPositionWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaedc1): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaedd0): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaeddd): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaedea): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaee1e): undefined reference to `glutPositionWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xba9af): undefined reference to `glutShowWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xba9d7): undefined reference to `glutHideWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbc241): undefined reference to `glutGetModifiers'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbc57e): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbc5cf): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfca8): undefined reference to `glutReshapeWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfcad): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfcf6): undefined reference to `glutReshapeWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfcfb): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfd98): undefined reference to `glutReshapeWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfd9d): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfdc2): undefined reference to `glutFullScreen'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc0e61): undefined reference to `glutSwapBuffers'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc1cc0): undefined reference to `glutSetWindowTitle'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc440e): undefined reference to `glutInitDisplayMode'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc441d): undefined reference to `glutInitWindowSize'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4427): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc44dd): undefined reference to `glutDisplayFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc44f4): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4500): undefined reference to `glutKeyboardFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc450c): undefined reference to `glutKeyboardUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4518): undefined reference to `glutSpecialFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4524): undefined reference to `glutSpecialUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4530): undefined reference to `glutMouseFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc453c): undefined reference to `glutMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4548): undefined reference to `glutPassiveMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4554): undefined reference to `glutReshapeFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4560): undefined reference to `glutMouseWheelFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4565): undefined reference to `glutMainLoop'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc9ffd): undefined reference to `glutDisplayFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca014): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca020): undefined reference to `glutKeyboardFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca02c): undefined reference to `glutKeyboardUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca038): undefined reference to `glutSpecialFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca044): undefined reference to `glutSpecialUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca050): undefined reference to `glutMouseFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca05c): undefined reference to `glutMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca068): undefined reference to `glutPassiveMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca074): undefined reference to `glutReshapeFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca080): undefined reference to `glutMouseWheelFunc'
collect2.exe: error: ld returned 1 exit status

Any idea?!?
Title: Re: The GuiTools Framework
Post by: SMcNeill on June 14, 2019, 03:18:42 am
You’re missing glut, would be my guess, for whatever reason.
Title: Re: The GuiTools Framework
Post by: KingRat on June 14, 2019, 03:31:08 am
I´ve placed the folder in into my QB64 folder as recomended.

By the way, It was a long night, better take a nap now!

73´s everyone!
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 14, 2019, 05:22:17 am
Missing glut rather indicates a broken QB64 installation, you should probably download QB64 v1.3 again and re-install it in a whole new folder first. Then move QB64GuiTools into that new qb64 folder too and try again.
Title: Re: The GuiTools Framework
Post by: KingRat on June 14, 2019, 01:24:07 pm
RhoSigma, I managed to get it running this morning, I noticed that the Internal folder had outdated stuff inside, I´ve just deleted it and extracted it again from the 1.3 zip and voila!

By the way, you coded some serious stuff here, Great Job!
I liked the Amiga style, I think this kind of interface still has use today!

THX, 73´s!

Title: Re: The GuiTools Framework
Post by: RhoSigma on June 14, 2019, 02:36:37 pm
RhoSigma, I managed to get it running this morning, I noticed that the Internal folder had outdated stuff inside, I´ve just deleted it and extracted it again from the 1.3 zip and voila!
Well, sometimes problems can be solved really easy, when you wake up with a refreshed mind after taking a nap.

By the way, you coded some serious stuff here, Great Job!
I liked the Amiga style, I think this kind of interface still has use today!

THX, 73´s!
Thank you very much, i'm glad you like the style. It's actually a mix from AmigaOS versions 2.0 to 3.1 + some MUI features (Magic User Interface).
Title: Re: The GuiTools Framework
Post by: RhoSigma on August 15, 2019, 07:17:51 pm
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: bplus on August 15, 2019, 07:38:03 pm
Hey a real coder liked my "blanker" demo! :)
Title: Re: The GuiTools Framework
Post by: RhoSigma on October 01, 2019, 06:53:29 pm
GuiTools release v0.11 is now available (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: RhoSigma on October 28, 2019, 03:24:40 pm
Updated Notepad++ Setup for NPP release v7.8 is now available (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: RhoSigma on January 20, 2020, 08:28:33 pm
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: FellippeHeitor on January 20, 2020, 08:48:35 pm

Notepad++ Setup
updated according to the latest N++ release 7.8.3
QB64 keywords now recognized with and without underscore prefix (new $NOPREFIX in QB64 v1.4)
My own library keywords now recognized with and without return type suffix (except $, which is mandatory)

❤️
Title: Re: The GuiTools Framework
Post by: RhoSigma on January 25, 2020, 05:58:50 pm
Another small Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: RhoSigma on March 31, 2020, 10:02:53 am
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 13, 2020, 02:58:24 pm
GuiTools Release v0.12 (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: FellippeHeitor on June 13, 2020, 05:33:40 pm
Oh! Now that's a breakthrough! Downloading now.
Title: Re: The GuiTools Framework
Post by: bplus on June 13, 2020, 07:57:57 pm
Yeah Multi-Form is breakthrough, so would a Text Editor Control be. :)
Title: Re: The GuiTools Framework
Post by: FellippeHeitor on June 21, 2020, 06:17:58 pm
Took me sometime but I finally got around to studying your multi-window approach. Pretty clever work, RhoSigma.

I'll definitely consider something similar for InForm.
Title: Re: The GuiTools Framework
Post by: Unseen Machine on June 21, 2020, 06:37:42 pm
I'll have to have a look see in to this aswell...glad to hear you're finally catching up with VQB :)

Unseen



Attachments Displayed Below Message Body

Title: Re: The GuiTools Framework
Post by: FellippeHeitor on June 21, 2020, 07:02:41 pm
Oh, not window frames in a window. Actual windows on the Desktop. Worth checking out.
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 21, 2020, 07:13:38 pm
Thanks Guys,
it took almost 5 years, but this was something I had in my head from the early days of GuiTools. However, often it takes time to see how a project will evolve and how all parts play together, to find a way and get a clue how "relative" easy you can implement the next thing. In fact the hardest part here was to go thru the entire source base, changing all image references to use either _SOURCE or _DEST, instead of a fixed handle to the main screen. If I recall correct, it were some 400 references to change, and you may guess how often I had to go in again, cause I found another reference, which I've missed before :)

Title: Re: The GuiTools Framework
Post by: Unseen Machine on June 22, 2020, 05:28:44 am
Quote
Oh, not window frames in a window. Actual windows on the Desktop. Worth checking out.

In that case WOW! I'd never have even thought that you could do that with out calling on an external library! I didnt know Qb64 allowed you to generate multiple screens....so Hats of to RhoSigma...i'll defo put this on my "I've got to have a look see under the hood" pile.

Here's how i did multiple screens in the old days....(it was pooey cause i had to the write all my own functions for input and rendering!) but an unlimited number of screens!

Code: QB64: [Select]
  1. // SCREEN FUNCTIONS
  2. int GDK_GL_SCREEN (int width, int height, const char* title, int ref)
  3. {
  4.         if (!GL_Wnd[ref].IsOpened())
  5.         {
  6.                 GL_Wnd[ref].Create(sf::VideoMode(width, height, 32), title);
  7.                 return -1;
  8.         }
  9.         else
  10.                 return 0;
  11. }
  12.  
Title: Re: The GuiTools Framework
Post by: RhoSigma on June 22, 2020, 05:58:23 am
Guys, don't think I'm a magician :)
Every QB64 program can have its window, so what I basically do is to SHELL out the app to itself, hence every window is just another running instance of the main program.

I designed GuiTools from the beginning on as a multi-entry-point program. Using secret command lines when shelling out, the init procedure of GuiTools can decide where to go to, if no or no known cmd line is given, it's considered a regular program start and the init procedure will branch into the regular user main routine.

The tricky thing here is to keep all running copies of a program without interferrence but in sync where required, which I use unique IDs and mutexes for.

This mechanism is used in GuiTools for MessageBoxes, File selection dialogs and now multiple forms.
Title: Re: The GuiTools Framework
Post by: RhoSigma on November 08, 2020, 01:26:18 pm
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: RhoSigma on January 16, 2021, 03:56:00 pm
Another Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: RhoSigma on July 17, 2021, 06:51:55 pm
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
Title: Re: The GuiTools Framework
Post by: jack on September 24, 2021, 12:59:29 pm
hello RhoSigma
Quote
Go into the QB64Starter.bat
can't find that file anywhere, can you post it here?
Title: Re: The GuiTools Framework
Post by: RhoSigma on September 24, 2021, 01:10:33 pm
hello RhoSigmacan't find that file anywhere, can you post it here?

Assuming you got the latest NppThemesQB.7z from the initial post, it should be in the "ide-shortcuts" sub-folder.
Title: Re: The GuiTools Framework
Post by: jack on September 24, 2021, 01:14:23 pm
Ok, sorry for the trouble, must have had a blond moment
Title: Re: The GuiTools Framework
Post by: RhoSigma on October 04, 2021, 08:02:24 pm
GuiTools and Library Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))

The entire GuiTools Framework and the Libraries Collection (Bonus Stuff Section) got an complete overhaul to not longer relying on the old recursion bug, which got finally fixed in the QB64 v2.0 development builds (see https://qb64forum.alephc.xyz/index.php?topic=4209).



In this place I'd also like to say special thanks to @FellippeHeitor once again for his unbroken enthusiasm in pimping our QB64.

Also many thanks for re-enabling the editing feature here, I really appreciate that, as I can provide code updates in the old usual way without producing redundancies and leaving old outdated code behind.
Title: Re: The GuiTools Framework
Post by: FellippeHeitor on October 05, 2021, 05:18:56 pm
In this place I'd also like to say special thanks to @FellippeHeitor once again for his unbroken enthusiasm in pimping our QB64.

It's a pleasure. Thank you so much for the words.
Title: Re: The GuiTools Framework
Post by: RhoSigma on November 13, 2021, 12:15:57 pm
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))