arcadia 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. data/README +39 -38
  2. data/bin/arc +3 -0
  3. data/bin/arcadia +0 -1
  4. data/conf/arcadia.conf +54 -35
  5. data/conf/arcadia.init.rb +26 -3
  6. data/conf/arcadia.res.rb +56 -4
  7. data/ext/ae-breakpoints/ae-breakpoints.rb +1 -1
  8. data/ext/ae-dir-projects/ae-dir-projects.rb +113 -45
  9. data/ext/ae-editor/ae-editor.conf +6 -2
  10. data/ext/ae-editor/ae-editor.rb +1009 -616
  11. data/ext/ae-editor/langs/coderay.tokens +40 -0
  12. data/ext/ae-editor/langs/conf.lang +12 -10
  13. data/ext/ae-editor/langs/erb.lang.bind +1 -0
  14. data/ext/ae-editor/langs/java.lang +4 -0
  15. data/ext/ae-editor/langs/rb.lang +25 -55
  16. data/ext/ae-editor/langs/rhtml.lang +4 -0
  17. data/ext/ae-editor/langs/tokens.lang.bind +1 -0
  18. data/ext/ae-editor/langs/xml.lang +4 -0
  19. data/ext/ae-file-history/ae-file-history.rb +140 -32
  20. data/ext/ae-output/ae-output.rb +267 -262
  21. data/ext/ae-rad/ae-rad-inspector.rb +1 -1
  22. data/ext/ae-rad/ae-rad-libs.rb +15 -7
  23. data/ext/ae-rad/ae-rad.conf +4 -4
  24. data/ext/ae-rad/lib/tk/al-tk.rb +4 -3
  25. data/ext/ae-ruby-debug/ae-ruby-debug.conf +4 -2
  26. data/ext/ae-ruby-debug/ae-ruby-debug.rb +40 -15
  27. data/ext/ae-search-in-files/ae-search-in-files.rb +70 -14
  28. data/ext/ae-search-in-files/ext/ack-in-files/ack-in-files.conf +15 -0
  29. data/ext/ae-search-in-files/ext/ack-in-files/ack-in-files.rb +80 -0
  30. data/ext/ae-shell/ae-shell.conf +4 -1
  31. data/ext/ae-shell/ae-shell.rb +78 -43
  32. data/ext/test-shutdown-after-startup/test-shutdown-after-startup.conf +4 -0
  33. data/ext/test-shutdown-after-startup/test-shutdown-after-startup.rb +20 -0
  34. data/lib/a-commons.rb +118 -22
  35. data/lib/a-contracts.rb +46 -2
  36. data/lib/a-core.rb +970 -284
  37. data/lib/a-tkcommons.rb +16 -8
  38. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ArrowButton.html +0 -0
  39. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/BWidget.html +0 -0
  40. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Button.html +0 -0
  41. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ButtonBox.html +0 -0
  42. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ComboBox.html +0 -0
  43. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Dialog.html +20 -0
  44. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DragSite.html +6 -4
  45. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DropSite.html +15 -3
  46. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DynamicHelp.html +8 -5
  47. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Entry.html +0 -0
  48. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Label.html +0 -0
  49. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/LabelEntry.html +0 -0
  50. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/LabelFrame.html +0 -0
  51. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ListBox.html +1 -1
  52. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/MainFrame.html +8 -0
  53. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/MessageDlg.html +0 -0
  54. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/NoteBook.html +0 -0
  55. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PagesManager.html +0 -0
  56. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PanedWindow.html +21 -5
  57. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PanelFrame.html +0 -0
  58. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PasswdDlg.html +0 -0
  59. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ProgressBar.html +0 -0
  60. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ProgressDlg.html +0 -0
  61. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrollView.html +0 -0
  62. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrollableFrame.html +5 -2
  63. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrolledWindow.html +36 -4
  64. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SelectColor.html +0 -0
  65. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SelectFont.html +0 -0
  66. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Separator.html +0 -0
  67. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SpinBox.html +0 -0
  68. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/StatusBar.html +0 -0
  69. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/TitleFrame.html +0 -0
  70. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Tree.html +21 -31
  71. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Widget.html +0 -0
  72. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/contents.html +0 -0
  73. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/index.html +0 -0
  74. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/navtree.html +0 -0
  75. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/options.htm +0 -0
  76. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/CHANGES.txt +0 -0
  77. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/ChangeLog +289 -0
  78. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/LICENSE.txt +0 -0
  79. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/README.txt +2 -2
  80. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/arrow.tcl +1 -1
  81. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/bitmap.tcl +0 -0
  82. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/button.tcl +0 -0
  83. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/buttonbox.tcl +23 -12
  84. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/color.tcl +0 -0
  85. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/combobox.tcl +101 -25
  86. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/basic.tcl +0 -0
  87. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/bwidget.xbm +0 -0
  88. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/demo.tcl +1 -1
  89. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/dnd.tcl +0 -0
  90. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/manager.tcl +0 -0
  91. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/select.tcl +0 -0
  92. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/tmpldlg.tcl +0 -0
  93. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/tree.tcl +0 -0
  94. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/x1.xbm +0 -0
  95. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dialog.tcl +0 -0
  96. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dragsite.tcl +0 -0
  97. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dropsite.tcl +2 -1
  98. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dynhelp.tcl +194 -33
  99. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/entry.tcl +8 -5
  100. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/font.tcl +0 -0
  101. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/bold.gif +0 -0
  102. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/copy.gif +0 -0
  103. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/cut.gif +0 -0
  104. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/dragfile.gif +0 -0
  105. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/dragicon.gif +0 -0
  106. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/error.gif +0 -0
  107. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/file.gif +0 -0
  108. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/folder.gif +0 -0
  109. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/hourglass.gif +0 -0
  110. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/info.gif +0 -0
  111. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/italic.gif +0 -0
  112. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/minus.xbm +0 -0
  113. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/new.gif +0 -0
  114. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/opcopy.xbm +0 -0
  115. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/open.gif +0 -0
  116. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/openfold.gif +0 -0
  117. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/oplink.xbm +0 -0
  118. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/opmove.xbm +0 -0
  119. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/overstrike.gif +0 -0
  120. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/palette.gif +0 -0
  121. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/passwd.gif +0 -0
  122. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/paste.gif +0 -0
  123. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/plus.xbm +0 -0
  124. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/print.gif +0 -0
  125. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/question.gif +0 -0
  126. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/redo.gif +0 -0
  127. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/save.gif +0 -0
  128. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/target.xbm +0 -0
  129. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/underline.gif +0 -0
  130. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/undo.gif +0 -0
  131. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/warning.gif +0 -0
  132. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/init.tcl +0 -0
  133. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/label.tcl +0 -0
  134. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/labelentry.tcl +0 -0
  135. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/labelframe.tcl +0 -0
  136. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/da.rc +0 -0
  137. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/de.rc +0 -0
  138. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/en.rc +0 -0
  139. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/es.rc +0 -0
  140. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/fr.rc +0 -0
  141. data/tcl/BWidget-1.9.0/lang/hu.rc +52 -0
  142. data/tcl/BWidget-1.9.0/lang/nl.rc +52 -0
  143. data/tcl/BWidget-1.9.0/lang/no.rc +52 -0
  144. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/listbox.tcl +89 -34
  145. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/mainframe.tcl +14 -13
  146. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/messagedlg.tcl +0 -0
  147. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/notebook.tcl +3 -1
  148. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/pagesmgr.tcl +0 -0
  149. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/panedw.tcl +22 -18
  150. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/panelframe.tcl +0 -0
  151. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/passwddlg.tcl +7 -3
  152. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/pkgIndex.tcl +2 -2
  153. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/progressbar.tcl +0 -0
  154. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/progressdlg.tcl +0 -0
  155. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollframe.tcl +60 -24
  156. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollview.tcl +0 -0
  157. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollw.tcl +13 -11
  158. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/separator.tcl +0 -0
  159. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/spinbox.tcl +0 -0
  160. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/statusbar.tcl +0 -0
  161. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/tests/entry.test +0 -0
  162. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/titleframe.tcl +0 -0
  163. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/tree.tcl +51 -41
  164. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/utils.tcl +26 -11
  165. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/widget.tcl +53 -19
  166. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/wizard.tcl +0 -0
  167. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/xpm2image.tcl +0 -0
  168. metadata +170 -145
