ifmapper 1.0.0 → 1.0.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.
Files changed (218) hide show
  1. data/HISTORY.txt +648 -627
  2. data/IFMapper.gemspec +29 -28
  3. data/IFMapper.rbw +31 -31
  4. data/TODO.txt +8 -7
  5. data/bin/IFMapper +31 -31
  6. data/docs/en/index.html +0 -0
  7. data/docs/en/start.html +3 -2
  8. data/docs/en/start.html~ +516 -0
  9. data/docs/es/index.html +0 -0
  10. data/docs/es/start.html +13 -14
  11. data/docs/es/start.html~ +1280 -0
  12. data/docs/images/IFMapper_main.gif +0 -0
  13. data/docs/images/automap.gif +0 -0
  14. data/docs/images/complex_connection.gif +0 -0
  15. data/docs/images/connection.gif +0 -0
  16. data/docs/images/connection_menu.gif +0 -0
  17. data/docs/images/room_description.gif +0 -0
  18. data/docs/images/room_small.gif +0 -0
  19. data/icons/copy.png +0 -0
  20. data/icons/cut.png +0 -0
  21. data/icons/filenew.png +0 -0
  22. data/icons/fileopen.png +0 -0
  23. data/icons/filesave.png +0 -0
  24. data/icons/filesaveas.png +0 -0
  25. data/icons/help.png +0 -0
  26. data/icons/kill.png +0 -0
  27. data/icons/nextpage.png +0 -0
  28. data/icons/paste.png +0 -0
  29. data/icons/prevpage.png +0 -0
  30. data/icons/printicon.png +0 -0
  31. data/icons/redo.png +0 -0
  32. data/icons/room_e.gif +0 -0
  33. data/icons/room_e.xpm +0 -0
  34. data/icons/room_n.gif +0 -0
  35. data/icons/room_n.xpm +0 -0
  36. data/icons/room_ne.gif +0 -0
  37. data/icons/room_ne.xpm +0 -0
  38. data/icons/room_nw.gif +0 -0
  39. data/icons/room_nw.xpm +0 -0
  40. data/icons/room_s.gif +0 -0
  41. data/icons/room_s.xpm +0 -0
  42. data/icons/room_se.gif +0 -0
  43. data/icons/room_se.xpm +0 -0
  44. data/icons/room_sw.gif +0 -0
  45. data/icons/room_sw.xpm +0 -0
  46. data/icons/room_w.gif +0 -0
  47. data/icons/room_w.xpm +0 -0
  48. data/icons/saveas.png +0 -0
  49. data/icons/undo.png +0 -0
  50. data/icons/winapp.png +0 -0
  51. data/icons/zoom.png +0 -0
  52. data/lib/IFMapper/AStar.rb +250 -250
  53. data/lib/IFMapper/Connection.rb +202 -202
  54. data/lib/IFMapper/FXAboutDialogBox.rb +32 -32
  55. data/lib/IFMapper/FXConnection.rb +364 -364
  56. data/lib/IFMapper/FXConnectionDialogBox.rb +124 -124
  57. data/lib/IFMapper/FXDCPostscript.rb +404 -404
  58. data/lib/IFMapper/FXDCPrint.rb +15 -15
  59. data/lib/IFMapper/FXItemList.rb +108 -0
  60. data/lib/IFMapper/FXMap.rb +2147 -2116
  61. data/lib/IFMapper/FXMapColorBox.rb +88 -88
  62. data/lib/IFMapper/FXMapDialogBox.rb +127 -127
  63. data/lib/IFMapper/FXMapFileDialog.rb +34 -34
  64. data/lib/IFMapper/FXMapperSettings.rb +206 -205
  65. data/lib/IFMapper/FXMapperWindow.rb +1592 -1571
  66. data/lib/IFMapper/FXPDFMapExporterOptionsDialogBox.rb +46 -0
  67. data/lib/IFMapper/FXRoom.rb +263 -263
  68. data/lib/IFMapper/FXRoomDialogBox.rb +159 -159
  69. data/lib/IFMapper/FXRoomList.rb +95 -95
  70. data/lib/IFMapper/FXSearchDialogBox.rb +51 -51
  71. data/lib/IFMapper/FXSection.rb +33 -33
  72. data/lib/IFMapper/FXSectionDialogBox.rb +38 -38
  73. data/lib/IFMapper/FXSpline.rb +52 -52
  74. data/lib/IFMapper/FXWarningBox.rb +51 -50
  75. data/lib/IFMapper/GUEReader.rb +445 -445
  76. data/lib/IFMapper/IFMReader.rb +584 -584
  77. data/lib/IFMapper/IFMWriter.rb +245 -227
  78. data/lib/IFMapper/Inform7Writer.rb +579 -573
  79. data/lib/IFMapper/InformReader.rb +478 -478
  80. data/lib/IFMapper/InformWriter.rb +364 -359
  81. data/lib/IFMapper/Map.rb +202 -200
  82. data/lib/IFMapper/MapPrinting.rb +162 -162
  83. data/lib/IFMapper/MapReader.rb +900 -900
  84. data/lib/IFMapper/PDFMapExporter.rb +526 -483
  85. data/lib/IFMapper/Room.rb +153 -151
  86. data/lib/IFMapper/Section.rb +234 -234
  87. data/lib/IFMapper/TADSReader.rb +474 -471
  88. data/lib/IFMapper/TADSWriter.rb +375 -370
  89. data/lib/IFMapper/TranscriptDialogBox.rb +0 -0
  90. data/lib/IFMapper/TranscriptReader.rb +1361 -1359
  91. data/lib/IFMapper/locales/en/Messages.rb +446 -435
  92. data/lib/IFMapper/locales/es/Messages.rb +451 -440
  93. data/lib/IFMapper/locales/es/Messages_iso-8859-1.rb +455 -440
  94. data/lib/IFMapper/locales/es/runme.sh +3 -3
  95. data/maps/A New Life.map b/data/maps/A New → Life.map +0 -0
  96. data/maps/AMFV.map +0 -0
  97. data/maps/AllRoads.map +0 -0
  98. data/maps/Aotearoa.map +0 -0
  99. data/maps/Bronze.map +0 -0
  100. data/maps/Bureaucracy.ifm +0 -0
  101. data/maps/Bureaucracy.map +0 -0
  102. data/maps/CityOfSecrets.map +0 -0
  103. data/maps/DDIV.map +0 -0
  104. data/maps/Following_A_Star.map +0 -0
  105. data/maps/Heated.map +0 -0
  106. data/maps/Heroine.map +0 -0
  107. data/maps/History Repeating.map b/data/maps/History → Repeating.map +0 -0
  108. data/maps/Hollywood_Hijinx.ifm +0 -0
  109. data/maps/Janitor.map +0 -0
  110. data/maps/Jigsaw.ifm +0 -0
  111. data/maps/Jigsaw.map +0 -0
  112. data/maps/LGOP.ifm +0 -0
  113. data/maps/Mercy.ifm +0 -0
  114. data/maps/Ninjas_Fate.map +0 -0
  115. data/maps/Pen_and_Paint.map +0 -0
  116. data/maps/Planetfall.ifm +0 -0
  117. data/maps/Planetfall.map +0 -0
  118. data/maps/Plundered_Hearts.ifm +0 -0
  119. data/maps/QuietEvening.map +0 -0
  120. data/maps/Ralph.ifm +0 -0
  121. data/maps/Reliques_of_Tolti_Alph.map +0 -0
  122. data/maps/Revolution.map +0 -0
  123. data/maps/Robots_of_Dawn.ifm +0 -0
  124. data/maps/SavoirFare.map +0 -0
  125. data/maps/Seastalker.ifm +0 -0
  126. data/maps/Seastalker.map +0 -0
  127. data/maps/Sherlock.ifm +0 -0
  128. data/maps/SoFar.ifm +0 -0
  129. data/maps/Starcross.ifm +0 -0
  130. data/maps/Suspended.ifm +0 -0
  131. data/maps/Tangle.map +0 -0
  132. data/maps/The_Lost_Sheep.map +0 -0
  133. data/maps/Unforgotten.map +0 -0
  134. data/maps/Warbler's Nest.map +0 -0
  135. data/maps/Warbler's_Nest.map +0 -0
  136. data/maps/Westminster_Abbey.map +0 -0
  137. data/maps/WinterWonderland.map +0 -0
  138. data/maps/Wishbringer.ifm +0 -0
  139. data/maps/Wishbringer2.ifm +0 -0
  140. data/maps/Zork1.ifm +0 -0
  141. data/maps/Zork2.ifm +0 -0
  142. data/maps/Zork3.ifm +0 -0
  143. data/maps/Zork_Zero.ifm +0 -0
  144. data/maps/anchor.ifm +0 -0
  145. data/maps/anchor.map +0 -0
  146. data/maps/atrox.ifm +0 -0
  147. data/maps/awaken.ifm +0 -0
  148. data/maps/babel.ifm +0 -0
  149. data/maps/balances.map +0 -0
  150. data/maps/ballerina.map +0 -0
  151. data/maps/bear.map +0 -0
  152. data/maps/bluechairs.map +0 -0
  153. data/maps/break_in.map +0 -0
  154. data/maps/bse.ifm +0 -0
  155. data/maps/building.map +0 -0
  156. data/maps/change.ifm +0 -0
  157. data/maps/christminster.map +0 -0
  158. data/maps/curses.ifm +0 -0
  159. data/maps/curves.ifm +0 -0
  160. data/maps/deadline.map +0 -0
  161. data/maps/delusions.map +0 -0
  162. data/maps/devours.map +0 -0
  163. data/maps/distress.map +0 -0
  164. data/maps/djinni.map +0 -0
  165. data/maps/dreamhold.map +0 -0
  166. data/maps/drift3.map +0 -0
  167. data/maps/eas.map +0 -0
  168. data/maps/eas2.map +0 -0
  169. data/maps/eas3.map +0 -0
  170. data/maps/edifice.ifm +0 -0
  171. data/maps/fallacy.map +0 -0
  172. data/maps/frozen.ifm +0 -0
  173. data/maps/gamlet.map +0 -0
  174. data/maps/glow.ifm +0 -0
  175. data/maps/guilty_bastards.map +0 -0
  176. data/maps/heist.map +0 -0
  177. data/maps/heroes.map +0 -0
  178. data/maps/inhumane.map +0 -0
  179. data/maps/kaged.map +0 -0
  180. data/maps/library.ifm +0 -0
  181. data/maps/lurkinghorror.map +0 -0
  182. data/maps/metamorphoses.map +0 -0
  183. data/maps/mindelec.ifm +0 -0
  184. data/maps/minster.ifm +0 -0
  185. data/maps/mite.map +0 -0
  186. data/maps/moonmist.map +0 -0
  187. data/maps/muldoon_legacy.map +0 -0
  188. data/maps/muse.ifm +0 -0
  189. data/maps/paperchase.ifm +0 -0
  190. data/maps/party.map +0 -0
  191. data/maps/pawn.map +0 -0
  192. data/maps/photograph.map +0 -0
  193. data/maps/pkgirl.map +0 -0
  194. data/maps/pytho.map +0 -0
  195. data/maps/risorgimento.map +0 -0
  196. data/maps/sherbet.map +0 -0
  197. data/maps/simple.map +0 -0
  198. data/maps/slouch.map +0 -0
  199. data/maps/space_st.ifm +0 -0
  200. data/maps/splashdown.map +0 -0
  201. data/maps/spring.map +0 -0
  202. data/maps/squarecircle.map +0 -0
  203. data/maps/stationfall.ifm +0 -0
  204. data/maps/theatre.ifm +0 -0
  205. data/maps/toonesia.ifm +0 -0
  206. data/maps/tortoise.ifm +0 -0
  207. data/maps/trinity.map +0 -0
  208. data/maps/vespers.map +0 -0
  209. data/maps/vgame.ifm +0 -0
  210. data/maps/wasp.map +0 -0
  211. data/maps/weather.ifm +0 -0
  212. data/maps/windhall.ifm +0 -0
  213. data/maps/worlds.map +0 -0
  214. data/maps/xtcontest.map +0 -0
  215. data/maps/zdungeon.map +0 -0
  216. data/maps/zebulon.ifm +0 -0
  217. data/maps/zerosum.map +0 -0
  218. metadata +226 -183
