forked from pkulchenko/wxlua
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchoices.wx.lua
More file actions
118 lines (96 loc) · 5.76 KB
/
choices.wx.lua
File metadata and controls
118 lines (96 loc) · 5.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
-------------------------------------------------------------------------=---
-- 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(635, 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.wxDefaultSize)
--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()