@@ -1030,7 +1030,7 @@ class TkMenuButtonObjBoard < ObjBoard
1030
1030
  _space = _space + ' '
1031
1031
  end
1032
1032
  if _agobj.ag_parent != nil
1033
- _result = _space + '¦'+_result
1033
+ _result = _space + '|'+_result
1034
1034
  end
1035
1035
  return _result
1036
1036
  end
@@ -218,12 +218,16 @@ class AGRenderer
218
218
  code = code, value.renderer.obj_code(_ind+1),"\n"
219
219
  end
220
220
  }
221
- return code.to_s
221
+ if code.kind_of?(Array)
222
+ code.flatten.join
223
+ else
224
+ code
225
+ end
222
226
  end
223
227
 
224
228
  def class_end(_ind=0)
225
229
  code = code, "\n", INDENT_UNIT*(_ind+1),"end\n",INDENT_UNIT*(_ind),"end"
226
- return code.to_s
230
+ return code.flatten.join
227
231
  end
228
232
 
229
233
  def obj_code(_ind=0)
@@ -317,7 +321,7 @@ class AGRenderer
317
321
  return nil
318
322
  end
319
323
 
320
- _prop['def_string'] != nil && !_prop['def_string'] ? is_string = false: is_string = true
324
+ _prop['def_string'] != nil && !_prop['def_string'] ? is_string = false : is_string = true
321
325
 
