ifmapper 2.0.9 → 2.2.4

Sign up to get free protection for your applications and to get access to all the features.
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