wxruby 1.9.9-x86-mingw32 → 1.9.10-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/LICENSE +53 -53
  2. data/README +297 -297
  3. data/lib/wx.rb +53 -53
  4. data/lib/wx/classes/bitmap.rb +29 -1
  5. data/lib/wx/classes/clipboard.rb +19 -3
  6. data/lib/wx/classes/colour.rb +6 -4
  7. data/lib/wx/classes/data_object.rb +14 -0
  8. data/lib/wx/classes/data_object_simple.rb +6 -0
  9. data/lib/wx/classes/dataformat.rb +23 -0
  10. data/lib/wx/classes/evthandler.rb +31 -4
  11. data/lib/wx/classes/genericdirctrl.rb +36 -0
  12. data/lib/wx/classes/grid.rb +8 -0
  13. data/lib/wx/classes/hboxsizer.rb +6 -0
  14. data/lib/wx/classes/icon.rb +12 -1
  15. data/lib/wx/classes/image.rb +13 -1
  16. data/lib/wx/classes/listctrl.rb +12 -0
  17. data/lib/wx/classes/point.rb +8 -0
  18. data/lib/wx/classes/rect.rb +10 -1
  19. data/lib/wx/classes/richtextctrl.rb +22 -0
  20. data/lib/wx/classes/size.rb +9 -0
  21. data/lib/wx/classes/sizer.rb +18 -3
  22. data/lib/wx/classes/toolbar.rb +4 -6
  23. data/lib/wx/classes/vboxsizer.rb +6 -0
  24. data/lib/wx/classes/window.rb +7 -0
  25. data/lib/wx/classes/xmlresource.rb +17 -0
  26. data/lib/wx/helpers.rb +16 -1
  27. data/lib/wx/keyword_ctors.rb +3 -2
  28. data/lib/wx/keyword_defs.rb +27 -5
  29. data/lib/wx/version.rb +1 -1
  30. data/lib/wxruby2.so +0 -0
  31. data/samples/SAMPLES-LICENSE.TXT +17 -17
  32. data/samples/bigdemo/About.rbw +39 -39
  33. data/samples/bigdemo/ColorPanel.rbw +23 -23
  34. data/samples/bigdemo/GridSimple.rbw +78 -78
  35. data/samples/bigdemo/MDIDemo.rbw +57 -57
  36. data/samples/bigdemo/PopupMenu.rbw +149 -149
  37. data/samples/bigdemo/Sizers.rbw +543 -543
  38. data/samples/bigdemo/bigdemo.rb +823 -823
  39. data/samples/bigdemo/demoTemplate.rbw +33 -33
  40. data/samples/bigdemo/icons/choice.xpm +27 -27
  41. data/samples/bigdemo/icons/combo.xpm +27 -27
  42. data/samples/bigdemo/icons/copy.xpm +25 -25
  43. data/samples/bigdemo/icons/cut.xpm +24 -24
  44. data/samples/bigdemo/icons/gauge.xpm +27 -27
  45. data/samples/bigdemo/icons/help.xpm +25 -25
  46. data/samples/bigdemo/icons/list.xpm +27 -27
  47. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  48. data/samples/bigdemo/icons/new.xpm +24 -24
  49. data/samples/bigdemo/icons/ogl.ico +0 -0
  50. data/samples/bigdemo/icons/ogl.xpm +45 -45
  51. data/samples/bigdemo/icons/open.xpm +26 -26
  52. data/samples/bigdemo/icons/paste.xpm +38 -38
  53. data/samples/bigdemo/icons/preview.xpm +26 -26
  54. data/samples/bigdemo/icons/print.xpm +26 -26
  55. data/samples/bigdemo/icons/radio.xpm +27 -27
  56. data/samples/bigdemo/icons/robert.xpm +415 -415
  57. data/samples/bigdemo/icons/save.xpm +25 -25
  58. data/samples/bigdemo/icons/smiles.xpm +39 -39
  59. data/samples/bigdemo/icons/smiley.xpm +42 -42
  60. data/samples/bigdemo/icons/stattext.xpm +24 -24
  61. data/samples/bigdemo/icons/test2.bmp +0 -0
  62. data/samples/bigdemo/icons/test2.xpm +79 -79
  63. data/samples/bigdemo/icons/text.xpm +27 -27
  64. data/samples/bigdemo/icons/tog1.xpm +38 -38
  65. data/samples/bigdemo/icons/tog2.xpm +38 -38
  66. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  67. data/samples/bigdemo/tips.txt +7 -7
  68. data/samples/bigdemo/utils.rb +11 -11
  69. data/samples/bigdemo/wxButton.rbw +64 -64
  70. data/samples/bigdemo/wxCalendarCtrl.rbw +60 -60
  71. data/samples/bigdemo/wxCheckBox.rbw +50 -50
  72. data/samples/bigdemo/wxCheckListBox.rbw +65 -75
  73. data/samples/bigdemo/wxChoice.rbw +47 -47
  74. data/samples/bigdemo/wxColourDialog.rbw +31 -31
  75. data/samples/bigdemo/wxComboBox.rbw +77 -77
  76. data/samples/bigdemo/wxDialog.rbw +74 -74
  77. data/samples/bigdemo/wxDirDialog.rbw +29 -29
  78. data/samples/bigdemo/wxFileDialog.rbw +37 -37
  79. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -35
  80. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -82
  81. data/samples/bigdemo/wxFontDialog.rbw +173 -173
  82. data/samples/bigdemo/wxFrame.rbw +53 -53
  83. data/samples/bigdemo/wxGauge.rbw +71 -71
  84. data/samples/bigdemo/wxGrid.rbw +66 -66
  85. data/samples/bigdemo/wxListBox.rbw +140 -140
  86. data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -107
  87. data/samples/bigdemo/wxMDIWindows.rbw +50 -50
  88. data/samples/bigdemo/wxMenu.rbw +236 -236
  89. data/samples/bigdemo/wxMessageDialog.rbw +27 -27
  90. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -32
  91. data/samples/bigdemo/wxNotebook.rbw +136 -136
  92. data/samples/bigdemo/wxProgressDialog.rbw +43 -43
  93. data/samples/bigdemo/wxRadioBox.rbw +72 -72
  94. data/samples/bigdemo/wxRadioButton.rbw +125 -125
  95. data/samples/bigdemo/wxSashWindow.rbw +2 -2
  96. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -57
  97. data/samples/bigdemo/wxScrolledWindow.rbw +199 -199
  98. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -33
  99. data/samples/bigdemo/wxSlider.rbw +42 -42
  100. data/samples/bigdemo/wxSpinButton.rbw +50 -50
  101. data/samples/bigdemo/wxSpinCtrl.rbw +51 -51
  102. data/samples/bigdemo/wxSplitterWindow.rbw +63 -63
  103. data/samples/bigdemo/wxStaticBitmap.rbw +51 -51
  104. data/samples/bigdemo/wxStaticText.rbw +55 -55
  105. data/samples/bigdemo/wxStatusBar.rbw +126 -126
  106. data/samples/bigdemo/wxTextCtrl.rbw +149 -149
  107. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -31
  108. data/samples/bigdemo/wxToggleButton.rbw +49 -49
  109. data/samples/bigdemo/wxToolBar.rbw +131 -131
  110. data/samples/bigdemo/wxTreeCtrl.rbw +191 -190
  111. data/samples/calendar/calendar.rb +256 -271
  112. data/samples/caret/caret.rb +282 -282
  113. data/samples/caret/mondrian.xpm +44 -44
  114. data/samples/controls/controls.rb +1136 -1136
  115. data/samples/controls/get_item_sample.rb +87 -87
  116. data/samples/controls/icons/choice.xpm +27 -27
  117. data/samples/controls/icons/combo.xpm +27 -27
  118. data/samples/controls/icons/gauge.xpm +27 -27
  119. data/samples/controls/icons/list.xpm +27 -27
  120. data/samples/controls/icons/radio.xpm +27 -27
  121. data/samples/controls/icons/stattext.xpm +24 -24
  122. data/samples/controls/icons/text.xpm +27 -27
  123. data/samples/controls/mondrian.xpm +44 -44
  124. data/samples/dialogs/dialogs.rb +797 -723
  125. data/samples/dialogs/tips.txt +18 -18
  126. data/samples/drawing/images.rb +37 -37
  127. data/samples/etc/activation.rb +102 -102
  128. data/samples/etc/choice.rb +67 -67
  129. data/samples/etc/miniframe.rb +79 -79
  130. data/samples/etc/sash.rb +130 -130
  131. data/samples/etc/scrollwin.rb +110 -110
  132. data/samples/etc/system_settings.rb +252 -252
  133. data/samples/etc/toolbar_sizer_additem.rb +55 -0
  134. data/samples/etc/wizard.rb +74 -74
  135. data/samples/event/update_ui_event.rb +70 -0
  136. data/samples/grid/gridtablebase.rb +43 -29
  137. data/samples/listbook/listbook.rb +174 -174
  138. data/samples/listbook/listbook.xrc +370 -370
  139. data/samples/mdi/mdi.rb +85 -77
  140. data/samples/minimal/minimal.rb +77 -77
  141. data/samples/minimal/nothing.rb +16 -16
  142. data/samples/text/format-text-bold.png +0 -0
  143. data/samples/text/format-text-italic.png +0 -0
  144. data/samples/text/format-text-underline.png +0 -0
  145. data/samples/text/rich_textctrl.rb +98 -0
  146. data/samples/text/textctrl.rb +111 -113
  147. data/samples/text/unicode.rb +242 -242
  148. data/samples/text/utf8.txt +14 -14
  149. data/samples/treectrl/treectrl.rb +1166 -1174
  150. data/samples/xrc/samples.xrc +46 -46
  151. data/samples/xrc/xrc_sample.rb +76 -96
  152. metadata +15 -3