322
326
  if _val.kind_of?(String) && is_string
323
327
  _val = "'",_val,"'"
@@ -325,17 +329,21 @@ class AGRenderer
325
329
  _val = _val.to_s
326
330
  end
327
331
  #Tk.messageBox('message'=>_val)
328
- return _val
332
+ if _val.kind_of?(Array)
333
+ _val.flatten.join
334
+ else
335
+ _val
336
+ end
329
337
  end
330
338
 
331
339
  def render_value_default(_prop, _family)
332
340
  return nil if _prop == nil
333
341
  _val = _prop['value']
334
- _prop['def_string'] != nil && !_prop['def_string'] ? is_string = false: is_string = true
342
+ _prop['def_string'] != nil && !_prop['def_string'] ? is_string = false : is_string = true
335
343
  if _val.kind_of?(String) && is_string
336
344
  _val = "'",_val,"'"
337
345
  elsif _val != nil
338
- _val = _val.to_s
346
+ _val = _val.flatten.join
339
347
  end
340
348
  return _val
341
349
  end
@@ -1115,4 +1123,4 @@ end
1115
1123
  # end
1116
1124
  # def update(_tobj)
1117
1125
  # end
1118
- #end
1126
+ #end
@@ -13,9 +13,9 @@ user_toolbar.contexts=tkrad
13
13
  user_toolbar.tkrad = show
14
14
  user_toolbar.tkrad.show.name=show_rad
15
15
  user_toolbar.tkrad.show.hint=Show Rad Palette
16
- user_toolbar.tkrad.show.image_data=AGTKTOPLEVEL_GIF
17
- user_toolbar.tkrad.show.event_class=ActionEvent
18
- user_toolbar.tkrad.show.event_args={'receiver'=>self, 'action' =>'show_rad'}
16
+ user_toolbar.tkrad.show.image_data=!AGTKTOPLEVEL_GIF
17
+ user_toolbar.tkrad.show.event_class=!ActionEvent
18
+ user_toolbar.tkrad.show.event_args=!{'receiver'=>self, 'action' =>'show_rad'}
19
19
  #:::::::::::::::: user toolbar :::::::::::::::::::::::::<end>
