ifmapper 2.2.0 → 2.2.5
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.
- checksums.yaml +4 -4
- data/HISTORY.txt +85 -83
- data/IFMapper.gemspec +5 -5
- data/IFMapper.rbw +1 -2
- data/bin/IFMapper +4 -3
- data/docs/en/start.html +88 -2
- data/docs/es/start.html +84 -3
- data/lib/IFMapper/FXMapperWindow.rb +202 -201
- data/lib/IFMapper/MapPrinting.rb +104 -101
- data/lib/IFMapper/PDFMapExporter.rb +2 -521
- data/lib/IFMapper/PDFMapExporter_prawn.rb +132 -103
- data/maps/CityOfSecrets.map +0 -0
- metadata +9 -10
data/IFMapper.gemspec
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
# coding: utf-8
|
|
1
2
|
require "rubygems"
|
|
2
3
|
|
|
3
|
-
VERSION = '2.2.
|
|
4
|
-
AUTHOR = "Gonzalo
|
|
4
|
+
VERSION = '2.2.5'
|
|
5
|
+
AUTHOR = "Gonzalo Garramuño"
|
|
5
6
|
HOMEPAGE = 'http://ggarra13.github.io/ifmapper/en/start.html'
|
|
6
7
|
EMAIL = 'ggarra13@gmail.com'
|
|
7
8
|
|
|
@@ -28,10 +29,9 @@ gem = Gem::Specification.new do |s|
|
|
|
28
29
|
EOF
|
|
29
30
|
s.add_runtime_dependency("rake-compiler", "~> 0.7.1", ">= 0.7.1" )
|
|
30
31
|
s.add_runtime_dependency("fxruby", "~> 1.6.0", ">= 1.6.0")
|
|
31
|
-
s.add_runtime_dependency("
|
|
32
|
+
s.add_runtime_dependency("prawn", "~> 1.0.0", ">= 1.0.0")
|
|
32
33
|
s.extra_rdoc_files = ["HISTORY.txt", "TODO.txt"] +
|
|
33
34
|
Dir.glob("docs/*/*")
|
|
34
|
-
s.
|
|
35
|
-
s.rubyforge_project = 'ifmapper'
|
|
35
|
+
# s.rubyforge_project = 'ifmapper'
|
|
36
36
|
s.required_ruby_version = '>= 2.0.0'
|
|
37
37
|
end
|
data/IFMapper.rbw
CHANGED
data/bin/IFMapper
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# cd to install path, so modules are found locally
|
|
4
4
|
install_loc = __FILE__.sub(/\/?[^\/]*$/, '')
|
|
5
|
-
install_loc =
|
|
6
|
-
install_loc =
|
|
5
|
+
install_loc = install_loc.sub(/bin\/*$/, '')
|
|
6
|
+
install_loc = install_loc.sub(/IFMapper$/, '')
|
|
7
|
+
install_loc = '..' if install_loc == '.'
|
|
8
|
+
install_loc = '.' if install_loc == ''
|
|
7
9
|
|
|
8
10
|
Dir.chdir(install_loc)
|
|
9
11
|
$LOAD_PATH << "./lib"
|
|
@@ -33,4 +35,3 @@ rescue => e
|
|
|
33
35
|
$stderr.flush
|
|
34
36
|
raise e
|
|
35
37
|
end
|
|
36
|
-
|
data/docs/en/start.html
CHANGED
|
@@ -259,6 +259,90 @@
|
|
|
259
259
|
<br>
|
|
260
260
|
<code>sudo gem install ifmapper</code><br>
|
|
261
261
|
<br>
|
|
262
|
+
<br> Here's a step by step from another user (untested): <br><br>
|
|
263
|
+
|
|
264
|
+
<code>
|
|
265
|
+
Install Homebrew
|
|
266
|
+
<br>
|
|
267
|
+
----------------
|
|
268
|
+
<br>
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install 1)”
|
|
272
|
+
<br>
|
|
273
|
+
<br>
|
|
274
|
+
|
|
275
|
+
Update Search Paths
|
|
276
|
+
<br>
|
|
277
|
+
-------------------
|
|
278
|
+
|
|
279
|
+
<br>
|
|
280
|
+
pico .profile
|
|
281
|
+
|
|
282
|
+
<br>
|
|
283
|
+
if which ruby >/dev/null && which gem >/dev/null; then
|
|
284
|
+
|
|
285
|
+
<br>
|
|
286
|
+
PATH="$(ruby -r rubygems -e ‘puts Gem.user_dir’)/bin:$PATH"
|
|
287
|
+
|
|
288
|
+
<br>
|
|
289
|
+
fi
|
|
290
|
+
|
|
291
|
+
<br>
|
|
292
|
+
ctrl-x
|
|
293
|
+
|
|
294
|
+
<br>
|
|
295
|
+
y
|
|
296
|
+
|
|
297
|
+
<br>
|
|
298
|
+
close Terminal window
|
|
299
|
+
<br>
|
|
300
|
+
|
|
301
|
+
reopen Terminal window
|
|
302
|
+
<br>
|
|
303
|
+
<br>
|
|
304
|
+
|
|
305
|
+
Install support libraries
|
|
306
|
+
<br>
|
|
307
|
+
-------------------------
|
|
308
|
+
|
|
309
|
+
<br>
|
|
310
|
+
brew cask install xquartz
|
|
311
|
+
<br>
|
|
312
|
+
|
|
313
|
+
brew install fox
|
|
314
|
+
<br>
|
|
315
|
+
<br>
|
|
316
|
+
|
|
317
|
+
Install ruby gems
|
|
318
|
+
<br>
|
|
319
|
+
-----------------
|
|
320
|
+
<br>
|
|
321
|
+
|
|
322
|
+
gem install fxruby --user-install
|
|
323
|
+
<br>
|
|
324
|
+
|
|
325
|
+
gem install pdf-writer --user-install
|
|
326
|
+
<br>
|
|
327
|
+
|
|
328
|
+
gem install ifmapper --user-install
|
|
329
|
+
<br>
|
|
330
|
+
|
|
331
|
+
<br>
|
|
332
|
+
Launch ifmapper
|
|
333
|
+
<br>
|
|
334
|
+
---------------
|
|
335
|
+
<br>
|
|
336
|
+
/Applications/Utilities/XQuartz.app
|
|
337
|
+
|
|
338
|
+
<br>
|
|
339
|
+
Launch Terminal
|
|
340
|
+
|
|
341
|
+
<br>
|
|
342
|
+
ifmapper
|
|
343
|
+
<br>
|
|
344
|
+
<br>
|
|
345
|
+
</code>
|
|
262
346
|
</p>
|
|
263
347
|
<p id="LinuxOrUNIX" class="heading2">
|
|
264
348
|
Linux or UNIX
|
|
@@ -271,9 +355,11 @@
|
|
|
271
355
|
<code>sudo apt-get install ruby</code><br>
|
|
272
356
|
<br>
|
|
273
357
|
<br>
|
|
274
|
-
|
|
358
|
+
Note that is likely you will also have to install the FOX toolkit
|
|
359
|
+
from your distribution's package repository as well as the essential
|
|
360
|
+
build development toolset, in the same way that you installed Ruby.
|
|
275
361
|
<br>
|
|
276
|
-
<code>sudo apt-get install build-essential libfox-1.6-dev</code><br>
|
|
362
|
+
<code>sudo apt-get install build-essential libfox-1.6-dev ruby-dev libxrandr-dev</code><br>
|
|
277
363
|
<br>
|
|
278
364
|
After you have Ruby up and running, install IFMapper and its dependencies with RubyGems:<br>
|
|
279
365
|
<br>
|
data/docs/es/start.html
CHANGED
|
@@ -284,6 +284,87 @@ cardinales para navegar por el juego, es relativamente fácil perderse.&nb
|
|
|
284
284
|
<br>
|
|
285
285
|
<code>sudo gem install ifmapper</code><br>
|
|
286
286
|
<br>
|
|
287
|
+
<br> Here's a step by step from another user (untested): <br><br>
|
|
288
|
+
<code>
|
|
289
|
+
Instalar Homebrew
|
|
290
|
+
<br>
|
|
291
|
+
-----------------
|
|
292
|
+
<br>
|
|
293
|
+
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install 1)”
|
|
294
|
+
<br>
|
|
295
|
+
<br>
|
|
296
|
+
|
|
297
|
+
Update Caminos de Búsqueda
|
|
298
|
+
<br>
|
|
299
|
+
--------------------------
|
|
300
|
+
|
|
301
|
+
<br>
|
|
302
|
+
pico .profile
|
|
303
|
+
|
|
304
|
+
<br>
|
|
305
|
+
if which ruby >/dev/null && which gem >/dev/null; then
|
|
306
|
+
|
|
307
|
+
<br>
|
|
308
|
+
PATH="$(ruby -r rubygems -e ‘puts Gem.user_dir’)/bin:$PATH"
|
|
309
|
+
|
|
310
|
+
<br>
|
|
311
|
+
fi
|
|
312
|
+
|
|
313
|
+
<br>
|
|
314
|
+
ctrl-x
|
|
315
|
+
|
|
316
|
+
<br>
|
|
317
|
+
y
|
|
318
|
+
|
|
319
|
+
<br>
|
|
320
|
+
close Terminal window
|
|
321
|
+
<br>
|
|
322
|
+
|
|
323
|
+
reopen Terminal window
|
|
324
|
+
<br>
|
|
325
|
+
<br>
|
|
326
|
+
|
|
327
|
+
Instalar las biblitecas de soporte
|
|
328
|
+
<br>
|
|
329
|
+
----------------------------------
|
|
330
|
+
|
|
331
|
+
<br>
|
|
332
|
+
brew cask install xquartz
|
|
333
|
+
<br>
|
|
334
|
+
|
|
335
|
+
brew install fox
|
|
336
|
+
<br>
|
|
337
|
+
<br>
|
|
338
|
+
|
|
339
|
+
Instalar ruby gems
|
|
340
|
+
<br>
|
|
341
|
+
------------------
|
|
342
|
+
<br>
|
|
343
|
+
|
|
344
|
+
gem install fxruby --user-install
|
|
345
|
+
<br>
|
|
346
|
+
|
|
347
|
+
gem install pdf-writer --user-install
|
|
348
|
+
<br>
|
|
349
|
+
|
|
350
|
+
gem install ifmapper --user-install
|
|
351
|
+
<br>
|
|
352
|
+
|
|
353
|
+
<br>
|
|
354
|
+
Lanzar ifmapper
|
|
355
|
+
<br>
|
|
356
|
+
---------------
|
|
357
|
+
<br>
|
|
358
|
+
/Applications/Utilities/XQuartz.app
|
|
359
|
+
|
|
360
|
+
<br>
|
|
361
|
+
Launch Terminal
|
|
362
|
+
|
|
363
|
+
<br>
|
|
364
|
+
ifmapper
|
|
365
|
+
<br>
|
|
366
|
+
<br>
|
|
367
|
+
</code>
|
|
287
368
|
</p>
|
|
288
369
|
|
|
289
370
|
<p id="LinuxOrUNIX" class="heading2">
|
|
@@ -299,7 +380,7 @@ cardinales para navegar por el juego, es relativamente fácil perderse.&nb
|
|
|
299
380
|
Nótese que es probable que además tengas que instalar el toolkit de Fox, así como las herramientas de compilación, desde tu repositorio de paquetes, de la misma forma que instalaste ruby.
|
|
300
381
|
<br>
|
|
301
382
|
<br>
|
|
302
|
-
<code>sudo apt-get install build-essential libfox-1.6-dev</code><br>
|
|
383
|
+
<code>sudo apt-get install build-essential ruby-dev libfox-1.6-dev libxrandr-dev</code><br>
|
|
303
384
|
<br>
|
|
304
385
|
Después que tengas a ruby corriendo, instala IFMapper y sus dependencias con RubyGems:<br>
|
|
305
386
|
<br>
|
|
@@ -315,7 +396,7 @@ cardinales para navegar por el juego, es relativamente fácil perderse.&nb
|
|
|
315
396
|
Actualizando
|
|
316
397
|
</p>
|
|
317
398
|
<p>
|
|
318
|
-
Incluído con Ruby, <a href="https://rubygems.org">RubyGems</a> maneja
|
|
399
|
+
Incluído con Ruby, <a href="https://rubygems.org">RubyGems</a> maneja las bibliotecas de Ruby - puede instalar y actualizar cualquier dependencia que IFMapper necesite.<br>
|
|
319
400
|
<br>
|
|
320
401
|
Una vez que IFMapper está instalado por RubyGems, usted puede actualizarlo a la ultima version corriendo este comando:<br>
|
|
321
402
|
<br>
|
|
@@ -354,7 +435,7 @@ cardinales para navegar por el juego, es relativamente fácil perderse.&nb
|
|
|
354
435
|
|
|
355
436
|
<p>
|
|
356
437
|
<img src="../images/IFMapper_main.gif" border="0" height="600" width="800" alt="IFMapper main user interface"></p>
|
|
357
|
-
<p>La interfaz de IFMapper consiste de un menu que permite acceder a operaciones comunes (cargar/
|
|
438
|
+
<p>La interfaz de IFMapper consiste de un menu que permite acceder a operaciones comunes (cargar/grabar mapas, cambiar seteos, etc), una barra de herramientas con funcionalidad similar, y una o más ventanas mostrando una página de un mapa.</p>
|
|
358
439
|
|
|
359
440
|
<p>IFMapper te permite editar multiples
|
|
360
441
|
mapas simultáneamente.<br>
|
|
@@ -8,6 +8,8 @@ begin
|
|
|
8
8
|
rescue LoadError
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
+
load "IFMapper.gemspec"
|
|
12
|
+
|
|
11
13
|
def no_fox
|
|
12
14
|
require "IFMapper/locales/en/Messages.rb"
|
|
13
15
|
$stderr.puts ERR_NO_FOX
|
|
@@ -20,7 +22,7 @@ end
|
|
|
20
22
|
def get_fox
|
|
21
23
|
##### ARRRGH!!!! Why does Lyle keep changing the fxruby name on each
|
|
22
24
|
##### release!
|
|
23
|
-
foxes = [ 'fox16', 'fox14', 'fox12', 'fox' ]
|
|
25
|
+
foxes = [ 'fox18', 'fox17', 'fox16', 'fox14', 'fox12', 'fox' ]
|
|
24
26
|
foxes.each { |fox|
|
|
25
27
|
begin
|
|
26
28
|
require "#{fox}"
|
|
@@ -30,7 +32,7 @@ def get_fox
|
|
|
30
32
|
no_fox if fox == foxes[-1]
|
|
31
33
|
end
|
|
32
34
|
}
|
|
33
|
-
|
|
35
|
+
|
|
34
36
|
# verify fxruby version
|
|
35
37
|
ver, rev, = Fox::fxrubyversion().split('.')
|
|
36
38
|
no_fox if ver.to_i < 1 or rev.to_i < 2
|
|
@@ -40,7 +42,6 @@ end
|
|
|
40
42
|
get_fox
|
|
41
43
|
include Fox
|
|
42
44
|
|
|
43
|
-
load "IFMapper.gemspec"
|
|
44
45
|
require 'IFMapper/FXMap'
|
|
45
46
|
require 'IFMapper/FXMapperSettings'
|
|
46
47
|
require 'IFMapper/FXWarningBox'
|
|
@@ -185,8 +186,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
185
186
|
# First, make sure we don't have it loaded already...
|
|
186
187
|
@maps.each { |m|
|
|
187
188
|
if m.filename == file
|
|
188
|
-
|
|
189
|
-
|
|
189
|
+
@mdiclient.setActiveChild(m.window)
|
|
190
|
+
return
|
|
190
191
|
end
|
|
191
192
|
}
|
|
192
193
|
|
|
@@ -196,10 +197,10 @@ class FXMapperWindow < FXMainWindow
|
|
|
196
197
|
make_new_map = false
|
|
197
198
|
if @maps.size == 1
|
|
198
199
|
@maps[0].sections.each { |p|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
200
|
+
if p.rooms.size != 0
|
|
201
|
+
make_new_map = true
|
|
202
|
+
break
|
|
203
|
+
end
|
|
203
204
|
}
|
|
204
205
|
else
|
|
205
206
|
make_new_map = true
|
|
@@ -229,20 +230,20 @@ class FXMapperWindow < FXMainWindow
|
|
|
229
230
|
|
|
230
231
|
if not tmp.kind_of?(Map) and not tmp.kind_of?(FXMap)
|
|
231
232
|
$stderr.puts tmp
|
|
232
|
-
w = FXWarningBox.new( self,
|
|
233
|
-
|
|
233
|
+
w = FXWarningBox.new( self,
|
|
234
|
+
"#{tmp}")
|
|
234
235
|
w.execute
|
|
235
|
-
status "#{ERR_COULD_NOT_LOAD} '#{file}'."
|
|
236
|
+
status "#{ERR_COULD_NOT_LOAD} '#{file}'."
|
|
236
237
|
if make_new_map
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
238
|
+
if map.close_cb
|
|
239
|
+
@maps.delete(map)
|
|
240
|
+
GC.start
|
|
241
|
+
end
|
|
241
242
|
end
|
|
242
243
|
sleep 2
|
|
243
244
|
return
|
|
244
245
|
end
|
|
245
|
-
|
|
246
|
+
|
|
246
247
|
copy_map(map, tmp, file)
|
|
247
248
|
end
|
|
248
249
|
|
|
@@ -308,7 +309,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
308
309
|
#
|
|
309
310
|
def language_cb(sender, msg, opts)
|
|
310
311
|
@@default_options['Language'] = LANGUAGES[sender.text]
|
|
311
|
-
|
|
312
|
+
|
|
312
313
|
require "IFMapper/locales/#{language}/Messages.rb"
|
|
313
314
|
recreate
|
|
314
315
|
end
|
|
@@ -319,19 +320,19 @@ class FXMapperWindow < FXMainWindow
|
|
|
319
320
|
def new_map
|
|
320
321
|
mapname = "#{MSG_EMPTY_MAP} \##{@maps.size+1}"
|
|
321
322
|
@maps.push( FXMap.new(mapname, @mdiclient, @@default_options.dup,
|
|
322
|
-
|
|
323
|
+
@mdiicon, @mdimenu, MDI_NORMAL, 0, 0, 790, 500) )
|
|
323
324
|
map = @maps[-1]
|
|
324
325
|
map.window.connect(SEL_PAINT) {
|
|
325
326
|
map.draw
|
|
326
327
|
}
|
|
327
328
|
map.window.connect(SEL_CLOSE) {
|
|
328
329
|
if map.close_cb
|
|
329
|
-
|
|
330
|
+
@maps.delete(map)
|
|
330
331
|
end
|
|
331
332
|
if @maps[-1]
|
|
332
|
-
|
|
333
|
+
@maps[-1].update_roomlist
|
|
333
334
|
else
|
|
334
|
-
|
|
335
|
+
FXMap::no_maps
|
|
335
336
|
end
|
|
336
337
|
}
|
|
337
338
|
|
|
@@ -381,7 +382,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
381
382
|
def printer_dialog(title = MSG_PRINT_MAP)
|
|
382
383
|
map = current_map
|
|
383
384
|
dlg = FXPrintDialog.new(self, title + " for #{map.name}")
|
|
384
|
-
dlg.printer.flags |= PRINT_DEST_PAPER
|
|
385
|
+
dlg.printer.flags |= PRINT_DEST_PAPER
|
|
385
386
|
return dlg.printer if dlg.execute != 0
|
|
386
387
|
return false
|
|
387
388
|
end
|
|
@@ -409,10 +410,10 @@ class FXMapperWindow < FXMainWindow
|
|
|
409
410
|
return unless map
|
|
410
411
|
|
|
411
412
|
require 'IFMapper/FXMapFileDialog'
|
|
412
|
-
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_IFM,
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
413
|
+
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_IFM,
|
|
414
|
+
[
|
|
415
|
+
FMT_IFM
|
|
416
|
+
])
|
|
416
417
|
map.export_ifm(d.filename) if d.filename != ''
|
|
417
418
|
end
|
|
418
419
|
|
|
@@ -424,10 +425,10 @@ class FXMapperWindow < FXMainWindow
|
|
|
424
425
|
return unless map
|
|
425
426
|
|
|
426
427
|
require 'IFMapper/FXMapFileDialog'
|
|
427
|
-
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TRIZBORT,
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
428
|
+
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TRIZBORT,
|
|
429
|
+
[
|
|
430
|
+
FMT_TRIZBORT
|
|
431
|
+
])
|
|
431
432
|
map.export_trizbort(d.filename) if d.filename != ''
|
|
432
433
|
end
|
|
433
434
|
|
|
@@ -439,10 +440,10 @@ class FXMapperWindow < FXMainWindow
|
|
|
439
440
|
return unless map
|
|
440
441
|
|
|
441
442
|
require 'IFMapper/FXMapFileDialog'
|
|
442
|
-
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM6,
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
443
|
+
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM6,
|
|
444
|
+
[
|
|
445
|
+
FMT_INFORM6,
|
|
446
|
+
])
|
|
446
447
|
map.export_inform( d.filename ) if d.filename != ''
|
|
447
448
|
end
|
|
448
449
|
|
|
@@ -454,10 +455,10 @@ class FXMapperWindow < FXMainWindow
|
|
|
454
455
|
return unless map
|
|
455
456
|
|
|
456
457
|
require 'IFMapper/FXMapFileDialog'
|
|
457
|
-
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM7,
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
458
|
+
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM7,
|
|
459
|
+
[
|
|
460
|
+
FMT_INFORM7,
|
|
461
|
+
])
|
|
461
462
|
map.export_inform7( d.filename ) if d.filename != ''
|
|
462
463
|
end
|
|
463
464
|
|
|
@@ -471,10 +472,10 @@ class FXMapperWindow < FXMainWindow
|
|
|
471
472
|
|
|
472
473
|
require 'IFMapper/TADSWriter'
|
|
473
474
|
require 'IFMapper/FXMapFileDialog'
|
|
474
|
-
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TADS,
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
475
|
+
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TADS,
|
|
476
|
+
[
|
|
477
|
+
FMT_TADS
|
|
478
|
+
])
|
|
478
479
|
map.export_tads( d.filename ) if d.filename != ''
|
|
479
480
|
end
|
|
480
481
|
|
|
@@ -492,15 +493,15 @@ class FXMapperWindow < FXMainWindow
|
|
|
492
493
|
w.execute
|
|
493
494
|
return
|
|
494
495
|
end
|
|
495
|
-
|
|
496
|
+
|
|
496
497
|
require 'IFMapper/FXSVGMapExporterOptionsDialogBox'
|
|
497
|
-
cmd = FXSVGMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_SVG,
|
|
498
|
+
cmd = FXSVGMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_SVG,
|
|
498
499
|
map).execute
|
|
499
500
|
|
|
500
501
|
return if cmd == 0
|
|
501
502
|
|
|
502
503
|
require 'IFMapper/FXMapFileDialog'
|
|
503
|
-
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_SVG,
|
|
504
|
+
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_SVG,
|
|
504
505
|
[
|
|
505
506
|
FMT_SVG
|
|
506
507
|
])
|
|
@@ -524,22 +525,22 @@ class FXMapperWindow < FXMainWindow
|
|
|
524
525
|
w.execute
|
|
525
526
|
return
|
|
526
527
|
end
|
|
527
|
-
|
|
528
|
+
|
|
528
529
|
# PRE: Let's ask for a page size and orientation for the PDF
|
|
529
530
|
# and whether the user wants to include location numbers
|
|
530
531
|
map.pdfpapersize = 0
|
|
531
532
|
map.pdflocationnos = 1
|
|
532
533
|
require 'IFMapper/FXPDFMapExporterOptionsDialogBox'
|
|
533
|
-
cmd = FXPDFMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_PDF,
|
|
534
|
+
cmd = FXPDFMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_PDF,
|
|
534
535
|
map).execute
|
|
535
536
|
|
|
536
537
|
return if cmd == 0
|
|
537
538
|
|
|
538
539
|
require 'IFMapper/FXMapFileDialog'
|
|
539
|
-
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_PDF,
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
540
|
+
d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_PDF,
|
|
541
|
+
[
|
|
542
|
+
FMT_PDF
|
|
543
|
+
])
|
|
543
544
|
if d.filename != ''
|
|
544
545
|
map.pdf_export(d.filename)
|
|
545
546
|
end
|
|
@@ -576,7 +577,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
576
577
|
@maps = []
|
|
577
578
|
|
|
578
579
|
@mdiclient = FXMDIClient.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
579
|
-
@mdiclient.connect(SEL_CHANGED) {
|
|
580
|
+
@mdiclient.connect(SEL_CHANGED) {
|
|
580
581
|
update_map
|
|
581
582
|
}
|
|
582
583
|
|
|
@@ -601,7 +602,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
601
602
|
end
|
|
602
603
|
|
|
603
604
|
#
|
|
604
|
-
# Return the copied elements
|
|
605
|
+
# Return the copied elements
|
|
605
606
|
#
|
|
606
607
|
def self.copy_buffer
|
|
607
608
|
return @@copy_buffer
|
|
@@ -624,9 +625,9 @@ class FXMapperWindow < FXMainWindow
|
|
|
624
625
|
# those rooms we selected
|
|
625
626
|
delete = []
|
|
626
627
|
links.each { |c|
|
|
627
|
-
if not rooms.include?(c.roomA) or
|
|
628
|
-
|
|
629
|
-
|
|
628
|
+
if not rooms.include?(c.roomA) or
|
|
629
|
+
(c.roomB and not rooms.include?(c.roomB))
|
|
630
|
+
delete << c
|
|
630
631
|
end
|
|
631
632
|
}
|
|
632
633
|
links -= delete
|
|
@@ -665,52 +666,52 @@ class FXMapperWindow < FXMainWindow
|
|
|
665
666
|
r_to_nr = {} # orig room to new room hash
|
|
666
667
|
rooms = sel[0]
|
|
667
668
|
rooms.each { |r|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
669
|
+
nr = map.new_room(r.x + pos[0], r.y + pos[1])
|
|
670
|
+
nr.selected = true
|
|
671
|
+
nr.copy(r) # copy the room data
|
|
672
|
+
r_to_nr[r] = nr
|
|
672
673
|
}
|
|
673
674
|
|
|
674
675
|
if rooms.empty?
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
676
|
+
# Add connections only (no rooms copied)
|
|
677
|
+
sel[1].each { |c|
|
|
678
|
+
exitA, exitB = c.dirs
|
|
679
|
+
roomA = c.roomA
|
|
680
|
+
roomB = c.roomB
|
|
681
|
+
sect = map.sections[map.section]
|
|
682
|
+
if not sect.rooms.include?(roomA) or
|
|
683
|
+
(roomB and not sect.rooms.include?(roomB))
|
|
684
|
+
next
|
|
685
|
+
end
|
|
686
|
+
begin
|
|
687
|
+
nc = map.new_connection(roomA, exitA, roomB, exitB)
|
|
688
|
+
nc.selected = true
|
|
689
|
+
nc.dir = c.dir
|
|
690
|
+
nc.type = c.type
|
|
691
|
+
rescue
|
|
692
|
+
end
|
|
693
|
+
}
|
|
693
694
|
else
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
695
|
+
# Add connections
|
|
696
|
+
sel[1].each { |c|
|
|
697
|
+
exitA, exitB = c.dirs
|
|
698
|
+
roomA = r_to_nr[c.roomA]
|
|
699
|
+
if c.roomB
|
|
700
|
+
roomB = r_to_nr[c.roomB]
|
|
701
|
+
else
|
|
702
|
+
roomB = nil
|
|
703
|
+
end
|
|
704
|
+
next if not roomA
|
|
705
|
+
begin
|
|
706
|
+
nc = map.new_connection(roomA, exitA, roomB, exitB)
|
|
707
|
+
nc.selected = true
|
|
708
|
+
nc.dir = c.dir
|
|
709
|
+
nc.type = c.type
|
|
710
|
+
rescue Section::ConnectionError => e
|
|
711
|
+
puts c
|
|
712
|
+
puts e
|
|
713
|
+
end
|
|
714
|
+
}
|
|
714
715
|
end
|
|
715
716
|
|
|
716
717
|
map.create_pathmap
|
|
@@ -756,7 +757,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
756
757
|
s.rooms.each { |r| r.selected = false }
|
|
757
758
|
}
|
|
758
759
|
|
|
759
|
-
matches.each { |p, r|
|
|
760
|
+
matches.each { |p, r|
|
|
760
761
|
next if p != map.section
|
|
761
762
|
r.selected = true
|
|
762
763
|
}
|
|
@@ -781,8 +782,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
781
782
|
matches = []
|
|
782
783
|
(0...map.sections.size).each { |p|
|
|
783
784
|
map.sections[p].rooms.each { |r|
|
|
784
|
-
|
|
785
|
-
|
|
785
|
+
next unless r.name =~ re
|
|
786
|
+
matches.push( [p, r] )
|
|
786
787
|
}
|
|
787
788
|
}
|
|
788
789
|
idx = @search.index
|
|
@@ -850,8 +851,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
850
851
|
matches = []
|
|
851
852
|
(0...map.sections.size).each { |p|
|
|
852
853
|
map.sections[p].rooms.each { |r|
|
|
853
|
-
|
|
854
|
-
|
|
854
|
+
next unless r.objects =~ re
|
|
855
|
+
matches.push( [p, r] )
|
|
855
856
|
}
|
|
856
857
|
}
|
|
857
858
|
idx = @search.index
|
|
@@ -870,8 +871,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
870
871
|
matches = []
|
|
871
872
|
(0...map.sections.size).each { |p|
|
|
872
873
|
map.sections[p].rooms.each { |r|
|
|
873
|
-
|
|
874
|
-
|
|
874
|
+
next unless r.tasks =~ re
|
|
875
|
+
matches.push( [p, r] )
|
|
875
876
|
}
|
|
876
877
|
}
|
|
877
878
|
idx = @search.index
|
|
@@ -926,8 +927,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
926
927
|
matches = []
|
|
927
928
|
(0...map.sections.size).each { |p|
|
|
928
929
|
map.sections[p].rooms.each { |r|
|
|
929
|
-
|
|
930
|
-
|
|
930
|
+
next unless r.desc =~ re
|
|
931
|
+
matches.push( [p, r] )
|
|
931
932
|
}
|
|
932
933
|
}
|
|
933
934
|
idx = @search.index
|
|
@@ -1003,8 +1004,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1003
1004
|
|
|
1004
1005
|
def about_cb(sender, id, event )
|
|
1005
1006
|
require 'IFMapper/FXAboutDialogBox'
|
|
1006
|
-
FXAboutDialogBox.new(self, MSG_ABOUT_SOFTWARE,
|
|
1007
|
-
|
|
1007
|
+
FXAboutDialogBox.new(self, MSG_ABOUT_SOFTWARE,
|
|
1008
|
+
eval("\"#{MSG_ABOUT}\"")).execute
|
|
1008
1009
|
end
|
|
1009
1010
|
|
|
1010
1011
|
|
|
@@ -1026,7 +1027,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
1026
1027
|
cmd = FXMenuCommand.new(filemenu, MENU_SAVE, savedoc)
|
|
1027
1028
|
cmd.connect(SEL_COMMAND, method(:save_cb))
|
|
1028
1029
|
cmd = FXMenuCommand.new(filemenu, MENU_SAVE_AS,
|
|
1029
|
-
|
|
1030
|
+
saveasdoc)
|
|
1030
1031
|
cmd.connect(SEL_COMMAND, method(:save_as_cb))
|
|
1031
1032
|
|
|
1032
1033
|
# Export submenu
|
|
@@ -1034,7 +1035,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
1034
1035
|
|
|
1035
1036
|
cmd = FXMenuCommand.new(submenu, MENU_EXPORT_PDF, nil)
|
|
1036
1037
|
cmd.connect(SEL_COMMAND, method(:pdf_export_cb))
|
|
1037
|
-
|
|
1038
|
+
|
|
1038
1039
|
cmd = FXMenuCommand.new(submenu, MENU_EXPORT_SVG, nil)
|
|
1039
1040
|
cmd.connect(SEL_COMMAND, method(:svg_export_cb))
|
|
1040
1041
|
|
|
@@ -1074,9 +1075,9 @@ class FXMapperWindow < FXMainWindow
|
|
|
1074
1075
|
cmd.connect(SEL_COMMAND, method(:copy_selected_cb))
|
|
1075
1076
|
cmd = FXMenuCommand.new(editmenu, MENU_CUT, nil)
|
|
1076
1077
|
cmd.connect(SEL_COMMAND, method(:cut_selected_cb))
|
|
1077
|
-
cmd = FXMenuCommand.new(editmenu, MENU_PASTE, nil)
|
|
1078
|
+
cmd = FXMenuCommand.new(editmenu, MENU_PASTE, nil)
|
|
1078
1079
|
cmd.connect(SEL_COMMAND, method(:paste_selected_cb))
|
|
1079
|
-
#cmd = FXMenuCommand.new(editmenu, MENU_UNDO, nil)
|
|
1080
|
+
#cmd = FXMenuCommand.new(editmenu, MENU_UNDO, nil)
|
|
1080
1081
|
#cmd.connect(SEL_COMMAND, method(:undo_cb))
|
|
1081
1082
|
|
|
1082
1083
|
# Select submenu
|
|
@@ -1139,55 +1140,55 @@ class FXMapperWindow < FXMainWindow
|
|
|
1139
1140
|
# Sections submenu
|
|
1140
1141
|
submenu = FXMenuPane.new(self)
|
|
1141
1142
|
cmd = FXMenuCommand.new(submenu, MENU_NEXT_SECTION)
|
|
1142
|
-
cmd.connect(SEL_COMMAND) {
|
|
1143
|
+
cmd.connect(SEL_COMMAND) {
|
|
1143
1144
|
next_section
|
|
1144
1145
|
}
|
|
1145
1146
|
cmd = FXMenuCommand.new(submenu, MENU_PREVIOUS_SECTION)
|
|
1146
|
-
cmd.connect(SEL_COMMAND) {
|
|
1147
|
+
cmd.connect(SEL_COMMAND) {
|
|
1147
1148
|
previous_section
|
|
1148
1149
|
}
|
|
1149
1150
|
FXMenuSeparator.new(submenu)
|
|
1150
1151
|
cmd = FXMenuCommand.new(submenu, MENU_ADD_SECTION)
|
|
1151
|
-
cmd.connect(SEL_COMMAND) {
|
|
1152
|
+
cmd.connect(SEL_COMMAND) {
|
|
1152
1153
|
map = current_map
|
|
1153
1154
|
if map
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1155
|
+
map.new_section
|
|
1156
|
+
map.modified = true
|
|
1157
|
+
update_section
|
|
1157
1158
|
end
|
|
1158
1159
|
}
|
|
1159
1160
|
cmd = FXMenuCommand.new(submenu, MENU_SECTION_INFO)
|
|
1160
|
-
cmd.connect(SEL_COMMAND) {
|
|
1161
|
+
cmd.connect(SEL_COMMAND) {
|
|
1161
1162
|
map = current_map
|
|
1162
1163
|
if map
|
|
1163
|
-
|
|
1164
|
-
|
|
1164
|
+
map.rename_section
|
|
1165
|
+
map.modified = true
|
|
1165
1166
|
end
|
|
1166
1167
|
}
|
|
1167
1168
|
FXMenuSeparator.new(submenu)
|
|
1168
1169
|
cmd = FXMenuCommand.new(submenu, MENU_DELETE_SECTION)
|
|
1169
|
-
cmd.connect(SEL_COMMAND) {
|
|
1170
|
+
cmd.connect(SEL_COMMAND) {
|
|
1170
1171
|
map = current_map
|
|
1171
1172
|
if map
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1173
|
+
map.delete_section
|
|
1174
|
+
map.modified = true
|
|
1175
|
+
update_section
|
|
1175
1176
|
end
|
|
1176
1177
|
}
|
|
1177
1178
|
FXMenuCascade.new(mapmenu, MENU_SECTIONS, nil, submenu)
|
|
1178
|
-
|
|
1179
|
+
|
|
1179
1180
|
#
|
|
1180
1181
|
# Zoom submenu
|
|
1181
1182
|
#
|
|
1182
1183
|
submenu = FXMenuPane.new(self)
|
|
1183
|
-
[25, 50, 75, 100, 125].each { |v|
|
|
1184
|
+
[25, 50, 75, 100, 125].each { |v|
|
|
1184
1185
|
cmd = FXMenuCommand.new(submenu, eval("\"#{MENU_ZOOM_PERCENT}\""))
|
|
1185
|
-
cmd.connect(SEL_COMMAND) {
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1186
|
+
cmd.connect(SEL_COMMAND) {
|
|
1187
|
+
map = current_map
|
|
1188
|
+
if map
|
|
1189
|
+
map.zoom = v / 100.0
|
|
1190
|
+
map.draw
|
|
1191
|
+
end
|
|
1191
1192
|
}
|
|
1192
1193
|
}
|
|
1193
1194
|
FXMenuCascade.new(mapmenu, MENU_ZOOM, nil, submenu)
|
|
@@ -1199,7 +1200,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
1199
1200
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1200
1201
|
map = current_map
|
|
1201
1202
|
if map
|
|
1202
|
-
|
|
1203
|
+
map.options['Edit on Creation'] = (s.check == true)
|
|
1203
1204
|
end
|
|
1204
1205
|
}
|
|
1205
1206
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1212,7 +1213,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
1212
1213
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1213
1214
|
map = current_map
|
|
1214
1215
|
if map
|
|
1215
|
-
|
|
1216
|
+
map.options['Automatic Connection'] = (s.check == true)
|
|
1216
1217
|
end
|
|
1217
1218
|
}
|
|
1218
1219
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1242,8 +1243,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1242
1243
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1243
1244
|
map = current_map
|
|
1244
1245
|
if map
|
|
1245
|
-
|
|
1246
|
-
|
|
1246
|
+
map.options['Use Room Cursor'] = (s.check == true)
|
|
1247
|
+
map.draw
|
|
1247
1248
|
end
|
|
1248
1249
|
}
|
|
1249
1250
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1256,8 +1257,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1256
1257
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1257
1258
|
map = current_map
|
|
1258
1259
|
if map
|
|
1259
|
-
|
|
1260
|
-
|
|
1260
|
+
map.options['Paths as Curves'] = (s.check == true)
|
|
1261
|
+
map.draw
|
|
1261
1262
|
end
|
|
1262
1263
|
}
|
|
1263
1264
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1269,8 +1270,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1269
1270
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1270
1271
|
map = current_map
|
|
1271
1272
|
if map
|
|
1272
|
-
|
|
1273
|
-
|
|
1273
|
+
map.options['Location Numbers'] = (s.check == true)
|
|
1274
|
+
map.draw
|
|
1274
1275
|
end
|
|
1275
1276
|
}
|
|
1276
1277
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1283,8 +1284,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1283
1284
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1284
1285
|
map = current_map
|
|
1285
1286
|
if map
|
|
1286
|
-
|
|
1287
|
-
|
|
1287
|
+
map.options['Location Tasks'] = (s.check == true)
|
|
1288
|
+
map.draw
|
|
1288
1289
|
end
|
|
1289
1290
|
}
|
|
1290
1291
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1297,8 +1298,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1297
1298
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1298
1299
|
map = current_map
|
|
1299
1300
|
if map
|
|
1300
|
-
|
|
1301
|
-
|
|
1301
|
+
map.options['Location Description'] = (s.check == true)
|
|
1302
|
+
map.draw
|
|
1302
1303
|
end
|
|
1303
1304
|
}
|
|
1304
1305
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1311,8 +1312,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1311
1312
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1312
1313
|
map = current_map
|
|
1313
1314
|
if map
|
|
1314
|
-
|
|
1315
|
-
|
|
1315
|
+
map.options['Grid Boxes'] = (s.check == true)
|
|
1316
|
+
map.draw
|
|
1316
1317
|
end
|
|
1317
1318
|
}
|
|
1318
1319
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1325,8 +1326,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1325
1326
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1326
1327
|
map = current_map
|
|
1327
1328
|
if map
|
|
1328
|
-
|
|
1329
|
-
|
|
1329
|
+
map.options['Grid Straight Connections'] = (s.check == true)
|
|
1330
|
+
map.draw
|
|
1330
1331
|
end
|
|
1331
1332
|
}
|
|
1332
1333
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1339,8 +1340,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1339
1340
|
cmd.connect(SEL_COMMAND) { |s, m, e|
|
|
1340
1341
|
map = current_map
|
|
1341
1342
|
if map
|
|
1342
|
-
|
|
1343
|
-
|
|
1343
|
+
map.options['Grid Diagonal Connections'] = s.check
|
|
1344
|
+
map.draw
|
|
1344
1345
|
end
|
|
1345
1346
|
}
|
|
1346
1347
|
cmd.connect(SEL_UPDATE) { |s, m, e|
|
|
@@ -1363,11 +1364,11 @@ class FXMapperWindow < FXMainWindow
|
|
|
1363
1364
|
# }
|
|
1364
1365
|
|
|
1365
1366
|
# FXMenuCascade.new(mapmenu, MENU_LANGUAGE, nil, langmenu)
|
|
1366
|
-
|
|
1367
|
+
|
|
1367
1368
|
|
|
1368
1369
|
FXMenuSeparator.new(submenu)
|
|
1369
1370
|
cmd = FXMenuCommand.new(submenu, MENU_SAVE_PREFS)
|
|
1370
|
-
cmd.connect(SEL_COMMAND) {
|
|
1371
|
+
cmd.connect(SEL_COMMAND) {
|
|
1371
1372
|
map = current_map
|
|
1372
1373
|
map.options.write if map
|
|
1373
1374
|
}
|
|
@@ -1392,8 +1393,8 @@ class FXMapperWindow < FXMainWindow
|
|
|
1392
1393
|
FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_2)
|
|
1393
1394
|
FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_3)
|
|
1394
1395
|
FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_4)
|
|
1395
|
-
FXMenuCommand.new(windowmenu, MENU_OTHERS, nil, @mdiclient,
|
|
1396
|
-
|
|
1396
|
+
FXMenuCommand.new(windowmenu, MENU_OTHERS, nil, @mdiclient,
|
|
1397
|
+
FXMDIClient::ID_MDI_OVER_5)
|
|
1397
1398
|
FXMenuTitle.new(@menubar, MENU_WINDOW, nil, windowmenu)
|
|
1398
1399
|
|
|
1399
1400
|
# Help menu
|
|
@@ -1409,14 +1410,14 @@ class FXMapperWindow < FXMainWindow
|
|
|
1409
1410
|
cmd = FXMenuCommand.new(helpmenu, MENU_RESOURCE, nil)
|
|
1410
1411
|
cmd.connect(SEL_COMMAND) {
|
|
1411
1412
|
require 'IFMapper/FXMapFileDialog'
|
|
1412
|
-
file = FXMapFileDialog.new(self, "Resource a Ruby File",
|
|
1413
|
-
|
|
1413
|
+
file = FXMapFileDialog.new(self, "Resource a Ruby File",
|
|
1414
|
+
['Ruby File (*.rb)']).filename
|
|
1414
1415
|
if file != ''
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1416
|
+
begin
|
|
1417
|
+
Kernel.load file
|
|
1418
|
+
rescue => e
|
|
1419
|
+
p e
|
|
1420
|
+
end
|
|
1420
1421
|
end
|
|
1421
1422
|
}
|
|
1422
1423
|
FXMenuTitle.new(@menubar, MENU_HELP, nil, helpmenu)
|
|
@@ -1456,7 +1457,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
1456
1457
|
|
|
1457
1458
|
# File manipulation
|
|
1458
1459
|
cmd = FXButton.new(toolbar, ICON_NEW, newdoc, nil, 0,
|
|
1459
|
-
|
|
1460
|
+
FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
|
|
1460
1461
|
cmd.connect(SEL_COMMAND, method(:new_map_cb))
|
|
1461
1462
|
|
|
1462
1463
|
cmd = FXButton.new(toolbar, ICON_OPEN, opendoc, nil, 0,
|
|
@@ -1484,15 +1485,15 @@ class FXMapperWindow < FXMainWindow
|
|
|
1484
1485
|
FXFrame.new(toolbar,
|
|
1485
1486
|
LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, 0, 0, 4, 20)
|
|
1486
1487
|
cmd = FXButton.new(toolbar, ICON_PRINT,
|
|
1487
|
-
|
|
1488
|
-
|
|
1488
|
+
load_icon("printicon"), @mdiclient, FXGLViewer::ID_PRINT_IMAGE,
|
|
1489
|
+
BUTTON_AUTOGRAY|FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
|
|
1489
1490
|
cmd.connect(SEL_COMMAND, method(:print_cb))
|
|
1490
1491
|
cmd.connect(SEL_UPDATE) { |sender, sel, ptr|
|
|
1491
1492
|
map = current_map
|
|
1492
1493
|
message = map ? FXWindow::ID_ENABLE : FXWindow::ID_DISABLE
|
|
1493
1494
|
sender.handle(self, MKUINT(message, SEL_COMMAND), nil)
|
|
1494
1495
|
}
|
|
1495
|
-
|
|
1496
|
+
|
|
1496
1497
|
# Editing
|
|
1497
1498
|
FXFrame.new(toolbar,
|
|
1498
1499
|
LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, 0, 0, 4, 20)
|
|
@@ -1528,43 +1529,43 @@ class FXMapperWindow < FXMainWindow
|
|
|
1528
1529
|
FXFrame.new(toolbar,
|
|
1529
1530
|
LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, 0, 0, 4, 20)
|
|
1530
1531
|
cmd = FXButton.new(toolbar, ICON_ZOOM_IN, load_icon("zoom"), @mdiclient,
|
|
1531
|
-
|
|
1532
|
+
0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
|
|
1532
1533
|
cmd.connect(SEL_COMMAND) { zoom_in }
|
|
1533
1534
|
|
|
1534
|
-
cmd = FXButton.new(toolbar, ICON_ZOOM_OUT, load_icon("zoom"), @mdiclient,
|
|
1535
|
-
|
|
1535
|
+
cmd = FXButton.new(toolbar, ICON_ZOOM_OUT, load_icon("zoom"), @mdiclient,
|
|
1536
|
+
0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
|
|
1536
1537
|
cmd.connect(SEL_COMMAND) { zoom_out }
|
|
1537
1538
|
|
|
1538
1539
|
|
|
1539
1540
|
# Section travel
|
|
1540
1541
|
frame = FXHorizontalFrame.new(toolbar,
|
|
1541
|
-
|
|
1542
|
-
cmd = FXButton.new(frame, ICON_PREV_SECTION, load_icon("prevpage"),
|
|
1543
|
-
|
|
1544
|
-
|
|
1542
|
+
LAYOUT_RIGHT|FRAME_THICK|FRAME_RAISED)
|
|
1543
|
+
cmd = FXButton.new(frame, ICON_PREV_SECTION, load_icon("prevpage"),
|
|
1544
|
+
@mdiclient,
|
|
1545
|
+
0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
|
|
1545
1546
|
cmd.connect(SEL_COMMAND) { previous_section }
|
|
1546
1547
|
|
|
1547
|
-
@section = FXTextField.new(frame, 5, nil, 0,
|
|
1548
|
-
|
|
1548
|
+
@section = FXTextField.new(frame, 5, nil, 0,
|
|
1549
|
+
TEXTFIELD_INTEGER|LAYOUT_FILL_ROW)
|
|
1549
1550
|
@section.text = '1'
|
|
1550
|
-
@section.connect(SEL_COMMAND) { |s,m,e|
|
|
1551
|
+
@section.connect(SEL_COMMAND) { |s,m,e|
|
|
1551
1552
|
v = s.text.to_i
|
|
1552
1553
|
map = current_map
|
|
1553
1554
|
if map
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1555
|
+
map.section = v - 1
|
|
1556
|
+
map.draw
|
|
1557
|
+
update_section
|
|
1557
1558
|
end
|
|
1558
1559
|
}
|
|
1559
|
-
@section.connect(SEL_UPDATE) { |s,m,e|
|
|
1560
|
+
@section.connect(SEL_UPDATE) { |s,m,e|
|
|
1560
1561
|
map = current_map
|
|
1561
1562
|
update_section if map
|
|
1562
1563
|
}
|
|
1563
1564
|
|
|
1564
|
-
cmd = FXButton.new(frame, ICON_NEXT_SECTION, load_icon("nextpage"),
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
cmd.connect(SEL_COMMAND) { next_section }
|
|
1565
|
+
cmd = FXButton.new(frame, ICON_NEXT_SECTION, load_icon("nextpage"),
|
|
1566
|
+
@mdiclient,
|
|
1567
|
+
0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
|
|
1568
|
+
cmd.connect(SEL_COMMAND) { next_section }
|
|
1568
1569
|
end
|
|
1569
1570
|
|
|
1570
1571
|
#
|
|
@@ -1588,7 +1589,7 @@ class FXMapperWindow < FXMainWindow
|
|
|
1588
1589
|
#
|
|
1589
1590
|
# Go to previous section in current map
|
|
1590
1591
|
#
|
|
1591
|
-
def previous_section
|
|
1592
|
+
def previous_section
|
|
1592
1593
|
map = current_map
|
|
1593
1594
|
map.previous_section if map
|
|
1594
1595
|
update_section
|
|
@@ -1640,20 +1641,20 @@ class FXMapperWindow < FXMainWindow
|
|
|
1640
1641
|
@menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
|
|
1641
1642
|
|
|
1642
1643
|
FXHorizontalSeparator.new(self,
|
|
1643
|
-
|
|
1644
|
+
LAYOUT_SIDE_TOP|SEPARATOR_GROOVE|LAYOUT_FILL_X)
|
|
1644
1645
|
toolbar = FXToolBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X,
|
|
1645
1646
|
0, 0, 0, 0, 4, 4, 0, 0, 0, 0)
|
|
1646
|
-
|
|
1647
|
+
|
|
1647
1648
|
# Status bar
|
|
1648
1649
|
@statusbar = FXStatusBar.new(self,
|
|
1649
|
-
|
|
1650
|
-
|
|
1650
|
+
LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|
|
|
1651
|
+
STATUSBAR_WITH_DRAGCORNER)
|
|
1651
1652
|
|
|
1652
1653
|
|
|
1653
1654
|
create_mdiclient
|
|
1654
1655
|
create_menus
|
|
1655
1656
|
create_toolbar(toolbar)
|
|
1656
|
-
|
|
1657
|
+
|
|
1657
1658
|
|
|
1658
1659
|
self.connect(SEL_CLOSE, method(:close_cb))
|
|
1659
1660
|
show
|
|
@@ -1663,13 +1664,13 @@ class FXMapperWindow < FXMainWindow
|
|
|
1663
1664
|
|
|
1664
1665
|
def initialize(app)
|
|
1665
1666
|
super(app, eval("\"#{TITLE}\""), nil, nil, DECOR_ALL, 0, 0, 800, 600)
|
|
1666
|
-
|
|
1667
|
+
|
|
1667
1668
|
@colors = nil
|
|
1668
1669
|
@mdimenu = nil
|
|
1669
1670
|
@search = nil
|
|
1670
1671
|
|
|
1671
1672
|
create_widgets
|
|
1672
|
-
|
|
1673
|
+
|
|
1673
1674
|
|
|
1674
1675
|
# Trap CTRL-C signals and exit nicely
|
|
1675
1676
|
trap('SIGINT') {
|
|
@@ -1680,13 +1681,13 @@ class FXMapperWindow < FXMainWindow
|
|
|
1680
1681
|
|
|
1681
1682
|
def close_cb(*args)
|
|
1682
1683
|
exit = true
|
|
1683
|
-
@maps.each { |m|
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1684
|
+
@maps.each { |m|
|
|
1685
|
+
if not m.close_cb
|
|
1686
|
+
exit = false
|
|
1687
|
+
break
|
|
1688
|
+
else
|
|
1689
|
+
@maps.delete(m)
|
|
1690
|
+
end
|
|
1690
1691
|
}
|
|
1691
1692
|
self.close if exit
|
|
1692
1693
|
end
|