Latest win32maxgui beta

BlitzMax Forums/BlitzMax GUI Programming/Latest win32maxgui beta

The latest version of win32maxgui beta is now available for testing. With recent fixes to tabber client area, scrollbar issues, menuevents and sliders it's very close to replacing the legacy brl.win32maxgui module. Last thread was here.

If you can, please help test, remove your dev.win32maxgui folder if you were testing the old one and syncmods for axe.win32maxgui. Place
Import axe.win32maxgui

at the top of your apps. Please post any problems below.

Hi Skidracer
I've just tested this version and there were some differences beetween your and the other version.

- Adding items to a Listbox seems to be faster in your version.good
- If I select a combobox, my program ends without any error message.
- The scrollbar scrolls down if I set a text with SetTextAreaText.

Mfg Suco

Thanks Mfg, will get onto it.

New version is up which should support 32bit iconstrips and an embedded winxp manifest file.

Another problem seems to be htmlview events, clicking on a bmx example file in maxide help browsers the file not loads it.

OK new version is up with fixes for comboboxes and hopefully cursor position/scrollbar issue.

Hi Skid
Bugs are fixed, thank you.
I also found some new listbox bugs.
- If I wait for EVENT_GADGETSELECT, eventextra is null
EDIT: Combobox same problem
- I need to set the mouse over the text of an listbox item to select it with a click.

Thanks again! untested "fixed" version is up.

Nice release - thanks. I found a few problems using this old example I posted for Cocoa in the bug bin:

SuperStrict

Framework Axe.Win32MaxGUI
'Framework Brl.Win32MaxGUI
Import BRL.EventQueue
Import BRL.Random

Global wndMain:TGadget = CreateWindow("Test Window",100,100,200,400,Null,WINDOW_TITLEBAR|WINDOW_RESIZABLE|WINDOW_CLIENTCOORDS|WINDOW_STATUS)
	Global gadTreeView:TGadget = CreateTreeView(0,0,200,370,wndMain)
	
	SetGadgetLayout(gadTreeView,1,1,1,1)
	
		Global gadTreeNode:TGadget[5,5,5]
		
		Local parent:TGAdget = TreeViewRoot(gadTreeView), bparent:TGadget, cparent:TGadget, a:Int, b:Int, c:Int
		
		For a:Int = 0 To 4
		
			gadTreeNode[a,0,0] = AddTreeViewNode("Node " + a,parent)
			bparent = gadTreeNode[a,0,0]
			
			For b:Int = 0 To 4
			
				gadTreeNode[a,b,0] = AddTreeViewNode("Node " + b,bparent)
				cparent = gadTreeNode[a,b,0]				
				
				For c:Int = 0 To 4
				
					gadTreeNode[a,b,c] = AddTreeViewNode("Node " + c,cparent)
				
				Next
			
			Next
			
			
		Next
		
	Global gadButton:TGadget = CreateButton("Select Random Node",0,375,200,25,wndMain)
	
	SetGadgetLayout(gadButton,1,1,0,1)
		
Repeat

	Select WaitEvent()
	
		
	
		Case EVENT_WINDOWCLOSE;End

		Case EVENT_GADGETACTION
		
			Select EventSource()
			
				Case gadButton;SelectTreeViewNode(gadTreeNode[Rand(0,4),Rand(0,4),Rand(0,4)])
				
			EndSelect		
			
			
	EndSelect
	
	SetStatusText(wndMain,CurrentEvent.ToString$())
	DebugLog CurrentEvent.ToString$()

Forever


First of all, the button at the bottom is hidden presumably because WINDOW_CLIENTCOORDS doesn't take into account the size of the status bar. Removing the status bar fixes the problem.

Secondly, the program doesn't seem to actually work - have you implemented SelectTreeViewNode() yet?

I'll look for some more bugs when I've got some more time tonight...


Seb

Thanks Seb, syncmods for fixes (hopefully) to both issues.

Unable to syncmod? No errors just nothing to get.

Did you tick axe modules in syncmods?

Yes, and it has all fetched your other modules but not axe.win32maxgui? And I have tried "syncmods -u **** -p **** axe.win32maxgui" this get nothing as well?

Thanks for the fix Skid. I've noticed that programatically selecting tree view nodes, list box/combo box items, generates events, which should be surpressed (you can see this in the same example as above).

Seb

