Popup Menus

BlitzMax Modules Forums/Brucey's Modules/Popup Menus

sorry to resurrect this older thread.

TestPopupsGUI.bmx
'
' BlitzMax code generated with wxCodeGen v0.96 : 25 Feb 2008 23:22:05
' 
' 
' PLEASE DO "NOT" EDIT THIS FILE!
' 
SuperStrict

Import wx.wxFrame
Import wx.wxListBox
Import wx.wxPanel
Import wx.wxWindow
Import wx.wxMouseEvent

Type MyFrame2Base Extends wxFrame

	Field m_panel5:wxPanel
	Field m_listBoxPopup1:wxListBox
	Field m_listBoxPopup2:wxListBox
	Field m_listBoxNoPopup:wxListBox

	Const ID_lb1:Int = 1000
	Const ID_lb2:Int = 1001
	
	Method Create:MyFrame2Base(parent:wxWindow = Null,id:Int = wxID_ANY, title:String = "", x:Int = -1, y:Int = -1, w:Int = 500, h:Int = 300, style:Int = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL)
		Return MyFrame2Base(Super.Create(parent, id, title, x, y, w, h, style))
	End Method

	Method OnInit()

		Local bSizer11:wxBoxSizer
		bSizer11 = New wxBoxSizer.Create(wxVERTICAL)
		m_panel5 = New wxPanel.Create(Self, wxID_ANY,,,,, wxTAB_TRAVERSAL)

		Local bSizer12:wxBoxSizer
		bSizer12 = New wxBoxSizer.Create(wxVERTICAL)
		m_listBoxPopup1 = New wxListBox.Create(m_panel5, ID_lb1, Null)

		bSizer12.Add(m_listBoxPopup1, 0, wxALL, 5)

		m_listBoxPopup2 = New wxListBox.Create(m_panel5, ID_lb2, Null)

		bSizer12.Add(m_listBoxPopup2, 0, wxALL, 5)

		m_listBoxNoPopup = New wxListBox.Create(m_panel5, wxID_ANY, Null)

		bSizer12.Add(m_listBoxNoPopup, 0, wxALL, 5)

		m_panel5.SetSizer(bSizer12)
		m_panel5.Layout()
		bSizer11.Add(m_panel5, 1, wxEXPAND | wxALL, 5)

		SetSizer(bSizer11)
		Layout()

'		Connect(ID_lb1, wxEVT_RIGHT_UP, _RightClickForPopup)
'		Connect(ID_lb2, wxEVT_RIGHT_UP, _RightClickForPopup)
		
		m_listBoxPopup1.ConnectAny(wxEVT_RIGHT_UP, _RightClickForPopup, Null, Self)
		m_listBoxPopup2.ConnectAny(wxEVT_RIGHT_UP, _RightClickForPopup, Null, Self)
	
	End Method

	Function _RightClickForPopup(event:wxEvent)
		MyFrame2Base(event.sink).RightClickForPopup(wxMouseEvent(event))

	End Function

	Method RightClickForPopup(event:wxMouseEvent)
		DebugLog "Please override MyFrame2.RightClickForPopup()"

		event.Skip()
	End Method

End Type



and TestPopups.bmx
'
' Example application stub generated by wxCodeGen v0.96 : 25 Feb 2008 20:01:20
'
SuperStrict

Framework wx.wxApp

Import "TestPopupsGUI.bmx"
Import brl.filesystem
Import brl.system

New MyApp.run()

Type MyApp Extends wxApp

	Field frame:MyFrame2
	
	Method OnInit:Int()

?macos
		' make the default Mac font for controls not so big
		wxSystemOptions.SetOption(wxWINDOW_DEFAULT_VARIANT, wxWINDOW_VARIANT_SMALL)
?
		wxInitAllImageHandlers()

		wxImage.AddHandler( New wxXPMHandler ) ' for Mac/Win32 (it is default on Linux)

		Local frame:MyFrame2 = MyFrame2(New MyFrame2.Create(, , "Test Popup Menu Selection"))

		frame.show()
		
		SetTopWindow(frame)

		Return True
	End Method

End Type



Type MyFrame2 Extends MyFrame2Base

	Method OnInit()
		Super.OnInit()

		' Add own initialisation code here

	End Method

	Method RightClickForPopup(event:wxMouseEvent)

		Select event.GetId()

		    Case ID_lb1
        	DebugLog "You clicked on Boris!"

    		Case ID_lb2
        	DebugLog "You clicked on Fred!"

		End Select		
		
	End Method

End Type



The current version of wxCodeGen seems to generate the 2 connect lines which i have commented out.
' Connect(ID_lb1, wxEVT_RIGHT_UP, _RightClickForPopup)
' Connect(ID_lb2, wxEVT_RIGHT_UP, _RightClickForPopup)

but these two are the ones that work in this example for the listboxes.

m_listBoxPopup1.ConnectAny(wxEVT_RIGHT_UP, _RightClickForPopup, Null, Self)
m_listBoxPopup2.ConnectAny(wxEVT_RIGHT_UP, _RightClickForPopup, Null, Self)

also the Function _RightClickForPopup(event:wxEvent) has MyFrame2Base(event.sink) whereas the current wxCodeGen gives me MyFrame2Base(event.parent) whcih my listbox is not responding to.

am i doing something wrong?

Cheers
Glenn