wxruby-ruby19 1.9.8-x86-darwin-9 → 1.9.10-x86-darwin-9
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.rb +2 -2
- data/lib/wx/accessors.rb +7 -1
- data/lib/wx/classes/app.rb +10 -4
- data/lib/wx/classes/bitmap.rb +29 -1
- data/lib/wx/classes/clipboard.rb +19 -3
- data/lib/wx/classes/colour.rb +6 -4
- 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/evthandler.rb +79 -4
- data/lib/wx/classes/genericdirctrl.rb +36 -0
- data/lib/wx/classes/grid.rb +8 -0
- data/lib/wx/classes/hboxsizer.rb +6 -0
- data/lib/wx/classes/icon.rb +12 -1
- data/lib/wx/classes/image.rb +13 -1
- data/lib/wx/classes/listctrl.rb +12 -0
- data/lib/wx/classes/point.rb +8 -0
- data/lib/wx/classes/rect.rb +10 -1
- data/lib/wx/classes/richtextctrl.rb +63 -0
- data/lib/wx/classes/size.rb +9 -0
- data/lib/wx/classes/sizer.rb +18 -3
- data/lib/wx/classes/standardpaths.rb +9 -0
- data/lib/wx/classes/texturlevent.rb +14 -2
- data/lib/wx/classes/toolbar.rb +4 -6
- data/lib/wx/classes/vboxsizer.rb +6 -0
- data/lib/wx/classes/window.rb +7 -0
- data/lib/wx/classes/xmlresource.rb +17 -0
- data/lib/wx/helpers.rb +16 -1
- data/lib/wx/keyword_ctors.rb +3 -2
- data/lib/wx/keyword_defs.rb +56 -5
- data/lib/wx/version.rb +1 -1
- data/lib/wxruby2.bundle +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 +17 -3
@@ -0,0 +1,97 @@
|
|
1
|
+
# wxRuby2 Sample Code. Copyright (c) 2007-???? Mario J. Steele
|
2
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
3
|
+
|
4
|
+
if /darwin/ =~ RUBY_PLATFORM
|
5
|
+
$LOCALHOST_NAME = "127.0.0.1"
|
6
|
+
else
|
7
|
+
$LOCALHOST_NAME = "localhost"
|
8
|
+
end
|
9
|
+
|
10
|
+
class SocketGUI < Wx::Frame
|
11
|
+
@@constants = []
|
12
|
+
|
13
|
+
def initialize(*args)
|
14
|
+
super
|
15
|
+
icon_file = File.join( File.dirname(__FILE__), 'res', 'message-new.png')
|
16
|
+
self.icon = Wx::Icon.new(icon_file,Wx::BITMAP_TYPE_PNG)
|
17
|
+
|
18
|
+
@il = Wx::ImageList.new(16,16)
|
19
|
+
# User icon courtesy of http://www.famfamfam.com/lab/icons/silk/
|
20
|
+
icon_file = File.join( File.dirname(__FILE__), 'res', 'user.png')
|
21
|
+
@il.add( Wx::Bitmap.new(icon_file, Wx::BITMAP_TYPE_PNG) )
|
22
|
+
hbox = Wx::BoxSizer.new(Wx::HORIZONTAL)
|
23
|
+
vbox = Wx::BoxSizer.new(Wx::VERTICAL)
|
24
|
+
|
25
|
+
# For display of Text Events
|
26
|
+
@output = Wx::TextCtrl.new( self, :style => Wx::TE_RICH2|
|
27
|
+
Wx::TE_READONLY|Wx::SUNKEN_BORDER|
|
28
|
+
Wx::TE_MULTILINE|Wx::TE_AUTO_URL)
|
29
|
+
# List of Users
|
30
|
+
@users = Wx::ListCtrl.new( self, :style => Wx::LC_REPORT|
|
31
|
+
Wx::LC_NO_HEADER|Wx::LC_SINGLE_SEL)
|
32
|
+
@users.set_image_list(@il,Wx::IMAGE_LIST_SMALL)
|
33
|
+
@users.insert_column(0,"Users")
|
34
|
+
# For Input from the User
|
35
|
+
@input = Wx::TextCtrl.new(self, :style => Wx::TE_PROCESS_ENTER)
|
36
|
+
vbox.add(@output,2,Wx::EXPAND)
|
37
|
+
vbox.add(@input,0,Wx::GROW)
|
38
|
+
hbox.add(vbox,2,Wx::EXPAND)
|
39
|
+
hbox.add(@users,0,Wx::GROW)
|
40
|
+
self.sizer = hbox
|
41
|
+
@@constants.each_with_index do |const,i|
|
42
|
+
self.class.const_set(const,1001+i)
|
43
|
+
end
|
44
|
+
create_menus()
|
45
|
+
create_status_bar()
|
46
|
+
on_init()
|
47
|
+
@font = Wx::Font.new(10,Wx::FONTFAMILY_TELETYPE,Wx::NORMAL,Wx::NORMAL)
|
48
|
+
@progStyle = Wx::TextAttr.new(Wx::BLUE, Wx::YELLOW, @font)
|
49
|
+
@defStyle = Wx::TextAttr.new(Wx::BLACK, Wx::WHITE, @font)
|
50
|
+
@errStyle = Wx::TextAttr.new(Wx::RED, Wx::GREEN, @font)
|
51
|
+
self.set_size([640,480])
|
52
|
+
end
|
53
|
+
|
54
|
+
def add_user(user)
|
55
|
+
#@users.append_item(@root,user,0)
|
56
|
+
@users.insert_item(0,user,0)
|
57
|
+
end
|
58
|
+
|
59
|
+
def clear_users()
|
60
|
+
@users.delete_all_items
|
61
|
+
end
|
62
|
+
|
63
|
+
def create_menus()
|
64
|
+
# Holder Function
|
65
|
+
end
|
66
|
+
|
67
|
+
def on_init()
|
68
|
+
# Holder Function
|
69
|
+
end
|
70
|
+
|
71
|
+
def append_text(msg)
|
72
|
+
@output.freeze
|
73
|
+
c, sl = @output.position_to_xy(@output.get_last_position)
|
74
|
+
@output.append_text(msg)
|
75
|
+
@output.thaw
|
76
|
+
c, el = @output.position_to_xy(@output.get_last_position)
|
77
|
+
@output.scroll_lines((el-sl)+2) unless sl == nil || el == nil
|
78
|
+
end
|
79
|
+
|
80
|
+
def append_prog_msg(msg)
|
81
|
+
@output.set_default_style(@progStyle)
|
82
|
+
msg += "\n" if msg[-1].chr != "\n"
|
83
|
+
append_text(msg)
|
84
|
+
end
|
85
|
+
|
86
|
+
def append_msg(msg)
|
87
|
+
@output.set_default_style(@defStyle)
|
88
|
+
msg += "\n" if msg[-1].chr != "\n"
|
89
|
+
append_text(msg)
|
90
|
+
end
|
91
|
+
|
92
|
+
def append_error(msg)
|
93
|
+
@output.set_default_style(@errStyle)
|
94
|
+
msg += "\n" if msg[-1].chr != "\n"
|
95
|
+
append_text(msg)
|
96
|
+
end
|
97
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,44 @@
|
|
1
|
+
/* XPM */
|
2
|
+
static char *mondrian_xpm[] = {
|
3
|
+
/* columns rows colors chars-per-pixel */
|
4
|
+
"32 32 6 1",
|
5
|
+
" c Black",
|
6
|
+
". c Blue",
|
7
|
+
"X c #00bf00",
|
8
|
+
"o c Red",
|
9
|
+
"O c Yellow",
|
10
|
+
"+ c Gray100",
|
11
|
+
/* pixels */
|
12
|
+
" ",
|
13
|
+
" oooooo +++++++++++++++++++++++ ",
|
14
|
+
" oooooo +++++++++++++++++++++++ ",
|
15
|
+
" oooooo +++++++++++++++++++++++ ",
|
16
|
+
" oooooo +++++++++++++++++++++++ ",
|
17
|
+
" oooooo +++++++++++++++++++++++ ",
|
18
|
+
" oooooo +++++++++++++++++++++++ ",
|
19
|
+
" oooooo +++++++++++++++++++++++ ",
|
20
|
+
" ",
|
21
|
+
" ++++++ ++++++++++++++++++ .... ",
|
22
|
+
" ++++++ ++++++++++++++++++ .... ",
|
23
|
+
" ++++++ ++++++++++++++++++ .... ",
|
24
|
+
" ++++++ ++++++++++++++++++ .... ",
|
25
|
+
" ++++++ ++++++++++++++++++ .... ",
|
26
|
+
" ++++++ ++++++++++++++++++ ",
|
27
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
28
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
29
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
30
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
31
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
32
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
33
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
34
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
35
|
+
" ++++++ ++++++++++++++++++ ++++ ",
|
36
|
+
" ++++++ ++++ ",
|
37
|
+
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
|
38
|
+
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
|
39
|
+
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
|
40
|
+
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
|
41
|
+
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
|
42
|
+
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
|
43
|
+
" "
|
44
|
+
};
|
@@ -0,0 +1,98 @@
|
|
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
|
+
|
5
|
+
# RichTextCtrl sample by Chauk-Mean P
|
6
|
+
#
|
7
|
+
# RichTextCtrl is a sophisticated styled text editing component. This
|
8
|
+
# short sample shows the basics, but RichTextCtrl supports numerous
|
9
|
+
# other text characteristics (font, size, colour, super/subscript), as
|
10
|
+
# well as paragraph alignment and spacing, and bullets. It permits named
|
11
|
+
# text styles to be created and organised in stylesheets. It can output
|
12
|
+
# to HTML and XML, and facilities are provided for printing.
|
13
|
+
#
|
14
|
+
# Icons are taken from the Tango Icon Theme.
|
15
|
+
|
16
|
+
begin
|
17
|
+
require 'rubygems'
|
18
|
+
rescue LoadError
|
19
|
+
end
|
20
|
+
require 'wx'
|
21
|
+
|
22
|
+
class RichTextFrame < Wx::Frame
|
23
|
+
|
24
|
+
def initialize
|
25
|
+
super( nil, :title => "RichTextCtrl sample", :size => [800, 600] )
|
26
|
+
|
27
|
+
toolbar = create_tool_bar( Wx::TB_HORIZONTAL|Wx::NO_BORDER|
|
28
|
+
Wx::TB_FLAT|Wx::TB_TEXT )
|
29
|
+
toolbar.tool_bitmap_size = [ 32, 32 ]
|
30
|
+
|
31
|
+
bold_bmp = bmp_from_png("format-text-bold.png")
|
32
|
+
toolbar.add_check_tool( Wx::ID_BOLD, "Bold",
|
33
|
+
bold_bmp, bold_bmp, "Apply bold")
|
34
|
+
|
35
|
+
italic_bmp = bmp_from_png("format-text-italic.png")
|
36
|
+
toolbar.add_check_tool( Wx::ID_ITALIC, "Italic",
|
37
|
+
italic_bmp, italic_bmp, "Apply italic")
|
38
|
+
|
39
|
+
underline_bmp = bmp_from_png("format-text-underline.png")
|
40
|
+
toolbar.add_check_tool( Wx::ID_UNDERLINE, "Underline",
|
41
|
+
underline_bmp, underline_bmp, "Apply underline")
|
42
|
+
toolbar.realize
|
43
|
+
|
44
|
+
editor = Wx::RichTextCtrl.new(self, :style => Wx::WANTS_CHARS)
|
45
|
+
editor.begin_font_size(18)
|
46
|
+
|
47
|
+
editor.begin_bold
|
48
|
+
editor.write_text "Simple RichTextCtrl sample"
|
49
|
+
editor.end_bold
|
50
|
+
editor.newline
|
51
|
+
editor.begin_italic
|
52
|
+
editor.write_text "Use the formatting buttons then type some text or "
|
53
|
+
editor.write_text "select some text and use the buttons to apply the formatting.\n"
|
54
|
+
editor.end_italic
|
55
|
+
|
56
|
+
# Apply / unapply bold to selection
|
57
|
+
evt_tool(Wx::ID_BOLD) do
|
58
|
+
editor.apply_bold_to_selection
|
59
|
+
end
|
60
|
+
|
61
|
+
# Keep the pressed / unpressed state of the button in sync with the
|
62
|
+
# current selection in the text ctrl
|
63
|
+
evt_update_ui(Wx::ID_BOLD) do |evt|
|
64
|
+
evt.check(editor.selection_bold?)
|
65
|
+
end
|
66
|
+
|
67
|
+
evt_tool(Wx::ID_ITALIC) do
|
68
|
+
editor.apply_italic_to_selection
|
69
|
+
end
|
70
|
+
|
71
|
+
evt_update_ui(Wx::ID_ITALIC) do |evt|
|
72
|
+
evt.check(editor.selection_italics?)
|
73
|
+
end
|
74
|
+
|
75
|
+
evt_tool(Wx::ID_UNDERLINE) do
|
76
|
+
editor.apply_underline_to_selection
|
77
|
+
end
|
78
|
+
|
79
|
+
evt_update_ui(Wx::ID_UNDERLINE) do |evt|
|
80
|
+
evt.check(editor.selection_underlined?)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# Return a new bitmap corresponding to the specified PNG filename
|
85
|
+
def bmp_from_png(filename)
|
86
|
+
img_file = File.join( File.dirname(__FILE__), filename)
|
87
|
+
Wx::Bitmap.new(img_file, Wx::BITMAP_TYPE_PNG)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
# The Application
|
93
|
+
Wx::App.run do
|
94
|
+
self.app_name = 'RichTextCtrl sample'
|
95
|
+
frame = RichTextFrame.new
|
96
|
+
frame.centre
|
97
|
+
frame.show
|
98
|
+
end
|
@@ -0,0 +1,169 @@
|
|
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
|
+
include Wx
|
11
|
+
|
12
|
+
|
13
|
+
Minimal_Quit = 1
|
14
|
+
Minimal_About = ID_ABOUT
|
15
|
+
Toggle_Whitespace = 5000
|
16
|
+
Toggle_EOL = 5001
|
17
|
+
|
18
|
+
class MyFrame < Frame
|
19
|
+
def initialize(title,pos,size,style=DEFAULT_FRAME_STYLE)
|
20
|
+
super(nil,-1,title,pos,size,style)
|
21
|
+
|
22
|
+
menuFile = Menu.new()
|
23
|
+
menuFile.append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program")
|
24
|
+
|
25
|
+
menuView = Menu.new()
|
26
|
+
menuView.append(Toggle_Whitespace, "Show &Whitespace\tF6", "Show Whitespace", ITEM_CHECK)
|
27
|
+
menuView.append(Toggle_EOL, "Show &End of Line\tF7", "Show End of Line characters", ITEM_CHECK)
|
28
|
+
|
29
|
+
menuHelp = Menu.new()
|
30
|
+
menuHelp.append(Minimal_About, "&About...\tF1", "Show about dialog")
|
31
|
+
|
32
|
+
menuBar = MenuBar.new()
|
33
|
+
menuBar.append(menuFile, "&File")
|
34
|
+
menuBar.append(menuView, "&View")
|
35
|
+
menuBar.append(menuHelp, "&Help")
|
36
|
+
set_menu_bar(menuBar)
|
37
|
+
|
38
|
+
tb = create_tool_bar(Wx::TB_HORIZONTAL | Wx::NO_BORDER | Wx::TB_FLAT | Wx::TB_TEXT)
|
39
|
+
|
40
|
+
create_status_bar(2)
|
41
|
+
set_status_text("Welcome to wxRuby!")
|
42
|
+
|
43
|
+
@sci = Wx::StyledTextCtrl.new(self)
|
44
|
+
|
45
|
+
font = Font.new(10, TELETYPE, NORMAL, NORMAL)
|
46
|
+
@sci.style_set_font(STC_STYLE_DEFAULT, font);
|
47
|
+
|
48
|
+
@ws_visible = false
|
49
|
+
@eol_visible = false
|
50
|
+
@sci.set_edge_mode(STC_EDGE_LINE)
|
51
|
+
|
52
|
+
line_num_margin = @sci.text_width(STC_STYLE_LINENUMBER, "_99999")
|
53
|
+
@sci.set_margin_width(0, line_num_margin)
|
54
|
+
|
55
|
+
@sci.style_set_foreground(STC_STYLE_DEFAULT, BLACK);
|
56
|
+
@sci.style_set_background(STC_STYLE_DEFAULT, WHITE);
|
57
|
+
@sci.style_set_foreground(STC_STYLE_LINENUMBER, LIGHT_GREY);
|
58
|
+
@sci.style_set_background(STC_STYLE_LINENUMBER, WHITE);
|
59
|
+
@sci.style_set_foreground(STC_STYLE_INDENTGUIDE, LIGHT_GREY);
|
60
|
+
|
61
|
+
@sci.set_tab_width(4)
|
62
|
+
@sci.set_use_tabs(false)
|
63
|
+
@sci.set_tab_indents(true)
|
64
|
+
@sci.set_back_space_un_indents(true)
|
65
|
+
@sci.set_indent(4)
|
66
|
+
@sci.set_edge_column(80)
|
67
|
+
|
68
|
+
@sci.set_lexer(STC_LEX_RUBY)
|
69
|
+
@sci.style_clear_all
|
70
|
+
@sci.style_set_foreground(2, RED)
|
71
|
+
@sci.style_set_foreground(3, GREEN)
|
72
|
+
@sci.style_set_foreground(5, BLUE)
|
73
|
+
@sci.style_set_foreground(6, BLUE)
|
74
|
+
@sci.style_set_foreground(7, BLUE)
|
75
|
+
@sci.set_key_words(0, "begin break elsif module retry unless end case next return until class ensure nil self when def false not super while alias defined? for or then yield and do if redo true else in rescue undef")
|
76
|
+
|
77
|
+
@sci.set_property("fold","1")
|
78
|
+
@sci.set_property("fold.compact", "0")
|
79
|
+
@sci.set_property("fold.comment", "1")
|
80
|
+
@sci.set_property("fold.preprocessor", "1")
|
81
|
+
|
82
|
+
@sci.set_margin_width(1, 0)
|
83
|
+
@sci.set_margin_type(1, STC_MARGIN_SYMBOL)
|
84
|
+
@sci.set_margin_mask(1, STC_MASK_FOLDERS)
|
85
|
+
@sci.set_margin_width(1, 20)
|
86
|
+
|
87
|
+
@sci.marker_define(STC_MARKNUM_FOLDER, STC_MARK_PLUS)
|
88
|
+
@sci.marker_define(STC_MARKNUM_FOLDEROPEN, STC_MARK_MINUS)
|
89
|
+
@sci.marker_define(STC_MARKNUM_FOLDEREND, STC_MARK_EMPTY)
|
90
|
+
@sci.marker_define(STC_MARKNUM_FOLDERMIDTAIL, STC_MARK_EMPTY)
|
91
|
+
@sci.marker_define(STC_MARKNUM_FOLDEROPENMID, STC_MARK_EMPTY)
|
92
|
+
@sci.marker_define(STC_MARKNUM_FOLDERSUB, STC_MARK_EMPTY)
|
93
|
+
@sci.marker_define(STC_MARKNUM_FOLDERTAIL, STC_MARK_EMPTY)
|
94
|
+
@sci.set_fold_flags(16)
|
95
|
+
|
96
|
+
@sci.set_margin_sensitive(1,1)
|
97
|
+
|
98
|
+
evt_menu(Minimal_Quit) {onQuit}
|
99
|
+
evt_menu(Minimal_About) {onAbout}
|
100
|
+
evt_menu(Toggle_Whitespace) {onWhitespace}
|
101
|
+
evt_menu(Toggle_EOL) {onEOL}
|
102
|
+
evt_stc_charadded(@sci.get_id) {|evt| onCharadded(evt)}
|
103
|
+
evt_stc_marginclick(@sci.get_id) {|evt| onMarginClick(evt)}
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def onQuit
|
108
|
+
close(TRUE)
|
109
|
+
end
|
110
|
+
|
111
|
+
def onAbout
|
112
|
+
GC.start
|
113
|
+
msg = sprintf("This is the About dialog of the scintilla sample.\n" \
|
114
|
+
"Welcome to %s", VERSION_STRING)
|
115
|
+
|
116
|
+
message_box(msg, "About Scintilla", OK | ICON_INFORMATION, self)
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
def onWhitespace
|
121
|
+
@ws_visible = !@ws_visible
|
122
|
+
@sci.set_view_white_space(@ws_visible ? STC_WS_VISIBLEALWAYS : STC_WS_INVISIBLE)
|
123
|
+
end
|
124
|
+
|
125
|
+
def onEOL
|
126
|
+
@eol_visible = !@eol_visible
|
127
|
+
@sci.set_view_eol(@eol_visible)
|
128
|
+
end
|
129
|
+
|
130
|
+
def onCharadded(evt)
|
131
|
+
chr = evt.get_key
|
132
|
+
curr_line = @sci.get_current_line
|
133
|
+
|
134
|
+
if(chr == 13)
|
135
|
+
if curr_line > 0
|
136
|
+
line_ind = @sci.get_line_indentation(curr_line - 1)
|
137
|
+
if line_ind > 0
|
138
|
+
@sci.set_line_indentation(curr_line, line_ind)
|
139
|
+
@sci.goto_pos(@sci.position_from_line(curr_line)+line_ind)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def onMarginClick(evt)
|
146
|
+
line_num = @sci.line_from_position(evt.get_position)
|
147
|
+
margin = evt.get_margin
|
148
|
+
|
149
|
+
if(margin == 1)
|
150
|
+
@sci.toggle_fold(line_num)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
156
|
+
class RbApp < App
|
157
|
+
def on_init
|
158
|
+
frame = MyFrame.new("wxRuby Scintilla App",Point.new(50, 50), Size.new(450, 340))
|
159
|
+
|
160
|
+
frame.show(TRUE)
|
161
|
+
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
a = RbApp.new
|
166
|
+
a.main_loop()
|
167
|
+
puts("back from main_loop...")
|
168
|
+
GC.start
|
169
|
+
puts("survived gc")
|
@@ -0,0 +1,111 @@
|
|
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
|
+
class InformativeTextCtrl < Wx::TextCtrl
|
11
|
+
# These text controls are multiline, and may have rich (coloured,
|
12
|
+
# styled) text in them
|
13
|
+
STYLE = Wx::TE_MULTILINE|Wx::TE_RICH|Wx::TE_RICH2
|
14
|
+
def initialize(parent, text = '')
|
15
|
+
super(parent, :value => text, :style => STYLE)
|
16
|
+
end
|
17
|
+
|
18
|
+
# more ruby-ish
|
19
|
+
alias :<< :append_text
|
20
|
+
|
21
|
+
# run through a few useful methods of textctrl and report the results
|
22
|
+
# as a string
|
23
|
+
def report()
|
24
|
+
report = ''
|
25
|
+
report << 'Insertion Point: ' << get_insertion_point.to_s() << "\n"
|
26
|
+
report << 'First Line Text: ' << get_line_text(0) << "\n"
|
27
|
+
report << 'Final Position: ' << get_last_position().to_s() << "\n"
|
28
|
+
report << 'Selection: ' << get_selection().inspect() << "\n"
|
29
|
+
report << 'String Selection: ' << get_string_selection().inspect << "\n"
|
30
|
+
report << 'Position to X, Y: ' <<
|
31
|
+
position_to_xy( get_insertion_point ).inspect
|
32
|
+
return report
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# A read-only text ctrl useful for displaying output
|
37
|
+
class LogTextCtrl < Wx::TextCtrl
|
38
|
+
STYLE = Wx::TE_READONLY|Wx::TE_MULTILINE
|
39
|
+
def initialize(parent)
|
40
|
+
super(parent, :style => STYLE)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class TextCtrlFrame < Wx::Frame
|
45
|
+
def initialize(*args)
|
46
|
+
super(nil, *args)
|
47
|
+
|
48
|
+
panel = Wx::Panel.new(self)
|
49
|
+
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
50
|
+
|
51
|
+
@textctrl = InformativeTextCtrl.new(panel)
|
52
|
+
populate_textctrl()
|
53
|
+
sizer.add(@textctrl, 2, Wx::GROW|Wx::ALL, 2)
|
54
|
+
|
55
|
+
button = Wx::Button.new(panel, :label => 'Get Info')
|
56
|
+
sizer.add(button, 0, Wx::ADJUST_MINSIZE|Wx::ALL, 2 )
|
57
|
+
evt_button button, :on_click
|
58
|
+
|
59
|
+
@log = LogTextCtrl.new(panel)
|
60
|
+
sizer.add(@log, 1, Wx::GROW|Wx::ALL, 2)
|
61
|
+
panel.sizer = sizer
|
62
|
+
end
|
63
|
+
|
64
|
+
def populate_textctrl()
|
65
|
+
@textctrl << "This is some plain text\n"
|
66
|
+
@textctrl << "Text with green letters and yellow background\n"
|
67
|
+
@textctrl << "This is some more plain text"
|
68
|
+
# create a new rich text style
|
69
|
+
attr = Wx::TextAttr.new(Wx::GREEN, Wx::Colour.new(255, 255, 0) )
|
70
|
+
# apply the style from character 26 to character 76
|
71
|
+
@textctrl.set_style(24, 69, attr)
|
72
|
+
end
|
73
|
+
|
74
|
+
def construct_menus()
|
75
|
+
menu_bar = Wx::MenuBar.new()
|
76
|
+
|
77
|
+
menu_file = Wx::Menu.new()
|
78
|
+
menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
|
79
|
+
menu_bar.append(menu_file, "&File")
|
80
|
+
evt_menu Wx::ID_EXIT, :on_quit
|
81
|
+
|
82
|
+
menu_help = Wx::Menu.new()
|
83
|
+
menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
84
|
+
evt_menu Wx::ID_ABOUT, :on_about
|
85
|
+
menu_bar.append(menu_help, "&Help")
|
86
|
+
|
87
|
+
self.menu_bar = menu_bar
|
88
|
+
end
|
89
|
+
|
90
|
+
def on_click
|
91
|
+
@log.value = @textctrl.report
|
92
|
+
end
|
93
|
+
|
94
|
+
def on_quit
|
95
|
+
close
|
96
|
+
end
|
97
|
+
|
98
|
+
def on_about
|
99
|
+
msg = sprintf("This is the About dialog of the textctrl sample.\n" \
|
100
|
+
"Welcome to %s", Wx::VERSION_STRING)
|
101
|
+
message_box(msg, "About Minimal", Wx::OK|Wx::ICON_INFORMATION, self)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
Wx::App.run do
|
106
|
+
frame = TextCtrlFrame.new( :title => "TextCtrl demonstration",
|
107
|
+
:pos => [ 50, 50 ],
|
108
|
+
:size => [ 450, 340 ] )
|
109
|
+
frame.show
|
110
|
+
end
|
111
|
+
|