20
20
 
21
21
  #:::::::::::::::: Libraries group ::::::::::::::::::::::<begin>
@@ -71,4 +71,4 @@ libraries.tkArcadia.action=
71
71
  libraries.tkArcadia.require=tk
72
72
 
73
73
 
74
- #:::::::::::::::: Libraries group ::::::::::::::::::::::<end>
74
+ #:::::::::::::::: Libraries group ::::::::::::::::::::::<end>
@@ -2379,14 +2379,15 @@ class AGTkToplevel < AGTkContainer
2379
2379
 
2380
2380
  def form2code
2381
2381
  _title = @i_name+'.rb'
2382
- _text = @renderer.class_code.to_s
2382
+ _text = @renderer.class_code.flatten.join
2383
+
2383
2384
  Arcadia.process_event(OpenBufferEvent.new(self,'title'=>_title, 'text'=>_text))
2384
2385
  meditor = $arcadia['editor']
2385
2386
  if meditor
2386
2387
  _editor = meditor.raised
2387
2388
  code2form = proc{
2388
2389
  Revparsel.new(_editor.text_value)
2389
- meditor.close_editor(_editor, false)
2390
+ meditor.close_editor(_editor, true)
2390
2391
  InspectorContract.instance.raise_last_widget(meditor)
2391
2392
  }
