arcadia 0.8.1 → 0.9.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.
- data/README +28 -22
- data/bin/arcadia +3 -3
- data/conf/arcadia.conf +87 -36
- data/conf/arcadia.res.rb +143 -5
- data/conf/theme-dark.conf +94 -0
- data/conf/theme-dark.res.rb +218 -0
- data/ext/ae-breakpoints/ae-breakpoints.rb +1 -0
- data/ext/ae-dir-projects/ae-dir-projects.rb +37 -9
- data/ext/ae-editor/ae-editor.conf +10 -9
- data/ext/ae-editor/ae-editor.rb +306 -127
- data/ext/ae-editor/langs/pers.lang.bind +1 -0
- data/ext/ae-editor/langs/rb.lang +6 -6
- data/ext/ae-editor/langs/tcl.lang +3 -0
- data/ext/ae-file-history/ae-file-history.rb +4 -11
- data/ext/ae-output/ae-output.rb +57 -38
- data/ext/ae-rad/ae-rad-inspector.rb +1 -1
- data/ext/ae-rad/ae-rad-palette.rb +2 -2
- data/ext/ae-rad/ae-rad.rb +7 -7
- data/ext/ae-rad/lib/tk/al-tk.rb +3 -3
- data/ext/ae-rad/lib/tk/al-tkcustom.rb +2 -2
- data/ext/ae-ruby-debug/ae-ruby-debug.conf +20 -1
- data/ext/ae-ruby-debug/ae-ruby-debug.rb +69 -65
- data/ext/ae-search-in-files/ae-search-in-files.rb +2 -17
- data/ext/ae-shell/ae-shell.conf +7 -6
- data/ext/ae-shell/ae-shell.rb +211 -32
- data/ext/ae-subprocess-inspector/ae-subprocess-inspector.conf +11 -0
- data/ext/ae-subprocess-inspector/ae-subprocess-inspector.rb +109 -0
- data/lib/a-commons.rb +74 -16
- data/lib/a-contracts.rb +18 -1
- data/lib/a-core.rb +410 -77
- data/lib/a-tkcommons.rb +338 -138
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ArrowButton.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/BWidget.html +2 -2
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/Button.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ButtonBox.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ComboBox.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/Dialog.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/DragSite.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/DropSite.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/DynamicHelp.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/Entry.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/Label.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/LabelEntry.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/LabelFrame.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ListBox.html +1 -4
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/MainFrame.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/MessageDlg.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/NoteBook.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/PagesManager.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/PanedWindow.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/PanelFrame.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/PasswdDlg.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ProgressBar.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ProgressDlg.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ScrollView.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ScrollableFrame.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/ScrolledWindow.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/SelectColor.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/SelectFont.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/Separator.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/SpinBox.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/StatusBar.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/TitleFrame.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/Tree.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/Widget.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/contents.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/index.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/navtree.html +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/BWman/options.htm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/CHANGES.txt +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/ChangeLog +70 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/LICENSE.txt +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/README.txt +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/arrow.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/bitmap.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/button.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/buttonbox.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/color.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/combobox.tcl +4 -4
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/basic.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/bwidget.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/demo.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/dnd.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/manager.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/select.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/tmpldlg.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/tree.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/demo/x1.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/dialog.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/dragsite.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/dropsite.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/dynhelp.tcl +25 -18
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/entry.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/font.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/bold.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/copy.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/cut.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/dragfile.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/dragicon.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/error.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/file.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/folder.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/hourglass.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/info.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/italic.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/minus.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/new.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/opcopy.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/open.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/openfold.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/oplink.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/opmove.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/overstrike.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/palette.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/passwd.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/paste.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/plus.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/print.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/question.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/redo.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/save.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/target.xbm +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/underline.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/undo.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/images/warning.gif +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/init.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/label.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/labelentry.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/labelframe.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/da.rc +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/de.rc +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/en.rc +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/es.rc +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/fr.rc +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/hu.rc +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/nl.rc +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/lang/no.rc +0 -0
- data/tcl/BWidget-1.9.2/lang/pl.rc +104 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/listbox.tcl +68 -35
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/mainframe.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/messagedlg.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/notebook.tcl +2 -2
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/pagesmgr.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/panedw.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/panelframe.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/passwddlg.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/pkgIndex.tcl +2 -2
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/progressbar.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/progressdlg.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/scrollframe.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/scrollview.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/scrollw.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/separator.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/spinbox.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/statusbar.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/tests/entry.test +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/titleframe.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/tree.tcl +6 -1
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/utils.tcl +27 -7
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/widget.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/wizard.tcl +0 -0
- data/tcl/{BWidget-1.9.0 → BWidget-1.9.2}/xpm2image.tcl +0 -0
- metadata +162 -153
data/ext/ae-editor/ae-editor.rb
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
require 'tk'
|
|
9
9
|
require 'tktext'
|
|
10
|
-
require
|
|
10
|
+
require "#{Dir.pwd}/lib/a-tkcommons"
|
|
11
11
|
#require 'lib/a-commons'
|
|
12
|
-
require
|
|
12
|
+
require "#{Dir.pwd}/lib/a-core"
|
|
13
13
|
|
|
14
14
|
class TreeNode
|
|
15
15
|
attr_reader :sons
|
|
@@ -230,24 +230,48 @@ class SafeCompleteCode
|
|
|
230
230
|
process_source
|
|
231
231
|
end
|
|
232
232
|
|
|
233
|
+
# def dot_trip(_var_name)
|
|
234
|
+
# ret = "_class=#{_var_name}.class.name\n"
|
|
235
|
+
# ret = ret +" _methods=#{_var_name}.methods\n"
|
|
236
|
+
# ret = ret +"owner_on = Method.instance_methods.include?('owner')\n"
|
|
237
|
+
# ret = ret + "_methods.each{|m|\n"
|
|
238
|
+
# ret = ret + "meth = #{_var_name}.method(m)\n"
|
|
239
|
+
# ret = ret +"if owner_on\n"
|
|
240
|
+
# ret = ret +"_owner=meth.owner.name\n"
|
|
241
|
+
# ret = ret +"else\n"
|
|
242
|
+
# ret = ret +"meth_insp = meth.inspect\n"
|
|
243
|
+
# ret = ret +"to_sub ='#<Method:\s'+_class\n"
|
|
244
|
+
# ret = ret +"_owner=meth_insp.sub(to_sub,'').split('#')[0].strip.sub('(','').sub(')','')\n"
|
|
245
|
+
# ret = ret +"_owner=_class if _owner.strip.length==0\n"
|
|
246
|
+
# ret = ret +"end\n"
|
|
247
|
+
# ret = ret + "if _owner != _class\n"
|
|
248
|
+
# ret = ret + "print _owner+'#'+m+'#'+meth.arity.to_s+'\n'\n"
|
|
249
|
+
# ret = ret +"else\n"
|
|
250
|
+
# ret = ret + "print ''+'#'+m+'#'+meth.arity.to_s+'\n'\n"
|
|
251
|
+
# ret = ret +"end\n"
|
|
252
|
+
# ret = ret + "}\n"
|
|
253
|
+
# ret = ret + "exit\n"
|
|
254
|
+
# ret
|
|
255
|
+
# end
|
|
256
|
+
|
|
233
257
|
def dot_trip(_var_name)
|
|
234
258
|
ret = "_class=#{_var_name}.class.name\n"
|
|
235
|
-
ret = ret +"
|
|
259
|
+
ret = ret +"_methods=#{_var_name}.methods\n"
|
|
236
260
|
ret = ret +"owner_on = Method.instance_methods.include?('owner')\n"
|
|
237
|
-
ret = ret +
|
|
238
|
-
ret = ret +
|
|
261
|
+
ret = ret +"_methods.each{|m|\n"
|
|
262
|
+
ret = ret +"meth = #{_var_name}.method(m)\n"
|
|
239
263
|
ret = ret +"if owner_on\n"
|
|
240
|
-
ret = ret +"_owner=meth.owner.name\n"
|
|
264
|
+
ret = ret +" _owner=meth.owner.name\n"
|
|
241
265
|
ret = ret +"else\n"
|
|
242
|
-
ret = ret +"meth_insp = meth.inspect\n"
|
|
243
|
-
ret = ret +"to_sub ='#<Method:\s'+_class\n"
|
|
244
|
-
ret = ret +"_owner=meth_insp.sub(to_sub,'').split('#')[0].strip.sub('(','').sub(')','')\n"
|
|
245
|
-
ret = ret +"_owner=_class if _owner.strip.length==0\n"
|
|
266
|
+
ret = ret +" meth_insp = meth.inspect\n"
|
|
267
|
+
ret = ret +" to_sub ='#<Method:\s'+_class\n"
|
|
268
|
+
ret = ret +" _owner=meth_insp.sub(to_sub,'').split('#')[0].strip.sub('(','').sub(')','')\n"
|
|
269
|
+
ret = ret +" _owner=_class if _owner.strip.length==0\n"
|
|
246
270
|
ret = ret +"end\n"
|
|
247
|
-
ret = ret +
|
|
248
|
-
ret = ret +
|
|
271
|
+
ret = ret +"if _owner != _class\n"
|
|
272
|
+
ret = ret +' print %Q{#{_owner}##{m}##{meth.arity.to_s}\n}'+"\n"
|
|
249
273
|
ret = ret +"else\n"
|
|
250
|
-
ret = ret +
|
|
274
|
+
ret = ret +' print %Q{##{m}##{meth.arity.to_s}\n}'+"\n"
|
|
251
275
|
ret = ret +"end\n"
|
|
252
276
|
ret = ret + "}\n"
|
|
253
277
|
ret = ret + "exit\n"
|
|
@@ -490,12 +514,11 @@ class SafeCompleteCode
|
|
|
490
514
|
|
|
491
515
|
def candidates(_show_error = false)
|
|
492
516
|
temp_file = create_modified_temp_file(@file)
|
|
493
|
-
|
|
494
|
-
|
|
517
|
+
begin
|
|
518
|
+
Arcadia.is_windows??ruby='rubyw':ruby='ruby'
|
|
495
519
|
_cmp_s = "|#{ruby} '#{temp_file}'"
|
|
496
520
|
_ret = nil
|
|
497
|
-
open(_cmp_s,"r") do
|
|
498
|
-
|f|
|
|
521
|
+
open(_cmp_s,"r") do |f|
|
|
499
522
|
_ret = f.readlines.collect!{| line |
|
|
500
523
|
#line.chomp
|
|
501
524
|
line.strip
|
|
@@ -509,11 +532,11 @@ class SafeCompleteCode
|
|
|
509
532
|
}
|
|
510
533
|
end
|
|
511
534
|
_ret.sort
|
|
512
|
-
|
|
535
|
+
rescue Exception => e
|
|
513
536
|
#Arcadia.console(self, 'msg'=>e.to_s, 'level'=>'error')
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
537
|
+
ensure
|
|
538
|
+
File.delete(temp_file) if File.exist?(temp_file)
|
|
539
|
+
end
|
|
517
540
|
end
|
|
518
541
|
|
|
519
542
|
def create_modified_temp_file(_base_file=nil)
|
|
@@ -546,12 +569,12 @@ end
|
|
|
546
569
|
#end
|
|
547
570
|
|
|
548
571
|
|
|
549
|
-
class TkTextListBox <
|
|
572
|
+
class TkTextListBox < TkText
|
|
550
573
|
def initialize(parent=nil, keys={})
|
|
551
574
|
super(parent, keys)
|
|
552
575
|
wrap 'none'
|
|
553
|
-
tag_configure('selected','background' =>'
|
|
554
|
-
tag_configure('class', 'foreground' => '
|
|
576
|
+
tag_configure('selected','background' =>Arcadia.conf('hightlight.sel.background'),'borderwidth'=>1, 'relief'=>'raised')
|
|
577
|
+
tag_configure('class', 'foreground' => Arcadia.conf('hightlight.sel.foreground'))
|
|
555
578
|
@count = 0
|
|
556
579
|
@selected = -1
|
|
557
580
|
self.bind_append('KeyPress'){|e| key_press(e)}
|
|
@@ -638,7 +661,7 @@ class AgEditorOutlineToolbar
|
|
|
638
661
|
indicatoron 0
|
|
639
662
|
offrelief 'raised'
|
|
640
663
|
image TkPhotoImage.new('dat' => SYNCICON20_GIF)
|
|
641
|
-
place('x' => 0,'y' => 0,'height' => 26)
|
|
664
|
+
place('x' => 0,'y' => 0,'height' => 26, 'width' => 26)
|
|
642
665
|
}
|
|
643
666
|
Tk::BWidget::DynamicHelp::add(@cb_sync,
|
|
644
667
|
'text'=>'Link open editors with content in the Navigator')
|
|
@@ -756,31 +779,31 @@ class AgEditorOutline
|
|
|
756
779
|
@bar.sync = sync_val
|
|
757
780
|
end
|
|
758
781
|
}
|
|
759
|
-
@tree_exp =
|
|
782
|
+
@tree_exp = BWidgetTreePatched.new(_frame, Arcadia.style('treepanel')){
|
|
760
783
|
showlines false
|
|
761
784
|
deltay 18
|
|
762
785
|
dragenabled true
|
|
763
786
|
selectcommand proc{ _tree_goto.call(self) }
|
|
764
787
|
}
|
|
765
|
-
@
|
|
788
|
+
@tree_exp.extend(TkScrollableWidget)
|
|
766
789
|
self.show
|
|
767
|
-
@tree_scroll_wrapper.show_v_scroll
|
|
768
|
-
@tree_scroll_wrapper.show_h_scroll
|
|
769
790
|
pop_up_menu_tree
|
|
770
791
|
end
|
|
771
792
|
|
|
772
793
|
def destroy
|
|
773
|
-
|
|
794
|
+
#@tree_scroll_wrapper.destroy
|
|
774
795
|
@tree_exp.destroy
|
|
775
796
|
end
|
|
776
797
|
|
|
777
798
|
def show
|
|
778
|
-
|
|
799
|
+
#@tree_scroll_wrapper.show(0,26)
|
|
800
|
+
@tree_exp.show(0,26)
|
|
779
801
|
Tk.update
|
|
780
802
|
end
|
|
781
803
|
|
|
782
804
|
def hide
|
|
783
|
-
@
|
|
805
|
+
@tree_exp.hide
|
|
806
|
+
#@tree_scroll_wrapper.hide
|
|
784
807
|
end
|
|
785
808
|
|
|
786
809
|
def build_tree_from_node(_node, _label_match=nil)
|
|
@@ -847,8 +870,10 @@ class AgEditorOutline
|
|
|
847
870
|
def pop_up_menu_tree
|
|
848
871
|
@pop_up_tree = TkMenu.new(
|
|
849
872
|
:parent=>@tree_exp,
|
|
873
|
+
:tearoff=>0,
|
|
850
874
|
:title => 'Menu tree'
|
|
851
875
|
)
|
|
876
|
+
@pop_up_tree.extend(TkAutoPostMenu)
|
|
852
877
|
@pop_up_tree.configure(Arcadia.style('menu'))
|
|
853
878
|
#Arcadia.instance.main_menu.update_style(@pop_up_tree)
|
|
854
879
|
@pop_up_tree.insert('end',
|
|
@@ -857,7 +882,7 @@ class AgEditorOutline
|
|
|
857
882
|
:hidemargin => false,
|
|
858
883
|
:command=> proc{build_tree}
|
|
859
884
|
)
|
|
860
|
-
@tree_exp.
|
|
885
|
+
@tree_exp.areabind_append("Button-3",
|
|
861
886
|
proc{|x,y|
|
|
862
887
|
_x = TkWinfo.pointerx(@tree_exp)
|
|
863
888
|
_y = TkWinfo.pointery(@tree_exp)
|
|
@@ -936,10 +961,12 @@ class AgEditor
|
|
|
936
961
|
#@text.tag_configure('debug', 'background' =>'#b9c6d9', 'borderwidth'=>1 ,'relief'=>'raise')
|
|
937
962
|
@buffer = text_value
|
|
938
963
|
pop_up_menu
|
|
939
|
-
@text.show
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
964
|
+
@text.extend(TkScrollableWidget).show
|
|
965
|
+
begin
|
|
966
|
+
@text_cursor = @text.cget('cursor')
|
|
967
|
+
rescue RuntimeError => e
|
|
968
|
+
p "RuntimeError : #{e.message}"
|
|
969
|
+
end
|
|
943
970
|
end
|
|
944
971
|
|
|
945
972
|
def create_temp_file
|
|
@@ -1080,10 +1107,7 @@ class AgEditor
|
|
|
1080
1107
|
})
|
|
1081
1108
|
|
|
1082
1109
|
@raised_listbox = TkTextListBox.new(@raised_listbox_frame, {
|
|
1083
|
-
:takefocus=>true
|
|
1084
|
-
:selectbackground=>Arcadia.conf('hightlight.1.background'),
|
|
1085
|
-
:selectforeground=>Arcadia.conf('hightlight.1.foreground')}.update(Arcadia.style('listbox'))
|
|
1086
|
-
)
|
|
1110
|
+
:takefocus=>true}.update(Arcadia.style('listbox')))
|
|
1087
1111
|
_char_height = @font_metrics[2][1]
|
|
1088
1112
|
_width = 0
|
|
1089
1113
|
_docs_entries = Hash.new
|
|
@@ -1181,8 +1205,7 @@ class AgEditor
|
|
|
1181
1205
|
_buffer = @text.get(_begin_index, 'insert')
|
|
1182
1206
|
_buffer_ini_length = _buffer.length
|
|
1183
1207
|
@raised_listbox_frame.place('x'=>_xroot,'y'=>_yroot, 'width'=>_width, 'height'=>_height)
|
|
1184
|
-
@raised_listbox.show(0,0,'inside')
|
|
1185
|
-
@raised_listbox.show_v_scroll
|
|
1208
|
+
@raised_listbox.extend(TkScrollableWidget).show(0,0,'inside')
|
|
1186
1209
|
@raised_listbox.focus
|
|
1187
1210
|
#@raised_listbox.activate(0)
|
|
1188
1211
|
@raised_listbox.select(1)
|
|
@@ -1418,21 +1441,22 @@ class AgEditor
|
|
|
1418
1441
|
@text.insert(_row.to_s+'.0',suf)
|
|
1419
1442
|
end
|
|
1420
1443
|
when 'U'
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1444
|
+
decrease_indent
|
|
1445
|
+
# _r = @text.tag_ranges('sel')
|
|
1446
|
+
# _row_begin = _r[0][0].split('.')[0].to_i
|
|
1447
|
+
# _row_end = _r[_r.length - 1][1].split('.')[0].to_i
|
|
1448
|
+
# n_space = $arcadia['conf']['editor.tab-replace-width-space'].to_i
|
|
1449
|
+
# if n_space > 0
|
|
1450
|
+
# suf = "\s"*n_space
|
|
1451
|
+
# else
|
|
1452
|
+
# suf = "\t"
|
|
1453
|
+
# end
|
|
1454
|
+
# _l_suf = suf.length.to_s
|
|
1455
|
+
# for _row in _row_begin..._row_end
|
|
1456
|
+
# if @text.get(_row.to_s+'.0',_row.to_s+'.'+_l_suf) == suf
|
|
1457
|
+
# @text.delete(_row.to_s+'.0',_row.to_s+'.'+_l_suf)
|
|
1458
|
+
# end
|
|
1459
|
+
# end
|
|
1436
1460
|
when 'C'
|
|
1437
1461
|
_r = @text.tag_ranges('sel')
|
|
1438
1462
|
_row_begin = _r[0][0].split('.')[0].to_i
|
|
@@ -1541,7 +1565,7 @@ class AgEditor
|
|
|
1541
1565
|
|
|
1542
1566
|
@text.bind_append("Shift-KeyPress"){|e|
|
|
1543
1567
|
case e.keysym
|
|
1544
|
-
when 'Tab'
|
|
1568
|
+
when 'Tab','ISO_Left_Tab'
|
|
1545
1569
|
_r = @text.tag_ranges('sel')
|
|
1546
1570
|
if _r && _r[0]
|
|
1547
1571
|
_row_begin = _r[0][0].split('.')[0].to_i
|
|
@@ -1565,6 +1589,24 @@ class AgEditor
|
|
|
1565
1589
|
}
|
|
1566
1590
|
end
|
|
1567
1591
|
|
|
1592
|
+
def decrease_indent
|
|
1593
|
+
_r = @text.tag_ranges('sel')
|
|
1594
|
+
_row_begin = _r[0][0].split('.')[0].to_i
|
|
1595
|
+
_row_end = _r[_r.length - 1][1].split('.')[0].to_i
|
|
1596
|
+
n_space = $arcadia['conf']['editor.tab-replace-width-space'].to_i
|
|
1597
|
+
if n_space > 0
|
|
1598
|
+
suf = "\s"*n_space
|
|
1599
|
+
else
|
|
1600
|
+
suf = "\t"
|
|
1601
|
+
end
|
|
1602
|
+
_l_suf = suf.length.to_s
|
|
1603
|
+
for _row in _row_begin..._row_end
|
|
1604
|
+
if @text.get(_row.to_s+'.0',_row.to_s+'.'+_l_suf) == suf
|
|
1605
|
+
@text.delete(_row.to_s+'.0',_row.to_s+'.'+_l_suf)
|
|
1606
|
+
end
|
|
1607
|
+
end
|
|
1608
|
+
end
|
|
1609
|
+
|
|
1568
1610
|
# show the "find in file" dialog
|
|
1569
1611
|
def find
|
|
1570
1612
|
_r = @text.tag_ranges('sel')
|
|
@@ -1617,21 +1659,15 @@ class AgEditor
|
|
|
1617
1659
|
|
|
1618
1660
|
def run_buffer
|
|
1619
1661
|
if !@file
|
|
1620
|
-
|
|
1621
|
-
begin
|
|
1622
|
-
_event = Arcadia.process_event(RunRubyFileEvent.new(self, 'file'=>_file, 'persistent'=>false))
|
|
1623
|
-
ensure
|
|
1624
|
-
_event.add_finalize_callback(proc{File.delete(_file) if File.exist?(_file)})
|
|
1625
|
-
# File.delete(_file) if File.exist?(_file)
|
|
1626
|
-
end
|
|
1662
|
+
Arcadia.process_event(RunCmdEvent.new(self, {'file'=>'*CURR', 'runner_name'=>'ruby_file', 'persistent'=>false}))
|
|
1627
1663
|
else
|
|
1628
1664
|
save if !@read_only
|
|
1629
|
-
Arcadia.process_event(
|
|
1665
|
+
Arcadia.process_event(RunCmdEvent.new(self, {'file'=>@file}))
|
|
1630
1666
|
end
|
|
1631
1667
|
end
|
|
1632
1668
|
|
|
1633
1669
|
def initialize_line_number(_frame)
|
|
1634
|
-
@text_line_num = TkText.new(_frame, Arcadia.style('
|
|
1670
|
+
@text_line_num = TkText.new(_frame, Arcadia.style('textline')){
|
|
1635
1671
|
wrap 'none'
|
|
1636
1672
|
#relief 'flat'
|
|
1637
1673
|
undo false
|
|
@@ -1692,6 +1728,7 @@ class AgEditor
|
|
|
1692
1728
|
:tearoff=>0,
|
|
1693
1729
|
:title => 'Menu'
|
|
1694
1730
|
)
|
|
1731
|
+
_pop_up.extend(TkAutoPostMenu)
|
|
1695
1732
|
_pop_up.configure(Arcadia.style('menu'))
|
|
1696
1733
|
#Arcadia.instance.main_menu.update_style(@pop_up)
|
|
1697
1734
|
_title_item = _pop_up.insert('end',
|
|
@@ -1784,15 +1821,21 @@ class AgEditor
|
|
|
1784
1821
|
end
|
|
1785
1822
|
end
|
|
1786
1823
|
|
|
1787
|
-
def reset_highlight
|
|
1788
|
-
@
|
|
1789
|
-
|
|
1824
|
+
def reset_highlight(_from_row=nil)
|
|
1825
|
+
if _from_row && @highlighting
|
|
1826
|
+
invalidated_begin_zone= zone_of_row(_from_row)
|
|
1827
|
+
@is_line_bold.delete_if {|key, value| key >= invalidated_begin_zone }
|
|
1828
|
+
@highlight_zone.delete_if {|key, value| key >= invalidated_begin_zone }
|
|
1829
|
+
elsif @highlighting
|
|
1830
|
+
@is_line_bold.clear
|
|
1831
|
+
@highlight_zone.clear
|
|
1832
|
+
end
|
|
1790
1833
|
@last_line_begin=0
|
|
1791
1834
|
@last_line_end=0
|
|
1792
1835
|
@last_zone_begin=0
|
|
1793
1836
|
@last_zone_end=0
|
|
1794
1837
|
end
|
|
1795
|
-
|
|
1838
|
+
|
|
1796
1839
|
def change_highlight(_ext)
|
|
1797
1840
|
new_highlight_scanner = @controller.highlight_scanner(_ext)
|
|
1798
1841
|
if new_highlight_scanner != @highlight_scanner
|
|
@@ -1864,39 +1907,66 @@ class AgEditor
|
|
|
1864
1907
|
if @lang_hash["#{@lang_hash['scanner']}.hightlight."+_name+'.borderwidth']
|
|
1865
1908
|
h['borderwidth']=@lang_hash["#{@lang_hash['scanner']}.hightlight."+_name+'.borderwidth']
|
|
1866
1909
|
end
|
|
1867
|
-
|
|
1910
|
+
begin
|
|
1911
|
+
@text.tag_configure(_name, h)
|
|
1912
|
+
rescue RuntimeError => e
|
|
1913
|
+
p "RuntimeError : #{e.message}"
|
|
1914
|
+
end
|
|
1868
1915
|
end
|
|
1869
1916
|
|
|
1870
1917
|
|
|
1871
1918
|
def do_tag_configure_global(_name)
|
|
1872
1919
|
h = Hash.new
|
|
1873
|
-
|
|
1874
|
-
|
|
1920
|
+
|
|
1921
|
+
if Arcadia.conf('editor.hightlight.'+_name+'.foreground')
|
|
1922
|
+
h['foreground']=Arcadia.conf('editor.hightlight.'+_name+'.foreground')
|
|
1923
|
+
elsif Arcadia.conf('hightlight.'+_name+'.foreground')
|
|
1924
|
+
h['foreground']=Arcadia.conf('hightlight.'+_name+'.foreground')
|
|
1875
1925
|
end
|
|
1876
|
-
|
|
1877
|
-
|
|
1926
|
+
|
|
1927
|
+
if Arcadia.conf('editor.hightlight.'+_name+'.background')
|
|
1928
|
+
h['background']=Arcadia.conf('editor.hightlight.'+_name+'.background')
|
|
1929
|
+
elsif Arcadia.conf('hightlight.'+_name+'.background')
|
|
1930
|
+
h['background']=Arcadia.conf('hightlight.'+_name+'.background')
|
|
1878
1931
|
end
|
|
1879
|
-
|
|
1932
|
+
|
|
1933
|
+
if Arcadia.conf('editor.hightlight.'+_name+'.style')== 'bold'
|
|
1934
|
+
h['font']=@font_bold
|
|
1935
|
+
@is_tag_bold[_name]= true
|
|
1936
|
+
elsif Arcadia.conf('hightlight.'+_name+'.style')== 'bold'
|
|
1880
1937
|
h['font']=@font_bold
|
|
1881
1938
|
@is_tag_bold[_name]= true
|
|
1882
1939
|
else
|
|
1883
1940
|
@is_tag_bold[_name]= false
|
|
1884
1941
|
end
|
|
1885
|
-
|
|
1886
|
-
|
|
1942
|
+
|
|
1943
|
+
if Arcadia.conf('editor.hightlight.'+_name+'.relief')
|
|
1944
|
+
h['relief']=Arcadia.conf('editor.hightlight.'+_name+'.relief')
|
|
1945
|
+
elsif Arcadia.conf('hightlight.'+_name+'.relief')
|
|
1946
|
+
h['relief']=Arcadia.conf('hightlight.'+_name+'.relief')
|
|
1947
|
+
end
|
|
1948
|
+
|
|
1949
|
+
if Arcadia.conf('editor.hightlight.'+_name+'.borderwidth')
|
|
1950
|
+
h['borderwidth']=Arcadia.conf('editor.hightlight.'+_name+'.borderwidth')
|
|
1951
|
+
elsif Arcadia.conf('hightlight.'+_name+'.borderwidth')
|
|
1952
|
+
h['borderwidth']=Arcadia.conf('hightlight.'+_name+'.borderwidth')
|
|
1887
1953
|
end
|
|
1888
|
-
|
|
1889
|
-
|
|
1954
|
+
|
|
1955
|
+
begin
|
|
1956
|
+
@text.tag_configure(_name, h)
|
|
1957
|
+
rescue RuntimeError => e
|
|
1958
|
+
p "RuntimeError : #{e.message}"
|
|
1890
1959
|
end
|
|
1891
|
-
@text.tag_configure(_name, h)
|
|
1892
1960
|
end
|
|
1893
1961
|
|
|
1962
|
+
|
|
1894
1963
|
def pop_up_menu
|
|
1895
1964
|
@pop_up = TkMenu.new(
|
|
1896
1965
|
:parent=>@text,
|
|
1897
|
-
:tearoff=>
|
|
1966
|
+
:tearoff=>0,
|
|
1898
1967
|
:title => 'Menu'
|
|
1899
1968
|
)
|
|
1969
|
+
@pop_up.extend(TkAutoPostMenu)
|
|
1900
1970
|
@pop_up.configure(Arcadia.style('menu'))
|
|
1901
1971
|
|
|
1902
1972
|
@pop_up.insert('end',
|
|
@@ -1997,7 +2067,8 @@ class AgEditor
|
|
|
1997
2067
|
:label=>'Color',
|
|
1998
2068
|
:hidemargin => false,
|
|
1999
2069
|
:command=> proc{
|
|
2000
|
-
|
|
2070
|
+
#@text.insert('insert',Tk.chooseColor)
|
|
2071
|
+
@text.insert('insert',Tk::BWidget::SelectColor::Dialog.new.create)
|
|
2001
2072
|
}
|
|
2002
2073
|
)
|
|
2003
2074
|
|
|
@@ -2103,6 +2174,7 @@ class AgEditor
|
|
|
2103
2174
|
:tearoff=>0,
|
|
2104
2175
|
:title => 'Debug'
|
|
2105
2176
|
)
|
|
2177
|
+
_sub_debug.extend(TkAutoPostMenu)
|
|
2106
2178
|
_sub_debug.configure(Arcadia.style('menu'))
|
|
2107
2179
|
_sub_debug.insert('end',
|
|
2108
2180
|
:command,
|
|
@@ -2134,6 +2206,7 @@ class AgEditor
|
|
|
2134
2206
|
:tearoff=>0,
|
|
2135
2207
|
:title => 'Code'
|
|
2136
2208
|
)
|
|
2209
|
+
_sub_code.extend(TkAutoPostMenu)
|
|
2137
2210
|
_sub_code.configure(Arcadia.style('menu'))
|
|
2138
2211
|
_sub_code.insert('end',
|
|
2139
2212
|
:command,
|
|
@@ -2487,9 +2560,13 @@ class AgEditor
|
|
|
2487
2560
|
@controller.change_tab_set_modify(@page_frame)
|
|
2488
2561
|
end
|
|
2489
2562
|
end
|
|
2563
|
+
|
|
2564
|
+
def tab_title
|
|
2565
|
+
@controller.tab_title(@page_frame)
|
|
2566
|
+
end
|
|
2490
2567
|
|
|
2491
|
-
def reset_modify
|
|
2492
|
-
@controller.change_tab_reset_modify(@page_frame)
|
|
2568
|
+
def reset_modify(_reset_tab=true)
|
|
2569
|
+
@controller.change_tab_reset_modify(@page_frame) if _reset_tab
|
|
2493
2570
|
@set_mod = false
|
|
2494
2571
|
@file_last_access_time = File.mtime(@file) if @file
|
|
2495
2572
|
end
|
|
@@ -2572,6 +2649,7 @@ class AgEditor
|
|
|
2572
2649
|
else
|
|
2573
2650
|
_tags << 'normal_case'
|
|
2574
2651
|
end
|
|
2652
|
+
|
|
2575
2653
|
if wrap_on
|
|
2576
2654
|
w_rx_b, w_ry_b, w_width_b, w_heigth_b = @text.bbox("#{(j).to_s}.0");
|
|
2577
2655
|
w_rx_e, w_ry_e, w_width_e, w_heigth_e = @text.bbox("#{(j).to_s}.0 lineend");
|
|
@@ -2584,6 +2662,7 @@ class AgEditor
|
|
|
2584
2662
|
end
|
|
2585
2663
|
end
|
|
2586
2664
|
end
|
|
2665
|
+
|
|
2587
2666
|
@text_line_num.insert(_index, "#{nline}\n",_tags)
|
|
2588
2667
|
if b.include?(j.to_s)
|
|
2589
2668
|
add_tag_breakpoint(j)
|
|
@@ -2594,12 +2673,15 @@ class AgEditor
|
|
|
2594
2673
|
end
|
|
2595
2674
|
end
|
|
2596
2675
|
refresh_outline if Tk.focus==@text
|
|
2597
|
-
resize_line_num
|
|
2676
|
+
resize_line_num
|
|
2598
2677
|
end
|
|
2599
2678
|
|
|
2600
|
-
def resize_line_num
|
|
2679
|
+
def resize_line_num
|
|
2601
2680
|
if TkWinfo.mapped?(@text_line_num)
|
|
2602
|
-
|
|
2681
|
+
if @last_line_end_chars.nil?
|
|
2682
|
+
@last_line_end_chars = 0
|
|
2683
|
+
end
|
|
2684
|
+
_line_end=row('end')
|
|
2603
2685
|
line_end_chars = _line_end.to_s.length
|
|
2604
2686
|
if @last_line_end_chars != line_end_chars
|
|
2605
2687
|
if @line_num_rx_e.nil?
|
|
@@ -2733,12 +2815,12 @@ class AgEditor
|
|
|
2733
2815
|
f = File.new(@file, "wb")
|
|
2734
2816
|
begin
|
|
2735
2817
|
if f
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2818
|
+
to_write = text_value
|
|
2819
|
+
if @dos_line_endings
|
|
2820
|
+
# we stripped these out, previously...
|
|
2821
|
+
# for now assume they want them all this way, no mixing and matching...
|
|
2822
|
+
to_write = to_write.gsub("\n", "\r\n")
|
|
2823
|
+
end
|
|
2742
2824
|
f.syswrite(to_write)
|
|
2743
2825
|
@buffer = text_value
|
|
2744
2826
|
reset_modify
|
|
@@ -2881,13 +2963,6 @@ class AgEditor
|
|
|
2881
2963
|
@outline = nil
|
|
2882
2964
|
end
|
|
2883
2965
|
|
|
2884
|
-
def file_extension(_filename=nil)
|
|
2885
|
-
if _filename
|
|
2886
|
-
_m = /(.*\.)(.*$)/.match(File.basename(_filename))
|
|
2887
|
-
end
|
|
2888
|
-
_ret = (_m && _m.length > 1)?_m[2]: nil
|
|
2889
|
-
end
|
|
2890
|
-
|
|
2891
2966
|
def load_file(_filename = nil)
|
|
2892
2967
|
#if filename is nil then open a new tab
|
|
2893
2968
|
@loading=true
|
|
@@ -2905,7 +2980,7 @@ class AgEditor
|
|
|
2905
2980
|
}
|
|
2906
2981
|
end
|
|
2907
2982
|
set_read_only(!File.stat(_filename).writable?)
|
|
2908
|
-
reset
|
|
2983
|
+
reset(false)
|
|
2909
2984
|
refresh
|
|
2910
2985
|
ensure
|
|
2911
2986
|
@loading=false
|
|
@@ -2925,9 +3000,9 @@ class AgEditor
|
|
|
2925
3000
|
end
|
|
2926
3001
|
end
|
|
2927
3002
|
|
|
2928
|
-
def reset
|
|
3003
|
+
def reset(_reset_tab=true)
|
|
2929
3004
|
@buffer = text_value
|
|
2930
|
-
reset_modify
|
|
3005
|
+
reset_modify(_reset_tab)
|
|
2931
3006
|
@text.edit_reset
|
|
2932
3007
|
end
|
|
2933
3008
|
|
|
@@ -3129,25 +3204,112 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3129
3204
|
@tabs_editor =Hash.new
|
|
3130
3205
|
Arcadia.attach_listener(self, BufferEvent)
|
|
3131
3206
|
Arcadia.attach_listener(self, DebugEvent)
|
|
3132
|
-
|
|
3133
|
-
|
|
3207
|
+
# Arcadia.attach_listener(self, RunRubyFileEvent)
|
|
3208
|
+
Arcadia.attach_listener(self, RunCmdEvent)
|
|
3209
|
+
# Arcadia.attach_listener(self, StartDebugEvent)
|
|
3134
3210
|
Arcadia.attach_listener(self, FocusEvent)
|
|
3135
3211
|
end
|
|
3136
3212
|
|
|
3137
3213
|
|
|
3138
|
-
def on_before_run_ruby_file(_event)
|
|
3214
|
+
# def on_before_run_ruby_file(_event)
|
|
3215
|
+
# _filename = _event.file
|
|
3216
|
+
# if _filename.nil?
|
|
3217
|
+
# current_editor = self.raised
|
|
3218
|
+
# if current_editor
|
|
3219
|
+
# if current_editor.file
|
|
3220
|
+
# _event.file = current_editor.file
|
|
3221
|
+
# _event.persistent = true
|
|
3222
|
+
# else
|
|
3223
|
+
# _event.file = current_editor.create_temp_file
|
|
3224
|
+
# end
|
|
3225
|
+
# end
|
|
3226
|
+
# end
|
|
3227
|
+
# end
|
|
3228
|
+
|
|
3229
|
+
def on_before_run_cmd(_event)
|
|
3139
3230
|
_filename = _event.file
|
|
3140
|
-
|
|
3231
|
+
_event.persistent = true
|
|
3232
|
+
if _filename.nil? || _filename == "*CURR"
|
|
3141
3233
|
current_editor = self.raised
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3234
|
+
if current_editor
|
|
3235
|
+
if current_editor.file
|
|
3236
|
+
_event.file = current_editor.file
|
|
3237
|
+
else
|
|
3238
|
+
_event.persistent = false
|
|
3239
|
+
_event.file = current_editor.create_temp_file
|
|
3240
|
+
_event.title = current_editor.tab_title
|
|
3241
|
+
end
|
|
3242
|
+
end
|
|
3243
|
+
# here insert persistent entry of runner instance
|
|
3244
|
+
bn = File.basename(_event.file)
|
|
3245
|
+
if _event.persistent && _event.runner_name && Arcadia.persistent("runners.#{bn}").nil?
|
|
3246
|
+
entry_hash = Hash.new
|
|
3247
|
+
entry_hash[:runner]= _event.runner_name
|
|
3248
|
+
entry_hash[:file]= _event.file
|
|
3249
|
+
entry_hash[:dir]= _event.dir if _event.dir
|
|
3250
|
+
entry_hash[:title]= "#{bn}"
|
|
3251
|
+
|
|
3252
|
+
Arcadia.persistent("runners.#{bn}", entry_hash.to_s)
|
|
3253
|
+
# here add new menu' item
|
|
3254
|
+
mr = Arcadia.menu_root('runcurr')
|
|
3255
|
+
if mr
|
|
3256
|
+
_command = proc{
|
|
3257
|
+
_event = Arcadia.process_event(
|
|
3258
|
+
RunCmdEvent.new(self, entry_hash)
|
|
3259
|
+
)
|
|
3260
|
+
}
|
|
3261
|
+
exts = ''
|
|
3262
|
+
run = Application.runner(entry_hash[:runner])
|
|
3263
|
+
if run
|
|
3264
|
+
file_exts = run[:file_exts]
|
|
3265
|
+
end
|
|
3266
|
+
|
|
3267
|
+
mr.insert('0',
|
|
3268
|
+
:command ,{
|
|
3269
|
+
:image => Arcadia.file_icon(file_exts),
|
|
3270
|
+
:label => entry_hash[:title],
|
|
3271
|
+
:compound => 'left',
|
|
3272
|
+
:command => _command
|
|
3273
|
+
}
|
|
3274
|
+
)
|
|
3275
|
+
end
|
|
3276
|
+
end
|
|
3150
3277
|
end
|
|
3278
|
+
|
|
3279
|
+
if _event.file == "*LAST"
|
|
3280
|
+
_event.file = Arcadia.persistent('run.file.last')
|
|
3281
|
+
_event.cmd = Arcadia.persistent('run.cmd.last')
|
|
3282
|
+
else
|
|
3283
|
+
if _event.dir.nil?
|
|
3284
|
+
_event.dir = File.dirname(_event.file)
|
|
3285
|
+
end
|
|
3286
|
+
|
|
3287
|
+
if _event.cmd.nil?
|
|
3288
|
+
if _event.runner_name
|
|
3289
|
+
runner = Arcadia.runner(_event.runner_name)
|
|
3290
|
+
else
|
|
3291
|
+
runner = Arcadia.runner_for_file(_event.file)
|
|
3292
|
+
end
|
|
3293
|
+
if runner
|
|
3294
|
+
_event.cmd = runner[:cmd]
|
|
3295
|
+
else
|
|
3296
|
+
_event.cmd = _event.file
|
|
3297
|
+
end
|
|
3298
|
+
end
|
|
3299
|
+
if _event.file && _event.cmd.include?('<<FILE>>')
|
|
3300
|
+
_event.cmd = _event.cmd.gsub('<<FILE>>',_event.file)
|
|
3301
|
+
end
|
|
3302
|
+
if _event.dir && _event.cmd.include?('<<DIR>>')
|
|
3303
|
+
_event.cmd = _event.cmd.gsub('<<DIR>>',_event.dir)
|
|
3304
|
+
end
|
|
3305
|
+
if _event.file && _event.cmd.include?('<<FILE_BASENAME_WITHOUT_EXT>>')
|
|
3306
|
+
_event.cmd = _event.cmd.gsub('<<FILE_BASENAME_WITHOUT_EXT>>',File.basename(_event.file).split('.')[0])
|
|
3307
|
+
end
|
|
3308
|
+
if _event.file && _event.cmd.include?('<<FILE_BASENAME>>')
|
|
3309
|
+
_event.cmd = _event.cmd.gsub('<<FILE_BASENAME>>',File.basename(_event.file))
|
|
3310
|
+
end
|
|
3311
|
+
end
|
|
3312
|
+
_event.title = _event.file if _event.title.nil?
|
|
3151
3313
|
end
|
|
3152
3314
|
|
|
3153
3315
|
# def on_before_start_debug(_event)
|
|
@@ -3189,6 +3351,7 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3189
3351
|
line_begin_index = raised.text.index('@0,0')
|
|
3190
3352
|
line_begin = line_begin_index.split('.')[0].to_i
|
|
3191
3353
|
line_end = raised.text.index('@0,'+TkWinfo.height(raised.text).to_s).split('.')[0].to_i + 1
|
|
3354
|
+
raised.reset_highlight(line_begin)
|
|
3192
3355
|
raised.rehighlightlines(line_begin,line_end,true)
|
|
3193
3356
|
else
|
|
3194
3357
|
raised.check_modify
|
|
@@ -3257,6 +3420,7 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3257
3420
|
:tearoff=>0,
|
|
3258
3421
|
:title => 'Menu'
|
|
3259
3422
|
)
|
|
3423
|
+
@pop_up.extend(TkAutoPostMenu)
|
|
3260
3424
|
@pop_up.configure(Arcadia.style('menu'))
|
|
3261
3425
|
#Arcadia.instance.main_menu.update_style(@pop_up)
|
|
3262
3426
|
|
|
@@ -3688,15 +3852,21 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3688
3852
|
change_tab_title(_tab, _new_name)
|
|
3689
3853
|
end
|
|
3690
3854
|
|
|
3855
|
+
def tab_title(_tab)
|
|
3856
|
+
@main_frame.enb.itemcget(page_name(_tab), 'text')
|
|
3857
|
+
end
|
|
3858
|
+
|
|
3691
3859
|
def page_name(_page_frame)
|
|
3692
3860
|
TkWinfo.appname(_page_frame).sub('f','')
|
|
3693
3861
|
end
|
|
3694
3862
|
|
|
3695
3863
|
def change_tab_reset_modify(_tab)
|
|
3696
3864
|
#_new_name = @main_frame.enb.itemcget(@tabs_name[_tab], 'text').gsub!("(...)",'')
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3865
|
+
if @main_frame.enb.index(page_name(_tab))
|
|
3866
|
+
_new_name = @main_frame.enb.itemcget(page_name(_tab), 'text').gsub!("(...)",'')
|
|
3867
|
+
if _new_name
|
|
3868
|
+
change_tab_title(_tab, _new_name)
|
|
3869
|
+
end
|
|
3700
3870
|
end
|
|
3701
3871
|
end
|
|
3702
3872
|
|
|
@@ -3747,7 +3917,7 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3747
3917
|
|
|
3748
3918
|
def open_file_in_debug(_filename=nil, _line=nil)
|
|
3749
3919
|
#debug_reset
|
|
3750
|
-
if _filename && _line
|
|
3920
|
+
if _filename && _line && File.exists?(_filename)
|
|
3751
3921
|
@last_index = _line.to_s+'.0'
|
|
3752
3922
|
_editor_exist = editor_exist?(_filename)
|
|
3753
3923
|
@last_e = open_file(_filename, @last_index, false, false)
|
|
@@ -3759,6 +3929,8 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3759
3929
|
#p "add editor for close #{_filename}"
|
|
3760
3930
|
@last_e.do_line_update
|
|
3761
3931
|
end
|
|
3932
|
+
else
|
|
3933
|
+
p "file #{_filename} do not exist !"
|
|
3762
3934
|
end
|
|
3763
3935
|
end
|
|
3764
3936
|
|
|
@@ -3823,9 +3995,11 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3823
3995
|
def raise_file(_filename=nil, _pos=nil)
|
|
3824
3996
|
if _filename && frame_def_visible?
|
|
3825
3997
|
tab_name=self.tab_file_name(_filename)
|
|
3826
|
-
@main_frame.enb.
|
|
3827
|
-
|
|
3828
|
-
|
|
3998
|
+
if @main_frame.enb.index(tab_name) != -1
|
|
3999
|
+
@main_frame.enb.move(tab_name,_pos) if _pos
|
|
4000
|
+
@main_frame.enb.raise(tab_name)
|
|
4001
|
+
@main_frame.enb.see(tab_name)
|
|
4002
|
+
end
|
|
3829
4003
|
end
|
|
3830
4004
|
end
|
|
3831
4005
|
|
|
@@ -3846,7 +4020,12 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3846
4020
|
open_buffer(_tab_name, _basefilename,0)
|
|
3847
4021
|
end
|
|
3848
4022
|
@tabs_editor[_tab_name].reset_highlight
|
|
3849
|
-
|
|
4023
|
+
begin
|
|
4024
|
+
@tabs_editor[_tab_name].load_file(_filename)
|
|
4025
|
+
rescue RuntimeError => e
|
|
4026
|
+
p "RuntimeError : #{e.message}"
|
|
4027
|
+
close_editor(@tabs_editor[_tab_name])
|
|
4028
|
+
end
|
|
3850
4029
|
end
|
|
3851
4030
|
|
|
3852
4031
|
if _text_index != nil && _text_index != '1.0'
|
|
@@ -3886,7 +4065,7 @@ class AgMultiEditor < ArcadiaExt
|
|
|
3886
4065
|
'raisecmd'=>proc{do_buffer_raise(_buffer_name, _title)}
|
|
3887
4066
|
)
|
|
3888
4067
|
_e = AgEditor.new(self, _tab)
|
|
3889
|
-
ext =
|
|
4068
|
+
ext = Arcadia.file_extension(_title)
|
|
3890
4069
|
ext='rb' if ext.nil?
|
|
3891
4070
|
_e.init_editing(ext, w1)
|
|
3892
4071
|
_e.text.set_focus
|