The new version totally breaks my app. It starts up and gets caught in an endless loop (CPU Usage=100%). I can't even make a screenshot of this or debug stop it. :(

The problem seems to have something to do with using a lot of canvases at the same time 6 or so!

Grisu, that sounds very much like what Sebs is talking about with gadgets generating events when they shouldn't which can easily cause inifinite loops in an app. Please wait for next version and hopefully it shall be fixed.

Thanks for the fast reply Skid! I'm currently trying to dig out an example bug code.


New version is up which should support 32bit iconstrips



What exactly does this mean. Didn't the listbox display true 32bit icons before?

P.S.:

Tiny future feature request:
Could you make it possible that one can add a combotbox item for an unselected combobox? So that when you first create a combobox one can add a text like "(Click here to select xyz)" without selecting any item inside the list.

A couple of obvious things that I've just found by compiling the CE IDE against this:

- toolbar tips seem to be offset by one icon
- textarea font size is much bigger than it should be

sorry, no time to knock up quick examples, but they should be easy enough to reproduce, or just d/l the maxide2 code from sf.net.

Thanks Mark, fixed the toolbar tips, also fixed the context field for gadgetfilters, automatic indent is still broken in maxide so a little way to go.

New version up:

ModuleInfo "History: 0.17 Release"
ModuleInfo "History: added 32 bit panelpixmaps, fixed toolbar tips, checked extra events, unborked filter contexts"

Grisu, no win32 icons used a solid white background which could then be masked, the new 32 bit support allows for perpixel alpha blending with the gadget background. There are several issues still so please don't read that as fully implemented quite just yet but win32 icons and panelpixmaps are quickly catching up to their cocoamaxgui (apple) counterparts.

hmm, latest sync throws an error (-lmsimg?), and I didn't need to rebuild modules last time...

rebuild all modules didn't fix it.

cannot find -lmsimg32

It's needed for the new 32 bit pixmap panel support (AlphaBlend function).

With the standard MingW install you should have the file mingw/lib/libmsimg32.a file, I may be using a newer version of bmk so try copying it into your blitzmax/lib folder.

Yup the file is in the mingw install, and copying it across fixes it, without a rebuild all modules.

Are my previous post just being overlooked or am I invisible? When doing a syncmods without an axe.mod folder I get:

Receiving: axe.portaudio
Receiving: axe.jasper
Receiving: axe.luascript
Receiving: axe.lua
Receiving: axe.freeport

and that is all, no win32maxgui?

It appears on the bottom of the Modserver list so not sure why you're not getting it.

Have just tried the same from my Linux box and I get the same no axe.win32maxgui?

just so we can rule out the obvious;
You have bought the MaxGUI module?

Yes. I really don't know what is going on?

Can you see it on the bottom of the modserver list?
Skid, is the module available to MaxGUI users only? If so, how are you checking? Is it an old list? @Nigel Brown, when did you get MaxGUI?
What do you have in cfg/modservers?

Hi
Sorry skid, eventextra is now <>null but I can't convert it (wrong object?). This doesn't happen in the normal version.
Also I get an error with the new version:
"Compiler Error
Duplicate identifier 'ALPHABLEND' in modules 'axe.win32maxgui' and 'brl.max2d'."

@tonyg


Can you see it on the bottom of the modserver list?


yes

@Nigel Brown, when did you get MaxGUI?


It came when released as part of the update from Blitz+ (is this why)?

Getting this error nevertheless (have ibmsimg32.a installed!):


Ooops, new version coming soon.

Nigel, can you check your blitzmax/cfg/modservers.cfg, perhaps it's still pointing at last versions mod server (with last update it should be aimed at modserver124).

Also, you need to be on a windows machine to receive the update. If thats all correct I'll ask Mark, as I put in a request to block non maxgui registered users from accessing maxgui modules on axe a few days ago but not sure where we're at with that one.

Can enabling Windows XP themes be made optional? Tabs still don't style correctly.

Also, loading Tahoma at size 8 seems too small. Specifying 8.5 as the size makes no difference.

Finally, will spin controls ever be added to MaxGUI?

New version up with fix for Max2D DrawAlpha name collision.

Robbie, how should tabs be styled? Here's how they look at the moment on my system which from what I can tell is identical to graphics properties window.

Hi Skid,

