ifmapper 2.0.9 → 2.2.4

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.
Binary file
@@ -1,6 +1,6 @@
1
1
 
2
2
  begin
3
- if RUBY_VERSION.to_f < 1.9
3
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('1.9.0')
4
4
  require 'iconv'
5
5
  end
6
6
  rescue LoadError
@@ -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'
@@ -58,9 +59,6 @@ end
58
59
 
59
60
  class FXMapperWindow < FXMainWindow
60
61
 
61
- PROGRAM_NAME = "Interactive Fiction Mapper"
62
- AUTHOR = "Gonzalo Garramuno"
63
-
64
62
  @@copy_buffer = nil
65
63
  @@default_options = FXMapperSettings.new
66
64
 
@@ -188,8 +186,8 @@ class FXMapperWindow < FXMainWindow
188
186
  # First, make sure we don't have it loaded already...
189
187
  @maps.each { |m|
190
188
  if m.filename == file
191
- @mdiclient.setActiveChild(m.window)
192
- return
189
+ @mdiclient.setActiveChild(m.window)
190
+ return
193
191
  end
194
192
  }
195
193
 
@@ -199,10 +197,10 @@ class FXMapperWindow < FXMainWindow
199
197
  make_new_map = false
200
198
  if @maps.size == 1
201
199
  @maps[0].sections.each { |p|
202
- if p.rooms.size != 0
203
- make_new_map = true
204
- break
205
- end
200
+ if p.rooms.size != 0
201
+ make_new_map = true
202
+ break
203
+ end
206
204
  }
207
205
  else
208
206
  make_new_map = true
@@ -232,20 +230,20 @@ class FXMapperWindow < FXMainWindow
232
230
 
233
231
  if not tmp.kind_of?(Map) and not tmp.kind_of?(FXMap)
234
232
  $stderr.puts tmp
235
- w = FXWarningBox.new( self,
236
- "#{tmp}")
233
+ w = FXWarningBox.new( self,
234
+ "#{tmp}")
237
235
  w.execute
238
- status "#{ERR_COULD_NOT_LOAD} '#{file}'."
236
+ status "#{ERR_COULD_NOT_LOAD} '#{file}'."
239
237
  if make_new_map
240
- if map.close_cb
241
- @maps.delete(map)
242
- GC.start
243
- end
238
+ if map.close_cb
239
+ @maps.delete(map)
240
+ GC.start
241
+ end
244
242
  end
245
243
  sleep 2
246
244
  return
247
245
  end
248
-
246
+
249
247
  copy_map(map, tmp, file)
250
248
  end
251
249
 
@@ -311,7 +309,7 @@ class FXMapperWindow < FXMainWindow
311
309
  #
312
310
  def language_cb(sender, msg, opts)
313
311
  @@default_options['Language'] = LANGUAGES[sender.text]
314
-
312
+
315
313
  require "IFMapper/locales/#{language}/Messages.rb"
316
314
  recreate
317
315
  end
@@ -322,19 +320,19 @@ class FXMapperWindow < FXMainWindow
322
320
  def new_map
323
321
  mapname = "#{MSG_EMPTY_MAP} \##{@maps.size+1}"
324
322
  @maps.push( FXMap.new(mapname, @mdiclient, @@default_options.dup,
325
- @mdiicon, @mdimenu, MDI_NORMAL, 0, 0, 790, 500) )
323
+ @mdiicon, @mdimenu, MDI_NORMAL, 0, 0, 790, 500) )
326
324
  map = @maps[-1]
327
325
  map.window.connect(SEL_PAINT) {
328
326
  map.draw
329
327
  }
330
328
  map.window.connect(SEL_CLOSE) {
331
329
  if map.close_cb
332
- @maps.delete(map)
330
+ @maps.delete(map)
333
331
  end
334
332
  if @maps[-1]
335
- @maps[-1].update_roomlist
333
+ @maps[-1].update_roomlist
336
334
  else
337
- FXMap::no_maps
335
+ FXMap::no_maps
338
336
  end
339
337
  }
340
338
 
@@ -384,7 +382,7 @@ class FXMapperWindow < FXMainWindow
384
382
  def printer_dialog(title = MSG_PRINT_MAP)
385
383
  map = current_map
386
384
  dlg = FXPrintDialog.new(self, title + " for #{map.name}")
387
- dlg.printer.flags |= PRINT_DEST_PAPER
385
+ dlg.printer.flags |= PRINT_DEST_PAPER
388
386
  return dlg.printer if dlg.execute != 0
389
387
  return false
390
388
  end
