arcadia 0.13.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/{README → README.md} +60 -53
  3. data/conf/LC/en-UK.LANG +10 -4
  4. data/conf/arcadia.conf +221 -83
  5. data/conf/arcadia.res.rb +165 -175
  6. data/conf/theme-dark.conf +1 -1
  7. data/conf/theme-dark.res.rb +0 -123
  8. data/ext/ae-breakpoints/ae-breakpoints.rb +4 -3
  9. data/ext/ae-dir-projects/ae-dir-projects.conf +27 -1
  10. data/ext/ae-dir-projects/ae-dir-projects.rb +120 -70
  11. data/ext/ae-editor/ae-editor.conf +2 -2
  12. data/ext/ae-editor/ae-editor.rb +610 -303
  13. data/ext/ae-file-history/ae-file-history.rb +60 -39
  14. data/ext/ae-output/ae-output.rb +52 -27
  15. data/ext/ae-ruby-debug/ae-ruby-debug.conf +3 -1
  16. data/ext/ae-ruby-debug/ae-ruby-debug.rb +18 -11
  17. data/ext/ae-search-in-files/ae-search-in-files.conf +2 -2
  18. data/ext/ae-search-in-files/ae-search-in-files.rb +124 -77
  19. data/ext/ae-shell/ae-shell.conf +1 -1
  20. data/ext/ae-shell/ae-shell.rb +18 -81
  21. data/ext/ae-subprocess-inspector/ae-subprocess-inspector.rb +78 -81
  22. data/ext/ae-term/ae-term.rb +9 -7
  23. data/lib/a-commons.rb +125 -17
  24. data/lib/a-contracts.rb +6 -2
  25. data/lib/a-core.rb +441 -405
  26. data/lib/a-tkcommons.rb +1237 -45
  27. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ArrowButton.html +0 -0
  28. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/BWidget.html +0 -0
  29. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Button.html +0 -0
  30. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ButtonBox.html +0 -0
  31. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ComboBox.html +0 -0
  32. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Dialog.html +0 -0
  33. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DragSite.html +0 -0
  34. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DropSite.html +0 -0
  35. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DynamicHelp.html +0 -0
  36. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Entry.html +0 -0
  37. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Label.html +0 -0
  38. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/LabelEntry.html +0 -0
  39. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/LabelFrame.html +0 -0
  40. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ListBox.html +0 -0
  41. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/MainFrame.html +0 -0
  42. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/MessageDlg.html +0 -0
  43. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/NoteBook.html +0 -0
  44. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PagesManager.html +0 -0
  45. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PanedWindow.html +0 -0
  46. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PanelFrame.html +0 -0
  47. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PasswdDlg.html +0 -0
  48. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ProgressBar.html +0 -0
  49. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ProgressDlg.html +0 -0
  50. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrollView.html +0 -0
  51. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrollableFrame.html +0 -0
  52. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrolledWindow.html +0 -0
  53. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SelectColor.html +0 -0
  54. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SelectFont.html +0 -0
  55. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Separator.html +0 -0
  56. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SpinBox.html +0 -0
  57. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/StatusBar.html +0 -0
  58. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/TitleFrame.html +0 -0
  59. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Tree.html +0 -0
  60. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Widget.html +0 -0
  61. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/contents.html +0 -0
  62. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/index.html +0 -0
  63. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/navtree.html +0 -0
  64. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/options.htm +0 -0
  65. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/CHANGES.txt +0 -0
  66. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/ChangeLog +65 -0
  67. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/LICENSE.txt +0 -0
  68. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/README.txt +0 -0
  69. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/arrow.tcl +0 -0
  70. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/bitmap.tcl +0 -0
  71. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/button.tcl +0 -2
  72. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/buttonbox.tcl +0 -0
  73. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/color.tcl +0 -0
  74. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/combobox.tcl +40 -16
  75. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/basic.tcl +0 -0
  76. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/bwidget.xbm +0 -0
  77. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/demo.tcl +0 -0
  78. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/dnd.tcl +0 -0
  79. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/manager.tcl +0 -0
  80. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/select.tcl +0 -0
  81. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/tmpldlg.tcl +0 -0
  82. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/tree.tcl +0 -0
  83. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/x1.xbm +0 -0
  84. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dialog.tcl +0 -0
  85. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dragsite.tcl +0 -0
  86. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dropsite.tcl +0 -0
  87. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dynhelp.tcl +3 -0
  88. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/entry.tcl +0 -0
  89. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/font.tcl +0 -0
  90. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/bold.gif +0 -0
  91. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/copy.gif +0 -0
  92. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/cut.gif +0 -0
  93. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/dragfile.gif +0 -0
  94. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/dragicon.gif +0 -0
  95. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/error.gif +0 -0
  96. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/file.gif +0 -0
  97. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/folder.gif +0 -0
  98. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/hourglass.gif +0 -0
  99. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/info.gif +0 -0
  100. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/italic.gif +0 -0
  101. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/minus.xbm +0 -0
  102. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/new.gif +0 -0
  103. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/opcopy.xbm +0 -0
  104. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/open.gif +0 -0
  105. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/openfold.gif +0 -0
  106. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/oplink.xbm +0 -0
  107. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/opmove.xbm +0 -0
  108. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/overstrike.gif +0 -0
  109. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/palette.gif +0 -0
  110. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/passwd.gif +0 -0
  111. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/paste.gif +0 -0
  112. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/plus.xbm +0 -0
  113. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/print.gif +0 -0
  114. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/question.gif +0 -0
  115. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/redo.gif +0 -0
  116. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/save.gif +0 -0
  117. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/target.xbm +0 -0
  118. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/underline.gif +0 -0
  119. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/undo.gif +0 -0
  120. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/warning.gif +0 -0
  121. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/init.tcl +0 -0
  122. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/label.tcl +0 -2
  123. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/labelentry.tcl +0 -3
  124. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/labelframe.tcl +0 -2
  125. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/da.rc +1 -0
  126. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/de.rc +1 -0
  127. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/en.rc +1 -0
  128. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/es.rc +1 -0
  129. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/fr.rc +1 -0
  130. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/hu.rc +1 -0
  131. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/nl.rc +1 -0
  132. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/no.rc +59 -58
  133. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/pl.rc +0 -0
  134. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/listbox.tcl +17 -4
  135. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/mainframe.tcl +0 -0
  136. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/messagedlg.tcl +0 -0
  137. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/notebook.tcl +0 -0
  138. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/pagesmgr.tcl +0 -0
  139. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/panedw.tcl +0 -0
  140. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/panelframe.tcl +0 -0
  141. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/passwddlg.tcl +0 -0
  142. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/pkgIndex.tcl +2 -2
  143. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/progressbar.tcl +0 -0
  144. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/progressdlg.tcl +0 -0
  145. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollframe.tcl +6 -6
  146. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollview.tcl +0 -0
  147. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollw.tcl +1 -0
  148. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/separator.tcl +0 -0
  149. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/spinbox.tcl +0 -0
  150. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/statusbar.tcl +0 -0
  151. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/tests/entry.test +2 -2
  152. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/titleframe.tcl +0 -0
  153. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/tree.tcl +0 -0
  154. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/utils.tcl +0 -0
  155. data/tcl/bwidget-1.9.8/widget-old.tcl +1651 -0
  156. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/widget.tcl +64 -36
  157. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/wizard.tcl +0 -0
  158. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/xpm2image.tcl +0 -0
  159. metadata +196 -195
