MaxGUI Upgrade

BlitzMax Forums/MaxGUI Module/MaxGUI Upgrade

skidracer(Posted 2007) [#1]
If you received MaxGUI from the free BlitzPlus update deal and would like to see it go places in the future please consider donating to development by purchasing a new MaxGUI key.

Purchase price will go directly towards paying for development hours of the next version and if I sell more than 100 keys in the next month future releases will be public domain.


SebHoll(Posted 2007) [#2]
Done! I don't mind paying extra for MaxGUI (on top of BlitzPlus) as I find it such a brilliant module (without the bugs ;-) ) and it would be even better if the bugs were squished and new features added. Consider me your first re-purchaser! What do I do with my second key as I can't register it on the site?

Also what do you mean by releasing it into public domain? - Isn't the code going to be released with the module anymore?


Difference(Posted 2007) [#3]
Will the new version have Grid/Table/Multicolum listboxes?

If so,- I'd be very happy to re-purchase.


skidracer(Posted 2007) [#4]
Thanks Seb! Keep the key as you may need it for the next version. Going Public Domain would just means maxgui won't be covered by the blitz shared source code license so the modules can move to pub where I'm sure they will be much happier and can be bundled free with blitzmax demo and release etc.


Amon(Posted 2007) [#5]
Will buy one now. Do you need proof of purchase?

Wait! I'll buy it and then email you the key.

:)


skidracer(Posted 2007) [#6]
Amon, thanks!, no need to email me, I see all.

Peter, as soon as dev.win32maxgui is stable it's next on my list!


Amon(Posted 2007) [#7]
OK, It's bought.

:)

[edit] I get paid my Disability Allowance on Tuesday so I may be able to buy another one.

I like buying stuff. :)


WendellM(Posted 2007) [#8]
Amon, I just gotta say... I've never seen such a previously banned user on any forum be such a supporter. You're apparently one of the "worst" and most financially-supportive Blitzers around. A big, cockeyed cheer for you! <g>


Amon(Posted 2007) [#9]
Amon, I just gotta say... I've never seen such a previously banned user on any forum be such a supporter. You're apparently one of the "worst" and most financially-supportive Blitzers around. A big, cockeyed cheer for you! <g>


Thanks, Well I do try. ;)


impixi(Posted 2007) [#10]
I've also purchased another MaxGUI key. Worth it, I think. Keep up the good work, Simon.


IKG(Posted 2007) [#11]
I'll be buying it in the following weeks ;)


hub(Posted 2007) [#12]
Done.


CS_TBL(Posted 2007) [#13]
What needs to be done yet for MaxGUI anyway? I have the impression that -apart from minor bugs and perhaps a number of gadgets ppl opt for- it's pretty much done. Most language enhancements need to be done for the core BMax itself (method pointers, priv/pub type members, etc.)


Bremer(Posted 2007) [#14]
Back when it was released, I was able to download it for free, since I already had blitzplus, but I choose to pay for it anyways, so I was actually ahead of the times for once :) Looking forward to see additions and improvements for the maxgui.


Difference(Posted 2007) [#15]

> Will the new version have Grid/Table/Multicolum listboxes?
> If so,- I'd be very happy to re-purchase.

Peter, as soon as dev.win32maxgui is stable it's next on my list!


Alright then, I've purchased another MaxGUI key :)
[EDIT]: purchased *a* key. The first one I got for free because I had bought Blitz+


Grisu(Posted 2007) [#16]
What will help the dev team more:
Buying 3 extra copies of maxgui or 1 extra copy of bmx?
Are the fees paid to shareit the same in both options?


Robert Cummings(Posted 2007) [#17]
I got blitzplus anyways on an alt account but I bought the max gui module because it works and its cool.

I think its a good idea to move it in with the main blitz distribution, but a shame sales are so few that you have to ask.


CS_TBL(Posted 2007) [#18]
Well, most buyers BRL attracts hope to be able to make games with Blitz. GUI stuff is naturally less popular for these people. The business coders usually choose some other language or some other flavor of BASIC.


skidracer(Posted 2007) [#19]
Armstrong Communications (aka acid software aka skidracer) have no shame, I like MaxGUI and I think some new features are long overdue. Also, as stated elsewhere, MaxGUI was given to me when I finished being an employee of BRL end of last year and the MaxGUI shareit link on this site goes to my own listing.

I am still part of the blitz dev team but MaxGUI is now an independent module and will likely be moving out of the brl module path in future. As I said above I would ideally like to move it into pub and give registered users access to private development versions but we shall see.


CS_TBL(Posted 2007) [#20]
I suggest we let puki buy 1000 keys .. :P


Grisu(Posted 2007) [#21]
^^^ Before or after he robbed a bank? ;)


Boulderdash(Posted 2007) [#22]
Im not Paying for it twice????? madness?????? who in the world pays for software more than once?


Gabriel(Posted 2007) [#23]
Im not Paying for it twice????? madness?????? who in the world pays for software more than once?

Reread. No one asked anyone to pay twice. People who got it for nothing are being asked to consider paying ONCE.


degac(Posted 2007) [#24]
@Skidracer
Just a few questions:
there will be a 'new' MaxGUI module (rewritten from zero) or it will be an evolution? Will it be multiplatform again (I hope!)?

I have not understand correctly what do you mean with

...but MaxGUI is now an independent module and will likely be moving out of the brl module path in future. As I said above I would ideally like to move it into pub and give registered users access to private development versions but we shall see.


Moving out of the BRL module path in future...Does it mean that sync from the IDE could be (in future) disabled? In this case what be the new way?
I prefer to keep 'all in one house' all the products (Bmax+modules) than going in different web site...(yes I'm lazy: I like click on Sync to see what's new...)

just to know...I'm very happy with the MaxGUI module - even with some limits it has (the only thing I would like is a GridGadget and multi-colons for all the platforms...).
Byez


skidracer(Posted 2007) [#25]
The MaxGUI module itself is mostly a device driver framework for the native modules. The windows module win32maxgui.mod has been rewritten from scratch, that update will hopefully be ready soon.

MacOS and FLTK drivers have been pretty stable so after the next update I am really looking forward to finally extending the original BlitzPlus functionality and removing some of the limits users are facing.


skidracer(Posted 2007) [#26]
MaxGUI 1.15 looks like it is up on syncmods, hopefully includes a fix for win32 menuitems not appearing as event source and a new SetDataSource method for gadgets. Currently in development it lets you do the following sort of thing, with items being fetched from string arrays or object lists (which are converted from result of enumerating ToString() on each member).

Currently only works with container gadgets but I'd like to extend it to work for menu and node trees. I have an idea for a matching SetStyleSource interface but will do some more testing on that one.

The implementation should be able to maintain coherency quite efficiently between the itemlist and your datasource so small modifications anywhere on a large data set should sync quickly. Unfortunately you do need to call SetDataSource again after modifying your list or array but this should be a relatively snappy operation if the data has not changed significantly:

Strict 

Local window:TGadget
Local listbox:TGadget

window=CreateWindow("My Window",30,20,200,400)
listbox=CreateListBox(0,0,ClientWidth(window),ClientHeight(window),window)
SetGadgetLayout listbox,1,1,1,1

listbox.SetDataSource AudioDrivers()

While WaitEvent()
	Print CurrentEvent.ToString()
	Select EventID()
			
		Case EVENT_GADGETSELECT
			Local i=EventData()		'what got selected?
			If i=-1 Exit			'test for deselection			
			Local src$[]			'a string array to test eventextra
			src=String [] EventExtra()	'cast datasource to string array
			Notify "Select:"+src[i]	'combine datasource and index

		Case EVENT_WINDOWCLOSE
			End
		
	End Select
Wend



degac(Posted 2007) [#27]
Hey this is nice! A Faster way to populate and retrieve information!!! Nice Nice Nice.
thanks

Edit:
I was playing with the new 'things' like SyncDataSource() & KeysFromList$ and I'm attempting to run this code
Strict 

Local window:TGadget
Local listbox:TGadget

window=CreateWindow("My Window",30,20,200,400)
listbox=CreateListBox(0,0,ClientWidth(window),ClientHeight(window),window)
SetGadgetLayout listbox,1,1,1,1

Type oggetto
		Field valore:String
End Type

Global my_list:tlist = New tlist

For Local i = 1 To 100
Local	og:oggetto = New oggetto
	og.valore = String(i)
	my_list.addlast og
Next

listbox.SetDataSource my_list


While WaitEvent()
	Print CurrentEvent.ToString()
	Select EventID()
			
		Case EVENT_GADGETSELECT
			Local i=EventData()		'what got selected?
			If i=-1 Exit			'test for deselection			
			Local src$[]			'a string array to test eventextra
			src=String [] EventExtra()	'cast datasource to string array
			Notify "Select:"+src[i]	'combine datasource and index

		Case EVENT_WINDOWCLOSE
			End

	End Select
Wend

The gadgetlist report something different - address?
I read the source but I can't imagine how you can to add from my_list the field 'valore' to the gadgetlist...


Difference(Posted 2007) [#28]
SetDataSource looks promising.

What kind of Datasource will the upcomming Grid control require, - a list of lists of objects?


Mark Tiffany(Posted 2007) [#29]
Skid, how about a listbox.RefreshDataSource command, so that I don't need to explicitly pass the data source in again after it has been refreshed? It might make things cleaner in terms of having a quick refresh / full refresh (re-issue a SetDS) of the list, but more importantly, means that you don't have to remember what the data source was each time...(and potentially get it wrong, or change the var in multiple places if it does change)


Barnabius(Posted 2007) [#30]
Im not Paying for it twice????? madness?????? who in the world pays for software more than once?


Who pays more than once? Probably someone who wants to keep the MaxGUI alive and kicking, or someone who just wants to help indie language developer...

I had BlitzPlus, so I could've opted not to pay for MaxGUI but I've purchased it as soon as it was available and in order to help the development I'll make another order as soon as I get my next paycheck.

If one of the customers over at Emergence Basic forum paid for the addition of OOP to the language and then said it's available to everyone for free, purchasing another MaxGUI module is the least we can do to help here...

Barney


grable(Posted 2007) [#31]
some nice additions there skid =) nice work!


for degac:
The gadgetlist report something different - address?
I read the source but I can't imagine how you can to add from my_list the field 'valore' to the gadgetlist...

Ad this to your type and itl work:
	Method ToString:String()
		Return valore
	EndMethod



degac(Posted 2007) [#32]
Thanks grable!
My stupidity is growing hour by hour...I did't remember the overloading system...


Difference(Posted 2007) [#33]
Purchase price will go directly towards paying for development hours of the next version and if I sell more than 100 keys in the next month future releases will be public domain.


So how did this go? I know I purchased a new MaxGUI key, did anybody else?


kraft(Posted 2007) [#34]
i did


skidracer(Posted 2007) [#35]
Hi all, I have just finished a big non related project and will try and announce MaxGUI road-plan next week.

I have been tinkering with the outstanding problems remaining with axe.win32maxgui use in MaxIDE including some filterkey problems with locked textareas and of course the incomplete htmlview implementation.

Thanks to everyone that has purchased keys recently, the user base continues to grow and I think MaxGUI has a pretty good looking future.


Rozek(Posted 2007) [#36]
Simon,

will you then also work on any platform-specific problems? (e.g., the Linux implementations has several flaws)


computercoder(Posted 2007) [#37]
Thats cool to hear it looks brighter for MaxGUI skidracer! I bought it when it first came out and have been using it since. (off and on of course, as time permits)

I agree the Linux implementation is off from Mac and Windows implementations. I'll take whatever skid fixes tho :)


Nelvin(Posted 2007) [#38]
I bought MaxGUI back at the release date, haven't used it but I'm going to buy another one (as some kind of "update fee") as soon as there's a reasonable good and flexible gridcontrol available.
A grid with different kinds of cells (numbers, text, checkmarks, dropdowns, images, user defined) would really expand the usability of MaxGUI.
Looking forward to see the roadmap.


Mark Tiffany(Posted 2007) [#39]
as there's a reasonable good and flexible gridcontrol available.

It's the certainly the one obvious gap in maxgui for me.

Oh, and images on menus, tabs, buttons would be nice too.


CodeGit(Posted 2007) [#40]
I will purchase another license when it has a decent gridcontrol. In my opinion, without a gridcontrol, it's just not good enough for serious application programming.


Grisu(Posted 2007) [#41]
Grid control would be lovely.

@Skid: Will you release another dev version soon?


skn3(Posted 2007) [#42]
pssst



Grid control?

I am about to go purchase a key :)

Skidracer, 1 thing I would like to see for myn (and others support) is a hook into non canvas gadgets paint messages. That way we can implement icons on buttons and various other features ourselves. Just give the raw windows paint message event for gadgets built into blitzmax please please please.


LarsG(Posted 2007) [#43]
skn3:

is this something you've done yourself, or is this something that's (going to be) implemented in MaxGUI?


skn3(Posted 2007) [#44]
You can have a look through this code if you want. I have basically just written a wrapper for the maxgui implimentation plus a german posters code for the stringtable gadget. Id like to rewrite it at some point. Was kind of bolted on.

You'll have to go in and figure it out, but here is an example of how to use it.

Import "../../global/libs/ggui.bmx"

'create an update list. This lets you store all gadgets that need updating
Local updatelist:gupdatelist = New gupdatelist


'### create a window ###
Global window:ggadget = gwindow.create("A window",[10,10,400,300])
'add a window to the update list
updatelist.addgadget(window)
'add update hook to window gadget. this basically tells the gadget to go to a specified function upon updating
window.setupdatehook(MyEvents)


'### create a stringtable ###
'this function uses the gwindow.insiderect() this basically returns a 4 dimensional array of the client area of the gadget
Global stringtable:gstringtable = gstringtable.create(window.insiderect(),window)
'add some columns
stringtable.addcolumn("column1",100)
stringtable.addcolumn("column2",100)
stringtable.addcolumn("column3",100)
'add some rows
stringtable.addrow(["row0 col0","row0 col1","row0 col2"])
stringtable.addrow(["row1 col0","row1 col1","row1 col2"])
stringtable.addrow(["row2 col0","row2 col1","row2 col2"])
'add a stringtable to the update list
updatelist.addgadget(stringtable)
'add update hook to stringtable gadget. this basically tells the gadget to go to a specified function upon updating
stringtable.setupdatehook(MyEvents)


'main loop
Repeat
	'wait for an event
	WaitEvent()

	'check to see if no events belong to items in the update list
	If updatelist.update() = False
		'put all non ggui events here. eg timers and whatnot!
	End If
Forever

Function MyEvents(ngadget:ggadget)
	'see who this event belongs too
	Select ngadget
		Case window
			Select EventID()
				Case EVENT_WINDOWCLOSE
					'window closed so end
					End
			End Select
			
		Case stringtable
			Select EventID()
				Case EVENT_GADGETSELECT
					'selection changed on stringtable
					Notify "stringtable row changed to "+EventData()
			End Select
	End Select
End Function



Obviously not as nice as having it built in but its acceptable!!!



Here are the 3 source files

ggui.bmx


tdriveinfo.bmx


multicolumnlistbox.bmx



CodeGit(Posted 2007) [#45]
I have seen this. I still think it should be a native control in MaxGui. My two cents.


Grisu(Posted 2007) [#46]
+1 official support of grids prefered.


IKG(Posted 2007) [#47]
I might buy it later this week :)


Grisu(Posted 2007) [#48]
Has the road map been posted yet?

Just don't want to miss a thing... :/


SebHoll(Posted 2007) [#49]
Nothing so far, I'm hoping Skid's giving us the silent treatment purposefully and then one day he'll release the module and we'll be like WOW! It seems the Blitz way is to keep us in suspense...

...Waiting patiently...


skidracer(Posted 2007) [#50]
When your operating system informs you versions.dll is gone and every app fails it's time to take it easy so sorry no work scheduled in next couple of days.

I would personally like to get a couple of updates out before end of June so perhaps we should leave it at that and I won't use the term road map again.


Things I have been thinking about include:

abandoning fltk
adding maxgui interface to Mark's gxlib
finishing keyboard and html probs in axe.win32maxgui
checking out columns in cocoa tables
beef up gadgetitem methodology

I also would like to have SetDataSource work with a window and provide an entire gui using the same abstract string data/view synchronization featured in last release.

If items become nodal instead of just list based the datasource can provide the complete contents of any gui. Likewise items in a list or treeview could contain a bunch of gadgets.


But thats all in the future. If I can finally release the new win32maxgui and add some features to both it and cocoa by end of next month I'll be happy.


SebHoll(Posted 2007) [#51]
Hi Skid,

@ Abandoning FLTK - Good idea! Especially since GTK is a lot better, and more time can be devoted to the other modules that are more popular.

@ Adding MaxGUI Interface, Keyboard and HTML Probs, Columns, GadgetItems - Cool!

Thanks for letting us know... Btw, your O/S sounds like it needs a format ;-).


Seb


Mark Tiffany(Posted 2007) [#52]
abandoning fltk
adding maxgui interface to Mark's gxlib
finishing ... axe.win32maxgui

Cool. Will you adopt gtk as an "official" lib, or leave it as is? (I guess you may be discussing that with Brucey right now).

It would be really good to have a standard "table" gadget. Maybe a gxlib one would be best? I like tables that I can bastardise by drawing gfx on top of in a "proper" way. Which raises an interesting question: will it be possible to mix & match native gui elements and gxlib elements? I'm guessing you'll have to (the window is native), and I'm also guessing that you don't know yet!

Personally, I'd really like to see icon support added to as many gadgets as possible (windows, tabs, menus): not sure if that's part of what you mean by gadgetitem methodology.


Grisu(Posted 2007) [#53]
Will there be another beta test before the next release?


Blueapples(Posted 2007) [#54]
I don't see why FLTK is so bad? If it were supported 100% then it could replace all three separate implementations...

wxWidgets is another choice. Wouldn't it be easier to convert a library that already supports all platforms?


skidracer(Posted 2007) [#55]
if you have used maxide in fltk for any amount of time you will be well aware of some basic activation problems still in the fltk glue code

fltk2 was also problem, the effort involved was looking like the same it took for the initial implementation, which if i remember correctly was a pretty straightforward 4 week slog.

and antialiasing only turned up in the linux galaxy 10 years ago so is still not a given standard today


N(Posted 2007) [#56]
wxWidgets is another choice. Wouldn't it be easier to convert a library that already supports all platforms?


Been discussed. Issue was size, mainly because wxWidgets, even as seperate libraries, tends to go up to about 50mb with debugging info and without it's still pretty damn big. Not to mention it makes heavy use of overloading, so it's not the prettiest thing to consider wrapping. If you wanted to, you could go download wx.NET and use its C wrapper to get a head-start on it though. I considered it, but it's not an easy thing to do no matter how you look at it.


Blueapples(Posted 2007) [#57]
wxBasic also has a 19,700 line C++ file that wraps the whole library for interfacing his object system (wrap.cpp). I don't know if it's the best place to start though, it is very specific to wxBasic.

However the wxBasic interpreter (On Windows 1 exe, no libraries) is 500k after UPX, so I'm going to have to take issue with the "50 MB" size statement.

I think wxWidgets would make an ideal GUI for BMax, but I'll agree it's a monumental task to wrap it.


N(Posted 2007) [#58]
Problem with wxBasic is its age. The last stable version was released five years ago, and the latest "bleeding edge" hasn't changed since early 2006. Not a whole lot you can do with that, unless you like the idea of going back to 2.4 or earlier.


Yahfree(Posted 2007) [#59]
I'm curious Skid, how many keys did you manage to sell? and do you have plans to make max-gui public domain as stated in the op post? max-gui looks interesting.


Tani(Posted 2007) [#60]
Skid, I don't really want to load you with more work as you seem to have your hands full as it is, but I'm wondering if you will also consider fixing the lacking option for a non-resizable window gadget with a minimize button as discussed in the following topic:
http://www.blitzbasic.com/Community/posts.php?topic=63159#705578

There is a tweak for it provided by denzilquixode in this following topic:
http://www.blitzbasic.com/Community/posts.php?topic=54642#609351

It doesn't look like a to big an addition, I may be wrong though, especially since the preferred solution will be to add an additional flag rather than tweaking another. I mean, the ordinary style with a simple non-resizable window gadget with no min or max buttons are almost needed too for a proper flexibility (at least when it comes to the way I like to design my applications).

It would be really great if you could get that out of the way too, thanx! =D


Grisu(Posted 2007) [#61]
Any news on the dev? *bump*


SebHoll(Posted 2007) [#62]
I'm guessing that development of this module has been delayed because of the release of the Blitz3D SDK - it seems like Skid has played a large role in packaging it and fixing bugs and I think I remember Skid saying he no longer works full time for BRL.

I'm just hoping that he eventually does get a chance to do some improvements to axe.win32maxgui/cocoa bug fixes (1, 2, 3, 4) - but I'm heavily biased as I only use BlitzMax for MaxGUI, and I find myself having to stretch it to my needs as best as I can! I understand though that the majority of Blitzers program games and that's therefore where their priority lies... Still, we sit patiently (well sort of anyway). :-)

I wonder how many more licenses Skid needs to encourage further development? Any comments would be greatly appreciated (as always)...


Blueapples(Posted 2007) [#63]
I want to note that I also use BMax only for MaxGUI. If that module didn't exist, I wouldn't have started using BMax. It's very rare to find an inexpensive, cross platform, compiled BASIC with a GUI package. I wish BRL pushed and enhanced the application development capability more as I see it as a valuable market (at least as much as game development).


Blueapples(Posted 2007) [#64]

Problem with wxBasic is its age. The last stable version was released five years ago, and the latest "bleeding edge" hasn't changed since early 2006. Not a whole lot you can do with that, unless you like the idea of going back to 2.4 or earlier.



Kind of a slow reply, sorry.

I'm not sure if the age thing is really that big of a deal. wxWidgets is very feature complete and has been for awhile. It's at least more complete than MaxGUI, so even if it did mean going back to wx 2.4 I think that'd be an improvement. Then you'd have a base to start working on support for newer versions of the library or just fork the think and do a BMax only version of it.

If I were going to create a GUI for a BASIC compiler, I'm pretty sure it'd be with wxWidgets. But it is a lot of work, no argument there.


Dabz(Posted 2007) [#65]

I like buying stuff. :)



I love buying stuff too! Its nice isnt it! hehehe

I have bought each Blitz language product at least twice, bought Maplet when it was released, I will probably buy the SDK when I have time to play with it.

BTW: currently, I owe the builders merchant just under £5k, feels good! ;)

Dabz


SebHoll(Posted 2007) [#66]
Heh, here's a thought. Maybe the next Axe.Win32MaxGUI release will appear with the new BlitzMax release the Mark has been mentioning in the Bug Reports forum. I'm almost sure that Skid is taking the infamous Steve Jobs suspense marketing technique at the moment... :-P


DavidDC(Posted 2007) [#67]
I want to note that I also use BMax only for MaxGUI. If that module didn't exist, I wouldn't have started using BMax.


ditto


Dreamora(Posted 2007) [#68]
I really like MaxGUI as well and JSPs logicUI made it even more usefull to me.

With my current toolset its nearly joy to create apps :-) (Blide Plus + Publisher + LogicUI @ BM 1.24 + MaxGUI *bought, not free grade*)


Scaremonger(Posted 2007) [#69]
Personally I'm struggling to create my current multi-platform application using MaxGUI (which I bought after looking at other GUI's).

I even wrote my own TTableview to get around the missing Grid control, and found many problems with TProxyGadget along the way.

I'm looking forward to a new release.