@@ -1,202 +1,202 @@
1
-
2
- #
3
- # Class used to represent a connection between one
4
- # room and another
5
- #
6
- class Connection
7
- attr_accessor :type
8
- attr_reader :dir
9
- attr_accessor :room
10
- attr_accessor :exitText
11
-
12
- # Type constants
13
- FREE = 0
14
- LOCKED_DOOR = 1
15
- SPECIAL = 2
16
- CLOSED_DOOR = 3
17
-
18
- # Direction constants
19
- BOTH = 0
20
- AtoB = 1
21
- BtoA = 2 # NO LONGER USED.
22
-
23
- # Text near connection (to indicate other dir)
24
- EXIT_TEXT = [
25
- '',
26
- 'U',
27
- 'D',
28
- 'I',
29
- 'O'
30
- ]
31
-
32
- def dir=(x)
33
- if x == BtoA
34
- @dir = AtoB
35
- flip
36
- else
37
- @dir = x
38
- end
39
- end
40
-
41
- def roomA=(x)
42
- @room[0] = x
43
- end
44
-
45
- def roomB=(x)
46
- @room[1] = x
47
- end
48
-
49
- def roomA
50
- return @room[0]
51
- end
52
-
53
- def roomB
54
- return @room[1]
55
- end
56
-
57
- def exitAtext=(x)
58
- @exitText[0] = x
59
- end
60
-
61
- def exitBtext=(x)
62
- @exitText[1] = x
63
- end
64
-
65
- def exitAtext
66
- return @exitText[0]
67
- end
68
-
69
- def exitBtext
70
- return @exitText[1]
71
- end
72
-
73
- def marshal_load(vars)
74
- if vars[2].kind_of?(Array)
75
- @type, @dir, @room, @exitText = vars
76
- else
77
- @type = vars[0]
78
- @dir = vars[1]
79
- @room = [vars[2], vars[3]]
80
- @exitText = [vars[4], vars[5]]
81
- if @dir == BtoA
82
- @dir = AtoB
83
- flip
84
- end
85
- end
86
- end
87
-
88
- def marshal_dump
89
- [ @type, @dir, @room, @exitText ]
90
- end
91
-
92
- def initialize( roomA, roomB, dir = BOTH, type = FREE )
93
- @room = []
94
- @room[0] = roomA
95
- @room[1] = roomB
96
- @dir = dir
97
- @type = type
98
- @exitText = [0, 0]
99
- end
100
-
101
- #
102
- # Given a room, return the opposite room in the connection.
103
- # If room passed is not present in connection, raise an exception.
104
- #
105
- def opposite(room)
106
- idx = self.index(room)
107
- raise "Room #{room} not part of connection #{c}" unless idx
108
- return @room[idx ^ 1]
109
- end
110
-
111
- #
112
- # Given a room, return the index of that room in the room[] array
113
- # If room is not present in connection, return nil.
114
- #
115
- def index(room)
116
- @room.each_with_index { |r, idx| return idx if r == room }
117
- return nil
118
- end
119
-
120
- #
121
- # Flip A and B rooms. This is mainly used to make a oneway AtoB
122
- # connection become a BtoA connection.
123
- #
124
- def flip
125
- return unless @room[1]
126
- @room.reverse!
127
- @exitText.reverse!
128
- end
129
-
130
- #
131
- # Return the connected direction index for each room
132
- #
133
- def dirs
134
- dirA = @room[0].exits.index(self)
135
- if @room[1]
136
- dirB = @room[1].exits.rindex(self)
137
- else
138
- dirB = nil
139
- end
140
- return [dirA, dirB]
141
- end
142
-
143
- #
144
- # Return true if connection is a stub exit (ie. an exit leading nowhere)
145
- #
146
- def stub?
147
- return true unless @room[1]
148
- return false
149
- end
150
-
151
- #
152
- # Return true if connection is a self-looping connection
153
- #
154
- def loop?
155
- return false if @room[0] != @room[1]
156
- dirA, dirB = dirs
157
- return true if dirA == dirB
158
- return false
159
- end
160
-
161
- #
162
- # Return true if connection is a door
163
- #
164
- def door?
165
- return true if @type == CLOSED_DOOR or @type == LOCKED_DOOR
166
- return false
167
- end
168
-
169
- #
170
- # For debugging purposes, print ourselves nicely
171
- #
172
- def to_s
173
- dirA = dirB = ''
174
- a = @room[0]? @room[0].name : 'nil'
175
- b = @room[1]? @room[1].name : 'nil'
176
- if @exitText[0] > 0
177
- dirA = EXIT_TEXT[@exitText[0]]
178
- else
179
- if @room[0]
180
- idx = @room[0].exits.index(self)
181
- dirA = Room::DIRECTIONS[idx] if idx
182
- dirA = dirA.upcase
183
- end
184
- end
185
- if @exitText[1] > 0
186
- dirB = EXIT_TEXT[@exitText[1]]
187
- else
188
- if @room[1]
189
- idx = @room[1].exits.rindex(self)
190
- dirB = Room::DIRECTIONS[idx] if idx
191
- dirB = dirB.upcase
192
- end
193
- end
194
- if @dir == AtoB
195
- sym = ' --> '
196
- else
197
- sym = ' <-> '
198
- end
199
- "#{a} #{dirA}#{sym}#{b} #{dirB}"
200
- end
201
- end
202
-
1
+
2
+ #
3
+ # Class used to represent a connection between one
4
+ # room and another
5
+ #
6
+ class Connection
7
+ attr_accessor :type
8
+ attr_reader :dir
9
+ attr_accessor :room
10
+ attr_accessor :exitText
11
+
12
+ # Type constants
13
+ FREE = 0
14
+ LOCKED_DOOR = 1
15
+ SPECIAL = 2
16
+ CLOSED_DOOR = 3
17
+
18
+ # Direction constants
19
+ BOTH = 0
20
+ AtoB = 1
21
+ BtoA = 2 # NO LONGER USED.
22
+
23
+ # Text near connection (to indicate other dir)
24
+ EXIT_TEXT = [
25
+ '',
26
+ 'U',
27
+ 'D',
28
+ 'I',
29
+ 'O'
30
+ ]
31
+
32
+ def dir=(x)
33
+ if x == BtoA
34
+ @dir = AtoB
35
+ flip
36
+ else
37
+ @dir = x
38
+ end
39
+ end
40
+
41
+ def roomA=(x)
42
+ @room[0] = x
43
+ end
44
+
45
+ def roomB=(x)
46
+ @room[1] = x
47
+ end
48
+
49
+ def roomA
50
+ return @room[0]
51
+ end
52
+
53
+ def roomB
54
+ return @room[1]
55
+ end
56
+
57
+ def exitAtext=(x)
58
+ @exitText[0] = x
59
+ end
60
+
61
+ def exitBtext=(x)
62
+ @exitText[1] = x
63
+ end
64
+
65
+ def exitAtext
66
+ return @exitText[0]
67
+ end
68
+
69
+ def exitBtext
70
+ return @exitText[1]
71
+ end
72
+
73
+ def marshal_load(vars)
74
+ if vars[2].kind_of?(Array)
75
+ @type, @dir, @room, @exitText = vars
76
+ else
77
+ @type = vars[0]
78
+ @dir = vars[1]
79
+ @room = [vars[2], vars[3]]
80
+ @exitText = [vars[4], vars[5]]
81
+ if @dir == BtoA
82
+ @dir = AtoB
83
+ flip
84
+ end
85
+ end
86
+ end
87
+
88
+ def marshal_dump
89
+ [ @type, @dir, @room, @exitText ]
90
+ end
91
+
92
+ def initialize( roomA, roomB, dir = BOTH, type = FREE )
93
+ @room = []
94
+ @room[0] = roomA
95
+ @room[1] = roomB
96
+ @dir = dir
97
+ @type = type
98
+ @exitText = [0, 0]
99
+ end
100
+
101
+ #
102
+ # Given a room, return the opposite room in the connection.
103
+ # If room passed is not present in connection, raise an exception.
104
+ #
105
+ def opposite(room)
106
+ idx = self.index(room)
107
+ raise "Room #{room} not part of connection #{c}" unless idx
108
+ return @room[idx ^ 1]
109
+ end
110
+
111
+ #
112
+ # Given a room, return the index of that room in the room[] array
113
+ # If room is not present in connection, return nil.
114
+ #
115
+ def index(room)
116
+ @room.each_with_index { |r, idx| return idx if r == room }
117
+ return nil
118
+ end
119
+
120
+ #
121
+ # Flip A and B rooms. This is mainly used to make a oneway AtoB
122
+ # connection become a BtoA connection.
123
+ #
124
+ def flip
125
+ return unless @room[1]
126
+ @room.reverse!
127
+ @exitText.reverse!
128
+ end
129
+
130
+ #
131
+ # Return the connected direction index for each room
132
+ #
133
+ def dirs
134
+ dirA = @room[0].exits.index(self)
135
+ if @room[1]
136
+ dirB = @room[1].exits.rindex(self)
137
+ else
138
+ dirB = nil
139
+ end
140
+ return [dirA, dirB]
141
+ end
142
+
143
+ #
144
+ # Return true if connection is a stub exit (ie. an exit leading nowhere)
145
+ #
146
+ def stub?
147
+ return true unless @room[1]
148
+ return false
149
+ end
150
+
151
+ #
152
+ # Return true if connection is a self-looping connection
153
+ #
154
+ def loop?
155
+ return false if @room[0] != @room[1]
156
+ dirA, dirB = dirs
157
+ return true if dirA == dirB
158
+ return false
159
+ end
160
+
161
+ #
162
+ # Return true if connection is a door
163
+ #
164
+ def door?
165
+ return true if @type == CLOSED_DOOR or @type == LOCKED_DOOR
166
+ return false
167
+ end
168
+
169
+ #
170
+ # For debugging purposes, print ourselves nicely
171
+ #
172
+ def to_s
173
+ dirA = dirB = ''
174
+ a = @room[0]? @room[0].name : 'nil'
175
+ b = @room[1]? @room[1].name : 'nil'
176
+ if @exitText[0] > 0
177
+ dirA = EXIT_TEXT[@exitText[0]]
178
+ else
179
+ if @room[0]
180
+ idx = @room[0].exits.index(self)
181
+ dirA = Room::DIRECTIONS[idx] if idx
182
+ dirA = dirA.upcase
183
+ end
184
+ end
185
+ if @exitText[1] > 0
186
+ dirB = EXIT_TEXT[@exitText[1]]
187
+ else
188
+ if @room[1]
189
+ idx = @room[1].exits.rindex(self)
190
+ dirB = Room::DIRECTIONS[idx] if idx
191
+ dirB = dirB.upcase
192
+ end
193
+ end
194
+ if @dir == AtoB
195
+ sym = ' --> '
196
+ else
197
+ sym = ' <-> '
198
+ end
199
+ "#{a} #{dirA}#{sym}#{b} #{dirB}"
200
+ end
201
+ end
202
+
@@ -1,32 +1,32 @@
1
-
2
-
3
- class FXAboutDialogBox < FXDialogBox
4
-
5
- def initialize(parent, title, text)
6
- decor = DECOR_TITLE|DECOR_BORDER|DECOR_CLOSE
7
-
8
- super( parent, title, decor, 40, 40, 0, 0 )
9
- mainFrame = FXVerticalFrame.new(self,
10
- FRAME_SUNKEN|FRAME_THICK|
11
- LAYOUT_FILL_X|LAYOUT_FILL_Y)
12
-
13
- frame = FXHorizontalFrame.new(mainFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
14
-
15
- FXLabel.new(frame, text, nil, 0, LAYOUT_FILL_ROW)
16
-
17
- # c = FXText.new(frame, nil, 0, LAYOUT_FILL_ROW)
18
- # c.visibleRows = 10
19
- # c.visibleColumns = 80
20
- # c.editable = false
21
- # c.text = text
22
-
23
- buttons = FXHorizontalFrame.new(mainFrame,
24
- LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|
25
- PACK_UNIFORM_WIDTH)
26
- # Accept
27
- FXButton.new(buttons, "&Super!", nil, self, FXDialogBox::ID_ACCEPT,
28
- FRAME_RAISED|LAYOUT_FILL_X|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
29
-
30
- create
31
- end
32
- end
1
+
2
+
3
+ class FXAboutDialogBox < FXDialogBox
4
+
5
+ def initialize(parent, title, text)
6
+ decor = DECOR_TITLE|DECOR_BORDER|DECOR_CLOSE
7
+
8
+ super( parent, title, decor, 40, 40, 0, 0 )
9
+ mainFrame = FXVerticalFrame.new(self,
10
+ FRAME_SUNKEN|FRAME_THICK|
11
+ LAYOUT_FILL_X|LAYOUT_FILL_Y)
12
+
13
+ frame = FXHorizontalFrame.new(mainFrame, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
14
+
15
+ FXLabel.new(frame, text, nil, 0, LAYOUT_FILL_ROW)
16
+
17
+ # c = FXText.new(frame, nil, 0, LAYOUT_FILL_ROW)
18
+ # c.visibleRows = 10
19
+ # c.visibleColumns = 80
20
+ # c.editable = false
21
+ # c.text = text
22
+
23
+ buttons = FXHorizontalFrame.new(mainFrame,
24
+ LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|
25
+ PACK_UNIFORM_WIDTH)
26
+ # Accept
27
+ FXButton.new(buttons, "&Super!", nil, self, FXDialogBox::ID_ACCEPT,
28
+ FRAME_RAISED|LAYOUT_FILL_X|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
29
+
30
+ create
31
+ end
32
+ end