@@ -412,10 +410,10 @@ class FXMapperWindow < FXMainWindow
412
410
  return unless map
413
411
 
414
412
  require 'IFMapper/FXMapFileDialog'
415
- d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_IFM,
416
- [
417
- FMT_IFM
418
- ])
413
+ d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_IFM,
414
+ [
415
+ FMT_IFM
416
+ ])
419
417
  map.export_ifm(d.filename) if d.filename != ''
420
418
  end
421
419
 
@@ -427,10 +425,10 @@ class FXMapperWindow < FXMainWindow
427
425
  return unless map
428
426
 
429
427
  require 'IFMapper/FXMapFileDialog'
430
- d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TRIZBORT,
431
- [
432
- FMT_TRIZBORT
433
- ])
428
+ d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TRIZBORT,
429
+ [
430
+ FMT_TRIZBORT
431
+ ])
434
432
  map.export_trizbort(d.filename) if d.filename != ''
435
433
  end
436
434
 
@@ -442,10 +440,10 @@ class FXMapperWindow < FXMainWindow
442
440
  return unless map
443
441
 
444
442
  require 'IFMapper/FXMapFileDialog'
445
- d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM6,
446
- [
447
- FMT_INFORM6,
448
- ])
443
+ d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM6,
444
+ [
445
+ FMT_INFORM6,
446
+ ])
449
447
  map.export_inform( d.filename ) if d.filename != ''
450
448
  end
451
449
 
@@ -457,10 +455,10 @@ class FXMapperWindow < FXMainWindow
457
455
  return unless map
458
456
 
459
457
  require 'IFMapper/FXMapFileDialog'
460
- d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM7,
461
- [
462
- FMT_INFORM7,
463
- ])
458
+ d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_INFORM7,
459
+ [
460
+ FMT_INFORM7,
461
+ ])
464
462
  map.export_inform7( d.filename ) if d.filename != ''
465
463
  end
466
464
 
@@ -474,15 +472,15 @@ class FXMapperWindow < FXMainWindow
474
472
 
475
473
  require 'IFMapper/TADSWriter'
476
474
  require 'IFMapper/FXMapFileDialog'
477
- d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TADS,
478
- [
479
- FMT_TADS
480
- ])
475
+ d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_TADS,
476
+ [
477
+ FMT_TADS
478
+ ])
481
479
  map.export_tads( d.filename ) if d.filename != ''
482
480
  end
483
481
 
484
482
  #
485
- # Export current map as Structured Vector Graphics (SVG)
483
+ # Export current map as Scalable Vector Graphics (SVG)
486
484
  #
487
485
  def svg_export_cb(sender, sel, msg)
488
486
  map = current_map
@@ -495,15 +493,15 @@ class FXMapperWindow < FXMainWindow
495
493
  w.execute
496
494
  return
497
495
  end
498
-
496
+
499
497
  require 'IFMapper/FXSVGMapExporterOptionsDialogBox'
500
- cmd = FXSVGMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_SVG,
498
+ cmd = FXSVGMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_SVG,
501
499
  map).execute
502
500
 
503
501
  return if cmd == 0
504
502
 
505
503
  require 'IFMapper/FXMapFileDialog'
506
- d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_SVG,
504
+ d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_SVG,
507
505
  [
508
506
  FMT_SVG
509
507
  ])
@@ -527,22 +525,22 @@ class FXMapperWindow < FXMainWindow
527
525
  w.execute
528
526
  return
529
527
  end
530
-
528
+
531
529
  # PRE: Let's ask for a page size and orientation for the PDF
532
530
  # and whether the user wants to include location numbers
533
531
  map.pdfpapersize = 0
534
532
  map.pdflocationnos = 1
535
533
  require 'IFMapper/FXPDFMapExporterOptionsDialogBox'
536
- cmd = FXPDFMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_PDF,
534
+ cmd = FXPDFMapExporterOptionsDialogBox.new(self, MSG_SAVE_MAP_AS_PDF,
537
535
  map).execute
538
536
 
539
537
  return if cmd == 0
540
538
 
541
539
  require 'IFMapper/FXMapFileDialog'
542
- d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_PDF,
543
- [
544
- FMT_PDF
545
- ])
540
+ d = FXMapFileDialog.new(self, MSG_SAVE_MAP_AS_PDF,
541
+ [
542
+ FMT_PDF
543
+ ])
546
544
  if d.filename != ''
547
545
  map.pdf_export(d.filename)
548
546
  end
@@ -579,7 +577,7 @@ class FXMapperWindow < FXMainWindow
579
577
  @maps = []
580
578
 
