119 lines
5.8 KiB
Lua
119 lines
5.8 KiB
Lua
-------------------------------------------------------------------------=---
|
|
-- Name: choices.wx.lua
|
|
-- Purpose: Tests wxRadioBox, wxNotebook controls
|
|
-- Author: J Winwood, Francesco Montorsi
|
|
-- Created: March 2002
|
|
-- Copyright: (c) 2002-5 Lomtick Software. All rights reserved.
|
|
-- Licence: wxWidgets licence
|
|
-------------------------------------------------------------------------=---
|
|
|
|
-- Load the wxLua module, does nothing if running from wxLua, wxLuaFreeze, or wxLuaEdit
|
|
package.cpath = package.cpath..";./?.dll;./?.so;../lib/?.so;../lib/vc_dll/?.dll;../lib/bcc_dll/?.dll;../lib/mingw_dll/?.dll;"
|
|
require("wx")
|
|
|
|
frame = nil
|
|
|
|
function HandleEvents(event)
|
|
-- Note: event.GetEventObject() returns a wxObject, but we know that all
|
|
-- events sent to this function will be from a wxWindow derived
|
|
-- class, whose base class is a wxObject.
|
|
-- Use DynamicCast to call functions from the wxWindow base class.
|
|
local name = event:GetEventObject():DynamicCast("wxWindow"):GetName()
|
|
frame:SetStatusText(string.format("%s - selected item %d '%s'", name, event:GetSelection(), event:GetString()), 0)
|
|
end
|
|
|
|
function main()
|
|
-- create the hierarchy: frame -> notebook
|
|
frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "wxLua Choices",
|
|
wx.wxDefaultPosition, wx.wxSize(550, 350))
|
|
frame:CreateStatusBar(1)
|
|
frame:SetStatusText("wxEvents from controls will be displayed here", 0)
|
|
|
|
local notebook = wx.wxNotebook(frame, wx.wxID_ANY,
|
|
wx.wxDefaultPosition, wx.wxSize(410, 300))
|
|
--wx.wxNB_BOTTOM)
|
|
|
|
local choices = {"one", "two", "three", "four"}
|
|
|
|
-- create first panel in the notebook control
|
|
local panel1 = wx.wxPanel(notebook, wx.wxID_ANY)
|
|
local sizer1 = wx.wxBoxSizer(wx.wxVERTICAL)
|
|
local radioBox = wx.wxRadioBox(panel1, wx.wxID_ANY, "wxRadioBox",
|
|
wx.wxDefaultPosition, wx.wxDefaultSize,
|
|
choices, 1, wx.wxRA_SPECIFY_ROWS)
|
|
local listBox = wx.wxListBox(panel1, wx.wxID_ANY, wx.wxDefaultPosition,
|
|
wx.wxDefaultSize, choices)
|
|
|
|
local listBoxStaticBox = wx.wxStaticBox( panel1, wx.wxID_ANY, "wxListBox")
|
|
local listBoxStaticBoxSizer = wx.wxStaticBoxSizer( listBoxStaticBox, wx.wxVERTICAL );
|
|
listBoxStaticBoxSizer:Add(listBox, 1, wx.wxALL + wx.wxGROW + wx.wxCENTER, 5)
|
|
|
|
sizer1:Add(radioBox, 1, wx.wxALL + wx.wxGROW, 5)
|
|
sizer1:Add(listBoxStaticBoxSizer, 1, wx.wxALL + wx.wxGROW, 5)
|
|
panel1:SetSizer(sizer1)
|
|
sizer1:SetSizeHints(panel1)
|
|
notebook:AddPage(panel1, "wxRadioBox and wxListBox")
|
|
|
|
-- create second panel in the notebook control
|
|
local panel2 = wx.wxPanel(notebook, wx.wxID_ANY)
|
|
local sizer2 = wx.wxBoxSizer(wx.wxVERTICAL)
|
|
|
|
local comboBox = wx.wxComboBox(panel2, wx.wxID_ANY, "Select a choice",
|
|
wx.wxDefaultPosition, wx.wxDefaultSize,
|
|
choices)
|
|
-- Test the binding generator to properly overload
|
|
-- wxComboBox::SetSelection(int from, int to) (to mark text) and
|
|
-- wxControlWithItems::SetSelection(int sel)
|
|
comboBox:SetSelection(2)
|
|
comboBox:SetSelection(1, 3)
|
|
local choice = wx.wxChoice(panel2, wx.wxID_ANY,
|
|
wx.wxDefaultPosition, wx.wxDefaultSize,
|
|
choices)
|
|
local checkListBox = wx.wxCheckListBox(panel2, wx.wxID_ANY,
|
|
wx.wxDefaultPosition, wx.wxDefaultSize,
|
|
choices, wx.wxLB_MULTIPLE)
|
|
|
|
local comboBoxStaticBox = wx.wxStaticBox( panel2, wx.wxID_ANY, "wxComboBox")
|
|
local comboBoxStaticBoxSizer = wx.wxStaticBoxSizer( comboBoxStaticBox, wx.wxVERTICAL );
|
|
comboBoxStaticBoxSizer:Add(comboBox, 0, wx.wxALL + wx.wxGROW + wx.wxCENTER, 5)
|
|
|
|
local choiceBoxStaticBox = wx.wxStaticBox( panel2, wx.wxID_ANY, "wxChoice")
|
|
local choiceBoxStaticBoxSizer = wx.wxStaticBoxSizer( choiceBoxStaticBox, wx.wxVERTICAL );
|
|
choiceBoxStaticBoxSizer:Add(choice, 0, wx.wxALL + wx.wxGROW + wx.wxCENTER, 5)
|
|
|
|
local checkListBoxStaticBox = wx.wxStaticBox( panel2, wx.wxID_ANY, "wxCheckListBox")
|
|
local checkListBoxStaticBoxSizer = wx.wxStaticBoxSizer( checkListBoxStaticBox, wx.wxVERTICAL );
|
|
checkListBoxStaticBoxSizer:Add(checkListBox, 1, wx.wxALL + wx.wxGROW + wx.wxCENTER, 5)
|
|
|
|
sizer2:Add(comboBoxStaticBoxSizer, 0, wx.wxALL + wx.wxGROW + wx.wxCENTER, 5)
|
|
sizer2:Add(choiceBoxStaticBoxSizer, 0, wx.wxALL + wx.wxGROW + wx.wxCENTER, 5)
|
|
sizer2:Add(checkListBoxStaticBoxSizer, 1, wx.wxALL + wx.wxGROW, 5)
|
|
panel2:SetSizer(sizer2)
|
|
sizer2:SetSizeHints(panel2)
|
|
notebook:AddPage(panel2, "wxComboBox, wxChoice, and wxCheckListBox")
|
|
|
|
frame:SetSizeHints(notebook:GetBestSize():GetWidth(),
|
|
notebook:GetBestSize():GetHeight())
|
|
|
|
-- typically you will give a control a specific window id and connect an
|
|
-- event handler for that id, in this case respond to any id
|
|
frame:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, HandleEvents)
|
|
|
|
frame:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_RADIOBOX_SELECTED, HandleEvents)
|
|
frame:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_LISTBOX_SELECTED, HandleEvents)
|
|
|
|
frame:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_COMBOBOX_SELECTED, HandleEvents)
|
|
frame:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_CHOICE_SELECTED, HandleEvents)
|
|
frame:Connect(wx.wxID_ANY, wx.wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, HandleEvents)
|
|
|
|
frame:Show(true)
|
|
end
|
|
|
|
main()
|
|
|
|
-- Call wx.wxGetApp():MainLoop() last to start the wxWidgets event loop,
|
|
-- otherwise the wxLua program will exit immediately.
|
|
-- Does nothing if running from wxLua, wxLuaFreeze, or wxLuaEdit since the
|
|
-- MainLoop is already running or will be started by the C++ program.
|
|
wx.wxGetApp():MainLoop()
|