Just compiled the IDE with the latest Axe.Win32MaxGUI downloaded 2 mins ago, and I noticed that if you resize the window using the right/bottom side of the border, the gadgets are resized fine, however using the top/left sides, means that the gadgets don't resize.

I'm running Vista 32-bit...

Thanks


Seb

This is how they look in Blitz:



This is how they should look:



Am I just being picky? :P

Thanks Seb, fixed version is up.

Hi Skidracer
Listbox EventExtra() bug is still available. Here is a small sample code.

Strict

Import axe.win32maxgui

Local window:TGadget
Local listbox:TGadget

window=CreateWindow("My Window",30,20,400,400)

Const ETIP$="Great for lovers of rain, mushy peas and stomping beats.~r~nNew line..."

listbox=CreateListBox(4,4,200,200,window)

Local Names:String[] = ["Hans", "Meiser", "Berta", "Felix"]

For Local Str:String = EachIn Names
	AddGadgetItem(Listbox, StripDir(Str), 0, -1, Str, Str)
Next 


While WaitEvent()
	Print CurrentEvent.ToString()
	If EventSource()=listbox
		Print "SelectedGadgetItem()="+SelectedGadgetItem(listbox)
		If EventData()<>SelectedGadgetItem(listbox) Print "error with skidracer"
	EndIf
	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
	End Select
Wend


As you can see, there is definitely an Eventextra problem.
Thank you for fixing.

^^My app is still broken too, so the "event problem" has to be there.

Skid: Have you had any joy with transparent and/or coloured labels with the development version yet?

Cheers

Seb

Suco, can you try another sync, should be fixed now.

Grisu, we still need to identify the bad event. If you add a debuglog currentevent.ToString() call after all your waitevents and then send your program into a spin, hopefully the type of events involved will be made clear.

Full support for transparent gadgets is coming once I get event generation 100%.


Executing:dfa0909.debug.exe
DebugLog:Unknown Event, id=0: data=0, mods=0, x=0, y=0, extra=""
DebugLog:AppResume: data=0, mods=0, x=0, y=0, extra=""
DebugLog:AppResume: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowMove: data=0, mods=0, x=244, y=312, extra=""
DebugLog:WindowMove: data=0, mods=0, x=244, y=312, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowMove: data=0, mods=0, x=413, y=325, extra=""
DebugLog:WindowMove: data=0, mods=0, x=413, y=325, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowMove: data=0, mods=0, x=409, y=376, extra=""
DebugLog:WindowMove: data=0, mods=0, x=409, y=376, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra=""
(...)



MaxIDE crashes too after many debuglog entries have been made!

Maybe a few more, it seems to be logging each event twice?

Also a log without axe.win32maxgui may help, so we can identify the difference with current driver.

Heres a LogEvent function you can call instead of the current debuglog currentevent etc. which may make things clearer....

Function LogEvent()
	Local l$=currentevent.ToString()
	Local g:TGadget=TGadget(currentevent.source)
	If g l$=l+" from "+g.GetText()+" with "+g.items.length+" items"
	DebugLog l
End Function



I called the log command before and after waitevent, that's why the double commands were displayed, sorry.


DebugLog:AppResume: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from with 0 items
DebugLog:WindowMove: data=0, mods=0, x=244, y=312, extra="" from with 0 items
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from with 0 items
DebugLog:WindowMove: data=0, mods=0, x=413, y=325, extra="" from with 0 items
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from with 0 items
DebugLog:WindowMove: data=0, mods=0, x=409, y=376, extra="" from with 0 items
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 with 0 items
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from with 0 items
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from with 0 items
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from with 0 items
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 with 0 items


The last command is repeated over and over till the ide itself crashes too. I can't do any inputs in my app at all!

Function LogEvent()
	Local l$=currentevent.ToString()
	Local g:TWindowsGadget=TWindowsGadget(currentevent.source)
	If g l$=l+" from "+g.GetText()+" type "+g._class
	DebugLog l
End Function

This one should tell us the gadgettype at least...

Hi Skidracer
Thank you, all bugs fixed.


DebugLog:AppResume: data=0, mods=0, x=0, y=0, extra=""
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from type 1
DebugLog:WindowMove: data=0, mods=0, x=244, y=312, extra="" from type 1
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from type 1
DebugLog:WindowMove: data=0, mods=0, x=413, y=325, extra="" from type 1
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from type 1
DebugLog:WindowMove: data=0, mods=0, x=409, y=376, extra="" from type 1
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from type 4
DebugLog:WindowActivate: data=0, mods=0, x=0, y=0, extra="" from type 1
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4
DebugLog:GadgetAction: data=0, mods=0, x=0, y=0, extra="" from 0 type 4