581
579
  @mdiclient = FXMDIClient.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
582
- @mdiclient.connect(SEL_CHANGED) {
580
+ @mdiclient.connect(SEL_CHANGED) {
583
581
  update_map
584
582
  }
585
583
 
@@ -604,7 +602,7 @@ class FXMapperWindow < FXMainWindow
604
602
  end
605
603
 
606
604
  #
607
- # Return the copied elements
605
+ # Return the copied elements
608
606
  #
609
607
  def self.copy_buffer
610
608
  return @@copy_buffer
@@ -627,9 +625,9 @@ class FXMapperWindow < FXMainWindow
627
625
  # those rooms we selected
628
626
  delete = []
629
627
  links.each { |c|
630
- if not rooms.include?(c.roomA) or
631
- (c.roomB and not rooms.include?(c.roomB))
632
- delete << c
628
+ if not rooms.include?(c.roomA) or
629
+ (c.roomB and not rooms.include?(c.roomB))
630
+ delete << c
633
631
  end
634
632
  }
635
633
  links -= delete
@@ -668,52 +666,52 @@ class FXMapperWindow < FXMainWindow
668
666
  r_to_nr = {} # orig room to new room hash
669
667
  rooms = sel[0]
670
668
  rooms.each { |r|
671
- nr = map.new_room(r.x + pos[0], r.y + pos[1])
672
- nr.selected = true
673
- nr.copy(r) # copy the room data
674
- r_to_nr[r] = nr
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
675
673
  }
676
674
 
677
675
  if rooms.empty?
678
- # Add connections only (no rooms copied)
679
- sel[1].each { |c|
680
- exitA, exitB = c.dirs
681
- roomA = c.roomA
682
- roomB = c.roomB
683
- sect = map.sections[map.section]
684
- if not sect.rooms.include?(roomA) or
685
- (roomB and not sect.rooms.include?(roomB))
686
- next
687
- end
688
- begin
689
- nc = map.new_connection(roomA, exitA, roomB, exitB)
690
- nc.selected = true
691
- nc.dir = c.dir
692
- nc.type = c.type
693
- rescue
694
- end
695
- }
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
+ }
696
694
  else
697
- # Add connections
698
- sel[1].each { |c|
699
- exitA, exitB = c.dirs
700
- roomA = r_to_nr[c.roomA]
701
- if c.roomB
702
- roomB = r_to_nr[c.roomB]
703
- else
704
- roomB = nil
705
- end
706
- next if not roomA
707
- begin
708
- nc = map.new_connection(roomA, exitA, roomB, exitB)
709
- nc.selected = true
710
- nc.dir = c.dir
711
- nc.type = c.type
712
- rescue Section::ConnectionError => e
713
- puts c
714
- puts e
715
- end
716
- }
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
+ }
717
715
  end
718
716
 
719
717
  map.create_pathmap
@@ -759,7 +757,7 @@ class FXMapperWindow < FXMainWindow
759
757
  s.rooms.each { |r| r.selected = false }
760
758
  }
761
759
 
