wxruby-ruby19 1.9.10-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +53 -0
- data/README +297 -0
- data/lib/wx/accessors.rb +58 -0
- data/lib/wx/classes/acceleratortable.rb +28 -0
- data/lib/wx/classes/animation.rb +18 -0
- data/lib/wx/classes/app.rb +51 -0
- data/lib/wx/classes/artprovider.rb +31 -0
- data/lib/wx/classes/auinotebook.rb +9 -0
- data/lib/wx/classes/bitmap.rb +56 -0
- data/lib/wx/classes/busycursor.rb +12 -0
- data/lib/wx/classes/checklistbox.rb +45 -0
- data/lib/wx/classes/choice.rb +4 -0
- data/lib/wx/classes/clientdc.rb +13 -0
- data/lib/wx/classes/clipboard.rb +32 -0
- data/lib/wx/classes/colour.rb +49 -0
- data/lib/wx/classes/combobox.rb +4 -0
- data/lib/wx/classes/commandevent.rb +7 -0
- data/lib/wx/classes/controlwithitems.rb +10 -0
- data/lib/wx/classes/data_object.rb +14 -0
- data/lib/wx/classes/data_object_simple.rb +6 -0
- data/lib/wx/classes/dataformat.rb +23 -0
- data/lib/wx/classes/dc.rb +57 -0
- data/lib/wx/classes/event.rb +5 -0
- data/lib/wx/classes/evthandler.rb +1039 -0
- data/lib/wx/classes/font.rb +118 -0
- data/lib/wx/classes/functions.rb +44 -0
- data/lib/wx/classes/gauge.rb +12 -0
- data/lib/wx/classes/genericdirctrl.rb +36 -0
- data/lib/wx/classes/grid.rb +146 -0
- data/lib/wx/classes/hboxsizer.rb +6 -0
- data/lib/wx/classes/helpcontroller.rb +5 -0
- data/lib/wx/classes/helpcontrollerhelpprovider.rb +23 -0
- data/lib/wx/classes/helpprovider.rb +15 -0
- data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
- data/lib/wx/classes/htmlwindow.rb +14 -0
- data/lib/wx/classes/icon.rb +32 -0
- data/lib/wx/classes/iconbundle.rb +3 -0
- data/lib/wx/classes/image.rb +43 -0
- data/lib/wx/classes/imagelist.rb +3 -0
- data/lib/wx/classes/listbox.rb +4 -0
- data/lib/wx/classes/listctrl.rb +33 -0
- data/lib/wx/classes/locale.rb +28 -0
- data/lib/wx/classes/mediactrl.rb +48 -0
- data/lib/wx/classes/menu.rb +62 -0
- data/lib/wx/classes/menuitem.rb +7 -0
- data/lib/wx/classes/notebook.rb +9 -0
- data/lib/wx/classes/object.rb +14 -0
- data/lib/wx/classes/paintdc.rb +12 -0
- data/lib/wx/classes/point.rb +56 -0
- data/lib/wx/classes/previewframe.rb +13 -0
- data/lib/wx/classes/rect.rb +19 -0
- data/lib/wx/classes/richtextctrl.rb +63 -0
- data/lib/wx/classes/simplehelpprovider.rb +38 -0
- data/lib/wx/classes/size.rb +58 -0
- data/lib/wx/classes/sizer.rb +37 -0
- data/lib/wx/classes/sound.rb +23 -0
- data/lib/wx/classes/standardpaths.rb +9 -0
- data/lib/wx/classes/styledtextctrl.rb +92 -0
- data/lib/wx/classes/textctrl.rb +14 -0
- data/lib/wx/classes/texturlevent.rb +18 -0
- data/lib/wx/classes/timer.rb +94 -0
- data/lib/wx/classes/toolbar.rb +27 -0
- data/lib/wx/classes/toolbartool.rb +4 -0
- data/lib/wx/classes/treectrl.rb +44 -0
- data/lib/wx/classes/vboxsizer.rb +6 -0
- data/lib/wx/classes/window.rb +89 -0
- data/lib/wx/classes/xmlresource.rb +54 -0
- data/lib/wx/helpers.rb +45 -0
- data/lib/wx/keyword_ctors.rb +204 -0
- data/lib/wx/keyword_defs.rb +558 -0
- data/lib/wx/version.rb +3 -0
- data/lib/wx.rb +53 -0
- data/lib/wxruby2.so +0 -0
- data/samples/SAMPLES-LICENSE.TXT +18 -0
- data/samples/aui/aui.rb +1356 -0
- data/samples/bigdemo/About.rbw +39 -0
- data/samples/bigdemo/ColorPanel.rbw +23 -0
- data/samples/bigdemo/GridSimple.rbw +78 -0
- data/samples/bigdemo/MDIDemo.rbw +57 -0
- data/samples/bigdemo/PopupMenu.rbw +149 -0
- data/samples/bigdemo/ShapedWindow.rbw +131 -0
- data/samples/bigdemo/Sizers.rbw +543 -0
- data/samples/bigdemo/bigdemo.rb +823 -0
- data/samples/bigdemo/demoTemplate.rbw +33 -0
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/choice.xpm +27 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +27 -0
- data/samples/bigdemo/icons/copy.xpm +25 -0
- data/samples/bigdemo/icons/cut.xpm +24 -0
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +27 -0
- data/samples/bigdemo/icons/help.xpm +25 -0
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +27 -0
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +44 -0
- data/samples/bigdemo/icons/new.xpm +24 -0
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +45 -0
- data/samples/bigdemo/icons/open.xpm +26 -0
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +38 -0
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +26 -0
- data/samples/bigdemo/icons/print.xpm +26 -0
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +27 -0
- data/samples/bigdemo/icons/robert.xpm +415 -0
- data/samples/bigdemo/icons/ruby.png +0 -0
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +25 -0
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +39 -0
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +42 -0
- data/samples/bigdemo/icons/stattext.xpm +24 -0
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +79 -0
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +27 -0
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +38 -0
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +38 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +90 -0
- data/samples/bigdemo/tips.txt +7 -0
- data/samples/bigdemo/utils.rb +12 -0
- data/samples/bigdemo/wxArtProvider.rbw +281 -0
- data/samples/bigdemo/wxBitmapButton.rbw +65 -0
- data/samples/bigdemo/wxButton.rbw +64 -0
- data/samples/bigdemo/wxCalendarCtrl.rbw +60 -0
- data/samples/bigdemo/wxCheckBox.rbw +50 -0
- data/samples/bigdemo/wxCheckListBox.rbw +65 -0
- data/samples/bigdemo/wxChoice.rbw +47 -0
- data/samples/bigdemo/wxChoicebook.rbw +78 -0
- data/samples/bigdemo/wxColourDialog.rbw +31 -0
- data/samples/bigdemo/wxComboBox.rbw +77 -0
- data/samples/bigdemo/wxCursor.rbw +136 -0
- data/samples/bigdemo/wxDialog.rbw +74 -0
- data/samples/bigdemo/wxDirDialog.rbw +29 -0
- data/samples/bigdemo/wxDragImage.rbw +70 -0
- data/samples/bigdemo/wxFileDialog.rbw +37 -0
- data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
- data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
- data/samples/bigdemo/wxFontDialog.rbw +173 -0
- data/samples/bigdemo/wxFrame.rbw +53 -0
- data/samples/bigdemo/wxGauge.rbw +71 -0
- data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
- data/samples/bigdemo/wxGrid.rbw +66 -0
- data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
- data/samples/bigdemo/wxListBox.rbw +140 -0
- data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -0
- data/samples/bigdemo/wxMDIWindows.rbw +50 -0
- data/samples/bigdemo/wxMenu.rbw +236 -0
- data/samples/bigdemo/wxMessageDialog.rbw +27 -0
- data/samples/bigdemo/wxMiniFrame.rbw +70 -0
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -0
- data/samples/bigdemo/wxNotebook.rbw +136 -0
- data/samples/bigdemo/wxProgressDialog.rbw +43 -0
- data/samples/bigdemo/wxRadioBox.rbw +72 -0
- data/samples/bigdemo/wxRadioButton.rbw +125 -0
- data/samples/bigdemo/wxSashWindow.rbw +141 -0
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
- data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
- data/samples/bigdemo/wxSlider.rbw +42 -0
- data/samples/bigdemo/wxSpinButton.rbw +50 -0
- data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
- data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +51 -0
- data/samples/bigdemo/wxStaticText.rbw +55 -0
- data/samples/bigdemo/wxStatusBar.rbw +126 -0
- data/samples/bigdemo/wxTextCtrl.rbw +149 -0
- data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
- data/samples/bigdemo/wxToggleButton.rbw +49 -0
- data/samples/bigdemo/wxToolBar.rbw +131 -0
- data/samples/bigdemo/wxTreeCtrl.rbw +191 -0
- data/samples/calendar/calendar.rb +256 -0
- data/samples/caret/caret.rb +282 -0
- data/samples/caret/mondrian.xpm +44 -0
- data/samples/controls/controls.rb +1136 -0
- data/samples/controls/get_item_sample.rb +87 -0
- data/samples/controls/icons/choice.xpm +27 -0
- data/samples/controls/icons/combo.xpm +27 -0
- data/samples/controls/icons/gauge.xpm +27 -0
- data/samples/controls/icons/list.xpm +27 -0
- data/samples/controls/icons/radio.xpm +27 -0
- data/samples/controls/icons/stattext.xpm +24 -0
- data/samples/controls/icons/text.xpm +27 -0
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +44 -0
- data/samples/controls/test2.bmp +0 -0
- data/samples/dialogs/dialogs.rb +797 -0
- data/samples/dialogs/tips.txt +18 -0
- data/samples/dragdrop/dragdrop.rb +177 -0
- data/samples/drawing/graphics_drawing.rb +235 -0
- data/samples/drawing/images.rb +37 -0
- data/samples/drawing/paperclip.png +0 -0
- data/samples/etc/activation.rb +102 -0
- data/samples/etc/choice.rb +67 -0
- data/samples/etc/miniframe.rb +79 -0
- data/samples/etc/sash.rb +130 -0
- data/samples/etc/scrollwin.rb +110 -0
- data/samples/etc/system_settings.rb +252 -0
- data/samples/etc/threaded.rb +72 -0
- data/samples/etc/toolbar_sizer_additem.rb +55 -0
- data/samples/etc/wizard.rb +74 -0
- data/samples/event/event.rb +182 -0
- data/samples/event/update_ui_event.rb +70 -0
- data/samples/grid/grid.rb +198 -0
- data/samples/grid/gridtablebase.rb +148 -0
- data/samples/html/html.rb +262 -0
- data/samples/listbook/listbook.rb +174 -0
- data/samples/listbook/listbook.xrc +370 -0
- data/samples/mdi/mdi.rb +85 -0
- data/samples/media/mediactrl.rb +167 -0
- data/samples/minimal/minimal.rb +77 -0
- data/samples/minimal/mondrian.ico +0 -0
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +16 -0
- data/samples/opengl/cube.rb +117 -0
- data/samples/printing/mondrian.ico +0 -0
- data/samples/printing/mondrian.xpm +44 -0
- data/samples/printing/printing.rb +487 -0
- data/samples/sockets/SocketPackets.rb +27 -0
- data/samples/sockets/res/message-new.png +0 -0
- data/samples/sockets/res/user.png +0 -0
- data/samples/sockets/wxClient.rb +395 -0
- data/samples/sockets/wxServer.rb +422 -0
- data/samples/sockets/wxSocketGUI.rb +97 -0
- data/samples/text/format-text-bold.png +0 -0
- data/samples/text/format-text-italic.png +0 -0
- data/samples/text/format-text-underline.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +44 -0
- data/samples/text/rich_textctrl.rb +98 -0
- data/samples/text/scintilla.rb +169 -0
- data/samples/text/textctrl.rb +111 -0
- data/samples/text/unicode.rb +242 -0
- data/samples/text/utf8.txt +15 -0
- data/samples/treectrl/icon1.xpm +79 -0
- data/samples/treectrl/icon2.xpm +53 -0
- data/samples/treectrl/icon3.xpm +79 -0
- data/samples/treectrl/icon4.xpm +43 -0
- data/samples/treectrl/icon5.xpm +79 -0
- data/samples/treectrl/treectrl.rb +1166 -0
- data/samples/xrc/samples.xrc +46 -0
- data/samples/xrc/xrc_sample.rb +76 -0
- metadata +337 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
|
11
|
+
# A virtual ListCtrl loads its items as needed from a virtual store. So
|
12
|
+
# it's useful for linking to existing data sources, or for displaying
|
13
|
+
# very large lists. It's subclassed in ruby, and the item_count is set;
|
14
|
+
# the get_item_text methods should return how to display a given line.
|
15
|
+
class TestVirtualList < Wx::ListCtrl
|
16
|
+
def initialize(parent, log)
|
17
|
+
super parent, :style => Wx::LC_REPORT|Wx::LC_VIRTUAL|
|
18
|
+
Wx::LC_HRULES| Wx::LC_VRULES
|
19
|
+
@log = log
|
20
|
+
|
21
|
+
@il = Wx::ImageList.new(16,16)
|
22
|
+
bmp_file = File.join(File.dirname(__FILE__), "icons/wxwin16x16.xpm")
|
23
|
+
|
24
|
+
@idx1 = @il.add(Wx::Bitmap.new(bmp_file))
|
25
|
+
set_image_list(@il, Wx::IMAGE_LIST_SMALL)
|
26
|
+
|
27
|
+
insert_column(0,"First")
|
28
|
+
insert_column(1,"Second")
|
29
|
+
insert_column(2,"Third")
|
30
|
+
set_column_width(0,175)
|
31
|
+
set_column_width(1,175)
|
32
|
+
set_column_width(2,175)
|
33
|
+
|
34
|
+
# Important - call this
|
35
|
+
self.item_count = 10_000
|
36
|
+
|
37
|
+
@attr1 = Wx::ListItemAttr.new()
|
38
|
+
@attr1.set_background_colour(Wx::Colour.new("YELLOW"))
|
39
|
+
|
40
|
+
@attr2 = Wx::ListItemAttr.new()
|
41
|
+
@attr2.set_background_colour(Wx::Colour.new("LIGHT BLUE"))
|
42
|
+
|
43
|
+
evt_list_item_selected(get_id()) {|event| on_item_selected(event)}
|
44
|
+
evt_list_item_activated(get_id()) {|event| on_item_activated(event)}
|
45
|
+
evt_list_item_deselected(get_id()) {|event| on_item_deselected(event)}
|
46
|
+
end
|
47
|
+
|
48
|
+
def on_item_selected(event)
|
49
|
+
@currentItem = event.get_index()
|
50
|
+
@item = event.get_item()
|
51
|
+
get_column(1,@item)
|
52
|
+
|
53
|
+
@log.write_text('on_item_selected: "%s", "%s", "%s", "%s"' % [@currentItem, get_item_text(@currentItem),
|
54
|
+
@item.get_text(), get_column(2,@item) ? @item.get_text() : nil])
|
55
|
+
end
|
56
|
+
|
57
|
+
def on_item_activated(event)
|
58
|
+
@currentItem = event.get_index()
|
59
|
+
@log.write_text("on_item_activated: %s\nTopItem: %s" % [get_item_text(@currentItem), get_top_item()])
|
60
|
+
end
|
61
|
+
|
62
|
+
def on_item_deselected(event)
|
63
|
+
@log.write_text("on_item_deselected: %s" % event.get_index())
|
64
|
+
end
|
65
|
+
|
66
|
+
# These three following methods are callbacks for implementing the
|
67
|
+
# "virtualness" of the list; they *must* be defined by any ListCtrl
|
68
|
+
# object with the style LC_VIRTUAL.
|
69
|
+
|
70
|
+
# Normally you would determine the text, attributes and/or image
|
71
|
+
# based on values from some external data source, but for this demo
|
72
|
+
# we'll just calculate them based on order.
|
73
|
+
def on_get_item_text(item, col)
|
74
|
+
return "Item %d, column %d" % [item,col]
|
75
|
+
end
|
76
|
+
|
77
|
+
def on_get_item_column_image(item, col)
|
78
|
+
if item % 4 == 0
|
79
|
+
return @idx1
|
80
|
+
else
|
81
|
+
return -1
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def on_get_item_attr(item)
|
86
|
+
if item % 3 == 1
|
87
|
+
return @attr1
|
88
|
+
elsif item % 3 == 2
|
89
|
+
return @attr2
|
90
|
+
else
|
91
|
+
return nil
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
module Demo
|
97
|
+
def Demo.run(frame, nb, log)
|
98
|
+
win = TestVirtualList.new(nb,log)
|
99
|
+
return win
|
100
|
+
end
|
101
|
+
|
102
|
+
def Demo.overview
|
103
|
+
return "A special case of report view quite different from the other modes of the list control is a virtual control in which the items data (including text, images and attributes) is managed by the main program and is requested by the control itself only when needed which allows to have controls with millions of items without consuming much memory. To use virtual list control you must use SetItemCount first and overload at least OnGetItemText (and optionally OnGetItemImage and OnGetItemAttr) to return the information about the items when the control requests it."
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
if __FILE__ == $0
|
109
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
110
|
+
load run_solo_lib
|
111
|
+
run File.basename($0)
|
112
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
class TestPanel < Wx::Panel
|
13
|
+
def initialize(parent, log)
|
14
|
+
@log = log
|
15
|
+
super(parent, -1)
|
16
|
+
|
17
|
+
b1 = Wx::Button.new(self, -1, "MDI demo")
|
18
|
+
evt_button(b1.get_id()) {|event| show_mdi_demo(event)}
|
19
|
+
|
20
|
+
box = Wx::BoxSizer.new(Wx::VERTICAL)
|
21
|
+
box.add(20,30)
|
22
|
+
box.add(b1, 0, Wx::ALIGN_CENTER | Wx::ALL, 15)
|
23
|
+
set_sizer(box)
|
24
|
+
end
|
25
|
+
|
26
|
+
def show_mdi_demo(event)
|
27
|
+
mdi_demo_file = File.join( File.dirname(__FILE__), "MDIDemo.rbw")
|
28
|
+
load mdi_demo_file
|
29
|
+
frame = Demo::MyParentFrame.new()
|
30
|
+
frame.show()
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module Demo
|
35
|
+
def Demo.run(frame,nb,log)
|
36
|
+
win = TestPanel.new(nb, log)
|
37
|
+
return win
|
38
|
+
end
|
39
|
+
|
40
|
+
def Demo.overview
|
41
|
+
"An MDI (Multiple Document Interface) parent frame is a window which can contain MDI child frames in its own 'desktop'. It is a convenient way to avoid window clutter, and is used in many popular Windows applications, such as Microsoft Word(TM)."
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
if __FILE__ == $0
|
47
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
48
|
+
load run_solo_lib
|
49
|
+
run File.basename($0)
|
50
|
+
end
|
@@ -0,0 +1,236 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
class MyFrame < Wx::Frame
|
13
|
+
def initialize(parent, id, log)
|
14
|
+
super(parent, id, "Playing with menus", Wx::DEFAULT_POSITION, Wx::Size.new(400,200))
|
15
|
+
@log = log
|
16
|
+
center_on_screen(Wx::BOTH)
|
17
|
+
|
18
|
+
create_status_bar()
|
19
|
+
set_status_text("This is the statusbar")
|
20
|
+
|
21
|
+
text = "A bunch of bogus menus have been created for this frame. You can play around with them to see how they behave and then check the source for this sample to see how to implement them."
|
22
|
+
tc = Wx::TextCtrl.new(self, -1, text, Wx::DEFAULT_POSITION,
|
23
|
+
Wx::DEFAULT_SIZE, Wx::TE_READONLY | Wx::TE_MULTILINE)
|
24
|
+
|
25
|
+
# Prepare the menu bar
|
26
|
+
menuBar = Wx::MenuBar.new()
|
27
|
+
|
28
|
+
# 1st menu from the left
|
29
|
+
menu1 = Wx::Menu.new()
|
30
|
+
menu1.append(101, "&Mercury", "This the text in the Statusbar")
|
31
|
+
menu1.append(102, "&Venus", "")
|
32
|
+
menu1.append(103, "&Earth", "You may select Earth too")
|
33
|
+
menu1.append_separator()
|
34
|
+
menu1.append(104, "&Close", "Close this frame")
|
35
|
+
# Add menu to the menu bar
|
36
|
+
menuBar.append(menu1, "&Planets")
|
37
|
+
|
38
|
+
# 2nd menu from left
|
39
|
+
menu2 = Wx::Menu.new()
|
40
|
+
menu2.append(201, "Hydrogen")
|
41
|
+
menu2.append(202, "Helium")
|
42
|
+
# a submenu in the 2nd menu
|
43
|
+
submenu = Wx::Menu.new()
|
44
|
+
submenu.append(2031,"Lanthanium")
|
45
|
+
submenu.append(2032,"Cerium")
|
46
|
+
submenu.append(2033,"Praseodymium")
|
47
|
+
item = Wx::MenuItem.new(menu2, 203, "Lanthanides", "", Wx::ITEM_NORMAL, submenu)
|
48
|
+
menu2.append_item(item)
|
49
|
+
# append 2nd menu
|
50
|
+
menuBar.append(menu2, "&Elements")
|
51
|
+
|
52
|
+
menu3 = Wx::Menu.new()
|
53
|
+
menu3.append_item(Wx::MenuItem.new(menu3, 301, "IRB", "a Python shell using tcl/tk as GUI", Wx::ITEM_RADIO))
|
54
|
+
menu3.append_item(Wx::MenuItem.new(menu3, 302, "PyCrust", "a Python shell using wxPython as GUI", Wx::ITEM_RADIO))
|
55
|
+
menu3.append_item(Wx::MenuItem.new(menu3, 303, "psi", "a simple Python shell using wxPython as GUI", Wx::ITEM_RADIO))
|
56
|
+
menu3.append_separator()
|
57
|
+
menu3.append_item(Wx::MenuItem.new(menu3, 304, "project1", "", Wx::ITEM_NORMAL))
|
58
|
+
menu3.append_item(Wx::MenuItem.new(menu3, 305, "project2", "", Wx::ITEM_NORMAL))
|
59
|
+
menuBar.append(menu3, "&Shells")
|
60
|
+
|
61
|
+
menu4 = Wx::Menu.new()
|
62
|
+
menu4.append_item(Wx::MenuItem.new(menu4, 401, "letters", "abcde...", Wx::ITEM_CHECK))
|
63
|
+
menu4.append_item(Wx::MenuItem.new(menu4, 402, "digits", "123...", Wx::ITEM_CHECK))
|
64
|
+
menu4.append_item(Wx::MenuItem.new(menu4, 403, "letters and digits", "abcd... + 123...", Wx::ITEM_CHECK))
|
65
|
+
menuBar.append(menu4, "Chec&k")
|
66
|
+
|
67
|
+
menu5 = Wx::Menu.new()
|
68
|
+
# Show how to put an icon in the menu
|
69
|
+
item = Wx::MenuItem.new(menu5, 500, "&Smile!\tCtrl+S",
|
70
|
+
"This one has an icon")
|
71
|
+
|
72
|
+
# set_bitmap is only available on Windows and GTK
|
73
|
+
if item.respond_to?(:set_bitmap)
|
74
|
+
bmp_file = File.join( File.dirname(__FILE__),
|
75
|
+
'icons', 'wxwin16x16.xpm')
|
76
|
+
item.set_bitmap( Wx::Bitmap.new(bmp_file) )
|
77
|
+
end
|
78
|
+
menu5.append_item(item)
|
79
|
+
|
80
|
+
menu5.append(501, "Interesting thing\tCtrl+A", "Note the shortcut!")
|
81
|
+
menu5.append_separator()
|
82
|
+
menu5.append(502, "Hello\tShift+H")
|
83
|
+
menu5.append_separator()
|
84
|
+
menu5.append(503, "remove the submenu")
|
85
|
+
menu6 = Wx::Menu.new()
|
86
|
+
menu6.append(601, "Submenu Item")
|
87
|
+
item = Wx::MenuItem.new(menu5, 504, "submenu", "", Wx::ITEM_NORMAL, menu6)
|
88
|
+
menu5.append_item(item)
|
89
|
+
menu5.append(505, "remove this menu")
|
90
|
+
menu5.append(506, "this is updated")
|
91
|
+
menu5.append(507, "insert after this...")
|
92
|
+
menu5.append(508, "...and before this")
|
93
|
+
menuBar.append(menu5, "&Fun")
|
94
|
+
|
95
|
+
set_menu_bar(menuBar)
|
96
|
+
|
97
|
+
# Menu events
|
98
|
+
evt_menu_highlight_all {|event| on_menu_highlight(event)}
|
99
|
+
|
100
|
+
evt_menu(101) {|event| menu_101(event)}
|
101
|
+
evt_menu(102) {|event| menu_102(event)}
|
102
|
+
evt_menu(103) {|event| menu_103(event)}
|
103
|
+
evt_menu(104) {|event| close_window(event)}
|
104
|
+
|
105
|
+
evt_menu(201) {|event| menu_201(event)}
|
106
|
+
evt_menu(202) {|event| menu_202(event)}
|
107
|
+
evt_menu(2031) {|event| menu_2031(event)}
|
108
|
+
evt_menu(2032) {|event| menu_2032(event)}
|
109
|
+
evt_menu(2033) {|event| menu_2033(event)}
|
110
|
+
|
111
|
+
evt_menu(301) {|event| menu_301_to_303(event)}
|
112
|
+
evt_menu(302) {|event| menu_301_to_303(event)}
|
113
|
+
evt_menu(303) {|event| menu_301_to_303(event)}
|
114
|
+
evt_menu(304) {|event| menu_304(event)}
|
115
|
+
evt_menu(305) {|event| menu_305(event)}
|
116
|
+
|
117
|
+
evt_menu_range(401,403) {|event| menu_401_to_403(event)}
|
118
|
+
|
119
|
+
evt_menu(500) {|event| menu_500(event)}
|
120
|
+
evt_menu(501) {|event| menu_501(event)}
|
121
|
+
evt_menu(502) {|event| menu_502(event)}
|
122
|
+
evt_menu(503) {|event| test_remove(event)}
|
123
|
+
evt_menu(505) {|event| test_remove2(event)}
|
124
|
+
evt_menu(507) {|event| test_insert(event)}
|
125
|
+
evt_menu(508) {|event| test_insert(event)}
|
126
|
+
|
127
|
+
evt_update_ui(506) {|event| test_update_ui(event)}
|
128
|
+
end
|
129
|
+
|
130
|
+
# Methods
|
131
|
+
|
132
|
+
def on_menu_highlight(event)
|
133
|
+
event.skip()
|
134
|
+
end
|
135
|
+
|
136
|
+
def menu_101(event)
|
137
|
+
@log.write_text("Welcome to Mercury")
|
138
|
+
end
|
139
|
+
|
140
|
+
def menu_102(event)
|
141
|
+
@log.write_text("Welcome to Venus")
|
142
|
+
end
|
143
|
+
|
144
|
+
def menu_103(event)
|
145
|
+
@log.write_text("Welcome to Earth")
|
146
|
+
end
|
147
|
+
|
148
|
+
def close_window(event)
|
149
|
+
event.skip()
|
150
|
+
end
|
151
|
+
|
152
|
+
def menu_201(event)
|
153
|
+
@log.write_text("Chemical element number 1")
|
154
|
+
end
|
155
|
+
|
156
|
+
def menu_202(event)
|
157
|
+
@log.write_text("Chemical element number 2")
|
158
|
+
end
|
159
|
+
|
160
|
+
def menu_2031(event)
|
161
|
+
@log.write_text("Element number 57")
|
162
|
+
end
|
163
|
+
|
164
|
+
def menu_2032(event)
|
165
|
+
@log.write_text("Element number 58")
|
166
|
+
end
|
167
|
+
|
168
|
+
def menu_2033(event)
|
169
|
+
@log.write_text("Element number 59")
|
170
|
+
end
|
171
|
+
|
172
|
+
def menu_301_to_303(event)
|
173
|
+
id = event.get_id()
|
174
|
+
@log.write_text("Event id: %d" % id)
|
175
|
+
end
|
176
|
+
|
177
|
+
def menu_304(event)
|
178
|
+
@log.write_text("Not yet available")
|
179
|
+
end
|
180
|
+
|
181
|
+
def menu_305(event)
|
182
|
+
@log.write_text("Still vapor")
|
183
|
+
end
|
184
|
+
|
185
|
+
def menu_401_to_403(event)
|
186
|
+
@log.write_text("From an evt_menu_range event")
|
187
|
+
end
|
188
|
+
|
189
|
+
def menu_500(event)
|
190
|
+
@log.write_text("Have a happy day!")
|
191
|
+
end
|
192
|
+
|
193
|
+
def menu_501(event)
|
194
|
+
@log.write_text("Look in the code to see how the shortcut has been realized")
|
195
|
+
end
|
196
|
+
|
197
|
+
def menu_502(event)
|
198
|
+
@log.write_text("Hello from Robert Carlin!")
|
199
|
+
end
|
200
|
+
|
201
|
+
# These methods haven't been implemented yet....Waiting for Wx::MenuBar.get_menu_bar() to be implemented
|
202
|
+
def test_remove(event)
|
203
|
+
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_remove2(event)
|
207
|
+
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_insert(event)
|
211
|
+
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_update_ui(event)
|
215
|
+
event.skip()
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
module Demo
|
220
|
+
def Demo.run(frame, nb, log)
|
221
|
+
win = MyFrame.new(frame, -1, log)
|
222
|
+
frame.otherWin = win
|
223
|
+
win.show()
|
224
|
+
end
|
225
|
+
|
226
|
+
def Demo.overview
|
227
|
+
return "A demo of using Wx::MenuBar and Wx::Menu in various ways."
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
|
232
|
+
if __FILE__ == $0
|
233
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
234
|
+
load run_solo_lib
|
235
|
+
run File.basename($0)
|
236
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
module Demo
|
13
|
+
def Demo.run(frame, nb, log)
|
14
|
+
dlg = Wx::MessageDialog.new(frame, "Hello from Ruby and wxRuby!", "A Message Box", Wx::OK | Wx::ICON_INFORMATION)
|
15
|
+
dlg.show_modal()
|
16
|
+
end
|
17
|
+
|
18
|
+
def Demo.overview
|
19
|
+
return "Show a message to the user in a dialog"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
if __FILE__ == $0
|
24
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
25
|
+
load run_solo_lib
|
26
|
+
run File.basename($0)
|
27
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
|
11
|
+
include Wx
|
12
|
+
|
13
|
+
class MyMiniFrame < MiniFrame
|
14
|
+
def initialize(parent, log)
|
15
|
+
@log = log
|
16
|
+
super(parent, -1, "Wx::MiniFrame demonstration",
|
17
|
+
DEFAULT_POSITION, Size.new(350,200), DEFAULT_FRAME_STYLE)
|
18
|
+
panel = Panel.new(self, -1)
|
19
|
+
|
20
|
+
button = Button.new(panel, -1, "Close me", Point.new(15,15))
|
21
|
+
evt_button( button.get_id ) { on_close_me }
|
22
|
+
# evt_close { | e | on_close_window(e) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def on_close_me
|
26
|
+
close(true)
|
27
|
+
end
|
28
|
+
|
29
|
+
def on_close_window(event)
|
30
|
+
@log.write_text("MiniFrame closed.")
|
31
|
+
event.skip
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
class TestPanel < Wx::Panel
|
37
|
+
def initialize(parent, log)
|
38
|
+
super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NO_FULL_REPAINT_ON_RESIZE)
|
39
|
+
@log = log
|
40
|
+
|
41
|
+
b = Button.new(self, -1, 'Create and Show a MiniFrame', Wx::Point.new(50,50))
|
42
|
+
evt_button(b.get_id) { on_button }
|
43
|
+
end
|
44
|
+
|
45
|
+
def on_button
|
46
|
+
win = MyMiniFrame.new(self, @log)
|
47
|
+
win.set_size(Wx::Size.new(200, 200))
|
48
|
+
win.center_on_parent(Wx::BOTH)
|
49
|
+
win.show(true)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
module Demo
|
54
|
+
def Demo.run(frame, nb, log)
|
55
|
+
TestPanel.new(nb, log)
|
56
|
+
end
|
57
|
+
|
58
|
+
def Demo.overview
|
59
|
+
return "A MiniFrame is a Frame with a small title bar. It is suitable for floating\n" +
|
60
|
+
"toolbars that must not take up too much screen area. In other respects, it's the\n" +
|
61
|
+
"same as a Wx::Frame."
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
if __FILE__ == $0
|
67
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
68
|
+
load run_solo_lib
|
69
|
+
run File.basename($0)
|
70
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
module Demo
|
13
|
+
def Demo.run(frame, nb, log)
|
14
|
+
lst = %w(apple pear banana coconut orange etc etc.. etc...)
|
15
|
+
choices = Wx::get_multiple_choices("Pick some from\n this list\nblah blah...", "m.s.d.", lst)
|
16
|
+
if choices
|
17
|
+
log.write_text("You selected " + choices.length().to_s() + " items:")
|
18
|
+
choices.each_index {|i| log.write_text("\t" + choices[i].to_s() + " => " + lst[choices[i]])}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def Demo.overview
|
23
|
+
return ""
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
if __FILE__ == $0
|
29
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
30
|
+
load run_solo_lib
|
31
|
+
run File.basename($0)
|
32
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
require 'wx'
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
# added this class so that the panel in each NB tab can respond to size events and properly size each nb page - otherwise
|
13
|
+
# NB pages that contain the colored windows won't properly size themseleves
|
14
|
+
|
15
|
+
class NBPanel < Wx::Panel
|
16
|
+
attr_accessor :win
|
17
|
+
def initialize(parent)
|
18
|
+
super(parent, -1)
|
19
|
+
evt_size {|event| on_size(event)}
|
20
|
+
@win
|
21
|
+
end
|
22
|
+
|
23
|
+
def on_size(event)
|
24
|
+
win.set_size(event.get_size())
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class TestNB < Wx::Notebook
|
29
|
+
def demo_file(base_name)
|
30
|
+
File.join( File.dirname(__FILE__), base_name )
|
31
|
+
end
|
32
|
+
|
33
|
+
def initialize(parent, id, log)
|
34
|
+
super(parent, id, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NB_BOTTOM)
|
35
|
+
@log = log
|
36
|
+
File
|
37
|
+
load demo_file("ColorPanel.rbw")
|
38
|
+
load demo_file("wxScrolledWindow.rbw")
|
39
|
+
load demo_file("GridSimple.rbw")
|
40
|
+
#load "wxListCtrl.rbw"
|
41
|
+
|
42
|
+
# Show how to put an image on one of the notebook tabs,
|
43
|
+
# first make the image list:
|
44
|
+
il = Wx::ImageList.new(16,16)
|
45
|
+
ic_file = File.join(File.dirname(__FILE__),'icons','wxwin16x16.xpm')
|
46
|
+
il.add_icon( Wx::Icon.new(ic_file) )
|
47
|
+
|
48
|
+
set_image_list(il)
|
49
|
+
|
50
|
+
win = make_color_panel(Wx::BLUE)
|
51
|
+
add_page(win, "Blue", true, 0)
|
52
|
+
st = Wx::StaticText.new(win, -1, "You can put nearly any type of window here,\n" +
|
53
|
+
"and if the platform supports it then the\n" +
|
54
|
+
"tabs can be on any side of the notebook.", Wx::Point.new(10,10))
|
55
|
+
st.set_foreground_colour(Wx::WHITE)
|
56
|
+
st.set_background_colour(Wx::BLUE)
|
57
|
+
|
58
|
+
win = make_color_panel(Wx::RED)
|
59
|
+
add_page(win, "Red")
|
60
|
+
|
61
|
+
win = MyCanvas.new(self)
|
62
|
+
add_page(win, "ScrolledWindow")
|
63
|
+
|
64
|
+
win = make_color_panel(Wx::GREEN)
|
65
|
+
add_page(win, "Green")
|
66
|
+
|
67
|
+
win = SimpleGrid.new(self, log)
|
68
|
+
add_page(win, "Grid")
|
69
|
+
|
70
|
+
#win = TestListCtrlPanel(self, log)
|
71
|
+
#add_page(win, "List")
|
72
|
+
|
73
|
+
win = make_color_panel(Wx::CYAN)
|
74
|
+
add_page(win, "Cyan")
|
75
|
+
|
76
|
+
win = make_color_panel(Wx::LIGHT_GREY)
|
77
|
+
add_page(win, "Light Grey")
|
78
|
+
|
79
|
+
win = make_color_panel(Wx::BLACK)
|
80
|
+
add_page(win, "Black")
|
81
|
+
|
82
|
+
win = make_color_panel(Wx::Colour.new("MEDIUM ORCHID"))
|
83
|
+
add_page(win, "MEDIUM ORCHID")
|
84
|
+
|
85
|
+
win = make_color_panel(Wx::Colour.new("MIDNIGHT BLUE"))
|
86
|
+
add_page(win, "MIDNIGHT BLUE")
|
87
|
+
|
88
|
+
win = make_color_panel(Wx::Colour.new("INDIAN RED"))
|
89
|
+
add_page(win, "INDIAN RED")
|
90
|
+
|
91
|
+
|
92
|
+
evt_notebook_page_changed(self.get_id()) {|event| on_page_changed(event)}
|
93
|
+
evt_notebook_page_changing(self.get_id()) {|event| on_page_changing(event)}
|
94
|
+
end
|
95
|
+
|
96
|
+
def make_color_panel(color)
|
97
|
+
p = NBPanel.new(self)
|
98
|
+
win = ColoredPanel.new(p, color)
|
99
|
+
p.win = win
|
100
|
+
return p
|
101
|
+
end
|
102
|
+
|
103
|
+
def on_page_changed(event)
|
104
|
+
old = event.get_old_selection()
|
105
|
+
new = event.get_selection()
|
106
|
+
sel = get_selection()
|
107
|
+
@log.write_text("on_page_changed, old:" + old.to_s() + ", new:" + new.to_s() + ", sel:" + sel.to_s())
|
108
|
+
event.skip()
|
109
|
+
end
|
110
|
+
|
111
|
+
def on_page_changing(event)
|
112
|
+
old = event.get_old_selection()
|
113
|
+
new = event.get_selection()
|
114
|
+
sel = get_selection()
|
115
|
+
@log.write_text("on_page_changing, old:" + old.to_s() + ", new:" + new.to_s() + ", sel:" + sel.to_s())
|
116
|
+
event.skip()
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
module Demo
|
121
|
+
def Demo.run(frame, nb, log)
|
122
|
+
win = TestNB.new(nb, -1, log)
|
123
|
+
return win
|
124
|
+
end
|
125
|
+
|
126
|
+
def Demo.overview
|
127
|
+
return "This class represents a notebook control, which manages multiple windows with associated tabs. To use the class, create a wxNotebook object and call AddPage or InsertPage, passing a window to be used as the page. Do not explicitly delete the window for a page that is currently managed by wxNotebook."
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
if __FILE__ == $0
|
133
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
134
|
+
load run_solo_lib
|
135
|
+
run File.basename($0)
|
136
|
+
end
|