Type 4 for I think it is?!?

Aha, it's a problem with textfield events, think its fixed, syncmods to test...

Hi Skid,

I've sync'd this morning and tried to compile Max'd GUI with it and I think there are a few more events being triggered with Text Areas than there are supposed to. I am leaving for work now but I assume they are being fired when text is set etc - I'll try to get a working example for you tonight, but I thought you might want to know...

Update: The text area example in the docs shows that events are triggered when text is set/selected programatically:

' createtextarea.bmx

Strict 

Local window:TGadget
Local textarea:TGadget

window=CreateWindow("My Window",130,20,200,200,,15|WINDOW_ACCEPTFILES)

textarea=CreateTextArea(0,0,ClientWidth(window),ClientHeight(window)/2,window)
SetGadgetLayout textarea,1,1,1,1
SetGadgetText textarea,"a textarea gadget~none line~nandanother"
ActivateGadget textarea

SelectTextAreaText textarea,1,1,TEXTAREA_LINES

Print TextAreaCursor(textarea,TEXTAREA_LINES) 
Print TextAreaSelLen(textarea,TEXTAREA_LINES) 

While WaitEvent()
	Print CurrentEvent.ToString()+" "+EventSourceHandle()
	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
		Case EVENT_APPTERMINATE
			End
	End Select
Wend


Cheers

Seb

Thanks Skid. At least my app is starting now.

Bug Report: Tooltips of listboxes are broken.
Same issue as I have reported with the original win32maxgui:
http://www.blitzbasic.com/Community/posts.php?topic=60517#675021

Strict 
Import axe.win32maxgui
Local window:TGadget
Local button:TGadget
Global Listbox:TGadget

Local combobox:TGadget
Local dfa_mode:Int = 0

Const MAXKIDSFOLGEN=29
Const MAXFOLGEN=130

window=CreateWindow("My Window",30,20,200,200)
button=CreateButton("Change Listbox",4,100,100,24,window,BUTTON_OK)

Listbox=CreateListBox(4,4,120,80,window)
Create_Listbox(dfa_mode)


While WaitEvent()
	Select EventID()
		Case EVENT_GADGETACTION
			Print "eventdata="+EventData()
		Case EVENT_WINDOWCLOSE
			End
	End Select

	Select EventSource() 		 
		Case Button 
          dfa_mode=Not dfa_mode
          Create_Listbox(dfa_mode)
	End Select
Wend


Function Create_Listbox(cfg_dfamode:Int)
' Create a fresh Listbox according to dfamode

ClearGadgetItems Listbox ' clean all mess up

Select cfg_dfamode
Case 0
'   SetGadgetIconStrip(ListBox, IconStripDDF)
   For Local i:Int=0 To MAXFOLGEN-1
     AddGadgetItem ListBox, "MODE 1 - Item "+i, GADGETITEM_NORMAL, 0, "MODE1 Helptext "+i
   Next 

Case 1
'   SetGadgetIconStrip(ListBox, IconStripDDFKIDS)
   For Local j:Int=0 To MAXKIDSFOLGEN-1
     AddGadgetItem ListBox, "MODE 2 - Item "+j, GADGETITEM_NORMAL, 0, "MODE2 Helptext "+j
   Next 
End Select 

End Function


Bug Report: SetMinWindowSize()

In some cases it isn't working correctly, i.e. allowing the user to shrink the window more than he should be (h and w wise).


SuperStrict

Local style:Int = WINDOW_TITLEBAR | WINDOW_RESIZABLE | WINDOW_CLIENTCOORDS | WINDOW_MENU | WINDOW_HIDDEN'|WINDOW_STATUS
Global MyWindow:TGadget
MyWindow:TGadget=CreateWindow(" Test", (GadgetWidth (Desktop ())-792)/2,(GadgetHeight(Desktop ())-400)/2,792,400,Null,style)
SetMinWindowSize( MyWindow,792,400)
ShowGadget(MyWindow)

While True
WaitEvent
Print ClientHeight(Mywindow)+" y: "+ ClientWidth(Mywindow)
' Print CurrentEvent.ToString()
Select EventID()
Case EVENT_WINDOWCLOSE
End
End Select
Wend