762
- matches.each { |p, r|
760
+ matches.each { |p, r|
763
761
  next if p != map.section
764
762
  r.selected = true
765
763
  }
@@ -784,8 +782,8 @@ class FXMapperWindow < FXMainWindow
784
782
  matches = []
785
783
  (0...map.sections.size).each { |p|
786
784
  map.sections[p].rooms.each { |r|
787
- next unless r.name =~ re
788
- matches.push( [p, r] )
785
+ next unless r.name =~ re
786
+ matches.push( [p, r] )
789
787
  }
790
788
  }
791
789
  idx = @search.index
@@ -853,8 +851,8 @@ class FXMapperWindow < FXMainWindow
853
851
  matches = []
854
852
  (0...map.sections.size).each { |p|
855
853
  map.sections[p].rooms.each { |r|
856
- next unless r.objects =~ re
857
- matches.push( [p, r] )
854
+ next unless r.objects =~ re
855
+ matches.push( [p, r] )
858
856
  }
859
857
  }
860
858
  idx = @search.index
@@ -873,8 +871,8 @@ class FXMapperWindow < FXMainWindow
873
871
  matches = []
874
872
  (0...map.sections.size).each { |p|
875
873
  map.sections[p].rooms.each { |r|
876
- next unless r.tasks =~ re
877
- matches.push( [p, r] )
874
+ next unless r.tasks =~ re
875
+ matches.push( [p, r] )
878
876
  }
879
877
  }
880
878
  idx = @search.index
@@ -929,8 +927,8 @@ class FXMapperWindow < FXMainWindow
929
927
  matches = []
930
928
  (0...map.sections.size).each { |p|
931
929
  map.sections[p].rooms.each { |r|
932
- next unless r.desc =~ re
933
- matches.push( [p, r] )
930
+ next unless r.desc =~ re
931
+ matches.push( [p, r] )
934
932
  }
935
933
  }
936
934
  idx = @search.index
@@ -1006,8 +1004,8 @@ class FXMapperWindow < FXMainWindow
1006
1004
 
1007
1005
  def about_cb(sender, id, event )
1008
1006
  require 'IFMapper/FXAboutDialogBox'
1009
- FXAboutDialogBox.new(self, MSG_ABOUT_SOFTWARE,
1010
- eval("\"#{MSG_ABOUT}\"")).execute
1007
+ FXAboutDialogBox.new(self, MSG_ABOUT_SOFTWARE,
1008
+ eval("\"#{MSG_ABOUT}\"")).execute
1011
1009
  end
1012
1010
 
1013
1011
 
@@ -1029,7 +1027,7 @@ class FXMapperWindow < FXMainWindow
1029
1027
  cmd = FXMenuCommand.new(filemenu, MENU_SAVE, savedoc)
1030
1028
  cmd.connect(SEL_COMMAND, method(:save_cb))
1031
1029
  cmd = FXMenuCommand.new(filemenu, MENU_SAVE_AS,
1032
- saveasdoc)
1030
+ saveasdoc)
1033
1031
  cmd.connect(SEL_COMMAND, method(:save_as_cb))
1034
1032
 
1035
1033
  # Export submenu
@@ -1037,7 +1035,7 @@ class FXMapperWindow < FXMainWindow
1037
1035
 
1038
1036
  cmd = FXMenuCommand.new(submenu, MENU_EXPORT_PDF, nil)
1039
1037
  cmd.connect(SEL_COMMAND, method(:pdf_export_cb))
1040
-
1038
+
1041
1039
  cmd = FXMenuCommand.new(submenu, MENU_EXPORT_SVG, nil)
1042
1040
  cmd.connect(SEL_COMMAND, method(:svg_export_cb))
1043
1041
 
@@ -1065,7 +1063,7 @@ class FXMapperWindow < FXMainWindow
1065
1063
 
1066
1064
  cmd = FXMenuCommand.new(submenu, MENU_PRINT_LOCATIONS, nil)
1067
1065
  cmd.connect(SEL_COMMAND, method(:print_locations_cb))
1068
- FXMenuCascade.new(filemenu, MENU_PRINT, nil, submenu)
1066
+ #FXMenuCascade.new(filemenu, MENU_PRINT, nil, submenu)
1069
1067
 
1070
1068
  cmd = FXMenuCommand.new(filemenu, MENU_QUIT, nil)
1071
1069
  cmd.connect( SEL_COMMAND, method(:close_cb) )
@@ -1077,9 +1075,9 @@ class FXMapperWindow < FXMainWindow
1077
1075
  cmd.connect(SEL_COMMAND, method(:copy_selected_cb))
1078
1076
  cmd = FXMenuCommand.new(editmenu, MENU_CUT, nil)
1079
1077
  cmd.connect(SEL_COMMAND, method(:cut_selected_cb))
1080
- cmd = FXMenuCommand.new(editmenu, MENU_PASTE, nil)
1078
+ cmd = FXMenuCommand.new(editmenu, MENU_PASTE, nil)
1081
1079
  cmd.connect(SEL_COMMAND, method(:paste_selected_cb))
1082
- #cmd = FXMenuCommand.new(editmenu, MENU_UNDO, nil)
1080
+ #cmd = FXMenuCommand.new(editmenu, MENU_UNDO, nil)
1083
1081
  #cmd.connect(SEL_COMMAND, method(:undo_cb))
1084
1082
 
1085
1083
  # Select submenu
@@ -1142,55 +1140,55 @@ class FXMapperWindow < FXMainWindow
1142
1140
  # Sections submenu
1143
1141
  submenu = FXMenuPane.new(self)
1144
1142
  cmd = FXMenuCommand.new(submenu, MENU_NEXT_SECTION)
