MaxguiEx module - extended maxgui functionality!

BlitzMax Forums/MaxGUI Module/MaxguiEx module - extended maxgui functionality!

skn3(Posted 2012) [#1]
Well I have recently posted a ton of maxgui enhancements as code snippets but decided to make a git repo and separate the module from my current project.

Introducing maxguiex!
https://bitbucket.org/skn3/maxguiex

my systemex module is also required:
https://bitbucket.org/skn3/systemex

This is a module to extend maxgui on windows and mac, it provides functionality like loading gui fonts from disk, custom cursors, batch list operations, gadget dimensions and more!

There is no linux support as I don't have the time to write the code for a platform I don't plan to support with my app. If anyone would like to port the functions to linux then please fork the repo :)


Htbaa(Posted 2012) [#2]
Cool. Now on to Maximus with it! :-)


JoshK(Posted 2012) [#3]
How did you make the grid editor shown here?:



skn3(Posted 2012) [#4]
Cool. Now on to Maximus with it! :-)


Hmm I added them to my account on there but they don't seem to be picking up the git repo's. Am I meant to add a SCM per repo and then assign a new module to that SCM? is there anything after that I should do?

How did you make the grid editor shown here?:

The bit bottom left? Lots n lots of code! Unfortunately its quite deep rooted into other custom modules and it would be hell and time consuming to make it public source!

It is just built up of gadgets and custom proxy gadgets though... Id be happy to return the favour of code you gave with the canvas based tree if you like? But not sure how much use it would be cos of the tie to the other modules.


skn3(Posted 2012) [#5]
Update: Added SetTextAreaLineSpacing()


skn3(Posted 2012) [#6]
Update: Added ScrollTextAreaToTop() ScrollTextAreaToBottom() ScrollTextAreaToCursor()


skn3(Posted 2012) [#7]
Update: Added GetAppResourcesPath()

(this is mainly for mac mode and will get the app bundle resources path)


skn3(Posted 2012) [#8]
Updates
Added: CreatePanelEx()
Added: SetPanelExGradient()
Added: PointOverGadget()
Fixed: GadgetWindow()

PointOverGadget & GadgetWindow
PointOverGadget() is a function to do a "hit test" from a screen point to a gadget. Very useful if your making drag and drop!

GadgetWindow() returns the window a gadget belongs to.

PanelEx & Gradients
I have coded an Extended Panel which uses a normal maxgui panel and allows custom code to replace default behaviour. The current ability of a PanelEx is to set a gradient fill. I will inevitably add some more functionality to panelEx but gradients are a good start!

The gradient fill works on windows and mac. On windows GDI is used and on the mac NSGradient is used.

Here is an example of gradients working:




Last edited 2012

Last edited 2012

Last edited 2012


Grisu(Posted 2012) [#9]
Thanks for the update.

Is there a way to enable mousewheel up/down support for the ScrollPanel?


skn3(Posted 2012) [#10]
Hey grisu, it should be fairly easy, although I can't really take on requests as this is my day job and can only afford to add things used in my project. Have you tried just copying the scroll panel code and adding in to capture the mouse wheel event?


skn3(Posted 2012) [#11]
hey again grisu,...


had a thought and it probably wouldn't be as easy as it would first seem. The scroll event is only really fired for teh currently focused gadget, so the moment you focused something inside it would not capture the scroll events.

Maxgui doesn't really have a way to redirect its events to a parent gadget or something like that so it would probably be a big headache to get working on all platforms.


Grisu(Posted 2012) [#12]
Thanks for trying.

I wish I could resurrect Seb to work on the GUI module again. He's my only hope for crossplatform additions.


skn3(Posted 2012) [#13]
Seb was a master of maxgui! I wish I had spare time, I reckon I could really add some cool stuff to maxgui.


Henri(Posted 2012) [#14]
Just wanted to say thanks. Some nice additions to MaxGUI. If you feel like it keep it coming.


-Henri


skn3(Posted 2012) [#15]
Thanks :D

On my todo list is to add a painting API to the panelEx. This would work by the panel calling a custom paint function pointer. You would then be able to use a set of cross-platform painting commands such as PaintGradientRect() PaintText() PaintTextInRect() PaintLine() etc

It would hopefully mean the end of having to use a canvas for custom gadgets!

Id like to convert some of the custom gadgets I have in Objecty (the project which is backing maxguiex) to use a single panel without bitmaps. Currently some of the custom gadgets are comprised of many smaller panels which is not very efficient. It is not high on the todo list but it will get done eventually :)

Last edited 2012


ima747(Posted 2012) [#16]
Haven't used this yet, but just wanted to say thanks for putting it out there, looks great! The cross platform support is really the key. Also thanks for the GetAppResourcesPath() method, sandboxing and store compliance is going to be tricky to nail down in bmax apps, this is going to help a lot.


skn3(Posted 2013) [#17]
Moved to bitbucket