^^This code works fine, but for reasons I haven't identified
yet, I need to add "SetMinWindowSize(MyWindow,792+8,400+46)"
in order to make my main window (792,400) behave correctly. With the old module it works fine though?!?

Any ideas?

yet, I need to add "SetMinWindowSize(MyWindow,792+8,400+46)"
in order to make my main window (792,400) behave correctly. With the old module it works fine though?!?

I remember posting the bug report for the original Windows MaxGUI module. I think it was down to the fact that SetMinWindowSize() handles the parameters passed differently depending on whether it is applied to a Windows with/without the WINDOW_CLIENTCOORDS flag.

Fingers crossed one of these new additions to the MaxGUI module is SetMaxWindowSize() [links to tweaks: Mac | AXE Win32 | FLTK ] ;-)

A couple of things I've noticed:

- The full line is no longer selected in the listbox gadget. Only the line text is.
- Child windows appear on the taskbar and over other windows unrelated to the application. This looks really unprofessional. This didn't happen with the old win32maxgui.

Feature request:

- Ability to remove the icon from a window.

Another issue:

Smaller listboxicons aren't displayed 100% semitransparent.



Have the problem that child windows show up "behind" the maximised main window and not on top of it.

Trying to dig out a bullet proof example code.

Have the problem that child windows show up "behind" the maximised main window and not on top of it.

Trying to dig out a bullet proof example code.

It doesn't look like Skid has added WINDOW_CHILD functionality yet to Axe.Win32MaxGUI. There is no code for handling the flag inside the Create method so child windows are going to act exactly the same as normal windows for now...

Aha, ok.

Any new stuff to test for us?

I'm going to be interested about what Skid is going to do regarding the WINDOW_CHILD flag. It's really useful but I don't suppose there is an easy way for Skid to implement this due to the different ways each OS platform works.

It seems as though Apple don't like the idea of child windows (unless they are floating tool windows) and prefer tabbed document management (which is more modern and organised). Therefore it will be near impossible to get the same behaviour for child windows across platforms - though hopefully I may be proved wrong.

Waiting eagerly for the next release...


Seb

I noticed that Menu Items are not grayed/disabled.

I tried logging the return value of EnableMenuItem(), it returns 0 so it should work.
But after a while (many Enable/Disable tries later, it returns -1 (not found))