2392
2393
  _editor.insert_popup_menu_item('end',
@@ -2992,4 +2993,4 @@ class ArcadiaLibTk < ArcadiaLib
2992
2993
  self.add_class(AGTkMenu)
2993
2994
  self.add_class(AGTkMenuButton)
2994
2995
  end
2995
- end
2996
+ end
@@ -7,11 +7,14 @@ frames.names=ruby_debug_inspector,ruby_debug_server
7
7
  active=yes
8
8
  require=ext/ae-ruby-debug/ae-ruby-debug
9
9
  class=RubyDebug
10
+ gems=ruby-debug,whichr
11
+ 1.9:@:gems=ruby-debug19,whichr
10
12
  #========================================
11
13
  #========================================
12
14
  server.host=localhost
13
15
  server.port=8989
14
16
  server.timeout=10
17
+ auto_resume_break_on_first_line=yes
15
18
  #font=courier 10
16
19
  #font.bold=courier 10 bold
17
20
  #color.background=#ffffff
@@ -20,5 +23,4 @@ server.timeout=10
20
23
  #freebsd::font.bold=courier 10 bold
21
24
  #win::font={Courier New} 8
22
25
  #win::font.bold={Courier New} 8 bold
23
- #========================================
24
-
26
+ #========================================
@@ -3,6 +3,7 @@
3
3
  # by Antonio Galeone <antonio-galeone@rubyforge.org>
4
4
  #
5
5
 
6
+ require 'whichr'
6
7
 
7
8
  class RubyDebugView
8
9
  include TkUtil
@@ -474,8 +475,8 @@ class RubyDebugView
474
475
  begin
475
476
  if _command == 'quit'
476
477
  msg = "Really quit debug ? (y/n)"
477
- ans = Tk.messageBox('icon' => 'question', 'type' => 'yesno',
478
- 'title' => '(Arcadia) Debug', 'message' => msg)
478
+ ans = 'yes'#Tk.messageBox('icon' => 'question', 'type' => 'yesno',
479
+ # 'title' => '(Arcadia) Debug', 'message' => msg)
479
480
  if ans == 'yes'
480
481
  debug_send(:quit_yes)
481
482
  clear
@@ -559,7 +560,7 @@ class RubyDebugView
559
560
  end
560
561
 
561
562
  def is_simple_class?(_var)
562
- ['Numeric','Fixnum','String','FalseClass','TrueClass','NilClass'].include?(_var.value_class) && !_var.value.to_s.strip.include?("\n")
563
+ ['Numeric','Fixnum','String','FalseClass','TrueClass','NilClass','Float','BigDecimal','Bignum','Symbol'].include?(_var.value_class) && !_var.value.to_s.strip.include?("\n")
563
564
  end
564
565
 
565
566
  def show_expression(_exp, _hash)
@@ -664,7 +665,7 @@ class RubyDebugView
664
665
  end
665
666
 
666
667
  def node_name(_node, _parent)
667
- return "#{_parent}@@@#{_node.gsub('$','__S__').gsub('&','__E__').gsub(':','__D__').gsub('!','__A__')}"
668
+ return "#{_parent}@@@#{_node.to_s.gsub('$','__S__').gsub('&','__E__').gsub(':','__D__').gsub('!','__A__')}"
668
669
  end
669
670
 
670
671
  def var_name(_node)
@@ -744,7 +745,7 @@ class RubyDebugView
744
745
  end
745
746
  #@controller.rdc.send(_command)
746
747
  rescue Exception => e
747
- Arcadia.console(self, 'msg'=>"---> "+e.to_s, 'level'=>'debug')
748
+ Arcadia.console(self, 'msg'=>"---> "+e.to_s + ' ' + e.backtrace[0], 'level'=>'debug')
748
749
  #Arcadia.new_debug_msg(self,"---> "+e.to_s)
749
750
  end
750
751
  end
@@ -769,7 +770,14 @@ class RubyDebugServer
769
770
 
770
771
  def start_session_new(_filename, _host='localhost', _remote_port='8989')
771
772
  if is_windows?
772
- commandLine = "rdebug.cmd --host #{_host} --port #{_remote_port} -sw #{_filename}"
773
+ if RubyWhich.new.which("rdebug.bat") != []
774
+ rdebug_cmd = "rdebug.bat"
775
+ elsif RubyWhich.new.which("rdebug.cmd") != []
776
+ rdebug_cmd = "rdebug.cmd"
777
+ else
778
+ rdebug_cmd = "rdebug"
779
+ end
780
+ commandLine = "#{rdebug_cmd} --host #{_host} --port #{_remote_port} -sw #{_filename}"
773
781
  else
774
782
  commandLine = "rdebug --host #{_host} --port #{_remote_port} -sw #{_filename}"
775
783
  end
@@ -786,7 +794,14 @@ class RubyDebugServer
786
794
 
787
795
  def start_session(_filename, _host='localhost', _remote_port='8989')
788
796
  if is_windows?
789
- commandLine = "rdebug.cmd --port #{_remote_port} -sw #{_filename}"
797
+ if RubyWhich.new.which("rdebug.bat") != []
798
+ rdebug_cmd = "rdebug.bat"
799
+ elsif RubyWhich.new.which("rdebug.cmd") != []
800
+ rdebug_cmd = "rdebug.cmd"
801
+ else
802
+ rdebug_cmd = "rdebug"
803
+ end
804
+ commandLine = "#{rdebug_cmd} --port #{_remote_port} -sw #{_filename}"
790
805
  else
791
806
  commandLine = "rdebug --host #{_host} --port #{_remote_port} -sw #{_filename}"
792
807
  end
@@ -875,7 +890,7 @@ end
875
890
  # * undisp[lay][ nnn]
876
891
  # delete one particular or all display expressions if no expression number given
877
892
  # * del[ete][ nnn]
878
- # delete some or all breakpoints (get the number using “break”)
893
+ # delete some or all breakpoints (get the number using break)
879
894
  # * c[ont]
880
895
  # run until program ends or hit breakpoint
881
896
  # * r[un]
@@ -1032,7 +1047,7 @@ class RubyDebugClient
1032
1047
  end
1033
1048
  return @session
1034
1049
  rescue Exception => e
1035
- Arcadia.console(self, 'msg'=>"Error on start_session : #{e.class}:#{e.message}", 'level'=>'debug')
1050
+ Arcadia.console(self, 'msg'=>"Error on start_session : #{e.class}:#{e.message} #{e.backtrace.join('..')}", 'level'=>'debug')
1036
1051
  #Arcadia.new_debug_msg(self,"Error on start_session : #{e.class}:#{e.message}")
1037
1052
  end
1038
1053
  end
@@ -1369,7 +1384,7 @@ class RubyDebug < ArcadiaExt
1369
1384
  attr_reader :rds
1370
1385
  attr_reader :rdc
1371
1386
  def on_before_build(_event)
1372
- if !full_in_path_command('rdebug').nil?
1387
+ if RubyWhich.new.which("rdebug") != []
1373
1388
  #ArcadiaContractListener.new(self, EditorContract, :do_editor_event)
1374
1389
  Arcadia.attach_listener(self, BufferEvent)
1375
1390
  @breakpoints = Hash.new
@@ -1397,7 +1412,14 @@ class RubyDebug < ArcadiaExt
1397
1412
  when StartDebugEvent
1398
1413
  _filename = _event.file
1399
1414
  _filename = @arcadia['pers']['run.file.last'] if _filename == "*LAST"
1400
- debug(_filename)
1415
+ if File.exist?(_filename)
1416
+ debug(_filename)
1417
+ else
1418
+ Arcadia.dialog(self,
1419
+ 'type'=>'ok',
1420
+ 'title'=>'File not exist',
1421
+ 'msg'=>"File #{_filename} not exist!")
1422
+ end
1401
1423
  when StepDebugEvent
1402
1424
  if (_event.command == :quit_yes)
1403
1425
  @rds.quit_confirm_request = true
@@ -1541,10 +1563,13 @@ class RubyDebug < ArcadiaExt
1541
1563
  @static_breakpoints.each{|_b|
1542
1564
  #Arcadia.console(self,'msg'=>" breakpoint_add #{_b[:file]}:#{_b[:line]}")
1543
1565
  breakpoint_add_live(_b[:file], _b[:line])
1544
- }
1566
+ }
1567
+ if @static_breakpoints.length > 0 && conf("auto_resume_break_on_first_line")!='no'
1568
+ @rdv.debug_send(:resume)
1569
+ end
1545
1570
  end
