Splitter gadget

BlitzMax Forums/BlitzMax GUI Programming/Splitter gadget

has anyone got an example of adding a canvas either side of a splitter gadget?

also is it cross platform?

Does this help? Should be crossplatform as it uses pure MaxGui(Ex).

'Source Code created on 25 Nov 2008 19:45:26 with Logic Gui Version 4.0 Build 362

'Start of external Header File
SuperStrict
Import MaxGui.Drivers
Import MaxGui.ProxyGadgets

'End of Header File


Local Window1:TGadget = CreateWindow:TGadget("Window1",274,118,362,196,Null,WINDOW_TITLEBAR|WINDOW_RESIZABLE |WINDOW_STATUS |WINDOW_CLIENTCOORDS )
	Local PSplitter1:TSplitter = CreateSplitter( 0,0,362,196,Window1:TGadget,SPLIT_VERTICAL )
		SetSplitterPosition( PSplitter1:TSplitter, 108 )
		SetGadgetLayout( PSplitter1:TSplitter,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )
		Local PSplitter1_Main:TGadget = SplitterPanel( PSplitter1,SPLITPANEL_MAIN )
		Local PSplitter1_Side:TGadget = SplitterPanel( PSplitter1,SPLITPANEL_SIDEPANE )
		Local Canvas2:TGadget = CreateCanvas:TGadget(0,1,104,194,PSplitter1_Side:TGadget,Null)
			SetGadgetLayout( Canvas2:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )
		Local Canvas1:TGadget = CreateCanvas:TGadget(1,1,244,194,PSplitter1_Main:TGadget,Null)
			SetGadgetLayout( Canvas1:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )

Repeat
	WaitEvent()
	Select EventID()
		Case EVENT_WINDOWCLOSE
			Select EventSource()
				Case Window1	Window1_WC( Window1:TGadget )
			End Select

		Case EVENT_GADGETPAINT
			Select EventSource()
				Case Canvas2	Canvas2_GP( Canvas2:TGadget )
				Case Canvas1	Canvas1_GP( Canvas1:TGadget )
			End Select

	End Select
Forever

Function Window1_WC( Window:TGadget )
	DebugLog "Window Window1 wants to be closed"
'	HideGadget( Window:TGadget )

	End
End Function

Function Canvas2_GP( Canvas:TGadget )
	'DebugLog "Canvas Canvas2 needs to be redrawn"
	SetGraphics CanvasGraphics ( Canvas )
	SetViewport 0,0,GadgetWidth( Canvas ),GadgetHeight( Canvas )
	
	SetColor( 208,216,61 )
	SetClsColor( 118,131,184 )
	Cls
	DrawText( "Side" ,1,1 )
	Flip

End Function

Function Canvas1_GP( Canvas:TGadget )
	'DebugLog "Canvas Canvas1 needs to be redrawn"
	SetGraphics CanvasGraphics ( Canvas )
	SetViewport 0,0,GadgetWidth( Canvas ),GadgetHeight( Canvas )
	
	SetColor( 208,216,61 )
	SetClsColor( 118,131,184 )
	Cls
	DrawText( "Main" ,1,1 )
	Flip

End Function




Thanks that works well

when I add hooks it crashes:

			SetGadgetLayout( Canvas2:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )
		Local Canvas1:TGadget = CreateCanvas:TGadget(1,1,244,194,PSplitter1_Main:TGadget,Null)
			SetGadgetLayout( Canvas1:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )

Repeat
	WaitEvent()
	Select EventID()
		Case EVENT_WINDOWCLOSE
			Select EventSource()
				Case Window1	Window1_WC( Window1:TGadget )
			End Select

		Case EVENT_GADGETPAINT
			Select EventSource()
				Case Canvas2	Canvas2_GP( Canvas2:TGadget )
				Case Canvas1	Canvas1_GP( Canvas1:TGadget )
			End Select

	End Select
Forever

Function Window1_WC( Window:TGadget )
	DebugLog "Window Window1 wants to be closed"
'	HideGadget( Window:TGadget )

	End
End Function

Function Canvas2_GP( Canvas:TGadget )
	'DebugLog "Canvas Canvas2 needs to be redrawn"
	SetGraphics CanvasGraphics ( Canvas )
	SetViewport 0,0,GadgetWidth( Canvas ),GadgetHeight( Canvas )
	
	SetColor( 208,216,61 )
	SetClsColor( 118,131,184 )
	Cls
	DrawText( "Side" ,1,1 )
	Flip

End Function

Function Canvas1_GP( Canvas:TGadget )
	'DebugLog "Canvas Canvas1 needs to be redrawn"
	SetGraphics CanvasGraphics ( Canvas )
	SetViewport 0,0,GadgetWidth( Canvas ),GadgetHeight( Canvas )
	
	SetColor( 208,216,61 )
	SetClsColor( 118,131,184 )
	Cls
	DrawText( "Main" ,1,1 )
	Flip

End Function



Function MyHook:Object(iId:Int,tData:Object,tContext:Object)
  Local Event:TEvent=TEvent(tData)



  If Event.source=psplitter1_main
EndIf
  Return tData
EndFunction


Sure it does as you don't check the event!
Try this:

Function MyHook:Object(iId:Int,tData:Object,tContext:Object)
  Local Event:TEvent=TEvent(tData)
	
	If event=Null Return Null '<---- add this

  	If Event.source=psplitter1_main
	EndIf
  Return tData
EndFunction


thanks it worked!