fxruby 1.6.5 → 1.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|