@@ -1,107 +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
-
12
- class TestVirtualList < Wx::ListCtrl
13
- def initialize(parent, log)
14
- super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::LC_REPORT | Wx::LC_VIRTUAL | Wx::LC_HRULES | Wx::LC_VRULES)
15
- @log = log
16
-
17
- @il = Wx::ImageList.new(16,16)
18
- bmp_file = File.join(File.dirname(__FILE__), "icons/wxwin16x16.xpm")
19
-
20
- @idx1 = @il.add(Wx::Bitmap.new(bmp_file))
21
- set_image_list(@il, Wx::IMAGE_LIST_SMALL)
22
-
23
- insert_column(0,"First")
24
- insert_column(1,"Second")
25
- insert_column(2,"Third")
26
- set_column_width(0,175)
27
- set_column_width(1,175)
28
- set_column_width(2,175)
29
-
30
- set_item_count(1000000)
31
-
32
- @attr1 = Wx::ListItemAttr.new()
33
- @attr1.set_background_colour(Wx::Colour.new("YELLOW"))
34
-
35
- @attr2 = Wx::ListItemAttr.new()
36
- @attr2.set_background_colour(Wx::Colour.new("LIGHT BLUE"))
37
-
38
- evt_list_item_selected(get_id()) {|event| on_item_selected(event)}
39
- evt_list_item_activated(get_id()) {|event| on_item_activated(event)}
40
- evt_list_item_deselected(get_id()) {|event| on_item_deselected(event)}
41
- end
42
-
43
- def on_item_selected(event)
44
- @currentItem = event.get_index()
45
- @item = event.get_item()
46
- get_column(1,@item)
47
-
48
- @log.write_text('on_item_selected: "%s", "%s", "%s", "%s"' % [@currentItem, get_item_text(@currentItem),
49
- @item.get_text(), get_column(2,@item) ? @item.get_text() : nil])
50
- end
51
-
52
- def on_item_activated(event)
53
- @currentItem = event.get_index()
54
- @log.write_text("on_item_activated: %s\nTopItem: %s" % [get_item_text(@currentItem), get_top_item()])
55
- end
56
-
57
- def on_item_deselected(event)
58
- @log.write_text("on_item_deselected: %s" % event.get_index())
59
- end
60
-
61
- # These three following methods are callbacks for implementing the
62
- # "virtualness" of the list; they *must* be defined by any ListCtrl
63
- # object with the style LC_VIRTUAL.
64
-
65
- # Normally you would determine the text, attributes and/or image
66
- # based on values from some external data source, but for this demo
67
- # we'll just calculate them based on order.
68
- def on_get_item_text(item, col)
69
- return "Item %d, column %d" % [item,col]
70
- end
71
-
72
- def on_get_item_column_image(item, col)
73
- if item % 4 == 0
74
- return @idx1
75
- else
76
- return -1
77
- end
78
- end
79
-
80
- def on_get_item_attr(item)
81
- if item % 3 == 1
82
- return @attr1
83
- elsif item % 3 == 2
84
- return @attr2
85
- else
86
- return nil
87
- end
88
- end
89
- end
90
-
91
- module Demo
92
- def Demo.run(frame, nb, log)
93
- win = TestVirtualList.new(nb,log)
94
- return win
95
- end
96
-
97
- def Demo.overview
98
- 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."
99
- end
100
- end
101
-
102
-
103
- if __FILE__ == $0
104
- run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
105
- load run_solo_lib
106
- run File.basename($0)
107
- end
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
@@ -1,50 +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
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
@@ -1,236 +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
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