1546
1571
  rescue Exception => e
1547
- Arcadia.console(self, 'msg'=>"---> "+e.to_s, 'level'=>'debug')
1572
+ Arcadia.console(self, 'msg'=>"---> "+e.to_s+ ' ' + e.backtrace[0], 'level'=>'debug')
1548
1573
  end
1549
1574
  end
1550
1575
  end
@@ -1581,7 +1606,7 @@ class RubyDebug < ArcadiaExt
1581
1606
  begin
1582
1607
  debug_free
1583
1608
  rescue Exception => e
1584
- Arcadia.console(self, 'msg'=>"debug_quit:---> "+e.to_s, 'level'=>'debug')
1609
+ Arcadia.console(self, 'msg'=>"debug_quit:---> "+e.to_s+ ' ' + e.backtrace[0], 'level'=>'debug')
1585
1610
  #Arcadia.new_debug_msg(self, "debug_quit:---> "+e.to_s)
1586
1611
  #@arcadia['shell'].outln("debug_quit:---> "+e.to_s )
1587
1612
  end
@@ -1591,4 +1616,4 @@ class RubyDebug < ArcadiaExt
1591
1616
 
1592
1617
 
1593
1618
 
1594
- end
1619
+ end
@@ -11,15 +11,17 @@ class SearchInFilesService < ArcadiaExt
11
11
 
12
12
  end
13
13
 
14
-
15
14
  class SearchInFilesListener
16
15
  def initialize(_service)
17
16
  @service = _service