1145
- cmd.connect(SEL_COMMAND) {
1143
+ cmd.connect(SEL_COMMAND) {
1146
1144
  next_section
1147
1145
  }
1148
1146
  cmd = FXMenuCommand.new(submenu, MENU_PREVIOUS_SECTION)
1149
- cmd.connect(SEL_COMMAND) {
1147
+ cmd.connect(SEL_COMMAND) {
1150
1148
  previous_section
1151
1149
  }
1152
1150
  FXMenuSeparator.new(submenu)
1153
1151
  cmd = FXMenuCommand.new(submenu, MENU_ADD_SECTION)
1154
- cmd.connect(SEL_COMMAND) {
1152
+ cmd.connect(SEL_COMMAND) {
1155
1153
  map = current_map
1156
1154
  if map
1157
- map.new_section
1158
- map.modified = true
1159
- update_section
1155
+ map.new_section
1156
+ map.modified = true
1157
+ update_section
1160
1158
  end
1161
1159
  }
1162
1160
  cmd = FXMenuCommand.new(submenu, MENU_SECTION_INFO)
1163
- cmd.connect(SEL_COMMAND) {
1161
+ cmd.connect(SEL_COMMAND) {
1164
1162
  map = current_map
1165
1163
  if map
1166
- map.rename_section
1167
- map.modified = true
1164
+ map.rename_section
1165
+ map.modified = true
1168
1166
  end
1169
1167
  }
1170
1168
  FXMenuSeparator.new(submenu)
1171
1169
  cmd = FXMenuCommand.new(submenu, MENU_DELETE_SECTION)
1172
- cmd.connect(SEL_COMMAND) {
1170
+ cmd.connect(SEL_COMMAND) {
1173
1171
  map = current_map
1174
1172
  if map
1175
- map.delete_section
1176
- map.modified = true
1177
- update_section
1173
+ map.delete_section
1174
+ map.modified = true
1175
+ update_section
1178
1176
  end
1179
1177
  }
1180
1178
  FXMenuCascade.new(mapmenu, MENU_SECTIONS, nil, submenu)
1181
-
1179
+
1182
1180
  #
1183
1181
  # Zoom submenu
1184
1182
  #
1185
1183
  submenu = FXMenuPane.new(self)
1186
- [25, 50, 75, 100, 125].each { |v|
1184
+ [25, 50, 75, 100, 125].each { |v|
1187
1185
  cmd = FXMenuCommand.new(submenu, eval("\"#{MENU_ZOOM_PERCENT}\""))
1188
- cmd.connect(SEL_COMMAND) {
1189
- map = current_map
1190
- if map
1191
- map.zoom = v / 100.0
1192
- map.draw
1193
- end
1186
+ cmd.connect(SEL_COMMAND) {
1187
+ map = current_map
1188
+ if map
1189
+ map.zoom = v / 100.0
1190
+ map.draw
1191
+ end
1194
1192
  }
1195
1193
  }
1196
1194
  FXMenuCascade.new(mapmenu, MENU_ZOOM, nil, submenu)
@@ -1202,7 +1200,7 @@ class FXMapperWindow < FXMainWindow
1202
1200
  cmd.connect(SEL_COMMAND) { |s, m, e|
1203
1201
  map = current_map
1204
1202
  if map
1205
- map.options['Edit on Creation'] = (s.check == true)
1203
+ map.options['Edit on Creation'] = (s.check == true)
1206
1204
  end
1207
1205
  }
1208
1206
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1215,7 +1213,7 @@ class FXMapperWindow < FXMainWindow
1215
1213
  cmd.connect(SEL_COMMAND) { |s, m, e|
1216
1214
  map = current_map
1217
1215
  if map
1218
- map.options['Automatic Connection'] = (s.check == true)
1216
+ map.options['Automatic Connection'] = (s.check == true)
1219
1217
  end
1220
1218
  }
1221
1219
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1245,8 +1243,8 @@ class FXMapperWindow < FXMainWindow
1245
1243
  cmd.connect(SEL_COMMAND) { |s, m, e|
1246
1244
  map = current_map
1247
1245
  if map
1248
- map.options['Use Room Cursor'] = (s.check == true)
1249
- map.draw
1246
+ map.options['Use Room Cursor'] = (s.check == true)
1247
+ map.draw
1250
1248
  end
1251
1249
  }
1252
1250
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1259,8 +1257,8 @@ class FXMapperWindow < FXMainWindow
1259
1257
  cmd.connect(SEL_COMMAND) { |s, m, e|
1260
1258
  map = current_map
1261
1259
  if map
1262
- map.options['Paths as Curves'] = (s.check == true)
1263
- map.draw
1260
+ map.options['Paths as Curves'] = (s.check == true)
1261
+ map.draw
1264
1262
  end
1265
1263
  }
1266
1264
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1272,8 +1270,8 @@ class FXMapperWindow < FXMainWindow
1272
1270
  cmd.connect(SEL_COMMAND) { |s, m, e|
1273
1271
  map = current_map
1274
1272
  if map
1275
- map.options['Location Numbers'] = (s.check == true)
1276
- map.draw
1273
+ map.options['Location Numbers'] = (s.check == true)
1274
+ map.draw
1277
1275
  end
1278
1276
  }
1279
1277
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1286,8 +1284,8 @@ class FXMapperWindow < FXMainWindow
1286
1284
  cmd.connect(SEL_COMMAND) { |s, m, e|
1287
1285
  map = current_map
1288
1286
  if map
1289
- map.options['Location Tasks'] = (s.check == true)
1290
- map.draw
1287
+ map.options['Location Tasks'] = (s.check == true)
1288
+ map.draw
1291
1289
  end
1292
1290
  }
1293
1291
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1300,8 +1298,8 @@ class FXMapperWindow < FXMainWindow
1300
1298
  cmd.connect(SEL_COMMAND) { |s, m, e|
1301
1299
  map = current_map
1302
1300
  if map
1303
- map.options['Location Description'] = (s.check == true)
1304
- map.draw
1301
+ map.options['Location Description'] = (s.check == true)
1302
+ map.draw
1305
1303
  end
1306
1304
  }
1307
1305
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1314,8 +1312,8 @@ class FXMapperWindow < FXMainWindow
1314
1312
  cmd.connect(SEL_COMMAND) { |s, m, e|
1315
1313
  map = current_map
1316
1314
  if map
1317
- map.options['Grid Boxes'] = (s.check == true)
1318
- map.draw
1315
+ map.options['Grid Boxes'] = (s.check == true)
1316
+ map.draw
1319
1317
  end
1320
1318
  }
1321
1319
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1328,8 +1326,8 @@ class FXMapperWindow < FXMainWindow
1328
1326
  cmd.connect(SEL_COMMAND) { |s, m, e|
1329
1327
  map = current_map
1330
1328
  if map
1331
- map.options['Grid Straight Connections'] = (s.check == true)
1332
- map.draw
1329
+ map.options['Grid Straight Connections'] = (s.check == true)
1330
+ map.draw
1333
1331
  end
1334
1332
  }
1335
1333
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1342,8 +1340,8 @@ class FXMapperWindow < FXMainWindow
1342
1340
  cmd.connect(SEL_COMMAND) { |s, m, e|
1343
1341
  map = current_map
1344
1342
  if map
1345
- map.options['Grid Diagonal Connections'] = s.check
1346
- map.draw
1343
+ map.options['Grid Diagonal Connections'] = s.check
1344
+ map.draw
1347
1345
  end
1348
1346
  }
1349
1347
  cmd.connect(SEL_UPDATE) { |s, m, e|
@@ -1366,11 +1364,11 @@ class FXMapperWindow < FXMainWindow
1366
1364
  # }
1367
1365
 
1368
1366
  # FXMenuCascade.new(mapmenu, MENU_LANGUAGE, nil, langmenu)
1369
-
1367
+
1370
1368
 
1371
1369
  FXMenuSeparator.new(submenu)
1372
1370
  cmd = FXMenuCommand.new(submenu, MENU_SAVE_PREFS)
1373
- cmd.connect(SEL_COMMAND) {
1371
+ cmd.connect(SEL_COMMAND) {
1374
1372
  map = current_map
1375
1373
  map.options.write if map
1376
1374
  }
@@ -1395,8 +1393,8 @@ class FXMapperWindow < FXMainWindow
1395
1393
  FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_2)
1396
1394
  FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_3)
1397
1395
  FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_4)
1398
- FXMenuCommand.new(windowmenu, MENU_OTHERS, nil, @mdiclient,
1399
- FXMDIClient::ID_MDI_OVER_5)
1396
+ FXMenuCommand.new(windowmenu, MENU_OTHERS, nil, @mdiclient,
1397
+ FXMDIClient::ID_MDI_OVER_5)
1400
1398
  FXMenuTitle.new(@menubar, MENU_WINDOW, nil, windowmenu)
1401
1399
 
1402
1400
  # Help menu
@@ -1412,14 +1410,14 @@ class FXMapperWindow < FXMainWindow
1412
1410
  cmd = FXMenuCommand.new(helpmenu, MENU_RESOURCE, nil)
1413
1411
  cmd.connect(SEL_COMMAND) {
1414
1412
  require 'IFMapper/FXMapFileDialog'
1415
- file = FXMapFileDialog.new(self, "Resource a Ruby File",
1416
- ['Ruby File (*.rb)']).filename
1413
+ file = FXMapFileDialog.new(self, "Resource a Ruby File",
1414
+ ['Ruby File (*.rb)']).filename
1417
1415
  if file != ''
1418
- begin
1419
- Kernel.load file
1420
- rescue => e
1421
- p e
1422
- end
1416
+ begin
1417
+ Kernel.load file
1418
+ rescue => e
1419
+ p e
1420
+ end
1423
1421
  end
1424
1422
  }
1425
1423
  FXMenuTitle.new(@menubar, MENU_HELP, nil, helpmenu)
@@ -1430,19 +1428,15 @@ class FXMapperWindow < FXMainWindow
1430
1428
  end
1431
1429
 
1432
1430
  def docs(*opts)
1433
- browsers = [ 'chrome', 'chromium', 'firefox', 'opera', 'explorer' ]
1434
1431
  address = 'docs/' + language + '/start.html'
1435
1432
  status "#{MSG_OPENING_WEB_PAGE} #{address}..."
1436
- ok = false
1437
- browsers.each { |cmd|
1438
- if RUBY_PLATFORM =~ /mswin/
1439
- ok = system("start #{cmd} #{address}")
1440
- else
1441
- ok = system("#{cmd} #{address} &")
1442
- end
1443
- break if ok
1444
- }
1445
- if not ok
1433
+ if RUBY_PLATFORM =~ /mswin|mingw|cygwin/
1434
+ system("rundll32 url.dll,FileProtocolHandler \"#{address}\"")
1435
+ elsif RUBY_PLATFORM =~ /darwin/
1436
+ system("open \"#{address}\"")
1437
+ elsif RUBY_PLATFORM =~ /linux|bsd/
1438
+ system("xdg-open \"#{address}\"")
1439
+ else
1446
1440
  status ERR_COULD_NOT_OPEN_WEB_BROWSER
1447
1441
  end
1448
1442
  end
@@ -1463,7 +1457,7 @@ class FXMapperWindow < FXMainWindow
1463
1457
 
1464
1458
  # File manipulation
1465
1459
  cmd = FXButton.new(toolbar, ICON_NEW, newdoc, nil, 0,
1466
- FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1460
+ FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1467
1461
  cmd.connect(SEL_COMMAND, method(:new_map_cb))
1468
1462
 
1469
1463
  cmd = FXButton.new(toolbar, ICON_OPEN, opendoc, nil, 0,
@@ -1491,15 +1485,15 @@ class FXMapperWindow < FXMainWindow
1491
1485
  FXFrame.new(toolbar,
1492
1486
  LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, 0, 0, 4, 20)
1493
1487
  cmd = FXButton.new(toolbar, ICON_PRINT,
1494
- load_icon("printicon"), @mdiclient, FXGLViewer::ID_PRINT_IMAGE,
1495
- BUTTON_AUTOGRAY|FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1488
+ load_icon("printicon"), @mdiclient, FXGLViewer::ID_PRINT_IMAGE,
1489
+ BUTTON_AUTOGRAY|FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1496
1490
  cmd.connect(SEL_COMMAND, method(:print_cb))
1497
1491
  cmd.connect(SEL_UPDATE) { |sender, sel, ptr|
1498
1492
  map = current_map
1499
1493
  message = map ? FXWindow::ID_ENABLE : FXWindow::ID_DISABLE
1500
1494
  sender.handle(self, MKUINT(message, SEL_COMMAND), nil)
1501
1495
  }
1502
-
1496
+
1503
1497
  # Editing
1504
1498
  FXFrame.new(toolbar,
1505
1499
  LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, 0, 0, 4, 20)
@@ -1535,43 +1529,43 @@ class FXMapperWindow < FXMainWindow
1535
1529
  FXFrame.new(toolbar,
1536
1530
  LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, 0, 0, 4, 20)
1537
1531
  cmd = FXButton.new(toolbar, ICON_ZOOM_IN, load_icon("zoom"), @mdiclient,
1538
- 0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1532
+ 0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1539
1533
  cmd.connect(SEL_COMMAND) { zoom_in }
1540
1534
 
1541
- cmd = FXButton.new(toolbar, ICON_ZOOM_OUT, load_icon("zoom"), @mdiclient,
1542
- 0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1535
+ cmd = FXButton.new(toolbar, ICON_ZOOM_OUT, load_icon("zoom"), @mdiclient,
1536
+ 0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1543
1537
  cmd.connect(SEL_COMMAND) { zoom_out }
1544
1538
 
1545
1539
 
1546
1540
  # Section travel
1547
1541
  frame = FXHorizontalFrame.new(toolbar,
1548
- LAYOUT_RIGHT|FRAME_THICK|FRAME_RAISED)
1549
- cmd = FXButton.new(frame, ICON_PREV_SECTION, load_icon("prevpage"),
1550
- @mdiclient,
1551
- 0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
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)
1552
1546
  cmd.connect(SEL_COMMAND) { previous_section }
1553
1547
 
1554
- @section = FXTextField.new(frame, 5, nil, 0,
1555
- TEXTFIELD_INTEGER|LAYOUT_FILL_ROW)
1548
+ @section = FXTextField.new(frame, 5, nil, 0,
1549
+ TEXTFIELD_INTEGER|LAYOUT_FILL_ROW)
1556
1550
  @section.text = '1'
1557
- @section.connect(SEL_COMMAND) { |s,m,e|
1551
+ @section.connect(SEL_COMMAND) { |s,m,e|
1558
1552
  v = s.text.to_i
1559
1553
  map = current_map
1560
1554
  if map
1561
- map.section = v - 1
1562
- map.draw
1563
- update_section
1555
+ map.section = v - 1
1556
+ map.draw
1557
+ update_section
1564
1558
  end
1565
1559
  }
1566
- @section.connect(SEL_UPDATE) { |s,m,e|
1560
+ @section.connect(SEL_UPDATE) { |s,m,e|
1567
1561
  map = current_map
1568
1562
  update_section if map
1569
1563
  }
1570
1564
 
1571
- cmd = FXButton.new(frame, ICON_NEXT_SECTION, load_icon("nextpage"),
1572
- @mdiclient,
1573
- 0, FRAME_THICK|FRAME_RAISED|LAYOUT_TOP|LAYOUT_LEFT)
1574
- 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 }
1575
1569
  end
1576
1570
 
1577
1571
  #
@@ -1595,7 +1589,7 @@ class FXMapperWindow < FXMainWindow
1595
1589
  #
1596
1590
  # Go to previous section in current map
1597
1591
  #
1598
- def previous_section
1592
+ def previous_section
1599
1593
  map = current_map
1600
1594
  map.previous_section if map
1601
1595
  update_section
@@ -1647,20 +1641,20 @@ class FXMapperWindow < FXMainWindow
1647
1641
  @menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
1648
1642
 
1649
1643
  FXHorizontalSeparator.new(self,
1650
- LAYOUT_SIDE_TOP|SEPARATOR_GROOVE|LAYOUT_FILL_X)
1644
+ LAYOUT_SIDE_TOP|SEPARATOR_GROOVE|LAYOUT_FILL_X)
1651
1645
  toolbar = FXToolBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X,
1652
1646
  0, 0, 0, 0, 4, 4, 0, 0, 0, 0)
1653
-
1647
+
1654
1648
  # Status bar
1655
1649
  @statusbar = FXStatusBar.new(self,
1656
- LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|
1657
- STATUSBAR_WITH_DRAGCORNER)
1650
+ LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|
1651
+ STATUSBAR_WITH_DRAGCORNER)
1658
1652
 
1659
1653
 
1660
1654
  create_mdiclient
1661
1655
  create_menus
1662
1656
  create_toolbar(toolbar)
1663
-
1657
+
1664
1658
 
1665
1659
  self.connect(SEL_CLOSE, method(:close_cb))
1666
1660
  show
@@ -1670,13 +1664,13 @@ class FXMapperWindow < FXMainWindow
1670
1664
 
1671
1665
  def initialize(app)
1672
1666
  super(app, eval("\"#{TITLE}\""), nil, nil, DECOR_ALL, 0, 0, 800, 600)
1673
-
1667
+
1674
1668
  @colors = nil
1675
1669
  @mdimenu = nil
1676
1670
  @search = nil
1677
1671
 
1678
1672
  create_widgets
1679
-
1673
+
1680
1674
 
1681
1675
  # Trap CTRL-C signals and exit nicely
1682
1676
  trap('SIGINT') {
@@ -1687,13 +1681,13 @@ class FXMapperWindow < FXMainWindow
1687
1681
 
1688
1682
  def close_cb(*args)
1689
1683
  exit = true
1690
- @maps.each { |m|
1691
- if not m.close_cb
1692
- exit = false
1693
- break
1694
- else
1695
- @maps.delete(m)
1696
- end
1684
+ @maps.each { |m|
1685
+ if not m.close_cb
1686
+ exit = false
1687
+ break
1688
+ else
1689
+ @maps.delete(m)
1690
+ end
1697
1691
  }
1698
1692
  self.close if exit
1699
1693
  end