arcadia 0.7.0 → 0.8.0

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