I have no clue :(

Thanks Grable, fixed in next update.

Just spotted that the NONAVIGATE option on htmlviews doesn't work, i.e. clicking links still works!

However, whilst you're in there, and if it's possible across all platforms and in the old win32maxgui, could you change the behaviour so that a drag and drop onto aHTMLview generates a WINDOWACCEPT event? Currently drag and drop and clicking an event generate the same event, which is a bit of a pain.

OK, version 25 is up. The TextArea gadget may be a bit unstable but is now I think about 6 times as fast as original.

fixed menu open states
faster TOM based richedit
fixed new tabber size - removed child hwnd
fixed onnotify filter results

childwindow and nonavigate htmlviews to come...

Tabs now style properly... thank you, thank you!

Loading Tahoma at size 8 still seems to be too small. Not really a big deal, though.

Is it just me, or does the TreeView not support icons anymore?

HTMLViews don't seem to throw EVENT_GADGETDONE anymore..

icons and tips will be returning shortly for all items and gadgets

My textareas aren't displaying text at all now...?!? *confused* Didn't change a single line of code. Just replaced the devgui with the newest version. Probably an event problem?


faster TOM based richedit



^^Does this mean the ".rtf" format is supported by the textarea?

Edit:
Events seem to be fine. It seems as if my setareatext command isn't "outputting" the text anymore. MyArray[Current_Folge].text" is an array of strings.

LockTextArea(MyText)
SetTextAreaText(MyText,MyArray[Current_Folge].text,0,TEXTAREA_ALL, TEXTAREA_CHARS)
(...)
UnLockTextArea(MyText)

When you create gadgets such as checkboxes, labels, panels (especially when set to PANEL_GROUP) on a tab, they have a grey background:



Any chance it can be changed so they have a transparent background?

P.S. Could you please make the forced XP manifest optional?

I just noticed something. When you set a menu's hotkey to KEY_DELETE, it doesn't actually show up on the menu:



It does show up in the older MaxGUI.

Grisu, new version is up that fixes your problem with readonly textareas not updating.

Hopefully I'll have some time this weekend to fix up all the loose ends, thanks everyone for all the testing!

new 32 bit pixmap panel support (AlphaBlend function)

Hi Skid,
Could you post more info regarding 32bit pixmap panel suport.
For example, does that mean, if I use DrawPixmap, the alpha is retained after using GrabPixmap and re-saving the image?

Thanks a lot Skid.
Textareas are working now.

Bug: Formattextarea isn't using TEXTFORMAT_BOLD etc. flags. The color of a text is changed correctly but the font style itself stays "normal"

Just came home from work, maybe dig up an example code later.

Bug: Formattextarea isn't using TEXTFORMAT_BOLD etc. flags. The color of a text is changed correctly but the font style itself stays "normal"

Confirmed here - I'm sure this worked in a previous version, as it now shows up in the IDE when using this module...and I hadn't noticed it before...

Me again, just posting a reminder that HTML View isn't finished yet. Neither of the flags are working, and EVENT_GADGETDONE isn't triggered when a page loads.

' createhtmlview.bmx

Strict

Import axe.win32maxgui

Local window:TGadget
Local htmlview:TGadget

window=CreateWindow("My Window",30,20,600,440,,15|WINDOW_ACCEPTFILES)

htmlview=CreateHTMLView(0,0,ClientWidth(window),ClientHeight(window),window,HTMLVIEW_NOCONTEXTMENU|HTMLVIEW_NONAVIGATE)
SetGadgetLayout htmlview,1,1,1,1 

HtmlViewGo htmlview,"www.blitzmax.com"

While WaitEvent()
	Print CurrentEvent.ToString()
	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
	End Select
Wend


The tooltip bug and child window problem is still there too.

But don't let us put too much stress on Skid, right?... ;)

If anyone is in need of a quickfix for the rich text box formatting flags, replace Method SetStyle() in axe.mod/win32maxgui.mod/win32maxgui.bmx with:

	Method SetStyle(r,g,b,flags,pos,length,units)
		Local iifont:ITextFont
		Local iirange:ITextRange
		Local res
		If units=TEXTAREA_LINES
			Local n=pos
			pos=CharAt(pos)
			If length>=0 length=CharAt(n+length)-pos
		EndIf			
		If length<0 length=charcount()-pos	
		busy=True		
		res=idoc.Range(pos,pos+length,iirange)
		res=iirange.GetFont(iifont)
		res=iifont.SetForeColor(((b Shl 16)|(g Shl 8)|r))
		
		'// Seb was here
		
		If (flags&TEXTFORMAT_BOLD) Then res=iifont.SetBold(TOMTRUE) Else res=iifont.SetBold(TOMFALSE)
		If (flags&TEXTFORMAT_ITALIC) Then res=iifont.SetItalic(TOMTRUE) Else res=iifont.SetItalic(TOMFALSE)
		If (flags&TEXTFORMAT_UNDERLINE) Then res=iifont.SetUnderline(TOMTRUE) Else res=iifont.SetUnderline(TOMFALSE)
		If (flags&TEXTFORMAT_STRIKETHROUGH) Then res=iifont.SetStrikeThrough(TOMTRUE) Else res=iifont.SetStrikeThrough(TOMFALSE)
		
		'//
		
		iifont.Release_
		iirange.Release_
		busy=False
	End Method


While I'm here, I might as well mention the bug that you can remove text from HTML views by cutting (Ctrl + X) that was also present in the old Win32 module.

Me again!

Any more news about development for Axe.Win32MaxGUI?

Cheers

Seb

bump

CodeGit: bump? it was only the third post below the sticky!

Hows Max'd GUI coming? :O

Hows Max'd GUI coming?

Development has been slow because of the amount of exams (I'm a student) and because of bugs I keep coming across. The Windows version I'm quite proud of at the moment, but I can't compile it on Linux because of this and I still haven't got round to adding Menu support.

The final thing I am waiting for is the release of this new Win32 module as I think it will speed up the program and will be easier to track down bugs without trawling through realms of C++ code.

Hope Skid has a new release planned soon... Finger crossed eh? :)

Just recompiled a working MaxGui app with the AXE version. a couple of quirks

1) the menu does not work at all (shows the top level but no sub menu)

2) gadget.SelectedItem() shows -1 if the gadget does not have focus.