18
- create_find
17
+ create_find 'Search in files'
19
18
  end
20
19
 
21
20
  def on_before_search_in_files(_event)
22
21
  if _event.what.nil?
22
+ if _event.dir
23
+ @find.e_dir.text(_event.dir)
24
+ end
23
25
  @find.show
24
26
  end
25
27
  end
@@ -31,21 +33,54 @@ class SearchInFilesListener
31
33
  #def on_after_search_in_files(_event)
32
34
  #end
33
35
 
34
- def create_find
36
+ def create_find title
35
37
  @find = FindFrame.new(@service.arcadia.layout.root)
36
38
  @find.on_close=proc{@find.hide}
37
39
  @find.hide
38
- @find.b_go.bind('1', proc{Thread.new{do_find}})
39
- @find.e_what_entry.bind_append('KeyRelease'){|e|
40
+ @find.b_go.bind('1', proc{Thread.new{update_all_combo;do_find}}) # add trigger to button
41
+
42
+ enter_proc = proc {|e|
40
43
  case e.keysym
41
44
  when 'Return'
45
+ update_all_combo
42
46
  do_find
43
47
  Tk.callback_break
44
48
  end
45
49
  }
46
- @find.title("Search in files")
50
+
51
+ for method in [:e_what_entry, :e_filter_entry, :e_dir_entry] do
52
+ @find.send(method).bind_append('KeyRelease') { |*args| enter_proc.call *args } # ltodo why can't we pass it in like &enter_proc?
53
+ end
54
+ @find.title(title)
47
55
  end
48
56
  private :create_find
57
+
58
+ def update_what_combo(_txt)
59
+ values = @find.e_what.cget('values')
60
+ if (values != nil && !values.include?(_txt))
61
+ @find.e_what.insert('end', _txt)
62
+ end
63
+ end
64
+
65
+ def update_filter_combo(_txt)
66
+ values = @find.e_filter.cget('values')
67
+ if (values != nil && !values.include?(_txt))
68
+ @find.e_filter.insert('end', _txt)
69
+ end
70
+ end
71
+
72
+ def update_dir_combo(_txt)
73
+ values = @find.e_dir.cget('values')
74
+ if (values != nil && !values.include?(_txt))
75
+ @find.e_dir.insert('end', _txt)
76
+ end
77
+ end
78
+
79
+ def update_all_combo
80
+ update_what_combo(@find.e_what.text)
81
+ update_filter_combo(@find.e_filter.text)
82
+ update_dir_combo(@find.e_dir.text)
83
+ end
49
84
 
50
85
  def do_find
51
86
  return if @find.e_what.text.strip.length == 0 || @find.e_filter.text.strip.length == 0 || @find.e_dir.text.strip.length == 0
@@ -56,6 +91,9 @@ class SearchInFilesListener
56
91
  @service.frame.show
57
92
  end
58
93
  begin
94
+
95
+ MonitorLastUsedDir.set_last @find.e_dir.text # save it away TODO make it into a message
96
+
59
97
  _search_title = 'search result for : "'+@find.e_what.text+'" in :"'+@find.e_dir.text+'"'+' ['+@find.e_filter.text+']'
60
98
  _filter = @find.e_dir.text+'/**/'+@find.e_filter.text
61
99
  _files = Dir[_filter]
@@ -80,7 +118,7 @@ class SearchInFilesListener
80
118
  Arcadia.console(self, 'msg'=>e.message, 'level'=>'error')
81
119
  #Arcadia.new_error_msg(self, e.message)
82
120
  ensure
83
- @progress_bar.destroy
121
+ @progress_bar.destroy if @progress_bar
84
122
  end
85
123
 
86
124
  end
@@ -188,14 +226,27 @@ class SearchOutput
188
226
  @results[_node][_node_name]=[_file,_line]
189
227
  Tk.update
190
228
  end
229
+
230
+ def add_result(_node, _file, _line='', _line_text='')
231
+ @count = @count+1
232
+ @tree.itemconfigure(_node, 'fill'=>@found_color, 'text'=>@text_result+' { '+@count.to_s+' found }')
233
+ _text = _file+':'+_line+' : '+_line_text
234
+ _node_name = new_node_name
235
+ @tree.insert('end', _node ,_node+'@@@'+_node_name, {
236
+ 'fill'=>@item_color,
237
+ 'anchor'=>'w',
238
+ 'font' => Arcadia.conf('treeitem.font'),
239
+ 'text' => _text.strip
240
+ })
241
+ @results[_node][_node_name]=[_file,_line]
242
+ Tk.update
243
+ end
191
244
 
192
245
  end
193
246
 
194
247
  class FindFrame < TkFloatTitledFrame
195
- attr_reader :e_what
196
- attr_reader :e_what_entry
197
- attr_reader :e_filter
198
- attr_reader :e_dir
248
+ attr_reader :e_what, :e_filter, :e_dir
249
+ attr_reader :e_what_entry, :e_filter_entry, :e_dir_entry
199
250
  attr_reader :b_go
200
251
  def initialize(_parent)
201
252
  super(_parent)
@@ -215,6 +266,7 @@ class FindFrame < TkFloatTitledFrame
215
266
  place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
216
267
  }