@@ -75,7 +75,6 @@ end
75
75
 
76
76
  class FilesHistrory < ArcadiaExt
77
77
  attr_reader :htree
78
-
79
78
  def sync_on
80
79
  @sync = true
81
80
  select_file_without_event(@last_file) if @last_file
@@ -97,17 +96,27 @@ class FilesHistrory < ArcadiaExt
97
96
  @bookmarks_frame = TkFrame.new(self.frame.hinner_frame)
98
97
  @history_frame = TkFrame.new(self.frame.hinner_frame).pack('fill'=>'both', :padx=>0, :pady=>0, :expand => 'yes')
99
98
  @panel = self.frame.root.add_panel(self.frame.name, "sync");
100
- @cb_sync = TkCheckButton.new(@panel, Arcadia.style('checkbox').update('background'=>@panel.background)){
101
- text 'Sync'
102
- justify 'left'
103
- indicatoron 0
104
- offrelief 'flat'
99
+
100
+ # @cb_sync = TkCheckButton.new(@panel, Arcadia.style('checkbox').update('background'=>@panel.background)){
101
+ # text 'Sync'
102
+ # justify 'left'
103
+ # indicatoron 0
104
+ # offrelief 'flat'
105
+ # image Arcadia.image_res(SYNC_GIF)
106
+ # pack
107
+ # }
108
+ #
109
+ # Tk::BWidget::DynamicHelp::add(@cb_sync,
110
+ # 'text'=>Arcadia.text('ext.file_history.button.link.hint'))
111
+
112
+ @cb_sync = Arcadia.wf.titlecontextcheckbutton(@panel){
113
+ variable TkVariable.new
105
114
  image Arcadia.image_res(SYNC_GIF)
106
115
  pack
107
116
  }
117
+
118
+ @cb_sync.hint=Arcadia.text('ext.file_history.button.link.hint')
108
119
 
109
- Tk::BWidget::DynamicHelp::add(@cb_sync,
110
- 'text'=>Arcadia.text('ext.file_history.button.link.hint'))
111
120
 
112
121
  do_check = proc {
113
122
  if @cb_sync.cget('onvalue')==@cb_sync.cget('variable').value.to_i
@@ -172,7 +181,8 @@ class FilesHistrory < ArcadiaExt
172
181
  _selected = @htree.selected
173
182
  _dir, _file = _selected.sub("%%%",":").split('@@@')
174
183
  if _dir && _file.nil? && File.ftype(node2file(_dir)) == 'directory'
175
- _file = Tk.getOpenFile('initialdir'=>node2file(_dir))
184
+ _file = Arcadia.open_file_dialog(node2file(_dir))
185
+ #Tk.getOpenFile('initialdir'=>node2file(_dir))
176
186
  if _file && _file.strip.length > 0
177
187
  Arcadia.process_event(OpenBufferTransientEvent.new(self,'file'=>_file))
178
188
  end
@@ -257,20 +267,23 @@ class FilesHistrory < ArcadiaExt
257
267
  bookmark = {:file=>"__TMP__#{_event.id}"}
258
268
  caption = _event.id
259
269
  end
260
- caption = "#{caption} [#{_event.from_row}, #{_event.to_row}]"
270
+ caption = (_event.from_row == _event.to_row) ? "#{caption} [#{_event.from_row}] #{_event.content.strip if _event.content}":"#{caption} [#{_event.from_row}, #{_event.to_row}] #{str=_event.content.split("\n")[0] if _event.content;str.strip if str}"
261
271
  bookmark[:from_line] = _event.from_row
262
272
  bookmark[:to_line] = _event.to_row
263
273
  bookmark[:persistent] = _event.persistent
264
- bookmark[:widget] = Tk::BWidget::Button.new(@bookmarks_frame, Arcadia.style('toolbarbutton')){
274
+ #bookmark[:widget] = Tk::BWidget::Button.new(@bookmarks_frame, Arcadia.style('toolbarbutton')){
275
+ bookmark[:widget] = Arcadia.wf.toolbutton(@bookmarks_frame){
265
276
  image Arcadia.image_res(BOOKMARK_GIF)
266
277
  compound 'left'
267
- anchor "w"
278
+ #anchor "w"
268
279
  command proc{OpenBufferTransientEvent.new(self,'file'=>_event.file, 'row'=> _event.from_row).go!}
269
280
  #width 20
270
281
  #height 20
271
- helptext _event.content
282
+ #helptext _event.content
272
283
  text caption
273
- }.pack('side' =>'top','anchor'=>'nw', 'fill'=>'x', :padx=>0, :pady=>0)
284
+ pack('side' =>'top','anchor'=>'nw', 'fill'=>'x', :padx=>0, :pady=>0)
285
+ }
286
+ bookmark[:widget].hint=_event.content
274
287
 
275
288
  Tk::BWidget::Button.new(bookmark[:widget], Arcadia.style('toolbarbutton')){
276
289
  image TkPhotoImage.new('dat' => CLOSE_GIF)
@@ -560,21 +573,23 @@ class FilesHistrory < ArcadiaExt
560
573
  end
561
574
 
562
575
  def pop_up_menu_tree
563
- @pop_up_tree = TkMenu.new(
576
+ #@pop_up_tree = TkMenu.new(
577
+ @pop_up_tree = Arcadia.wf.menu(
564
578
  :parent=>@htree,
565
579
  :tearoff=>0,
566
580
  :title => 'Menu tree'
567
581
  )
568
- @pop_up_tree.extend(TkAutoPostMenu)
569
- @pop_up_tree.configure(Arcadia.style('menu'))
582
+ #@pop_up_tree.extend(TkAutoPostMenu)
583
+ #@pop_up_tree.configure(Arcadia.style('menu'))
570
584
  #----- search submenu
571
- sub_ref_search = TkMenu.new(
585
+ #sub_ref_search = TkMenu.new(
586
+ sub_ref_search = Arcadia.wf.menu(
572
587
  :parent=>@pop_up_tree,
573
588
  :tearoff=>0,
574
589
  :title => 'Ref'
575
590
  )
576
- sub_ref_search.extend(TkAutoPostMenu)
577
- sub_ref_search.configure(Arcadia.style('menu'))
591
+ #sub_ref_search.extend(TkAutoPostMenu)
592
+ #sub_ref_search.configure(Arcadia.style('menu'))
578
593
  sub_ref_search.insert('end',
579
594
  :command,
580
595
  :label=>Arcadia.text('ext.file_history.menu.find_in_files'),
@@ -720,6 +735,7 @@ class FilesHistrory < ArcadiaExt
720
735
  conf('view','list')
721
736
  end
722
737
  return if !@h_stack_changed
738
+
723
739
  if File.exist?(history_file)
724
740
  f = File::open(history_file,'r')
725
741
  begin
@@ -729,16 +745,17 @@ class FilesHistrory < ArcadiaExt
729
745
  end
730
746
  f = File.new(history_file, "w")
731
747
  begin
732
- if f
733
- _lines[0..-1].each{|_line|
748
+ if f && _lines
749
+ _lines.each{|_line|
734
750
  _lfile = _line.split(';')
735
- if _lfile
751
+ if _lfile && File.exists?(_lfile[0])
752
+ rif = nil
736
753
  if @h_stack[_lfile[0]]
737
754
  rif = "#{_lfile[0]};#{@h_stack[_lfile[0]]}"
738
755
  else
739
756
  rif = _line
740
757
  end
741
- f.syswrite(rif+"\n")
758
+ f.syswrite(rif+"\n") if !rif.nil?
742
759
  end
743
760
  }
744
761
  end
@@ -786,26 +803,30 @@ class FilesHistrory < ArcadiaExt
786
803
  _filename = File.expand_path(_filename)
787
804
  _filename_index = _filename+";"+_text_index
788
805
  if File.exist?(history_file)
806
+ to_add = []
807
+ max= conf('length').to_i
808
+ i = 1
809
+ to_add << _filename_index
810
+ @history_lines.each{|_line|
811
+ _lfile = _line.split(';')
812
+ if _lfile
813
+ if (_lfile[0] != _filename) && (_line.length > 0) && File.exists?(_lfile[0])
814
+ to_add << _line
815
+ i+=1
816
+ end
817
+ end
818
+ break if i >= max
819
+ }
820
+
789
821
  f = File.new(history_file, "w")
790
822
  begin
791
- if f
792
- max= conf('length').to_i
793
- i = 1
794
- f.syswrite(_filename_index+"\n")
795
- @history_lines.each{|_line|
796
- _lfile = _line.split(';')
797
- if _lfile
798
- if (_lfile[0] != _filename) && (_line.length > 0)
799
- f.syswrite(_line+"\n")
800
- i+=1
801
- end
802
- end
803
- break if i >= max
804
- }
805
- end
823
+ to_add.each{|x|
824
+ f.syswrite(x+"\n")
825
+ }
806
826
  ensure
807
827
  f.close unless f.nil?
808
828
  end
829
+
809
830
  else
810
831
  create_history_file(_filename+"\n")
811
832
  end
@@ -15,21 +15,21 @@ class OutputView
15
15
  def initialize(parent=nil)
16
16
  #left_frame = TkFrame.new(parent.frame.hinner_frame, Arcadia.style('panel')).place('x' => '0','y' => '0','relheight' => '1','width' => '25')
17
17
  #right_frame = TkFrame.new(parent.frame.hinner_frame, Arcadia.style('panel')).place('x' => '25','y' => '0','relheight' => '1','relwidth' => '1','width' => '-25')
18
+ @auto_open_file = false
19
+ @parent = parent
18
20
  parent.frame.root.add_button(
19
21
  parent.name,
20
22
  Arcadia.text('ext.output.button.clear.hint'),
21
23
  proc{parent.main_frame.text.delete('1.0','end')},
22
24
  CLEAR_GIF)
23
25
 
24
- # @button_u = Tk::BWidget::Button.new(left_frame, Arcadia.style('toolbarbutton')){
25
- # image TkPhotoImage.new('dat' => CLEAR_GIF)
26
- # helptext 'Clear'
27
- # #foreground 'blue'
28
- # command proc{parent.main_frame.text.delete('1.0','end')}
29
- # #relief 'groove'
30
- # pack('side' =>'top', 'anchor'=>'n',:padx=>0, :pady=>0)
31
- # }
32
-
26
+ #----
27
+ @ck = parent.frame.root.add_check_button(
28
+ parent.name,
29
+ Arcadia.text('ext.output.checkbutton.auto_open_file.hint'),
30
+ proc{ @auto_open_file = @ck.cget('onvalue')==@ck.cget('variable').value.to_i},
31
+ GO_UP_GIF)
32
+ #---
33
33
  @text = TkArcadiaText.new(parent.frame.hinner_frame,
34
34
  {'wrap'=> 'none'}.update(Arcadia.style('edit'))
35
35
  )
@@ -52,9 +52,17 @@ class OutputView
52
52
  'borderwidth'=>1,
53
53
  'relief'=> 'flat'
54
54
  )
55
- @text.tag_configure('bord_msg',
56
- #'foreground' => '#b9b8b9'
57
- 'foreground' => Arcadia.conf('hightlight.comment.foreground')
55
+ @text.tag_configure('system_error_msg',
56
+ 'background' => Arcadia.conf('hightlight.system_error.background'),
57
+ 'foreground' => Arcadia.conf('hightlight.system_error.foreground'),
58
+ 'borderwidth'=>1,
59
+ 'relief'=> 'groove'
60
+ )
61
+ @text.tag_configure('info_msg',
62
+ 'foreground' => Arcadia.conf('hightlight.edge.foreground')
63
+ )
64
+ @text.tag_configure('prompt',
65
+ 'foreground' => Arcadia.conf('hightlight.prompt.foreground')
58
66
  )
59
67
  @text.tag_configure('sel',
60
68
  'background'=>Arcadia.conf('hightlight.sel.background'),
@@ -64,23 +72,28 @@ class OutputView
64
72
  @input_buffer = nil
65
73
  pop_up_menu
66
74
  end
75
+
76
+ def auto_open_file?
77
+ @auto_open_file
78
+ end
67
79
 
68
80
  def input(_char)
69
81
  case _char
70
82
  when 'Return'
71
- @input_buffer = @text.get("insert linestart","insert").sub(Output::PROMPT,'').strip
83
+ @input_buffer = @text.get("insert linestart","insert").sub(@parent.prompt,'').strip
72
84
  end
73
85
  end
74
86
 
75
87
 
76
88
  def pop_up_menu
77
- @pop_up = TkMenu.new(
89
+ #@pop_up = TkMenu.new(
90
+ @pop_up = Arcadia.wf.menu(
78
91
  :parent=>@text,
79
92
  :tearoff=>0,
80
93
  :title => 'Menu'
81
94
  )
82
- @pop_up.extend(TkAutoPostMenu)
83
- @pop_up.configure(Arcadia.style('menu'))
95
+ #@pop_up.extend(TkAutoPostMenu)
96
+ #@pop_up.configure(Arcadia.style('menu'))
84
97
 
85
98
  @pop_up.insert('end',
86
99
  :command,
@@ -144,7 +157,8 @@ class OutputView
144
157
  end
145
158
 
146
159
  def save_as
147
- @file = Tk.getSaveFile("filetypes"=>[["Ruby Files", [".rb", ".rbw"]],["All Files", [".*"]]])
160
+ @file = Arcadia.save_file_dialog
161
+ #Tk.getSaveFile("filetypes"=>[["Ruby Files", [".rb", ".rbw"]],["All Files", [".*"]]])
148
162
  @file = nil if @file == "" # cancelled
149
163
  if @file
150
164
  save
@@ -156,13 +170,15 @@ end
156
170
 
157
171
  class Output < ArcadiaExt
158
172
  attr_reader :main_frame
173
+ attr_reader :prompt
159
174
  MARKSUF='mark-'
160
- PROMPT='>>>'
175
+ PROMPT_SIMBOL='$'
161
176
  def on_before_build(_event)
162
177
  #ArcadiaContractListener.new(self, MsgContract, :do_msg_event)
163
178
  @tag_seq = 0
164
179
  @writing=false
165
180
  @prompt_active = false
181
+ @prompt = PROMPT_SIMBOL
166
182
  Arcadia.attach_listener(self, MsgEvent)
167
183
  Arcadia.attach_listener(self, InputKeyboardQueryEvent)
168
184
  #_frame = @arcadia.layout.register_panel('_rome_',@name, 'Output')
@@ -196,9 +212,9 @@ class Output < ArcadiaExt
196
212
  else
197
213
  @main_frame.text.insert("end","\n")
198
214
  _index_begin = @main_frame.text.index('end')
199
- TkTextImage.new(@main_frame.text, _index_begin, 'padx'=>0, 'pady'=>0, 'image'=> Arcadia.image_res(ITEM_START_LOG_GIF))
200
- #@main_frame.text.insert("end"," +--- #{format_time(_event.time)} ---+\n", 'bord_msg')
201
- sync_insert("end"," +--- #{format_time(_event.time)} ---+\n", 'bord_msg')
215
+ # TkTextImage.new(@main_frame.text, _index_begin, 'padx'=>0, 'pady'=>0, 'image'=> Arcadia.image_res(ITEM_START_LOG_GIF))
216
+ # sync_insert("end"," +--- #{format_time(_event.time)} ---+\n", 'info_msg')
217
+ sync_insert("end","===== #{format_time(_event.time)} ======\n", 'info_msg')
202
218
  end
203
219
  if _event.append
204
220
  _index_begin = "#{@main_frame.text.index(_index_begin)} - 2 lines lineend"
@@ -231,7 +247,6 @@ class Output < ArcadiaExt
231
247
  # TkTextWindow.new(@main_frame.text, 'end', 'window'=> _b)
232
248
  # end
233
249
 
234
-
235
250
  end
236
251
 
237
252
  def sync_insert(_index, _txt, _tag=nil)
@@ -242,7 +257,7 @@ class Output < ArcadiaExt
242
257
  @writing = true
243
258
  if @prompt_active
244
259
  start = @main_frame.text.get("#{_index} -1 lines linestart", _index).strip
245
- if start == PROMPT
260
+ if start == @prompt.strip
246
261
  _index = "#{_index} -1 lines linestart"
247
262
  end
248
263
  end
@@ -257,19 +272,23 @@ class Output < ArcadiaExt
257
272
  end
258
273
 
259
274
  def on_input_keyboard_query(_event)
275
+ if _event.pid
276
+ @prompt = "~#{_event.pid} #{PROMPT_SIMBOL} "
277
+ end
260
278
  @prompt_active = true
261
- sync_insert("end","#{PROMPT}",'bord_msg')
279
+ sync_insert("end", @prompt, 'prompt')
262
280
  @main_frame.text.focus
263
281
  @main_frame.text.see("end")
264
-
282
+ prompt_index = @main_frame.text.index("insert")
265
283
  @main_frame.input_buffer = nil
266
284
  while @main_frame.input_buffer.nil? && !_event.is_breaked?
267
285
  sleep(0.1)
268
286
  end
269
287
  if !_event.is_breaked?
270
288
  _event.add_result(self, 'input'=>@main_frame.input_buffer)
289
+ @main_frame.text.tag_add("prompt","#{prompt_index} linestart","#{prompt_index} lineend")
271
290
  else
272
- if @main_frame.text.get("end -1 lines linestart", "end -1 lines lineend").strip == PROMPT
291
+ if @main_frame.text.get("end -1 lines linestart", "end -1 lines lineend").strip == @prompt.strip
273
292
  @main_frame.text.delete("end -1 lines linestart", "end -1 lines lineend")
274
293
  end
275
294
  end
@@ -295,7 +314,7 @@ class Output < ArcadiaExt
295
314
  #if _row >= _from_row
296
315
  _end = 0
297
316
  #m = /([\.\/]*[\/A-Za-z_\-\.]*[\.\/\w\d]*\.rb):(\d*)/.match(l)
298
- re = Regexp.new('([\w\:]*[\.\/]*[\/A-Za-z_\-\.]*[\.\/\w\d]*[(<<current buffer>>)]*):(\d*)')
317
+ re = Regexp.new('([\w\:]*[\.\/]*[\/A-Za-z0-9_\-\.]*[\.\/\w\d]*[(<<current buffer>>)]*):(\d*)')
299
318
  m = re.match(l)
300
319
  #m = /([\.\/]*[\/A-Za-z_\-\.]*[\.\/\w\d]*):(\d*)/.match(l)
301
320
  while m
@@ -349,6 +368,12 @@ class Output < ArcadiaExt
349
368
  proc{@main_frame.text.configure('cursor'=> @cursor)}
350
369
  )
351
370
 
371
+ if @main_frame.auto_open_file?
372
+ Arcadia.process_event(OpenBufferTransientEvent.new(self,'file'=>_file, 'row'=>_line))
373
+ self.frame.show
374
+ @main_frame.text.set_focus
375
+ @main_frame.text.see("end")
376
+ end
352
377
  end
353
378
 
354
379
  def out(_txt=nil, _tag=nil)
@@ -45,4 +45,6 @@ user_toolbar.debug.debuglast.event_args=!{'file'=>"*LAST"}
45
45
  user_toolbar.debug.debugquit.name=debugquit
46
46
  user_toolbar.debug.debugquit.hint=Quit debug
47
47
  user_toolbar.debug.debugquit.image_data=!DEBUG_QUIT_GIF
48
- user_toolbar.debug.debugquit.event_class=!StopDebugEvent
48
+ user_toolbar.debug.debugquit.event_class=!StopDebugEvent
49
+
50
+ runners.ruby.debug.curr.console = {:cmd=>"rdebug <<FILE>>",:file=>"*CURR",:title=>Arcadia.text('main.runner.rdebug_selected.title',['ruby']),:file_exts=>".rb,.rbw",:image=>DEBUG_CURRENT_GIF}
@@ -137,7 +137,7 @@ class RubyDebugView
137
137
  if @tree_process.parent(_selected)=='client'
138
138
  _text = @tree_process.itemcget(_selected, 'text')
139
139
  pos = match_position_from_stack(_text)
140
- if pos && pos.length >0
140
+ if pos && pos.length >0 && File.exists?(pos[0])
141
141
  Arcadia.process_event(OpenBufferEvent.new(self,'file'=>pos[0], 'row'=>pos[1]))
142
142
  #EditorContract.instance.open_file(self, 'file'=>pos[0], 'line'=>pos[1])
143
143
  end
@@ -522,13 +522,17 @@ class RubyDebugView
522
522
  #matchline = _line.match(/#*([0-9]*)[\s\w\W]*\s([\w\:]*[\.\/]*[\/A-Za-z_\-\.]*[\.\/\w\d]*):(\d*)/)
523
523
  matchline = _line.match(/#*([0-9]*)[\s\w\W]*line\s(.*):([0-9]*)(.*)/)
524
524
  if !matchline.nil? && matchline.length==5
525
- #Arcadia.new_error_msg(self, "matchline[2]=#{matchline[2]}")
526
- #Arcadia.new_error_msg(self, "matchline[3]=#{matchline[3]}")
527
525
  filename = matchline[2].to_s.strip
528
526
  line_no = matchline[3].to_i
529
- if filename && line_no
530
- ret << filename << line_no
527
+ else
528
+ matchline = _line.match(/[lL]ine\s(.*)[:]*([0-9]*)\sof\s\"(.*)\"/)
529
+ if !matchline.nil? && matchline.length==4
530
+ filename = matchline[3].to_s.strip
531
+ line_no = matchline[1].to_i
531
532
  end
533
+ end
534
+ if filename && line_no
535
+ ret << filename << line_no
532
536
  end
533
537
  ret
534
538
  end
@@ -1141,7 +1145,8 @@ class RubyDebugClient
1141
1145
  end
1142
1146
 
1143
1147
  def where
1144
- notify("where", read("where"))
1148
+ # notify("where", read("where"))
1149
+ notify("where", read("info line"))
1145
1150
  end
1146
1151
 
1147
1152
  def quit
@@ -1392,10 +1397,12 @@ class RubyDebug < ArcadiaExt
1392
1397
  #p "on_debug --> @rdc.is_alive?=#{@rdc.is_alive?}"
1393
1398
  #p "on_debug --> @rds.is_alive?=#{@rds.is_alive?}"
1394
1399
  when SetBreakpointEvent
1395
- if _event.file
1396
- self.breakpoint_add(File.expand_path(_event.file), _event.row)
1397
- elsif _event.id
1398
- self.breakpoint_add(_event.id, _event.row)
1400
+ if _event.active > 0
1401
+ if _event.file
1402
+ self.breakpoint_add(File.expand_path(_event.file), _event.row)
1403
+ elsif _event.id
1404
+ self.breakpoint_add(_event.id, _event.row)
1405
+ end
1399
1406
  end
1400
1407
  when UnsetBreakpointEvent
1401
1408
  return if _event.file.nil?
@@ -1548,7 +1555,7 @@ class RubyDebug < ArcadiaExt
1548
1555
  end
1549
1556
  end
1550
1557
  rescue Exception => e
1551
- Arcadia.console(self, Arcadia.text('ext.ruby_debug.e.do_debug', [e.to_s, e.backtrace[0]]), 'level'=>'debug')
1558
+ Arcadia.console(self, 'msg'=> Arcadia.text('ext.ruby_debug.e.do_debug', [e.to_s, e.backtrace[0]]), 'level'=>'debug')
1552
1559
  end
1553
1560
  end
1554
1561
  end
@@ -10,5 +10,5 @@ font=courier 10
10
10
  font.bold=courier 10 bold
11
11
  freebsd::font=courier 12 italic
12
12
  freebsd::font.bold=courier 12 bold
13
- win|mingw::font={Courier New} 9
14
- win|mingw::font.bold={Courier New} 9 bold
13
+ WINDOWS::font={Courier New} 9
14
+ WINDOWS::font.bold={Courier New} 9 bold