fxruby 1.6.5 → 1.6.6
Sign up to get free protection for your applications and to get access to all the features.
- data/doc/apes02.html +2 -2
- data/doc/apes03.html +1 -1
- data/doc/book.html +1 -1
- data/doc/changes.html +55 -21
- data/doc/differences.html +9 -9
- data/doc/implementation.html +1 -1
- data/doc/library.html +5 -5
- data/doc/opengl.html +5 -5
- data/doc/pt02.html +1 -1
- data/doc/scintilla.html +4 -4
- data/doc/subversion.html +1 -1
- data/examples/accell.rb +36 -0
- data/examples/babelfish.rb +6 -9
- data/examples/bounce.rb +5 -4
- data/examples/button.rb +19 -21
- data/examples/datatarget.rb +9 -8
- data/examples/dctest.rb +7 -13
- data/examples/dialog.rb +12 -16
- data/examples/dilbert.rb +4 -4
- data/examples/dirlist.rb +6 -5
- data/examples/dragdrop.rb +30 -33
- data/examples/dragsource.rb +22 -22
- data/examples/dropsite.rb +16 -17
- data/examples/foursplit.rb +8 -13
- data/examples/gltest.rb +21 -24
- data/examples/glviewer.rb +56 -58
- data/examples/header.rb +25 -25
- data/examples/iconlist.rb +12 -8
- data/examples/image.rb +36 -34
- data/examples/imageviewer.rb +44 -43
- data/examples/inputs.rb +15 -15
- data/examples/mditest.rb +6 -5
- data/examples/pig.rb +1 -0
- data/examples/raabrowser.rb +31 -40
- data/examples/ratio.rb +27 -16
- data/examples/rulerview.rb +4 -3
- data/examples/scribble.rb +14 -17
- data/examples/shutter.rb +10 -9
- data/examples/splitter.rb +7 -6
- data/examples/tabbook.rb +59 -17
- data/examples/table.rb +12 -16
- data/ext/fox16/FXRuby.cpp +2 -2
- data/lib/fox16/glshapes.rb +6 -6
- data/lib/fox16/iterators.rb +13 -8
- data/lib/fox16/kwargs.rb +604 -380
- data/lib/fox16/version.rb +1 -1
- data/tests/TC_FXTreeList.rb +13 -13
- data/tests/TC_FXTreeListBox.rb +3 -3
- metadata +4 -3
data/examples/babelfish.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'fox16'
|
4
|
+
require 'fox16/kwargs'
|
4
5
|
require 'soap/rpc/driver'
|
5
6
|
|
6
7
|
include Fox
|
@@ -41,14 +42,12 @@ class Babelfish < FXMainWindow
|
|
41
42
|
controlsFrame = FXHorizontalFrame.new(self,
|
42
43
|
LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X)
|
43
44
|
FXLabel.new(controlsFrame, "Translate from:")
|
44
|
-
@transModeCombo = FXComboBox.new(controlsFrame, 15,
|
45
|
-
COMBOBOX_STATIC|FRAME_SUNKEN|FRAME_THICK)
|
45
|
+
@transModeCombo = FXComboBox.new(controlsFrame, 15, :opts => COMBOBOX_STATIC|FRAME_SUNKEN|FRAME_THICK)
|
46
46
|
@transModeCombo.numVisible = 6
|
47
47
|
TRANSLATIONS.keys.each do |key|
|
48
48
|
@transModeCombo.appendItem(key, TRANSLATIONS[key])
|
49
49
|
end
|
50
|
-
btn = FXButton.new(controlsFrame, "Translate",
|
51
|
-
BUTTON_NORMAL|LAYOUT_SIDE_RIGHT)
|
50
|
+
btn = FXButton.new(controlsFrame, "Translate", :opts => BUTTON_NORMAL|LAYOUT_SIDE_RIGHT)
|
52
51
|
btn.connect(SEL_COMMAND) do
|
53
52
|
transMode = @transModeCombo.getItemData(@transModeCombo.currentItem)
|
54
53
|
getApp().beginWaitCursor() do
|
@@ -61,19 +60,17 @@ class Babelfish < FXMainWindow
|
|
61
60
|
|
62
61
|
# Source text area in a sunken frame
|
63
62
|
topFrame = FXVerticalFrame.new(mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
64
|
-
FXLabel.new(topFrame, "Source Text:",
|
63
|
+
FXLabel.new(topFrame, "Source Text:", :opts => LAYOUT_FILL_X)
|
65
64
|
sunkenFrame = FXHorizontalFrame.new(topFrame,
|
66
65
|
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
67
|
-
@sourceText = FXText.new(sunkenFrame,
|
68
|
-
LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
66
|
+
@sourceText = FXText.new(sunkenFrame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
69
67
|
|
70
68
|
# Translated text output
|
71
69
|
bottomFrame = FXVerticalFrame.new(mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
72
70
|
FXLabel.new(bottomFrame, "Translated text:", nil, LAYOUT_FILL_X)
|
73
71
|
sunkenFrame = FXHorizontalFrame.new(bottomFrame,
|
74
72
|
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
75
|
-
@translatedText = FXText.new(sunkenFrame,
|
76
|
-
TEXT_READONLY|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
73
|
+
@translatedText = FXText.new(sunkenFrame, :opts => TEXT_READONLY|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
77
74
|
end
|
78
75
|
|
79
76
|
def create
|
data/examples/bounce.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'fox16'
|
2
|
+
require 'fox16/kwargs'
|
2
3
|
|
3
4
|
include Fox
|
4
5
|
|
@@ -71,10 +72,10 @@ class BounceWindow < FXMainWindow
|
|
71
72
|
|
72
73
|
def initialize(app)
|
73
74
|
# Initialize base class first
|
74
|
-
super(app, "Bounce",
|
75
|
+
super(app, "Bounce", :opts => DECOR_ALL, :width => 400, :height => 300)
|
75
76
|
|
76
77
|
# Set up the canvas
|
77
|
-
@canvas = FXCanvas.new(self,
|
78
|
+
@canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
78
79
|
|
79
80
|
# Set up the back buffer
|
80
81
|
@backBuffer = FXImage.new(app, nil, IMAGE_KEEP)
|
@@ -150,10 +151,10 @@ class BounceWindow < FXMainWindow
|
|
150
151
|
end
|
151
152
|
|
152
153
|
if __FILE__ == $0
|
153
|
-
FXApp.new("Bounce", "FXRuby")
|
154
|
+
FXApp.new("Bounce", "FXRuby") do |theApp|
|
154
155
|
BounceWindow.new(theApp)
|
155
156
|
theApp.create
|
156
157
|
theApp.run
|
157
|
-
|
158
|
+
end
|
158
159
|
end
|
159
160
|
|
data/examples/button.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'fox16'
|
4
|
+
require 'fox16/kwargs'
|
4
5
|
|
5
6
|
include Fox
|
6
7
|
|
@@ -8,7 +9,7 @@ class ButtonWindow < FXMainWindow
|
|
8
9
|
|
9
10
|
def initialize(app)
|
10
11
|
# Invoke base class initialize first
|
11
|
-
super(app, "Button Test",
|
12
|
+
super(app, "Button Test", :opts => DECOR_ALL, :x => 100, :y => 100)
|
12
13
|
|
13
14
|
# Create a tooltip
|
14
15
|
FXToolTip.new(self.getApp())
|
@@ -28,7 +29,7 @@ class ButtonWindow < FXMainWindow
|
|
28
29
|
# Contents
|
29
30
|
contents = FXHorizontalFrame.new(self,
|
30
31
|
LAYOUT_SIDE_LEFT|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH,
|
31
|
-
|
32
|
+
:padding => 20)
|
32
33
|
|
33
34
|
# Construct icon from a PNG file on disk
|
34
35
|
bigpenguin = loadIcon("bigpenguin.png")
|
@@ -40,12 +41,11 @@ class ButtonWindow < FXMainWindow
|
|
40
41
|
"It also has a tooltip\n(which, by the way, can be multi-line also).\t" +
|
41
42
|
"Here's a helpful message for the status line.",
|
42
43
|
bigpenguin,
|
43
|
-
|
44
|
-
|
45
|
-
0, 0, 300, 200)
|
44
|
+
:opts => FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,
|
45
|
+
:width => 300, :height => 200)
|
46
46
|
|
47
47
|
checkButton = FXCheckButton.new(controls, "Toolbar Style\tCool \"poppy\" style buttons")
|
48
|
-
checkButton.connect(SEL_COMMAND)
|
48
|
+
checkButton.connect(SEL_COMMAND) do |sender, sel, checked|
|
49
49
|
if checked
|
50
50
|
@button.buttonStyle |= BUTTON_TOOLBAR
|
51
51
|
@button.frameStyle = FRAME_RAISED
|
@@ -53,12 +53,12 @@ class ButtonWindow < FXMainWindow
|
|
53
53
|
@button.buttonStyle &= ~BUTTON_TOOLBAR
|
54
54
|
@button.frameStyle = FRAME_RAISED|FRAME_THICK
|
55
55
|
end
|
56
|
-
|
56
|
+
end
|
57
57
|
|
58
58
|
group1 = FXGroupBox.new(controls, "Horizontal Placement",
|
59
59
|
GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
|
60
60
|
@group1_dt = FXDataTarget.new(2)
|
61
|
-
@group1_dt.connect(SEL_COMMAND)
|
61
|
+
@group1_dt.connect(SEL_COMMAND) do
|
62
62
|
case @group1_dt.value
|
63
63
|
when 0
|
64
64
|
@button.iconPosition = (@button.iconPosition|ICON_BEFORE_TEXT) & ~ICON_AFTER_TEXT
|
@@ -67,7 +67,7 @@ class ButtonWindow < FXMainWindow
|
|
67
67
|
when 2
|
68
68
|
@button.iconPosition = (@button.iconPosition & ~ICON_AFTER_TEXT) & ~ICON_BEFORE_TEXT
|
69
69
|
end
|
70
|
-
|
70
|
+
end
|
71
71
|
FXRadioButton.new(group1, "Before Text", @group1_dt, FXDataTarget::ID_OPTION)
|
72
72
|
FXRadioButton.new(group1, "After Text", @group1_dt, FXDataTarget::ID_OPTION + 1)
|
73
73
|
FXRadioButton.new(group1, "Centered", @group1_dt, FXDataTarget::ID_OPTION + 2)
|
@@ -75,7 +75,7 @@ class ButtonWindow < FXMainWindow
|
|
75
75
|
group2 = FXGroupBox.new(controls, "Vertical Placement",
|
76
76
|
GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
|
77
77
|
@group2_dt = FXDataTarget.new(2)
|
78
|
-
@group2_dt.connect(SEL_COMMAND)
|
78
|
+
@group2_dt.connect(SEL_COMMAND) do
|
79
79
|
case @group2_dt.value
|
80
80
|
when 0
|
81
81
|
@button.iconPosition = (@button.iconPosition|ICON_ABOVE_TEXT) & ~ICON_BELOW_TEXT
|
@@ -84,7 +84,7 @@ class ButtonWindow < FXMainWindow
|
|
84
84
|
when 2
|
85
85
|
@button.iconPosition = (@button.iconPosition & ~ICON_ABOVE_TEXT) & ~ICON_BELOW_TEXT
|
86
86
|
end
|
87
|
-
|
87
|
+
end
|
88
88
|
FXRadioButton.new(group2, "Above Text", @group2_dt, FXDataTarget::ID_OPTION)
|
89
89
|
FXRadioButton.new(group2, "Below Text", @group2_dt, FXDataTarget::ID_OPTION + 1)
|
90
90
|
FXRadioButton.new(group2, "Centered", @group2_dt, FXDataTarget::ID_OPTION + 2)
|
@@ -92,7 +92,7 @@ class ButtonWindow < FXMainWindow
|
|
92
92
|
group3 = FXGroupBox.new(controls, "Horizontal Justification",
|
93
93
|
GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
|
94
94
|
@group3_dt = FXDataTarget.new(0)
|
95
|
-
@group3_dt.connect(SEL_COMMAND)
|
95
|
+
@group3_dt.connect(SEL_COMMAND) do
|
96
96
|
case @group3_dt.value
|
97
97
|
when 0
|
98
98
|
@button.justify &= ~JUSTIFY_HZ_APART
|
@@ -103,7 +103,7 @@ class ButtonWindow < FXMainWindow
|
|
103
103
|
when 3
|
104
104
|
@button.justify |= JUSTIFY_HZ_APART
|
105
105
|
end
|
106
|
-
|
106
|
+
end
|
107
107
|
FXRadioButton.new(group3, "Center", @group3_dt, FXDataTarget::ID_OPTION)
|
108
108
|
FXRadioButton.new(group3, "Left", @group3_dt, FXDataTarget::ID_OPTION + 1)
|
109
109
|
FXRadioButton.new(group3, "Right", @group3_dt, FXDataTarget::ID_OPTION + 2)
|
@@ -112,7 +112,7 @@ class ButtonWindow < FXMainWindow
|
|
112
112
|
group4 = FXGroupBox.new(controls, "Vertical Justification",
|
113
113
|
GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
|
114
114
|
@group4_dt = FXDataTarget.new(0)
|
115
|
-
@group4_dt.connect(SEL_COMMAND)
|
115
|
+
@group4_dt.connect(SEL_COMMAND) do
|
116
116
|
case @group4_dt.value
|
117
117
|
when 0
|
118
118
|
@button.justify &= ~JUSTIFY_VT_APART
|
@@ -123,16 +123,14 @@ class ButtonWindow < FXMainWindow
|
|
123
123
|
when 3
|
124
124
|
@button.justify |= JUSTIFY_VT_APART
|
125
125
|
end
|
126
|
-
|
126
|
+
end
|
127
127
|
FXRadioButton.new(group4, "Center", @group4_dt, FXDataTarget::ID_OPTION)
|
128
128
|
FXRadioButton.new(group4, "Top", @group4_dt, FXDataTarget::ID_OPTION + 1)
|
129
129
|
FXRadioButton.new(group4, "Bottom", @group4_dt, FXDataTarget::ID_OPTION + 2)
|
130
130
|
FXRadioButton.new(group4, "Apart", @group4_dt, FXDataTarget::ID_OPTION + 3)
|
131
131
|
|
132
|
-
quitButton = FXButton.new(controls, "&Quit",
|
133
|
-
quitButton.connect(SEL_COMMAND) {
|
134
|
-
getApp().exit(0)
|
135
|
-
}
|
132
|
+
quitButton = FXButton.new(controls, "&Quit", :opts => FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X)
|
133
|
+
quitButton.connect(SEL_COMMAND) { getApp().exit(0) }
|
136
134
|
end
|
137
135
|
|
138
136
|
# Load the named icon from a file
|
@@ -140,9 +138,9 @@ class ButtonWindow < FXMainWindow
|
|
140
138
|
begin
|
141
139
|
filename = File.join("icons", filename)
|
142
140
|
icon = nil
|
143
|
-
File.open(filename, "rb")
|
141
|
+
File.open(filename, "rb") do |f|
|
144
142
|
icon = FXPNGIcon.new(getApp(), f.read)
|
145
|
-
|
143
|
+
end
|
146
144
|
icon
|
147
145
|
rescue
|
148
146
|
raise RuntimeError, "Couldn't load icon: #{filename}"
|
data/examples/datatarget.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'fox16'
|
4
4
|
require 'fox16/colors'
|
5
|
+
require 'fox16/kwargs'
|
5
6
|
|
6
7
|
include Fox
|
7
8
|
|
@@ -24,7 +25,7 @@ END
|
|
24
25
|
class DataTargetWindow < FXMainWindow
|
25
26
|
def initialize(app)
|
26
27
|
# Initialize base class
|
27
|
-
super(app, "Data Targets Test",
|
28
|
+
super(app, "Data Targets Test", :opts => DECOR_ALL, :x => 20, :y => 20, :width => 700, :height => 460)
|
28
29
|
|
29
30
|
# Create a data target with an integer value
|
30
31
|
@intTarget = FXDataTarget.new(10)
|
@@ -86,7 +87,7 @@ class DataTargetWindow < FXMainWindow
|
|
86
87
|
LAYOUT_SIDE_TOP|SEPARATOR_GROOVE|LAYOUT_FILL_X)
|
87
88
|
FXSlider.new(self, @intTarget, FXDataTarget::ID_VALUE, (SLIDER_VERTICAL|
|
88
89
|
SLIDER_INSIDE_BAR|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_Y|LAYOUT_FIX_WIDTH),
|
89
|
-
|
90
|
+
:width => 20)
|
90
91
|
|
91
92
|
# Arrange nicely
|
92
93
|
matrix = FXMatrix.new(self, 7,
|
@@ -100,10 +101,10 @@ class DataTargetWindow < FXMainWindow
|
|
100
101
|
FXTextField.new(matrix, 10, @intTarget, FXDataTarget::ID_VALUE,
|
101
102
|
LAYOUT_CENTER_Y|LAYOUT_CENTER_X|FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW)
|
102
103
|
FXSlider.new(matrix, @intTarget, FXDataTarget::ID_VALUE,
|
103
|
-
LAYOUT_CENTER_Y|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH,
|
104
|
+
LAYOUT_CENTER_Y|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH, :width => 100)
|
104
105
|
FXDial.new(matrix, @intTarget, FXDataTarget::ID_VALUE, (LAYOUT_CENTER_Y|
|
105
106
|
LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH|DIAL_HORIZONTAL|DIAL_HAS_NOTCH),
|
106
|
-
|
107
|
+
:width => 100)
|
107
108
|
FXSpinner.new(matrix, 5, @intTarget, FXDataTarget::ID_VALUE,
|
108
109
|
SPIN_CYCLIC|FRAME_SUNKEN|FRAME_THICK|LAYOUT_CENTER_Y|LAYOUT_FILL_ROW)
|
109
110
|
FXProgressBar.new(matrix, @intTarget, FXDataTarget::ID_VALUE,
|
@@ -120,10 +121,10 @@ class DataTargetWindow < FXMainWindow
|
|
120
121
|
(TEXTFIELD_REAL|LAYOUT_CENTER_Y|LAYOUT_CENTER_X|
|
121
122
|
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW))
|
122
123
|
FXSlider.new(matrix, @floatTarget, FXDataTarget::ID_VALUE,
|
123
|
-
LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH,
|
124
|
+
LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH, :width => 100)
|
124
125
|
FXDial.new(matrix, @floatTarget, FXDataTarget::ID_VALUE,
|
125
126
|
(LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH|
|
126
|
-
DIAL_HORIZONTAL|DIAL_HAS_NOTCH),
|
127
|
+
DIAL_HORIZONTAL|DIAL_HAS_NOTCH), :width => 100)
|
127
128
|
|
128
129
|
FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
|
129
130
|
FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
|
@@ -163,9 +164,9 @@ class DataTargetWindow < FXMainWindow
|
|
163
164
|
FXLabel.new(matrix, "&Color", nil,
|
164
165
|
LAYOUT_CENTER_Y|LAYOUT_CENTER_X|JUSTIFY_RIGHT|LAYOUT_FILL_ROW)
|
165
166
|
FXColorWell.new(matrix, 0, @colorTarget, FXDataTarget::ID_VALUE,
|
166
|
-
LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW,
|
167
|
+
LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW, :padLeft => 0, :padRight => 0, :padTop => 0, :padBottom => 0)
|
167
168
|
FXColorWell.new(matrix, 0, @colorTarget, FXDataTarget::ID_VALUE,
|
168
|
-
LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW,
|
169
|
+
LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW, :padLeft => 0, :padRight => 0, :padTop => 0, :padBottom => 0)
|
169
170
|
FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
|
170
171
|
FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
|
171
172
|
FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
|
data/examples/dctest.rb
CHANGED
@@ -107,7 +107,7 @@ $stipples = {
|
|
107
107
|
class DCTestWindow < FXMainWindow
|
108
108
|
def initialize(app)
|
109
109
|
# Initialize base class first
|
110
|
-
super(app, "Device Context Test",
|
110
|
+
super(app, "Device Context Test", :opts => DECOR_ALL, :width => 850, :height => 740)
|
111
111
|
|
112
112
|
opts = FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y
|
113
113
|
|
@@ -133,15 +133,12 @@ class DCTestWindow < FXMainWindow
|
|
133
133
|
|
134
134
|
# Block for BLIT modes
|
135
135
|
FXLabel.new(controls, "BLIT Function:", nil, LAYOUT_LEFT)
|
136
|
-
blitgrid = FXMatrix.new(controls, 4, FRAME_RIDGE|MATRIX_BY_COLUMNS|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH
|
137
|
-
|
138
|
-
blitgrid.padRight = 2
|
139
|
-
blitgrid.padTop = 2
|
140
|
-
blitgrid.padBottom = 2
|
136
|
+
blitgrid = FXMatrix.new(controls, 4, FRAME_RIDGE|MATRIX_BY_COLUMNS|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
|
137
|
+
:padLeft => 2, :padRight => 2, :padTop => 2, :padBottom => 2)
|
141
138
|
|
142
139
|
# One button for each mode
|
143
140
|
$blit_modes.each do |blit_mode, desc|
|
144
|
-
btn = FXButton.new(blitgrid, desc,
|
141
|
+
btn = FXButton.new(blitgrid, desc, :opts => BUTTON_TOOLBAR|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_COLUMN)
|
145
142
|
btn.userData = blit_mode
|
146
143
|
btn.connect(SEL_COMMAND) do |sender, sel, ptr|
|
147
144
|
@function = sender.userData
|
@@ -158,12 +155,9 @@ class DCTestWindow < FXMainWindow
|
|
158
155
|
|
159
156
|
# Line dash style
|
160
157
|
FXLabel.new(controls, "Line Style:", nil, LAYOUT_LEFT)
|
161
|
-
linestyle = FXMatrix.new(controls, 3, FRAME_RIDGE|MATRIX_BY_COLUMNS|LAYOUT_FILL_X
|
162
|
-
|
163
|
-
linestyle.
|
164
|
-
linestyle.padTop = 2
|
165
|
-
linestyle.padBottom = 2
|
166
|
-
lineSolidBtn = FXButton.new(linestyle, "\tLINE_SOLID", loadIcon("solid_line.png", 0, IMAGE_OPAQUE), nil, 0, BUTTON_TOOLBAR|JUSTIFY_CENTER_X|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_COLUMN)
|
158
|
+
linestyle = FXMatrix.new(controls, 3, FRAME_RIDGE|MATRIX_BY_COLUMNS|LAYOUT_FILL_X,
|
159
|
+
:padLeft => 2, :padRight => 2, :padTop => 2, :padBottom => 2)
|
160
|
+
lineSolidBtn = FXButton.new(linestyle, "\tLINE_SOLID", loadIcon("solid_line.png", 0, IMAGE_OPAQUE), :opts => BUTTON_TOOLBAR|JUSTIFY_CENTER_X|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_COLUMN)
|
167
161
|
lineSolidBtn.connect(SEL_COMMAND) do |sender, sel, ptr|
|
168
162
|
@lineStyle = LINE_SOLID
|
169
163
|
@linesCanvas.update(0, 0, @linesCanvas.width, @linesCanvas.height)
|
data/examples/dialog.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'fox16'
|
4
|
+
require 'fox16/kwargs'
|
4
5
|
|
5
6
|
include Fox
|
6
7
|
|
7
8
|
# A little dialog box to use in our tests
|
8
9
|
class FXTestDialog < FXDialogBox
|
10
|
+
|
9
11
|
def initialize(owner)
|
10
12
|
# Invoke base class initialize function first
|
11
13
|
super(owner, "Test of Dialog Box", DECOR_TITLE|DECOR_BORDER)
|
@@ -13,7 +15,7 @@ class FXTestDialog < FXDialogBox
|
|
13
15
|
# Bottom buttons
|
14
16
|
buttons = FXHorizontalFrame.new(self,
|
15
17
|
LAYOUT_SIDE_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
|
16
|
-
|
18
|
+
:padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
|
17
19
|
|
18
20
|
# Separator
|
19
21
|
FXHorizontalSeparator.new(self,
|
@@ -37,16 +39,9 @@ class FXTestDialog < FXDialogBox
|
|
37
39
|
|
38
40
|
# Popup menu
|
39
41
|
pane = FXPopup.new(self)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
FXOption.new(pane, "Four", nil, nil, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
44
|
-
FXOption.new(pane, "Five", nil, nil, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
45
|
-
FXOption.new(pane, "Six", nil, nil, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
46
|
-
FXOption.new(pane, "Seven", nil, nil, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
47
|
-
FXOption.new(pane, "Eight", nil, nil, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
48
|
-
FXOption.new(pane, "Nine", nil, nil, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
49
|
-
FXOption.new(pane, "Ten", nil, nil, 0, JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
42
|
+
%w{One Two Three Four Five Six Seven Eight Nine Ten}.each do |s|
|
43
|
+
FXOption.new(pane, s, :opts => JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
44
|
+
end
|
50
45
|
|
51
46
|
# Option menu
|
52
47
|
FXOptionMenu.new(contents, pane, (FRAME_RAISED|FRAME_THICK|
|
@@ -68,6 +63,7 @@ class FXTestDialog < FXDialogBox
|
|
68
63
|
accept.setDefault
|
69
64
|
accept.setFocus
|
70
65
|
end
|
66
|
+
|
71
67
|
end
|
72
68
|
|
73
69
|
# Subclassed main window
|
@@ -75,7 +71,7 @@ class DialogTester < FXMainWindow
|
|
75
71
|
|
76
72
|
def initialize(app)
|
77
73
|
# Invoke base class initialize first
|
78
|
-
super(app, "Dialog Test",
|
74
|
+
super(app, "Dialog Test", :opts => DECOR_ALL, :width => 400, :height => 200)
|
79
75
|
|
80
76
|
# Tooltip
|
81
77
|
FXToolTip.new(getApp())
|
@@ -98,14 +94,14 @@ class DialogTester < FXMainWindow
|
|
98
94
|
|
99
95
|
# Button to pop normal dialog
|
100
96
|
nonModalButton = FXButton.new(contents,
|
101
|
-
"&Non-Modal Dialog...\tDisplay normal dialog",
|
102
|
-
FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y)
|
97
|
+
"&Non-Modal Dialog...\tDisplay normal dialog",
|
98
|
+
:opts => FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y)
|
103
99
|
nonModalButton.connect(SEL_COMMAND, method(:onCmdShowDialog))
|
104
100
|
|
105
101
|
# Button to pop modal dialog
|
106
102
|
modalButton = FXButton.new(contents,
|
107
|
-
"&Modal Dialog...\tDisplay modal dialog",
|
108
|
-
FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y)
|
103
|
+
"&Modal Dialog...\tDisplay modal dialog",
|
104
|
+
:opts => FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y)
|
109
105
|
modalButton.connect(SEL_COMMAND, method(:onCmdShowDialogModal))
|
110
106
|
|
111
107
|
# Build a dialog box
|
data/examples/dilbert.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'fox16'
|
4
|
+
require 'fox16/kwargs'
|
4
5
|
require 'open-uri'
|
5
6
|
begin
|
6
7
|
require 'rubyful_soup'
|
@@ -22,16 +23,15 @@ class DailyDilbert < FXMainWindow
|
|
22
23
|
|
23
24
|
def initialize(app)
|
24
25
|
# Invoke base class initialize first
|
25
|
-
super(app, "Daily Dilbert Viewer",
|
26
|
-
0, 0, 850, 600, 0, 0)
|
26
|
+
super(app, "Daily Dilbert Viewer", :opts => DECOR_ALL, :width => 850, :height => 600, :padLeft => 0, :padRight => 0)
|
27
27
|
|
28
28
|
# Sunken border for image widget
|
29
29
|
imagebox = FXHorizontalFrame.new(self,
|
30
30
|
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
31
31
|
|
32
32
|
# Make image widget
|
33
|
-
@imageview = FXImageView.new(imagebox,
|
34
|
-
LAYOUT_FILL_X|LAYOUT_FILL_Y|HSCROLLER_NEVER|VSCROLLER_NEVER)
|
33
|
+
@imageview = FXImageView.new(imagebox,
|
34
|
+
:opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|HSCROLLER_NEVER|VSCROLLER_NEVER)
|
35
35
|
|
36
36
|
# Construct a GIF image and store it in the image viewer
|
37
37
|
@imageview.image = FXGIFImage.new(getApp(), image_data)
|
data/examples/dirlist.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'fox16'
|
4
|
+
require 'fox16/kwargs'
|
4
5
|
|
5
6
|
include Fox
|
6
7
|
|
@@ -8,7 +9,7 @@ class DirListWindow < FXMainWindow
|
|
8
9
|
|
9
10
|
def initialize(app)
|
10
11
|
# Invoke the base class initialize first
|
11
|
-
super(app, "Directory List",
|
12
|
+
super(app, "Directory List", :opts => DECOR_ALL, :width => 800, :height => 600)
|
12
13
|
|
13
14
|
# Make menu bar
|
14
15
|
menubar = FXMenuBar.new(self, LAYOUT_FILL_X)
|
@@ -24,13 +25,13 @@ class DirListWindow < FXMainWindow
|
|
24
25
|
FXMenuTitle.new(menubar, "&Help", nil, helpmenu, LAYOUT_RIGHT)
|
25
26
|
|
26
27
|
# Text field at bottom
|
27
|
-
text = FXTextField.new(self, 10,
|
28
|
-
LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK)
|
28
|
+
text = FXTextField.new(self, 10,
|
29
|
+
:opts => LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK)
|
29
30
|
|
30
31
|
# Make contents
|
31
|
-
dirlist = FXDirList.new(self,
|
32
|
+
dirlist = FXDirList.new(self, :opts => (HSCROLLING_OFF|
|
32
33
|
TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|FRAME_SUNKEN|FRAME_THICK|
|
33
|
-
LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
34
|
+
LAYOUT_FILL_X|LAYOUT_FILL_Y))
|
34
35
|
|
35
36
|
# Now make the directory list widget (dirlist) the message target
|
36
37
|
# for the text field. If you type a new directory name in the text
|