QB64.org Forum
Active Forums => Programs => Topic started 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.
- GuiTools works with every QB64 version since v0.954 (SDL), so if you're one of these normal people who not update to the latest development build every week, that's not a problem. Just use whatever QB64 version you've installed, as long it's greater or equal to the 0.954 version.
- GuiTools was developed with its main attention at dynamic UI creation, ie. you can easily create, modify and delete objects during runtime on the fly. There is intentionally no Designer tool here, as it would encourage people to build static UIs only. Although static UIs are quite legitimate here and there (and also possible with GuiTools), it would be a waste of GuiTools its capabilities.
- GuiTools can handle multiple forms in one program, each form in its very own independent window on your desktop, but all forms are still controlled in realtime by that one program, hence real multi-windows applications. As shown in the Multi Windows Demo, it's even possible to have interactions between several forms windows.
- GuiTools does already include a huge amount of useful functions, ready for use within your handler code. The range goes from general file and string handling functions to specialized functions like image processing and packing/unpacking. The inbuilt MessageBox and FileOpenDialog do perfectly fit into the GuiTools look and feel.
- GuiTools its UIs can be customized by every local user. Using the provided Preferences Editor, users can easily change colors, wallpapers and patterns of the GuiTools UIs without the need to recompile any applications.
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
-
bump to v0.9 (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
-
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".
-
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? ;-)
-
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.
-
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...
-
bump to v0.9 (Repackaged) (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
-
bump to v0.10 (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
-
What about GuiTools makes it windows only?
Or is it just untested under any other OS?
-
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.
-
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
-
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.
-
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.
-
...
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.
-
Hi everyone!
I´ve downloaded it and I extracted the folder to my qb64 directory, but It doesn´t compiles the demos :\
It returns:
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?!?
-
You’re missing glut, would be my guess, for whatever reason.
-
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!
-
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.
-
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!
-
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).
-
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- QB64Library
- revision to allow use of the libraries with OPTION _EXPLICIT in effect, without throwing any IDE warnings or errors
- complete documentation overhaul
- ScreenBlankers
- BinClock wasn't actually a blanker module, now it is
- added graphic demo Spinner by bplus, made into a blanker module
- Notepad++ Setup
- added new $COLOR meta-keyword, which was introduced by Steve
- complete documentation overhaul
-
Hey a real coder liked my "blanker" demo! :)
-
GuiTools release v0.11 is now available (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
-
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))
-
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- QB64Library
- added my new Stringbuffer library (File/Data buffering in String arrays)
- Image processing functions now accept zero as handle of the current screen page
- removed double underscore from HSB/HSV colorspace converter functions (was simply ugly)
- documentation overhaul (cross reference links added)
- ScreenBlankers
- minor changes according to library updates
- 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)
-
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)
❤️
-
Another small Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- QB64Library
- fixed the MD5 hash library, so it's usable now with the 64-bit version of QB64 too (this was the last remaining restriction, now all libraries work equally in 32-bit and 64-bit versions)
- added new SHA2 hash library, which it's functions are in symmetry with the MD5 library, but calculating the SHA256 digest instead
- both libaries (MD5/SHA2) can be combined in the same program, there are no inconsistencies or name conflicts
- Notepad++ Setup
- just added new/changed library keywords to my Lib&GuiTools UDLs
- no changes in the QB64 only UDLs
-
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- Notepad++ Setup
- all Notepad++ related files updated to release 7.8.5
- added new keywords for the falcon.h (unicode printing) tool set to my Lib&GuiTools UDLs
- removed some duplicate keywords from the QB64 only UDLs
-
GuiTools Release v0.12 (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- GuiTools Framework
- Implemented GuiViews, GuiTools its new multiple forms support. This is no such stuff like CHAINing from one to another form, or hiding one form and make another one visible, but I talk about real multiple windows applications. Each form is displayed in its own independent window, but all forms are still controlled within the same one program using the same GUI object base, hence even realtime cross-form object interconnections are possible without any hassle (see src_MultiWinDemo). For more see the docs\ReleaseNotes.txt file in the archive.
- Notepad++ Setup
- just updated the Libs+GuiTools UDL files to reflect the new GuiTools function names
-
Oh! Now that's a breakthrough! Downloading now.
-
Yeah Multi-Form is breakthrough, so would a Text Editor Control be. :)
-
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.
-
I'll have to have a look see in to this aswell...glad to hear you're finally catching up with VQB :)
Unseen
-
Oh, not window frames in a window. Actual windows on the Desktop. Worth checking out.
-
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 :)
-
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!
{
if (!GL_Wnd
[ref
].IsOpened
()) {
GL_Wnd
[ref
].Create
(sf::VideoMode
(width, height
, 32), title
);
}
}
-
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.
-
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- Notepad++ Setup
- all Notepad++ related files updated to release 7.9.1
- as major change NPP's functionList.xml file is now splitted into parts, which are stored in the functionList folder, if you don't wanna update to the latest NPP version yet, then you should not install this new functionList stuff into your older NPP installation
- added new keyword _EXPLICITARRAY in the QB64 UDL files
-
Another Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- Libraries Collection
- all C-Header based libraries reworked to use their own unique namespaces and include guards
- added a special edition of the Stringbuffer system (SB-Storage), which allows for multiple buffers per array using handles
- Notepad++ Setup
- added the new _MEMSOUND and _ERRORMESSAGE$ keywords in all UDLs
- removed some death library keywords from my Lib&GuiTools UDLs
-
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- QB64Library
- some minor code cleanup, no functional changes
- improved Overview and individual documentations (TOCs)
- ScreenBlankers
- added new blanker Bezier.bas
- minor code changes in Worms.bas
- Notepad++ Setup
- updated according to the latest N++ release 8.1.1
- added new $DEBUG keyword
-
hello RhoSigma
Go into the QB64Starter.bat
can't find that file anywhere, can you post it here?
-
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.
-
Ok, sorry for the trouble, must have had a blond moment
-
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.
-
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.
-
Bonus Stuff Update (see initial post here (https://qb64forum.alephc.xyz/index.php?topic=809.msg100182#msg100182))
- Notepad++ Setup
- Fixed config check for "Save EXE with source" option, which was broken since QB64 v1.5 due to the name change of the config file
- added keywords _ENVIRONCOUNT and _FPS in the QB64 UDL files