wxruby 1.9.3-x86-linux
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +53 -0
- data/README +299 -0
- data/lib/wx.rb +42 -0
- data/lib/wx/accessors.rb +52 -0
- data/lib/wx/classes/app.rb +45 -0
- data/lib/wx/classes/artprovider.rb +31 -0
- data/lib/wx/classes/bitmap.rb +23 -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 +16 -0
- data/lib/wx/classes/colour.rb +47 -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/event.rb +5 -0
- data/lib/wx/classes/evthandler.rb +894 -0
- data/lib/wx/classes/font.rb +118 -0
- data/lib/wx/classes/grid.rb +129 -0
- data/lib/wx/classes/helpcontroller.rb +5 -0
- data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
- data/lib/wx/classes/htmlwindow.rb +6 -0
- data/lib/wx/classes/icon.rb +14 -0
- data/lib/wx/classes/image.rb +14 -0
- data/lib/wx/classes/listbox.rb +4 -0
- data/lib/wx/classes/listctrl.rb +21 -0
- data/lib/wx/classes/locale.rb +28 -0
- data/lib/wx/classes/mediactrl.rb +22 -0
- data/lib/wx/classes/menu.rb +62 -0
- data/lib/wx/classes/menuitem.rb +7 -0
- data/lib/wx/classes/object.rb +7 -0
- data/lib/wx/classes/paintdc.rb +12 -0
- data/lib/wx/classes/point.rb +48 -0
- data/lib/wx/classes/previewframe.rb +13 -0
- data/lib/wx/classes/rect.rb +5 -0
- data/lib/wx/classes/size.rb +49 -0
- data/lib/wx/classes/sound.rb +23 -0
- data/lib/wx/classes/styledtextctrl.rb +92 -0
- data/lib/wx/classes/textctrl.rb +14 -0
- data/lib/wx/classes/texturlevent.rb +6 -0
- data/lib/wx/classes/timer.rb +69 -0
- data/lib/wx/classes/treectrl.rb +44 -0
- data/lib/wx/classes/window.rb +49 -0
- data/lib/wx/classes/xmlresource.rb +16 -0
- data/lib/wx/keyword_ctors.rb +219 -0
- data/lib/wx/keyword_defs.rb +485 -0
- data/lib/wx/version.rb +3 -0
- data/lib/wxruby2.so +0 -0
- data/samples/SAMPLES-LICENSE.TXT +18 -0
- data/samples/aui/aui.rb +1360 -0
- data/samples/bigdemo/About.rbw +39 -0
- data/samples/bigdemo/ColorPanel.rbw +25 -0
- data/samples/bigdemo/GridSimple.rbw +80 -0
- data/samples/bigdemo/MDIDemo.rbw +59 -0
- data/samples/bigdemo/PopupMenu.rbw +151 -0
- data/samples/bigdemo/ShapedWindow.rbw +135 -0
- data/samples/bigdemo/Sizers.rbw +545 -0
- data/samples/bigdemo/bigdemo.rb +826 -0
- data/samples/bigdemo/demoTemplate.rbw +37 -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 +94 -0
- data/samples/bigdemo/tips.txt +7 -0
- data/samples/bigdemo/utils.rb +12 -0
- data/samples/bigdemo/wxArtProvider.rbw +285 -0
- data/samples/bigdemo/wxBitmapButton.rbw +64 -0
- data/samples/bigdemo/wxButton.rbw +66 -0
- data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
- data/samples/bigdemo/wxCheckBox.rbw +52 -0
- data/samples/bigdemo/wxCheckListBox.rbw +77 -0
- data/samples/bigdemo/wxChoice.rbw +49 -0
- data/samples/bigdemo/wxChoicebook.rbw +80 -0
- data/samples/bigdemo/wxColourDialog.rbw +34 -0
- data/samples/bigdemo/wxComboBox.rbw +79 -0
- data/samples/bigdemo/wxCursor.rbw +140 -0
- data/samples/bigdemo/wxDialog.rbw +92 -0
- data/samples/bigdemo/wxDirDialog.rbw +32 -0
- data/samples/bigdemo/wxDragImage.rbw +74 -0
- data/samples/bigdemo/wxFileDialog.rbw +39 -0
- data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
- data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
- data/samples/bigdemo/wxFontDialog.rbw +176 -0
- data/samples/bigdemo/wxFrame.rbw +55 -0
- data/samples/bigdemo/wxGauge.rbw +73 -0
- data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
- data/samples/bigdemo/wxGrid.rbw +68 -0
- data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
- data/samples/bigdemo/wxListBox.rbw +142 -0
- data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
- data/samples/bigdemo/wxMDIWindows.rbw +52 -0
- data/samples/bigdemo/wxMenu.rbw +238 -0
- data/samples/bigdemo/wxMessageDialog.rbw +30 -0
- data/samples/bigdemo/wxMiniFrame.rbw +74 -0
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
- data/samples/bigdemo/wxNotebook.rbw +138 -0
- data/samples/bigdemo/wxProgressDialog.rbw +45 -0
- data/samples/bigdemo/wxRadioBox.rbw +74 -0
- data/samples/bigdemo/wxRadioButton.rbw +127 -0
- data/samples/bigdemo/wxSashWindow.rbw +145 -0
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
- data/samples/bigdemo/wxScrolledWindow.rbw +201 -0
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
- data/samples/bigdemo/wxSlider.rbw +44 -0
- data/samples/bigdemo/wxSpinButton.rbw +52 -0
- data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
- data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
- data/samples/bigdemo/wxStaticText.rbw +57 -0
- data/samples/bigdemo/wxStatusBar.rbw +128 -0
- data/samples/bigdemo/wxTextCtrl.rbw +151 -0
- data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
- data/samples/bigdemo/wxToggleButton.rbw +51 -0
- data/samples/bigdemo/wxToolBar.rbw +133 -0
- data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
- data/samples/calendar/calendar.rb +275 -0
- data/samples/caret/caret.rb +286 -0
- data/samples/caret/mondrian.xpm +44 -0
- data/samples/controls/controls.rb +1140 -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 +724 -0
- data/samples/dialogs/tips.txt +18 -0
- data/samples/drawing/graphics_drawing.rb +232 -0
- data/samples/drawing/images.rb +48 -0
- data/samples/drawing/paperclip.png +0 -0
- data/samples/etc/activation.rb +108 -0
- data/samples/etc/choice.rb +72 -0
- data/samples/etc/miniframe.rb +84 -0
- data/samples/etc/sash.rb +135 -0
- data/samples/etc/scrollwin.rb +116 -0
- data/samples/etc/system_settings.rb +258 -0
- data/samples/etc/threaded.rb +81 -0
- data/samples/etc/wizard.rb +79 -0
- data/samples/event/event.rb +184 -0
- data/samples/grid/grid.rb +202 -0
- data/samples/html/html.rb +264 -0
- data/samples/listbook/listbook.rb +181 -0
- data/samples/listbook/listbook.xrc +370 -0
- data/samples/mdi/mdi.rb +87 -0
- data/samples/media/mediactrl.rb +173 -0
- data/samples/minimal/minimal.rb +85 -0
- data/samples/minimal/mondrian.ico +0 -0
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +21 -0
- data/samples/opengl/cube.rb +123 -0
- data/samples/printing/mondrian.ico +0 -0
- data/samples/printing/mondrian.xpm +44 -0
- data/samples/printing/printing.rb +484 -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/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +44 -0
- data/samples/text/scintilla.rb +174 -0
- data/samples/text/textctrl.rb +124 -0
- data/samples/text/unicode.rb +238 -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 +1180 -0
- data/samples/xrc/samples.xrc +46 -0
- data/samples/xrc/xrc_sample.rb +107 -0
- metadata +303 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
module About
|
2
|
+
|
3
|
+
class MyAboutBox < Wx::Dialog
|
4
|
+
def initialize(parent)
|
5
|
+
super(parent, -1, "About the WxRuby Demo.")
|
6
|
+
sizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
|
7
|
+
set_size(Wx::Size.new(510,310))
|
8
|
+
headerFont = Wx::Font.new(36, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
|
9
|
+
bodyFont = Wx::Font.new(12, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
|
10
|
+
title = Wx::StaticText.new(self, -1, "WxRuby Demo!", Wx::Point.new(20, 20))
|
11
|
+
title.set_font(headerFont)
|
12
|
+
|
13
|
+
rVersion = Wx::StaticText.new(self, -1, "Running on Ruby version " + VERSION + " on " + RUBY_PLATFORM, Wx::Point.new(20,100))
|
14
|
+
rVersion.set_font(bodyFont)
|
15
|
+
rVersion.set_foreground_colour(Wx::RED)
|
16
|
+
|
17
|
+
wxVersion = Wx::StaticText.new(self, -1, Wx::VERSION_STRING, Wx::Point.new(20,120))
|
18
|
+
wxVersion.set_font(bodyFont)
|
19
|
+
wxVersion.set_foreground_colour(Wx::BLUE)
|
20
|
+
|
21
|
+
str = "Welcome to the WxRuby Demo! This demo has been ported from the \nwxPython demo created by ROBIN DUNN (http://www.wxpython.org).\nGo ahead and click on each demo via the tree or the demo menu.\nLook at the source code - it is an excellent way to learn WxRuby!\n\nPorted by Robert Paul Carlin"
|
22
|
+
body = Wx::StaticText.new(self, -1, str, Wx::Point.new(20, 160))
|
23
|
+
body.set_font(bodyFont)
|
24
|
+
|
25
|
+
self.centre_on_parent(Wx::BOTH)
|
26
|
+
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
if __FILE__ == $0
|
36
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
37
|
+
load run_solo_lib
|
38
|
+
run File.basename($0)
|
39
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'wx'
|
5
|
+
rescue LoadError => no_wx_err
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
require 'wx'
|
9
|
+
rescue LoadError
|
10
|
+
raise no_wx_err
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class ColoredPanel < Wx::Window
|
15
|
+
def initialize(parent, color)
|
16
|
+
super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::SIMPLE_BORDER)
|
17
|
+
set_background_colour(color)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
if __FILE__ == $0
|
22
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
23
|
+
load run_solo_lib
|
24
|
+
run File.basename($0)
|
25
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'wx'
|
5
|
+
rescue LoadError => no_wx_err
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
require 'wx'
|
9
|
+
rescue LoadError
|
10
|
+
raise no_wx_err
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class SimpleGrid < Wx::Grid
|
15
|
+
|
16
|
+
def initialize(parent, log)
|
17
|
+
super(parent, -1)
|
18
|
+
@log = log
|
19
|
+
@moveTo = nil
|
20
|
+
|
21
|
+
evt_idle {|event| on_idle(event)}
|
22
|
+
|
23
|
+
create_grid(25,25)
|
24
|
+
|
25
|
+
# simple cell formatting
|
26
|
+
set_col_size(3,200)
|
27
|
+
set_row_size(4,45)
|
28
|
+
set_cell_value(0,0,"First cell")
|
29
|
+
set_cell_value(1,1,"Another cell")
|
30
|
+
set_cell_value(2,2,"Yet another cell")
|
31
|
+
set_cell_value(3,3,"This cell is read-only")
|
32
|
+
set_cell_font(0,0, Wx::Font.new(12, Wx::ROMAN, Wx::ITALIC, Wx::NORMAL))
|
33
|
+
set_cell_text_colour(1,1,Wx::RED)
|
34
|
+
set_cell_background_colour(2,2,Wx::CYAN)
|
35
|
+
set_read_only(3,3,true)
|
36
|
+
|
37
|
+
set_col_label_value(0, "Custom")
|
38
|
+
set_col_label_value(1, "column")
|
39
|
+
set_col_label_value(2, "labels")
|
40
|
+
|
41
|
+
set_col_label_alignment(Wx::ALIGN_LEFT, Wx::ALIGN_BOTTOM)
|
42
|
+
|
43
|
+
# overflow cells
|
44
|
+
set_cell_value(9,1, "This default cell will overflow into neighboring cells, but not if you turn overflow off.")
|
45
|
+
#set_cell_size(11, 1, 3, 3)
|
46
|
+
set_cell_alignment(11, 1, Wx::ALIGN_CENTRE, Wx::ALIGN_CENTRE)
|
47
|
+
set_cell_value(11, 1, "This cell is set to span 3 rows and 3 columns")
|
48
|
+
|
49
|
+
# evt_grid_cell_left_click {|event| on_cell_left_click(event)}
|
50
|
+
end
|
51
|
+
|
52
|
+
def on_cell_left_click(event)
|
53
|
+
@log.write_text("on_cell_left_click: (%d,%d)" % [evt.get_row(), evt.get_col()])
|
54
|
+
evt.skip()
|
55
|
+
end
|
56
|
+
|
57
|
+
def on_idle(event)
|
58
|
+
if @moveTo != nil
|
59
|
+
set_grid_cursor(@moveTo[0], @moveTo[1])
|
60
|
+
@moveTo = nil
|
61
|
+
end
|
62
|
+
event.skip()
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
module GridDemo
|
67
|
+
class TestFrame < Wx::Frame
|
68
|
+
def initialize(parent, log)
|
69
|
+
super(parent, -1, "Simple Grid Demo", Wx::DEFAULT_POSITION, Wx::Size.new(640,480))
|
70
|
+
grid = SimpleGrid.new(self, log)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
if __FILE__ == $0
|
77
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
78
|
+
load run_solo_lib
|
79
|
+
run File.basename($0)
|
80
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'wx'
|
5
|
+
rescue LoadError => no_wx_err
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
require 'wx'
|
9
|
+
rescue LoadError
|
10
|
+
raise no_wx_err
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module Demo
|
15
|
+
|
16
|
+
class MyParentFrame < Wx::MDIParentFrame
|
17
|
+
def initialize
|
18
|
+
super(nil, -1, "MDI Parent", Wx::DEFAULT_POSITION,
|
19
|
+
Wx::Size.new(600,400))
|
20
|
+
|
21
|
+
@win_count = 0
|
22
|
+
menu = Wx::Menu.new
|
23
|
+
menu.append(5000, "&New Window")
|
24
|
+
menu.append_separator
|
25
|
+
menu.append(5001, "E&xit")
|
26
|
+
|
27
|
+
menubar = Wx::MenuBar.new()
|
28
|
+
menubar.append(menu, "&File")
|
29
|
+
set_menu_bar(menubar)
|
30
|
+
|
31
|
+
create_status_bar
|
32
|
+
|
33
|
+
evt_menu(5000) {|event| on_new_window(event)}
|
34
|
+
evt_menu(5001) {|event| on_exit(event)}
|
35
|
+
scrollwin_demo_file = File.join(File.dirname(__FILE__),
|
36
|
+
"wxScrolledWindow.rbw")
|
37
|
+
load scrollwin_demo_file
|
38
|
+
end
|
39
|
+
|
40
|
+
def on_exit(event)
|
41
|
+
close()
|
42
|
+
end
|
43
|
+
|
44
|
+
def on_new_window(event)
|
45
|
+
@win_count += 1
|
46
|
+
win = Wx::MDIChildFrame.new(self, -1, "Child Window: #{@win_count}")
|
47
|
+
canvas = MyCanvas.new(win)
|
48
|
+
win.show
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
if __FILE__ == $0
|
56
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
57
|
+
load run_solo_lib
|
58
|
+
run File.basename($0)
|
59
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'wx'
|
5
|
+
rescue LoadError => no_wx_err
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
require 'wx'
|
9
|
+
rescue LoadError
|
10
|
+
raise no_wx_err
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
TEXT = "Right-click on the panel (or Ctrl-click on the Mac) to show a popup\nmenu. Then look at the code for this sample. Notice how the\nPopupMenu method is similar to the ShowModal method of a wxDialog in\nthat it doesn't return until the popup menu has been dismissed. The\nevent handlers for the popup menu items can either be attached to the\nmenu itself, or to the window that invokes PopupMenu."
|
15
|
+
|
16
|
+
class TestPanel < Wx::Panel
|
17
|
+
def initialize(parent, log)
|
18
|
+
@log = log
|
19
|
+
super(parent, -1)
|
20
|
+
@bound = false
|
21
|
+
box = Wx::BoxSizer.new(Wx::VERTICAL)
|
22
|
+
|
23
|
+
# Make and layout controls
|
24
|
+
fs = get_font().get_point_size()
|
25
|
+
bf = Wx::Font.new(fs + 4, Wx::SWISS, Wx::NORMAL, Wx::BOLD)
|
26
|
+
nf = Wx::Font.new(fs + 2, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
|
27
|
+
|
28
|
+
t = Wx::StaticText.new(self, -1, "Popup menu", Wx::DEFAULT_POSITION)
|
29
|
+
t.set_font(bf)
|
30
|
+
box.add(t, 0, Wx::CENTER | Wx::ALL, 5)
|
31
|
+
|
32
|
+
box.add(Wx::StaticLine.new(self, -1), 0, Wx::EXPAND)
|
33
|
+
box.add(10,20)
|
34
|
+
|
35
|
+
t = Wx::StaticText.new(self, -1, TEXT)
|
36
|
+
t.set_font(nf)
|
37
|
+
box.add(t, 0, Wx::CENTER | Wx::ALL, 5)
|
38
|
+
|
39
|
+
set_sizer(box)
|
40
|
+
|
41
|
+
evt_right_up {|event| on_right_click(event)}
|
42
|
+
end
|
43
|
+
|
44
|
+
def on_right_click(event)
|
45
|
+
@log.write_text("on_right_click")
|
46
|
+
|
47
|
+
# only do this part the first time so the events are only bound once
|
48
|
+
if @bound == false
|
49
|
+
@popupID1,
|
50
|
+
@popupID2,
|
51
|
+
@popupID3,
|
52
|
+
@popupID4,
|
53
|
+
@popupID5,
|
54
|
+
@popupID6,
|
55
|
+
@popupID7,
|
56
|
+
@popupID8,
|
57
|
+
@popupID9 = (5000..5008).to_a()
|
58
|
+
evt_menu(@popupID1) {|event| on_popup_one(event)}
|
59
|
+
evt_menu(@popupID2) {|event| on_popup_two(event)}
|
60
|
+
evt_menu(@popupID3) {|event| on_popup_three(event)}
|
61
|
+
evt_menu(@popupID4) {|event| on_popup_four(event)}
|
62
|
+
evt_menu(@popupID5) {|event| on_popup_five(event)}
|
63
|
+
evt_menu(@popupID6) {|event| on_popup_six(event)}
|
64
|
+
evt_menu(@popupID7) {|event| on_popup_seven(event)}
|
65
|
+
evt_menu(@popupID8) {|event| on_popup_eight(event)}
|
66
|
+
evt_menu(@popupID9) {|event| on_popup_nine(event)}
|
67
|
+
@bound = true
|
68
|
+
end
|
69
|
+
|
70
|
+
# make a menu
|
71
|
+
menu = Wx::Menu.new()
|
72
|
+
# Show how to put an icon in the menu
|
73
|
+
item = Wx::MenuItem.new(menu, @popupID1, "One")
|
74
|
+
# set_bitmap is only available on GTK and Windows
|
75
|
+
if item.respond_to?(:set_bitmap)
|
76
|
+
bmp_file = File.join( File.dirname(__FILE__), 'icons', 'smiley.xpm')
|
77
|
+
item.set_bitmap( Wx::Bitmap.new(bmp_file) )
|
78
|
+
end
|
79
|
+
menu.append_item(item)
|
80
|
+
# add some other items
|
81
|
+
menu.append(@popupID2, "Two")
|
82
|
+
menu.append(@popupID3, "Three")
|
83
|
+
menu.append(@popupID4, "Four")
|
84
|
+
menu.append(@popupID5, "Five")
|
85
|
+
menu.append(@popupID6, "Six")
|
86
|
+
# make a submenu
|
87
|
+
sm = Wx::Menu.new()
|
88
|
+
sm.append(@popupID8, "sub item 1")
|
89
|
+
sm.append(@popupID9, "sub item 2")
|
90
|
+
mItem = Wx::MenuItem.new(menu, @popupID7, "Test Submenu", "", Wx::ITEM_NORMAL, sm)
|
91
|
+
menu.append_item(mItem)
|
92
|
+
|
93
|
+
popup_menu(menu, Wx::Point.new(event.get_x(), event.get_y()))
|
94
|
+
#menu.destroy()
|
95
|
+
end
|
96
|
+
|
97
|
+
def on_popup_one(event)
|
98
|
+
@log.write_text("Popup one")
|
99
|
+
end
|
100
|
+
|
101
|
+
def on_popup_two(event)
|
102
|
+
@log.write_text("Popup two")
|
103
|
+
end
|
104
|
+
|
105
|
+
def on_popup_three(event)
|
106
|
+
@log.write_text("Popup three")
|
107
|
+
end
|
108
|
+
|
109
|
+
def on_popup_four(event)
|
110
|
+
@log.write_text("Popup four")
|
111
|
+
end
|
112
|
+
|
113
|
+
def on_popup_five(event)
|
114
|
+
@log.write_text("Popup five")
|
115
|
+
end
|
116
|
+
|
117
|
+
def on_popup_six(event)
|
118
|
+
@log.write_text("Popup six")
|
119
|
+
end
|
120
|
+
|
121
|
+
def on_popup_seven(event)
|
122
|
+
@log.write_text("Popup seven")
|
123
|
+
end
|
124
|
+
|
125
|
+
def on_popup_eight(event)
|
126
|
+
@log.write_text("Popup eight")
|
127
|
+
end
|
128
|
+
|
129
|
+
def on_popup_nine(event)
|
130
|
+
@log.write_text("Popup nine")
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
module Demo
|
136
|
+
def Demo.run(frame, nb, log)
|
137
|
+
win = TestPanel.new(nb, log)
|
138
|
+
return win
|
139
|
+
end
|
140
|
+
|
141
|
+
def Demo.overview
|
142
|
+
return ""
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
|
147
|
+
if __FILE__ == $0
|
148
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
149
|
+
load run_solo_lib
|
150
|
+
run File.basename($0)
|
151
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'wx'
|
7
|
+
rescue LoadError => no_wx_err
|
8
|
+
begin
|
9
|
+
require 'rubygems'
|
10
|
+
require 'wx'
|
11
|
+
rescue LoadError
|
12
|
+
raise no_wx_err
|
13
|
+
end
|
14
|
+
end
|
15
|
+
include Wx
|
16
|
+
|
17
|
+
BUTTON_CLOSE = 1003
|
18
|
+
|
19
|
+
class MyFrame < Frame
|
20
|
+
def initialize(parent, log)
|
21
|
+
@log = log
|
22
|
+
super(parent, -1, "Shaped Window", DEFAULT_POSITION, Size.new(350,200),
|
23
|
+
FRAME_SHAPED|SIMPLE_BORDER|FRAME_NO_TASKBAR|STAY_ON_TOP)
|
24
|
+
|
25
|
+
@has_shape = false
|
26
|
+
@delta = [0,0]
|
27
|
+
|
28
|
+
evt_left_dclick {on_double_click}
|
29
|
+
evt_left_down {|event| on_left_down(event)}
|
30
|
+
evt_left_up {|event| on_left_up(event)}
|
31
|
+
evt_motion {|event| on_mouse_move(event)}
|
32
|
+
evt_right_up {on_exit}
|
33
|
+
evt_paint {on_paint}
|
34
|
+
|
35
|
+
shape = File.join( File.dirname(__FILE__), 'icons', 'ruby.png' )
|
36
|
+
@bmp = Bitmap.new( Image.new(shape) )
|
37
|
+
set_client_size(@bmp.get_width, @bmp.get_height)
|
38
|
+
|
39
|
+
if Wx::PLATFORM == 'WXGTK'
|
40
|
+
# wxGTK requires that the window be created before you can
|
41
|
+
# set its shape, so delay the call to SetWindowShape until
|
42
|
+
# this event.
|
43
|
+
evt_window_create { set_window_shape }
|
44
|
+
else
|
45
|
+
# On wxMSW and wxMac the window has already been created, so go for it.
|
46
|
+
set_window_shape
|
47
|
+
end
|
48
|
+
|
49
|
+
paint { | dc | dc.draw_bitmap(@bmp, 0, 0, true) }
|
50
|
+
end
|
51
|
+
|
52
|
+
def set_window_shape
|
53
|
+
r = Region.new(@bmp)
|
54
|
+
@has_shape = set_shape(r)
|
55
|
+
end
|
56
|
+
|
57
|
+
def on_double_click
|
58
|
+
if @has_shape
|
59
|
+
set_shape(Region.new)
|
60
|
+
@has_shape = false
|
61
|
+
else
|
62
|
+
set_window_shape
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def on_paint
|
67
|
+
paint { | dc | dc.draw_bitmap(@bmp, 0, 0, true) }
|
68
|
+
end
|
69
|
+
|
70
|
+
def on_exit
|
71
|
+
close(true)
|
72
|
+
end
|
73
|
+
|
74
|
+
def on_left_down(event)
|
75
|
+
capture_mouse
|
76
|
+
point = client_to_screen(event.get_position)
|
77
|
+
origin = get_position
|
78
|
+
dx = point.x - origin.x
|
79
|
+
dy = point.y - origin.y
|
80
|
+
@delta = [dx, dy]
|
81
|
+
end
|
82
|
+
|
83
|
+
def on_left_up(event)
|
84
|
+
if has_capture
|
85
|
+
release_mouse
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def on_mouse_move(event)
|
90
|
+
if event.dragging and event.left_is_down
|
91
|
+
point = client_to_screen(event.get_position)
|
92
|
+
move(point.x - @delta[0], point.y - @delta[1])
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
class TestPanel < Wx::Panel
|
98
|
+
def initialize(parent, log)
|
99
|
+
super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NO_FULL_REPAINT_ON_RESIZE)
|
100
|
+
@log = log
|
101
|
+
|
102
|
+
b = Button.new(self, -1, 'Show the ShapedWindow Sample', Wx::Point.new(50,50))
|
103
|
+
evt_button(b.get_id) { on_button }
|
104
|
+
end
|
105
|
+
|
106
|
+
def on_button
|
107
|
+
win = MyFrame.new(self, @log)
|
108
|
+
win.set_size(Wx::Size.new(200, 200))
|
109
|
+
win.center_on_parent(Wx::BOTH)
|
110
|
+
win.show(true)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
module Demo
|
115
|
+
def Demo.run(frame, nb, log)
|
116
|
+
TestPanel.new(nb, log)
|
117
|
+
end
|
118
|
+
|
119
|
+
def Demo.overview
|
120
|
+
<<EOS
|
121
|
+
Top level windows now have a SetShape method that lets you set a
|
122
|
+
non-rectangular shape for the window using a wxRegion. All pixels
|
123
|
+
outside of the region will not be drawn and the window will not be
|
124
|
+
sensitive to the mouse in those areas either.
|
125
|
+
EOS
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
if __FILE__ == $0
|
132
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
133
|
+
load run_solo_lib
|
134
|
+
run File.basename($0)
|
135
|
+
end
|