217
268
  @e_what_entry = TkWinfo.children(@e_what)[0]
269
+ # this means "after each key press
218
270
  @e_what_entry.bind_append("1",proc{Arcadia.process_event(InputEnterEvent.new(self,'receiver'=>@e_what_entry))})
219
271
 
220
272
  y0 = y0 + d
@@ -230,12 +282,14 @@ class FindFrame < TkFloatTitledFrame
230
282
  autocomplete 'true'
231
283
  expand 'tab'
232
284
  takefocus 'true'
233
- #pack('padx'=>10, 'fill'=>'x')
285
+ #pack('padx'=>10, 'fill'=>'x')
234
286
  place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
235
287
  }
236
288
  @e_filter_entry = TkWinfo.children(@e_filter)[0]
237
289
  @e_filter_entry.bind_append("1",proc{Arcadia.process_event(InputEnterEvent.new(self,'receiver'=>@e_filter_entry))})
238
290
 
291
+ @e_filter.insert('end', '*.*')
292
+ @e_filter.insert('end', '*.rb')
239
293
  @e_filter.text('*.rb')
240
294
  y0 = y0 + d
241
295
 
@@ -256,7 +310,9 @@ class FindFrame < TkFloatTitledFrame
256
310
  #pack('fill'=>'x')
257
311
  #place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
258
312
  }
259
- @e_dir.text(Dir.pwd)
313
+ @e_dir.text(MonitorLastUsedDir.get_last_dir)
314
+ @e_dir_entry = TkWinfo.children(@e_dir)[0]
315
+
260
316
  @b_dir = TkButton.new(@e_dir, Arcadia.style('button') ){
261
317
  compound 'none'
262
318
  default 'disabled'
@@ -296,4 +352,4 @@ class FindFrame < TkFloatTitledFrame
296
352
  @e_what.focus
297
353
  @e_what_entry.selection_range(0,'end')
298
354
  end
299
- end
355
+ end
@@ -0,0 +1,15 @@
1
+ name=ack_in_files
2
+ frames=1.1
3
+ frames.labels=Ack in files
4
+ frames.names=ack_in_files
5
+ active=yes
6
+ require=ext/ae-search-in-files/ext/ack-in-files/ack-in-files
7
+ class=AckInFilesService
8
+ font=courier 10
9
+ font.bold=courier 10 bold
10
+ color.background=#ffffff
11
+ color.foreground=#000000
12
+ freebsd::font=courier 12 italic
13
+ freebsd::font.bold=courier 12 bold
14
+ win::font={Courier New} 9
15
+ win::font.bold={Courier New} 9 bold