arcadia 0.8.0 → 0.8.1
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 +10 -15
- data/conf/arcadia.conf +19 -0
- data/ext/ae-dir-projects/ae-dir-projects.rb +3 -1
- data/ext/ae-editor/ae-editor.conf +2 -1
- data/ext/ae-editor/ae-editor.rb +142 -63
- data/ext/ae-editor/langs/conf.lang +5 -13
- data/ext/ae-output/ae-output.rb +1 -1
- data/ext/ae-rad/lib/tk/al-tk.rb +1 -1
- data/ext/ae-search-in-files/ae-search-in-files.rb +7 -5
- data/lib/a-commons.rb +27 -15
- data/lib/a-contracts.rb +6 -0
- data/lib/a-core.rb +124 -20
- data/lib/a-tkcommons.rb +28 -0
- metadata +162 -162
data/README
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
= Arcadia Ruby Ide
|
2
|
-
version 0.8.
|
2
|
+
version 0.8.1
|
3
3
|
|
4
4
|
by Antonio Galeone
|
5
|
-
on
|
5
|
+
on Apr 10, 2010
|
6
6
|
|
7
7
|
|
8
8
|
== About
|
@@ -16,23 +16,18 @@ Some of Arcadia ruby ide project features include:
|
|
16
16
|
* Working on any platform where ruby and tcl-tk work.
|
17
17
|
* Highly extensibility architecture.
|
18
18
|
|
19
|
-
== In this release 0.8.
|
20
|
-
|
21
|
-
ack in files:
|
22
|
-
- similar to "search in files" using ack utility
|
23
|
-
|
19
|
+
== In this release 0.8.1
|
20
|
+
|
24
21
|
[Improvements]
|
25
22
|
commons:
|
26
|
-
- porting ruby 1.9
|
27
23
|
- bug-fixing
|
28
|
-
|
29
|
-
-
|
24
|
+
- hide splash on gems wizard
|
25
|
+
- added keybinding configurazion support
|
26
|
+
- added new event : RedoTextEvent, SelectAllTextEvent, InvertSelectionTextEvent, UpperCaseTextEvent, LowerCaseTextEvent
|
27
|
+
and Edit menu items : 'Redo','Select all','Invert selection','Uppercase', 'Lowercase'
|
28
|
+
|
30
29
|
editor:
|
31
|
-
-
|
32
|
-
- added new hightlight engine based on coderay, others kind of file are now supported (erb,rhtml,java)
|
33
|
-
- added auto completion of current word based on words within the current window
|
34
|
-
also; then added escape key short cut.
|
35
|
-
- added outline syncronization
|
30
|
+
- added dynamic resizing of line numbers frame
|
36
31
|
|
37
32
|
== Dependencies
|
38
33
|
- rubygems
|
data/conf/arcadia.conf
CHANGED
@@ -27,6 +27,7 @@ layout.split.4=0.0r60%
|
|
27
27
|
#:::::::::::::::: layout ::::::::::::::::::::::<end>
|
28
28
|
confirm-on-exit=no
|
29
29
|
#:::::::::::::::::::::::::::::::::::::::::::::::::<begin>
|
30
|
+
encoding=utf-8
|
30
31
|
font.h1=
|
31
32
|
font.h2=
|
32
33
|
font.h3=courier 10
|
@@ -63,6 +64,8 @@ panel.borderwidth=0
|
|
63
64
|
|
64
65
|
scrollbar.background=>>>background
|
65
66
|
scrollbar.highlightbackground=>>>background
|
67
|
+
scrollbar.activebackground=>>>activebackground
|
68
|
+
#scrollbar.troughcolor=red
|
66
69
|
scrollbar.relief=flat
|
67
70
|
scrollbar.borderwidth=1
|
68
71
|
scrollbar.elementborderwidth=1
|
@@ -349,6 +352,22 @@ e.user_toolbar.sys.exit.event_class=!QuitEvent
|
|
349
352
|
|
350
353
|
user_toolbar_show=yes
|
351
354
|
#:::::::::::::::: toolbar ::::::::::::::::::::::<end>
|
355
|
+
#:::::::::::::::: keybinding ::::::::::::::::::::::<begin>
|
356
|
+
#keybinding.Control-Shift-KeyPress[X]=OpenBufferEvent.new(self,'file'=>Arcadia.open_file_dialog)
|
357
|
+
#keybinding.Control-KeyPress[o]=OpenBufferEvent.new(self)
|
358
|
+
#keybinding.Control-Shift-KeyPress[Y]=ActionEvent.new(self,'action'=>Arcadia.open_file_dialog)
|
359
|
+
keybinding.Control-KeyPress[q]=QuitEvent.new(self)
|
360
|
+
|
361
|
+
keybinding.Control-KeyPress[x]=CutTextEvent.new(self)
|
362
|
+
keybinding.Control-KeyPress[c]=CopyTextEvent.new(self)
|
363
|
+
keybinding.Control-KeyPress[v]=PasteTextEvent.new(self)
|
364
|
+
keybinding.Control-KeyPress[z]=UndoTextEvent.new(self)
|
365
|
+
keybinding.Control-KeyPress[r]=RedoTextEvent.new(self)
|
366
|
+
keybinding.Control-Shift-KeyPress[A]=SelectAllTextEvent.new(self)
|
367
|
+
keybinding.Control-Shift-KeyPress[I]=InvertSelectionTextEvent.new(self)
|
368
|
+
keybinding.Control-Shift-KeyPress[U]=UpperCaseTextEvent.new(self)
|
369
|
+
keybinding.Control-Shift-KeyPress[L]=LowerCaseTextEvent.new(self)
|
370
|
+
#:::::::::::::::: keybinding ::::::::::::::::::::::<end>
|
352
371
|
|
353
372
|
#:::::::::::::::: splash group ::::::::::::::::::::::<begin>
|
354
373
|
splash.show=yes
|
@@ -455,6 +455,7 @@ class DirProjects < ArcadiaExt
|
|
455
455
|
end
|
456
456
|
}
|
457
457
|
)
|
458
|
+
|
458
459
|
@htree.areabind_append("Button-3",
|
459
460
|
proc{|x,y|
|
460
461
|
_x = TkWinfo.pointerx(@htree)
|
@@ -729,7 +730,8 @@ class DirProjects < ArcadiaExt
|
|
729
730
|
def add_node(_parent, _node, _kind)
|
730
731
|
return if @htree.exist?(_node)
|
731
732
|
@node_parent[_node] = _parent
|
732
|
-
_name = _node.split(File::SEPARATOR)[-1]
|
733
|
+
# _name = _node.split(File::SEPARATOR)[-1]
|
734
|
+
_name = File.basename(_node)
|
733
735
|
_drawcross = 'auto'
|
734
736
|
if _kind == "project" || _kind == "directory"
|
735
737
|
num = Dir.entries(_node).length-2
|
@@ -135,4 +135,5 @@ explorer_panel.tabs.side=top
|
|
135
135
|
|
136
136
|
#:::::::::::::::: Editor group ::::::::::::::::::::::<end>
|
137
137
|
popup.bind.shortcut=Button-3
|
138
|
-
arm::popup.bind.shortcut=F4
|
138
|
+
arm::popup.bind.shortcut=F4
|
139
|
+
#keybinding.Control-Shift-KeyPress[Y]=ActionEvent.new(self,'action'=>close_raised)
|
data/ext/ae-editor/ae-editor.rb
CHANGED
@@ -370,6 +370,9 @@ class SafeCompleteCode
|
|
370
370
|
# 1) includiano i require
|
371
371
|
elsif line.strip.length>7 && (line.strip[0..7]=="require " || line.strip[0..7]=="require(")
|
372
372
|
@modified_source = "#{@modified_source}#{line}\n"
|
373
|
+
if line.strip[8..-1].include?("tk")
|
374
|
+
@modified_source = "#{@modified_source}Tk.root.destroy if Tk && Tk.root\n"
|
375
|
+
end
|
373
376
|
#@modified_row = @modified_row+1
|
374
377
|
#Arcadia.console(self, 'msg'=>"per require @modified_row=#{@modified_row}")
|
375
378
|
# 2) includiano la riga da evaluare con un $SAFE 3
|
@@ -836,7 +839,7 @@ class AgEditorOutline
|
|
836
839
|
build_tree_from_node(@ss.root, _label_sel)
|
837
840
|
if @selected
|
838
841
|
@tree_exp.selection_add(@selected.rif)
|
839
|
-
@tree_exp.open_tree(@selected.parent.rif)
|
842
|
+
@tree_exp.open_tree(@selected.parent.rif) if @selected.parent.rif != 'root'
|
840
843
|
@tree_exp.see(@selected.rif)
|
841
844
|
end
|
842
845
|
end
|
@@ -896,7 +899,7 @@ class AgEditor
|
|
896
899
|
|
897
900
|
def xy_insert
|
898
901
|
_index_now = @text.index('insert')
|
899
|
-
_rx, _ry,
|
902
|
+
_rx, _ry, _width, _heigth = @text.bbox(_index_now);
|
900
903
|
_x = _rx + TkWinfo.rootx(@text)
|
901
904
|
_y = _ry + TkWinfo.rooty(@text) + @font_metrics[2][1]
|
902
905
|
_xroot = _x - TkWinfo.rootx(Arcadia.instance.layout.root)
|
@@ -906,7 +909,7 @@ class AgEditor
|
|
906
909
|
|
907
910
|
|
908
911
|
def initialize_text(_frame)
|
909
|
-
@text =
|
912
|
+
@text = TkArcadiaText.new(_frame, Arcadia.style('text')){|j|
|
910
913
|
wrap 'none'
|
911
914
|
undo true
|
912
915
|
# insertofftime 200
|
@@ -1060,7 +1063,7 @@ class AgEditor
|
|
1060
1063
|
extra_len = 0
|
1061
1064
|
end
|
1062
1065
|
if _candidates.length >= 1
|
1063
|
-
_rx, _ry,
|
1066
|
+
_rx, _ry, _width, heigth = @text.bbox(_begin_index);
|
1064
1067
|
_x = _rx + TkWinfo.rootx(@text)
|
1065
1068
|
_y = _ry + TkWinfo.rooty(@text) + @font_metrics[2][1]
|
1066
1069
|
_xroot = _x - TkWinfo.rootx(Arcadia.instance.layout.root)
|
@@ -1328,26 +1331,35 @@ class AgEditor
|
|
1328
1331
|
#
|
1329
1332
|
def activate_key_binding
|
1330
1333
|
activate_complete_code_key_binding if @is_ruby
|
1334
|
+
|
1331
1335
|
@text.bind_append("Control-KeyPress"){|e|
|
1332
1336
|
case e.keysym
|
1333
|
-
# when '
|
1334
|
-
#
|
1335
|
-
#
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1337
|
+
# when 'z'
|
1338
|
+
# begin
|
1339
|
+
# @text.edit_undo
|
1340
|
+
# rescue RuntimeError => e
|
1341
|
+
# throw e unless e.to_s.include? "nothing to undo" # this is ok--we've done undo back to the beginning
|
1342
|
+
# break
|
1343
|
+
# end
|
1344
|
+
# if @highlighting
|
1345
|
+
# _b = @text.index('@0,0').split('.')[0].to_i
|
1346
|
+
# _e = @text.index('@0,'+TkWinfo.height(@text).to_s).split('.')[0].to_i + 1
|
1347
|
+
# rehighlightlines(_b,_e)
|
1348
|
+
# end
|
1349
|
+
# break
|
1350
|
+
# when 'r'
|
1351
|
+
# begin
|
1352
|
+
# @text.edit_redo
|
1353
|
+
# rescue RuntimeError => e
|
1354
|
+
# throw e unless e.to_s.include? "nothing to redo" # this is ok--we've done redo back to the beginning
|
1355
|
+
# break
|
1356
|
+
# end
|
1357
|
+
# if @highlighting
|
1358
|
+
# _b = @text.index('@0,0').split('.')[0].to_i
|
1359
|
+
# _e = @text.index('@0,'+TkWinfo.height(@text).to_s).split('.')[0].to_i + 1
|
1360
|
+
# rehighlightlines(_b,_e)
|
1361
|
+
# end
|
1362
|
+
# break
|
1351
1363
|
when 'o'
|
1352
1364
|
if @file
|
1353
1365
|
_dir = File.dirname(@file)
|
@@ -1356,23 +1368,20 @@ class AgEditor
|
|
1356
1368
|
end
|
1357
1369
|
Arcadia.process_event(OpenBufferEvent.new(self,'file'=>Tk.getOpenFile('initialdir'=>_dir)))
|
1358
1370
|
break
|
1359
|
-
when 'c'
|
1360
|
-
@text.text_copy
|
1361
|
-
break
|
1362
|
-
when 'x'
|
1363
|
-
@text.text_cut
|
1364
|
-
break
|
1365
|
-
when 'v'
|
1366
|
-
_b = @text.index('insert').split('.')[0].to_i
|
1367
|
-
@text.text_paste
|
1368
|
-
_e = @text.index('insert').split('.')[0].to_i
|
1369
|
-
if @highlighting
|
1370
|
-
rehighlightlines(_b,_e)
|
1371
|
-
#
|
1372
|
-
#
|
1373
|
-
# end
|
1374
|
-
end
|
1375
|
-
break
|
1371
|
+
# when 'c'
|
1372
|
+
# @text.text_copy
|
1373
|
+
# break
|
1374
|
+
# when 'x'
|
1375
|
+
# @text.text_cut
|
1376
|
+
# break
|
1377
|
+
# when 'v'
|
1378
|
+
# _b = @text.index('insert').split('.')[0].to_i
|
1379
|
+
# @text.text_paste
|
1380
|
+
# _e = @text.index('insert').split('.')[0].to_i
|
1381
|
+
# if @highlighting
|
1382
|
+
# rehighlightlines(_b,_e)
|
1383
|
+
# end
|
1384
|
+
# break
|
1376
1385
|
end
|
1377
1386
|
case e.keysym
|
1378
1387
|
when 's'
|
@@ -1577,7 +1586,6 @@ class AgEditor
|
|
1577
1586
|
@text.bind_remove('Control-KeyPress')
|
1578
1587
|
@text.bind_remove('Control-Shift-KeyPress')
|
1579
1588
|
@text.bind_remove('Shift-KeyPress')
|
1580
|
-
|
1581
1589
|
end
|
1582
1590
|
|
1583
1591
|
def do_enter
|
@@ -1886,7 +1894,7 @@ class AgEditor
|
|
1886
1894
|
def pop_up_menu
|
1887
1895
|
@pop_up = TkMenu.new(
|
1888
1896
|
:parent=>@text,
|
1889
|
-
:tearoff=>
|
1897
|
+
:tearoff=>1,
|
1890
1898
|
:title => 'Menu'
|
1891
1899
|
)
|
1892
1900
|
@pop_up.configure(Arcadia.style('menu'))
|
@@ -1992,6 +2000,26 @@ class AgEditor
|
|
1992
2000
|
@text.insert('insert',Tk.chooseColor)
|
1993
2001
|
}
|
1994
2002
|
)
|
2003
|
+
|
2004
|
+
@pop_up.insert('end',
|
2005
|
+
:command,
|
2006
|
+
:label=>'View color from data',
|
2007
|
+
:hidemargin => false,
|
2008
|
+
:command=> proc{
|
2009
|
+
_r = @text.tag_ranges('sel')
|
2010
|
+
if _r.length>0
|
2011
|
+
_data=@text.get(_r[0][0],_r[0][1])
|
2012
|
+
if _data.length > 0
|
2013
|
+
_b = TkButton.new(@text,
|
2014
|
+
'command'=>proc{_b.destroy},
|
2015
|
+
'bg'=>_data,
|
2016
|
+
'relief'=>'groove')
|
2017
|
+
TkTextWindow.new(@text, _r[0][1], 'window'=> _b)
|
2018
|
+
end
|
2019
|
+
end
|
2020
|
+
}
|
2021
|
+
)
|
2022
|
+
|
1995
2023
|
@pop_up.insert('end',
|
1996
2024
|
:command,
|
1997
2025
|
:label=>'Font',
|
@@ -2003,7 +2031,7 @@ class AgEditor
|
|
2003
2031
|
|
2004
2032
|
@pop_up.insert('end',
|
2005
2033
|
:command,
|
2006
|
-
:label=>'Data
|
2034
|
+
:label=>'Data from file',
|
2007
2035
|
:hidemargin => false,
|
2008
2036
|
:command=> proc{
|
2009
2037
|
file = Arcadia.open_file_dialog
|
@@ -2039,6 +2067,7 @@ class AgEditor
|
|
2039
2067
|
}
|
2040
2068
|
)
|
2041
2069
|
|
2070
|
+
|
2042
2071
|
@pop_up.insert('end',
|
2043
2072
|
:command,
|
2044
2073
|
:label=>'Data image to file',
|
@@ -2211,7 +2240,8 @@ class AgEditor
|
|
2211
2240
|
proc{|x,y|
|
2212
2241
|
_x = TkWinfo.pointerx(@text)
|
2213
2242
|
_y = TkWinfo.pointery(@text)
|
2214
|
-
@pop_up.entryconfigure(
|
2243
|
+
@pop_up.entryconfigure(1, 'label'=>File.basename(@file)) if @file
|
2244
|
+
#@pop_up.entryconfigure(0, 'label'=>File.basename(@file)) if @file
|
2215
2245
|
@pop_up.popup(_x,_y)
|
2216
2246
|
},
|
2217
2247
|
"%x %y")
|
@@ -2524,14 +2554,14 @@ class AgEditor
|
|
2524
2554
|
@text_line_num.delete('1.0','end')
|
2525
2555
|
|
2526
2556
|
|
2527
|
-
_rx, _ry,
|
2557
|
+
_rx, _ry, _width, _heigth = @text.bbox(line_begin_index);
|
2528
2558
|
|
2529
2559
|
if _ry && _ry < 0
|
2530
2560
|
real_line_end = line_end + 1
|
2531
2561
|
else
|
2532
2562
|
real_line_end = line_end
|
2533
2563
|
end
|
2534
|
-
|
2564
|
+
#@fm1
|
2535
2565
|
_tags = Array.new
|
2536
2566
|
for j in line_begin...real_line_end
|
2537
2567
|
nline = j.to_s.rjust(line_end.to_s.length+2)
|
@@ -2542,10 +2572,9 @@ class AgEditor
|
|
2542
2572
|
else
|
2543
2573
|
_tags << 'normal_case'
|
2544
2574
|
end
|
2545
|
-
|
2546
2575
|
if wrap_on
|
2547
|
-
w_rx_b, w_ry_b,
|
2548
|
-
w_rx_e, w_ry_e,
|
2576
|
+
w_rx_b, w_ry_b, w_width_b, w_heigth_b = @text.bbox("#{(j).to_s}.0");
|
2577
|
+
w_rx_e, w_ry_e, w_width_e, w_heigth_e = @text.bbox("#{(j).to_s}.0 lineend");
|
2549
2578
|
if w_ry_e && w_ry_b
|
2550
2579
|
delta = w_ry_e - w_ry_b
|
2551
2580
|
if delta > 1
|
@@ -2555,7 +2584,6 @@ class AgEditor
|
|
2555
2584
|
end
|
2556
2585
|
end
|
2557
2586
|
end
|
2558
|
-
|
2559
2587
|
@text_line_num.insert(_index, "#{nline}\n",_tags)
|
2560
2588
|
if b.include?(j.to_s)
|
2561
2589
|
add_tag_breakpoint(j)
|
@@ -2566,11 +2594,28 @@ class AgEditor
|
|
2566
2594
|
end
|
2567
2595
|
end
|
2568
2596
|
refresh_outline if Tk.focus==@text
|
2569
|
-
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2597
|
+
resize_line_num(line_end)
|
2598
|
+
end
|
2599
|
+
|
2600
|
+
def resize_line_num(_line_end=nil)
|
2601
|
+
if TkWinfo.mapped?(@text_line_num)
|
2602
|
+
_line_end=@text.index('@0,'+TkWinfo.height(@text).to_s).split('.')[0].to_i + 1 if _line_end.nil?
|
2603
|
+
line_end_chars = _line_end.to_s.length
|
2604
|
+
if @last_line_end_chars != line_end_chars
|
2605
|
+
if @line_num_rx_e.nil?
|
2606
|
+
@line_num_rx_e, @line_num_ry_e, @line_num_width_e, @line_num_heigth_e = @text_line_num.bbox("0.1 lineend - 1chars");
|
2607
|
+
end
|
2608
|
+
if @line_num_rx_e && @line_num_width_e && line_end_chars >0
|
2609
|
+
actual_width = @line_num_rx_e + @line_num_width_e
|
2610
|
+
need_width = (line_end_chars+1)*@line_num_width_e
|
2611
|
+
delta = actual_width - need_width
|
2612
|
+
@fm1.resize_left(need_width)
|
2613
|
+
@last_line_end_chars = line_end_chars
|
2614
|
+
else
|
2615
|
+
@last_line_end_chars = -1
|
2616
|
+
end
|
2617
|
+
end
|
2618
|
+
end
|
2574
2619
|
end
|
2575
2620
|
|
2576
2621
|
def highlightlines(_row_begin, _row_end, _check_mod = false)
|
@@ -2733,6 +2778,30 @@ class AgEditor
|
|
2733
2778
|
end
|
2734
2779
|
end
|
2735
2780
|
|
2781
|
+
def modified_by_others?
|
2782
|
+
ret = false
|
2783
|
+
if @file_last_access_time && @file
|
2784
|
+
if File.exist?(@file)
|
2785
|
+
ftime = File.mtime(@file)
|
2786
|
+
ret = @file_last_access_time != ftime
|
2787
|
+
else
|
2788
|
+
ret = true
|
2789
|
+
end
|
2790
|
+
end
|
2791
|
+
ret
|
2792
|
+
end
|
2793
|
+
|
2794
|
+
def reset_file_last_access_time
|
2795
|
+
if @file
|
2796
|
+
if File.exist?(@file)
|
2797
|
+
@file_last_access_time = File.mtime(@file)
|
2798
|
+
else
|
2799
|
+
@file_last_access_time = nil
|
2800
|
+
@file = nil
|
2801
|
+
end
|
2802
|
+
end
|
2803
|
+
end
|
2804
|
+
|
2736
2805
|
def check_file_last_access_time
|
2737
2806
|
if @file
|
2738
2807
|
file_exist = File.exist?(@file)
|
@@ -2740,11 +2809,11 @@ class AgEditor
|
|
2740
2809
|
ftime = File.mtime(@file)
|
2741
2810
|
if @file_last_access_time != ftime
|
2742
2811
|
msg = 'File "'+@file+'" is changed! Reload?'
|
2743
|
-
|
2812
|
+
ans = Tk.messageBox('icon' => 'error', 'type' => 'yesno',
|
2744
2813
|
'title' => '(Arcadia) Libs', 'parent' => @text,
|
2745
|
-
'message' => msg)
|
2814
|
+
'message' => msg)
|
2815
|
+
if ans == 'yes'
|
2746
2816
|
reload
|
2747
|
-
|
2748
2817
|
else
|
2749
2818
|
@file_last_access_time = ftime
|
2750
2819
|
end
|
@@ -3115,7 +3184,7 @@ class AgMultiEditor < ArcadiaExt
|
|
3115
3184
|
|
3116
3185
|
def on_after_focus(_event)
|
3117
3186
|
if raised && _event.focus_widget == raised.text
|
3118
|
-
if [CutTextEvent, PasteTextEvent].include?(_event.class)
|
3187
|
+
if [CutTextEvent, PasteTextEvent, UndoTextEvent, RedoTextEvent].include?(_event.class)
|
3119
3188
|
if raised.highlighting
|
3120
3189
|
line_begin_index = raised.text.index('@0,0')
|
3121
3190
|
line_begin = line_begin_index.split('.')[0].to_i
|
@@ -3473,11 +3542,6 @@ class AgMultiEditor < ArcadiaExt
|
|
3473
3542
|
def close_raised
|
3474
3543
|
_e = @tabs_editor[@main_frame.enb.raise]
|
3475
3544
|
close_editor(_e) if _e
|
3476
|
-
|
3477
|
-
#_page = @main_frame.enb.raise
|
3478
|
-
#_editor = @tabs_editor[_page]
|
3479
|
-
#_row = _editor.text_insert_index.split('.')[0].strip.to_i
|
3480
|
-
#close_editor(_editor)
|
3481
3545
|
end
|
3482
3546
|
|
3483
3547
|
def breakpoint_add(_file,_line)
|
@@ -3867,6 +3931,21 @@ class AgMultiEditor < ArcadiaExt
|
|
3867
3931
|
elsif r=="cancel"
|
3868
3932
|
ret = false
|
3869
3933
|
end
|
3934
|
+
elsif _editor.modified_by_others?
|
3935
|
+
filename = page_name(_editor.page_frame)
|
3936
|
+
message = @main_frame.enb.itemcget(filename, 'text')+"\n modified by other process. Continue closing?"
|
3937
|
+
r=Arcadia.dialog(self,
|
3938
|
+
'type'=>'yes_no',
|
3939
|
+
'level'=>'warning',
|
3940
|
+
'title'=> 'Continue closing',
|
3941
|
+
'msg'=>message)
|
3942
|
+
if r=="yes"
|
3943
|
+
_editor.reset_file_last_access_time
|
3944
|
+
ret = !_editor.modified_by_others?
|
3945
|
+
else
|
3946
|
+
ret = false
|
3947
|
+
#raise_file(filename)
|
3948
|
+
end
|
3870
3949
|
end
|
3871
3950
|
ret
|
3872
3951
|
end
|