arcadia 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +8 -8
- data/conf/arcadia.conf +9 -1
- data/conf/arcadia.res.rb +45 -11
- data/conf/theme-dark.conf +2 -1
- data/conf/theme-dark.res.rb +21 -4
- data/ext/ae-editor/ae-editor.conf +18 -74
- data/ext/ae-editor/ae-editor.rb +335 -159
- data/ext/ae-editor/lib/rbeautify.rb +222 -0
- data/ext/ae-rad/ae-rad-palette.rb +1 -1
- data/ext/ae-rad/ae-rad.conf +1 -1
- data/ext/ae-ruby-debug/ae-ruby-debug.rb +21 -9
- data/lib/a-commons.rb +8 -3
- data/lib/a-contracts.rb +2 -0
- data/lib/a-core.rb +55 -272
- data/lib/a-tkcommons.rb +294 -188
- metadata +4 -3
@@ -0,0 +1,222 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
|
4
|
+
=begin
|
5
|
+
/***************************************************************************
|
6
|
+
* Copyright (C) 2008, Paul Lutus *
|
7
|
+
* *
|
8
|
+
* This program is free software; you can redistribute it and/or modify *
|
9
|
+
* it under the terms of the GNU General Public License as published by *
|
10
|
+
* the Free Software Foundation; either version 2 of the License, or *
|
11
|
+
* (at your option) any later version. *
|
12
|
+
* *
|
13
|
+
* This program is distributed in the hope that it will be useful, *
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
16
|
+
* GNU General Public License for more details. *
|
17
|
+
* *
|
18
|
+
* You should have received a copy of the GNU General Public License *
|
19
|
+
* along with this program; if not, write to the *
|
20
|
+
* Free Software Foundation, Inc., *
|
21
|
+
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
22
|
+
***************************************************************************/
|
23
|
+
=end
|
24
|
+
|
25
|
+
PVERSION = "Version 2.9, 10/24/2008"
|
26
|
+
|
27
|
+
module RBeautify
|
28
|
+
|
29
|
+
# user-customizable values
|
30
|
+
|
31
|
+
RBeautify::TabStr = " "
|
32
|
+
RBeautify::TabSize = 2
|
33
|
+
|
34
|
+
# indent regexp tests
|
35
|
+
|
36
|
+
IndentExp = [
|
37
|
+
/^module\b/,
|
38
|
+
/^class\b/,
|
39
|
+
/^if\b/,
|
40
|
+
/(=\s*|^)until\b/,
|
41
|
+
/(=\s*|^)for\b/,
|
42
|
+
/^unless\b/,
|
43
|
+
/(=\s*|^)while\b/,
|
44
|
+
/(=\s*|^)begin\b/,
|
45
|
+
/(^| )case\b/,
|
46
|
+
/\bthen\b/,
|
47
|
+
/^rescue\b/,
|
48
|
+
/^def\b/,
|
49
|
+
/\bdo\b/,
|
50
|
+
/^else\b/,
|
51
|
+
/^elsif\b/,
|
52
|
+
/^ensure\b/,
|
53
|
+
/\bwhen\b/,
|
54
|
+
/\{[^\}]*$/,
|
55
|
+
/\[[^\]]*$/
|
56
|
+
]
|
57
|
+
|
58
|
+
# outdent regexp tests
|
59
|
+
|
60
|
+
OutdentExp = [
|
61
|
+
/^rescue\b/,
|
62
|
+
/^ensure\b/,
|
63
|
+
/^elsif\b/,
|
64
|
+
/^end\b/,
|
65
|
+
/^else\b/,
|
66
|
+
/\bwhen\b/,
|
67
|
+
/^[^\{]*\}/,
|
68
|
+
/^[^\[]*\]/
|
69
|
+
]
|
70
|
+
|
71
|
+
def RBeautify.rb_make_tab(tab)
|
72
|
+
return (tab < 0)?"":TabStr * TabSize * tab
|
73
|
+
end
|
74
|
+
|
75
|
+
def RBeautify.rb_add_line(line,tab)
|
76
|
+
line.strip!
|
77
|
+
line = rb_make_tab(tab) + line if line.length > 0
|
78
|
+
return line
|
79
|
+
end
|
80
|
+
|
81
|
+
def RBeautify.beautify_string(source, path = "")
|
82
|
+
comment_block = false
|
83
|
+
in_here_doc = false
|
84
|
+
here_doc_term = ""
|
85
|
+
program_end = false
|
86
|
+
multiLine_array = []
|
87
|
+
multiLine_str = ""
|
88
|
+
tab = 0
|
89
|
+
output = []
|
90
|
+
source.each do |line|
|
91
|
+
line.chomp!
|
92
|
+
if(!program_end)
|
93
|
+
# detect program end mark
|
94
|
+
if(line =~ /^__END__$/)
|
95
|
+
program_end = true
|
96
|
+
else
|
97
|
+
# combine continuing lines
|
98
|
+
if(!(line =~ /^\s*#/) && line =~ /[^\\]\\\s*$/)
|
99
|
+
multiLine_array.push line
|
100
|
+
multiLine_str += line.sub(/^(.*)\\\s*$/,"\\1")
|
101
|
+
next
|
102
|
+
end
|
103
|
+
|
104
|
+
# add final line
|
105
|
+
if(multiLine_str.length > 0)
|
106
|
+
multiLine_array.push line
|
107
|
+
multiLine_str += line.sub(/^(.*)\\\s*$/,"\\1")
|
108
|
+
end
|
109
|
+
|
110
|
+
tline = ((multiLine_str.length > 0)?multiLine_str:line).strip
|
111
|
+
if(tline =~ /^=begin/)
|
112
|
+
comment_block = true
|
113
|
+
end
|
114
|
+
if(in_here_doc)
|
115
|
+
in_here_doc = false if tline =~ %r{\s*#{here_doc_term}\s*}
|
116
|
+
else # not in here_doc
|
117
|
+
if tline =~ %r{=\s*<<}
|
118
|
+
here_doc_term = tline.sub(%r{.*=\s*<<-?\s*([_|\w]+).*},"\\1")
|
119
|
+
in_here_doc = here_doc_term.size > 0
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
if(comment_block || program_end || in_here_doc)
|
125
|
+
# add the line unchanged
|
126
|
+
output << line
|
127
|
+
else
|
128
|
+
comment_line = (tline =~ /^#/)
|
129
|
+
if(!comment_line)
|
130
|
+
# throw out sequences that will
|
131
|
+
# only sow confusion
|
132
|
+
while tline.gsub!(/\{[^\{]*?\}/,"")
|
133
|
+
end
|
134
|
+
while tline.gsub!(/\[[^\[]*?\]/,"")
|
135
|
+
end
|
136
|
+
while tline.gsub!(/'.*?'/,"")
|
137
|
+
end
|
138
|
+
while tline.gsub!(/".*?"/,"")
|
139
|
+
end
|
140
|
+
while tline.gsub!(/\`.*?\`/,"")
|
141
|
+
end
|
142
|
+
while tline.gsub!(/\([^\(]*?\)/,"")
|
143
|
+
end
|
144
|
+
while tline.gsub!(/\/.*?\//,"")
|
145
|
+
end
|
146
|
+
while tline.gsub!(/%r(.).*?\1/,"")
|
147
|
+
end
|
148
|
+
# delete end-of-line comments
|
149
|
+
tline.sub!(/#[^\"]+$/,"")
|
150
|
+
# convert quotes
|
151
|
+
tline.gsub!(/\\\"/,"'")
|
152
|
+
OutdentExp.each do |re|
|
153
|
+
if(tline =~ re)
|
154
|
+
tab -= 1
|
155
|
+
break
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
if (multiLine_array.length > 0)
|
160
|
+
multiLine_array.each do |ml|
|
161
|
+
output << rb_add_line(ml,tab)
|
162
|
+
end
|
163
|
+
multiLine_array.clear
|
164
|
+
multiLine_str = ""
|
165
|
+
else
|
166
|
+
output << rb_add_line(line,tab)
|
167
|
+
end
|
168
|
+
if(!comment_line)
|
169
|
+
IndentExp.each do |re|
|
170
|
+
if(tline =~ re && !(tline =~ /\s+end\s*$/))
|
171
|
+
tab += 1
|
172
|
+
break
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
if(tline =~ /^=end/)
|
178
|
+
comment_block = false
|
179
|
+
end
|
180
|
+
end
|
181
|
+
error = (tab != 0)
|
182
|
+
STDERR.puts "Error: indent/outdent mismatch: #{tab}." if error
|
183
|
+
return output.join("\n") + "\n",error
|
184
|
+
end # beautify_string
|
185
|
+
|
186
|
+
def RBeautify.beautify_file(path)
|
187
|
+
error = false
|
188
|
+
if(path == '-') # stdin source
|
189
|
+
source = STDIN.read
|
190
|
+
dest,error = beautify_string(source,"stdin")
|
191
|
+
print dest
|
192
|
+
else # named file source
|
193
|
+
source = File.read(path)
|
194
|
+
dest,error = beautify_string(source,path)
|
195
|
+
if(source != dest)
|
196
|
+
# make a backup copy
|
197
|
+
File.open(path + "~","w") { |f| f.write(source) }
|
198
|
+
# overwrite the original
|
199
|
+
File.open(path,"w") { |f| f.write(dest) }
|
200
|
+
end
|
201
|
+
end
|
202
|
+
return error
|
203
|
+
end # beautify_file
|
204
|
+
|
205
|
+
def RBeautify.main
|
206
|
+
error = false
|
207
|
+
if(!ARGV[0])
|
208
|
+
STDERR.puts "usage: Ruby filenames or \"-\" for stdin."
|
209
|
+
exit 0
|
210
|
+
end
|
211
|
+
ARGV.each do |path|
|
212
|
+
error = (beautify_file(path))?true:error
|
213
|
+
end
|
214
|
+
error = (error)?1:0
|
215
|
+
exit error
|
216
|
+
end # main
|
217
|
+
end # module RBeautify
|
218
|
+
|
219
|
+
# if launched as a standalone program, not loaded as a module
|
220
|
+
if __FILE__ == $0
|
221
|
+
RBeautify.main
|
222
|
+
end
|
data/ext/ae-rad/ae-rad.conf
CHANGED
@@ -232,8 +232,11 @@ class RubyDebugView
|
|
232
232
|
@b_local_onoff.image(_i_on)
|
233
233
|
command_enabled(false)
|
234
234
|
Thread.new{
|
235
|
-
|
236
|
-
|
235
|
+
begin
|
236
|
+
update_variables('local_var', @controller.rdc.variables('local_variables')) #if @tree_var.open?('local_var')
|
237
|
+
ensure
|
238
|
+
command_enabled(true)
|
239
|
+
end
|
237
240
|
}
|
238
241
|
elsif @local_state == B_STATE_FREEZE
|
239
242
|
@b_local_onoff.image(_i_freeze)
|
@@ -276,8 +279,11 @@ class RubyDebugView
|
|
276
279
|
@b_instance_onoff.image(_i_on)
|
277
280
|
command_enabled(false)
|
278
281
|
Thread.new{
|
279
|
-
|
280
|
-
|
282
|
+
begin
|
283
|
+
update_variables('instance_var', @controller.rdc.variables('instance_variables')) #if @tree_var.open?('local_var')
|
284
|
+
ensure
|
285
|
+
command_enabled(true)
|
286
|
+
end
|
281
287
|
}
|
282
288
|
elsif @instance_state == B_STATE_FREEZE
|
283
289
|
@b_instance_onoff.image(_i_freeze)
|
@@ -319,8 +325,11 @@ class RubyDebugView
|
|
319
325
|
@b_class_onoff.image(_i_on)
|
320
326
|
command_enabled(false)
|
321
327
|
Thread.new{
|
322
|
-
|
323
|
-
|
328
|
+
begin
|
329
|
+
update_variables('class_var', @controller.rdc.variables('self.class.class_variables')) #if @tree_var.open?('local_var')
|
330
|
+
ensure
|
331
|
+
command_enabled(true)
|
332
|
+
end
|
324
333
|
}
|
325
334
|
elsif @class_state == B_STATE_FREEZE
|
326
335
|
@b_class_onoff.image(_i_freeze)
|
@@ -363,8 +372,11 @@ class RubyDebugView
|
|
363
372
|
@b_global_onoff.image(_i_on)
|
364
373
|
command_enabled(false)
|
365
374
|
Thread.new{
|
366
|
-
|
367
|
-
|
375
|
+
begin
|
376
|
+
update_variables('global_var', @controller.rdc.variables('global_variables')) #if @tree_var.open?('local_var')
|
377
|
+
ensure
|
378
|
+
command_enabled(true)
|
379
|
+
end
|
368
380
|
}
|
369
381
|
elsif @global_state == B_STATE_FREEZE
|
370
382
|
@b_global_onoff.image(_i_freeze)
|
@@ -768,7 +780,7 @@ class RubyDebugServer
|
|
768
780
|
else
|
769
781
|
rdebug_cmd = "rdebug"
|
770
782
|
end
|
771
|
-
|
783
|
+
commandLine = "#{rdebug_cmd} --host #{_host} --port #{_remote_port} -sw #{_filename}"
|
772
784
|
else
|
773
785
|
commandLine = "rdebug --host #{_host} --port #{_remote_port} -sw #{_filename}"
|
774
786
|
end
|
data/lib/a-commons.rb
CHANGED
@@ -88,11 +88,16 @@ class FixedFrameWrapper < AbstractFrameWrapper
|
|
88
88
|
@fixed_frame
|
89
89
|
end
|
90
90
|
|
91
|
-
def
|
91
|
+
def root
|
92
92
|
fixed_frame_forge
|
93
|
-
Arcadia.layout.domain(@domain)['root']
|
94
|
-
#@arcadia.layout.domain_for_frame(@domain, @name)['root'].top_text(_title)
|
93
|
+
Arcadia.layout.domain(@domain)['root']
|
95
94
|
end
|
95
|
+
|
96
|
+
# def top_text(_top_text=nil)
|
97
|
+
# fixed_frame_forge
|
98
|
+
# Arcadia.layout.domain(@domain)['root'].top_text(_top_text)
|
99
|
+
# #@arcadia.layout.domain_for_frame(@domain, @name)['root'].top_text(_title)
|
100
|
+
# end
|
96
101
|
|
97
102
|
def show
|
98
103
|
fixed_frame_forge
|
data/lib/a-contracts.rb
CHANGED
data/lib/a-core.rb
CHANGED
@@ -22,7 +22,7 @@ class Arcadia < TkApplication
|
|
22
22
|
super(
|
23
23
|
ApplicationParams.new(
|
24
24
|
'arcadia',
|
25
|
-
'0.9.
|
25
|
+
'0.9.1',
|
26
26
|
'conf/arcadia.conf',
|
27
27
|
'conf/arcadia.pers'
|
28
28
|
)
|
@@ -98,9 +98,9 @@ class Arcadia < TkApplication
|
|
98
98
|
geometry = start_width.to_s+'x'+start_height.to_s+'+0+0'
|
99
99
|
end
|
100
100
|
@root.deiconify
|
101
|
-
@root.raise
|
102
101
|
@root.focus(true)
|
103
102
|
@root.geometry(geometry)
|
103
|
+
@root.raise
|
104
104
|
Tk.update_idletasks
|
105
105
|
#sleep(1)
|
106
106
|
@splash.destroy if @splash
|
@@ -682,7 +682,7 @@ class Arcadia < TkApplication
|
|
682
682
|
item_args['context_path'] = context_path
|
683
683
|
item_args['context_caption'] = groups_caption[gi] if groups_caption
|
684
684
|
item_args['context_underline'] = context_underline.strip.to_i if context_underline
|
685
|
-
i = _user_control.new_item(
|
685
|
+
i = _user_control.new_item(_self_on_eval, item_args)
|
686
686
|
i.enable=false if disabled
|
687
687
|
}
|
688
688
|
rescue Exception
|
@@ -712,6 +712,8 @@ class Arcadia < TkApplication
|
|
712
712
|
if q1 && can_exit?
|
713
713
|
do_finalize
|
714
714
|
@root.destroy
|
715
|
+
# Tk.mainloop_exist?
|
716
|
+
# Tk.destroy
|
715
717
|
Tk.exit
|
716
718
|
end
|
717
719
|
end
|
@@ -1022,7 +1024,6 @@ class ArcadiaMainToolbar < ArcadiaUserControl
|
|
1022
1024
|
height 20
|
1023
1025
|
helptext _hint if _hint
|
1024
1026
|
text _caption if _caption
|
1025
|
-
|
1026
1027
|
}
|
1027
1028
|
if _args['context_path'] && _args['last_item_for_context']
|
1028
1029
|
@item_obj.pack('after'=>_args['last_item_for_context'].item_obj, 'side' =>'left', :padx=>2, :pady=>0)
|
@@ -1198,11 +1199,6 @@ class ArcadiaMainMenu < ArcadiaUserControl
|
|
1198
1199
|
@menu = menu
|
1199
1200
|
build
|
1200
1201
|
@menu.configure(Arcadia.style('menu'))
|
1201
|
-
# menu.foreground('black')
|
1202
|
-
# menu.activeforeground('#6679f1')
|
1203
|
-
# menu.relief('flat')
|
1204
|
-
# menu.borderwidth(0)
|
1205
|
-
# menu.font(Arcadia.conf('main.mainmenu.font'))
|
1206
1202
|
end
|
1207
1203
|
|
1208
1204
|
def get_menu_context(_menubar, _context, _underline=nil)
|
@@ -2347,11 +2343,11 @@ class ArcadiaLayout
|
|
2347
2343
|
break
|
2348
2344
|
elsif @panels[dom]['notebook'] != nil
|
2349
2345
|
cfrs = TkWinfo.children(_frame)
|
2350
|
-
if cfrs && cfrs.length == 1 && cfrs[0].instance_of?(
|
2346
|
+
if cfrs && cfrs.length == 1 && cfrs[0].instance_of?(TkTitledFrameAdapter) && TkWinfo.parent(@panels[dom]['notebook'])== cfrs[0].frame
|
2351
2347
|
ret_doms << dom
|
2352
2348
|
frame_found = true
|
2353
2349
|
end
|
2354
|
-
elsif @panels[dom]['root'].instance_of?(
|
2350
|
+
elsif @panels[dom]['root'].instance_of?(TkTitledFrameAdapter) && @panels[dom]['root'].parent == _frame
|
2355
2351
|
ret_doms << dom
|
2356
2352
|
frame_found = true
|
2357
2353
|
end
|
@@ -2360,7 +2356,7 @@ class ArcadiaLayout
|
|
2360
2356
|
|
2361
2357
|
if !frame_found
|
2362
2358
|
cfrs = TkWinfo.children(_frame)
|
2363
|
-
if cfrs && cfrs.length == 1 && cfrs[0].instance_of?(
|
2359
|
+
if cfrs && cfrs.length == 1 && cfrs[0].instance_of?(TkTitledFrameAdapter)
|
2364
2360
|
@wrappers.each{|name, ffw|
|
2365
2361
|
if ffw.hinner_frame.frame == cfrs[0].frame
|
2366
2362
|
ret_doms << ffw.domain
|
@@ -2371,244 +2367,6 @@ class ArcadiaLayout
|
|
2371
2367
|
ret_doms
|
2372
2368
|
end
|
2373
2369
|
|
2374
|
-
def close_runtime_old(_domain)
|
2375
|
-
splitted_adapter = find_splitted_frame(@panels[_domain]['root'])
|
2376
|
-
splitted_adapter_frame = splitted_adapter.frame
|
2377
|
-
vertical = splitted_adapter.instance_of?(AGTkVSplittedFrames)
|
2378
|
-
|
2379
|
-
_row, _col = _domain.split('.')
|
2380
|
-
|
2381
|
-
if @frames[_row.to_i][_col.to_i] == splitted_adapter.frame1
|
2382
|
-
close_first = true
|
2383
|
-
elsif @frames[_row.to_i][_col.to_i] == splitted_adapter.frame2
|
2384
|
-
close_first = false
|
2385
|
-
end
|
2386
|
-
|
2387
|
-
return if close_first.nil?
|
2388
|
-
|
2389
|
-
#source_domains = domains_on_frame(splitted_adapter.frame1).concat(domains_on_frame(splitted_adapter.frame2))
|
2390
|
-
#Arcadia.console(self,'msg'=>"domini coinvolti = #{source_domains.to_s}")
|
2391
|
-
|
2392
|
-
@panels[_domain]['sons'].each{|name,ffw|
|
2393
|
-
unregister_panel(ffw, false, false)
|
2394
|
-
}
|
2395
|
-
unbuild_titled_frame(_domain)
|
2396
|
-
if close_first
|
2397
|
-
#left_frame
|
2398
|
-
other_ds = domains_on_frame(@panels[_domain]['splitted_frames'].frame2)
|
2399
|
-
if other_ds.length == 1
|
2400
|
-
source_domain = other_ds[0]
|
2401
|
-
elsif other_ds.length > 1
|
2402
|
-
max = other_ds.length-1
|
2403
|
-
j = 0
|
2404
|
-
while j <= max
|
2405
|
-
if source_domain.nil?
|
2406
|
-
source_domain = other_ds[j]
|
2407
|
-
else
|
2408
|
-
r,c = source_domain.split('.')
|
2409
|
-
new_r,new_c = other_ds[j].split('.')
|
2410
|
-
if new_r.to_i < r.to_i || new_r.to_i == r.to_i && new_c.to_i < c.to_i
|
2411
|
-
source_domain = other_ds[j]
|
2412
|
-
end
|
2413
|
-
end
|
2414
|
-
j = j+1
|
2415
|
-
end
|
2416
|
-
else
|
2417
|
-
if vertical
|
2418
|
-
source_domain = domain_name(_row.to_i, _col.to_i+1)
|
2419
|
-
else
|
2420
|
-
source_domain = domain_name(_row.to_i+1, _col.to_i)
|
2421
|
-
end
|
2422
|
-
end
|
2423
|
-
if vertical
|
2424
|
-
ref_source_domain = domain_name(_row.to_i, _col.to_i+1)
|
2425
|
-
else
|
2426
|
-
ref_source_domain = domain_name(_row.to_i+1, _col.to_i)
|
2427
|
-
end
|
2428
|
-
|
2429
|
-
destination_domain = _domain
|
2430
|
-
|
2431
|
-
if @panels[source_domain]['splitted_frames'] != @panels[destination_domain]['splitted_frames']
|
2432
|
-
if @panels[source_domain]['root_splitted_frames'] && @panels[source_domain]['root_splitted_frames'] != @panels[destination_domain]['splitted_frames']
|
2433
|
-
other_root_splitted_adapter = @panels[source_domain]['root_splitted_frames']
|
2434
|
-
elsif @panels[source_domain]['splitted_frames']
|
2435
|
-
other_root_splitted_adapter = @panels[source_domain]['splitted_frames']
|
2436
|
-
end
|
2437
|
-
end
|
2438
|
-
|
2439
|
-
if other_root_splitted_adapter
|
2440
|
-
p "primo quadrante"
|
2441
|
-
other_root_splitted_adapter.detach_frame
|
2442
|
-
splitted_adapter.detach_frame
|
2443
|
-
splitted_adapter.destroy
|
2444
|
-
other_root_splitted_adapter.attach_frame(splitted_adapter_frame)
|
2445
|
-
if source_domain == ref_source_domain
|
2446
|
-
if vertical
|
2447
|
-
rows = domains_on_splitter_rows(other_root_splitted_adapter)
|
2448
|
-
rows.each{|r|
|
2449
|
-
shift_left(r.to_i,_col.to_i)
|
2450
|
-
}
|
2451
|
-
else
|
2452
|
-
cols = domains_on_splitter_cols(other_root_splitted_adapter)
|
2453
|
-
cols.each{|c|
|
2454
|
-
shift_top(_row.to_i,c.to_i)
|
2455
|
-
}
|
2456
|
-
end
|
2457
|
-
else
|
2458
|
-
@panels.delete(_domain)
|
2459
|
-
@frames[_row.to_i][_col.to_i] = nil
|
2460
|
-
# @domains[_row.to_i][_col.to_i] = nil
|
2461
|
-
# ref_r,ref_c = ref_source_domain.split('.')
|
2462
|
-
# real_r,real_c=source_domain.split('.')
|
2463
|
-
# gap_r = ref_r.to_i - real_r.to_i
|
2464
|
-
# gap_c = ref_c.to_i - real_c.to_i
|
2465
|
-
# if gap_r != 0 && gap_c == 0 # vertical
|
2466
|
-
# doms = domains_on_splitter(other_root_splitted_adapter)
|
2467
|
-
# doms.each{|d|
|
2468
|
-
# r,c=d.split('.')
|
2469
|
-
# cur_r = r.to_i+gap_r
|
2470
|
-
# cur_domain = "#{cur_r}.#{_col}"
|
2471
|
-
# if @panels[cur_domain] != nil
|
2472
|
-
# shift_bottom(cur_r,_col.to_i)
|
2473
|
-
# end
|
2474
|
-
# @panels[cur_domain] = @panels[d]
|
2475
|
-
# @panels[cur_domain]['root'].set_domain(cur_domain)
|
2476
|
-
# @panels[cur_domain]['sons'].each{|name,ffw| ffw.domain=cur_domain}
|
2477
|
-
# @frames[cur_r.to_i][_col.to_i] = @frames[r.to_i][c.to_i]
|
2478
|
-
# @domains[cur_r.to_i][_col.to_i] = @domains[r.to_i][c.to_i]
|
2479
|
-
#
|
2480
|
-
# @panels.delete(d)
|
2481
|
-
# @frames[r.to_i][c.to_i] = nil
|
2482
|
-
# @domains[r.to_i][c.to_i] = nil
|
2483
|
-
# }
|
2484
|
-
# elsif gap_c != 0
|
2485
|
-
# end
|
2486
|
-
end
|
2487
|
-
@panels.delete(source_domain)
|
2488
|
-
if vertical
|
2489
|
-
@frames[_row.to_i][_col.to_i+1] = nil
|
2490
|
-
# @domains[_row.to_i][_col.to_i+1] = nil
|
2491
|
-
else
|
2492
|
-
@frames[_row.to_i+1][_col.to_i] = nil
|
2493
|
-
# @domains[_row.to_i+1][_col.to_i] = nil
|
2494
|
-
end
|
2495
|
-
else
|
2496
|
-
p "secondo quadrante"
|
2497
|
-
source_save = Hash.new
|
2498
|
-
source_save.update(@panels[source_domain]['sons']) if @panels[source_domain]
|
2499
|
-
source_save.each{|name,ffw|
|
2500
|
-
unregister_panel(ffw, false, false)
|
2501
|
-
}
|
2502
|
-
splitted_adapter.detach_frame
|
2503
|
-
splitted_adapter.destroy
|
2504
|
-
@panels[destination_domain]['root']=splitted_adapter_frame
|
2505
|
-
@frames[_row.to_i][_col.to_i] = splitted_adapter_frame
|
2506
|
-
# @domains[_row.to_i][_col.to_i] = destination_domain
|
2507
|
-
build_titled_frame(destination_domain)
|
2508
|
-
@panels.delete(source_domain)
|
2509
|
-
if vertical
|
2510
|
-
@frames[_row.to_i][_col.to_i+1] = nil
|
2511
|
-
# @domains[_row.to_i][_col.to_i+1] = nil
|
2512
|
-
else
|
2513
|
-
@frames[_row.to_i+1][_col.to_i] = nil
|
2514
|
-
# @domains[_row.to_i+1][_col.to_i] = nil
|
2515
|
-
end
|
2516
|
-
source_save.each{|name,ffw|
|
2517
|
-
ffw.domain = destination_domain
|
2518
|
-
register_panel(ffw, ffw.hinner_frame)
|
2519
|
-
}
|
2520
|
-
#-----
|
2521
|
-
parent_splitted_adapter = find_splitted_frame(@panels[destination_domain]['root'])
|
2522
|
-
if parent_splitted_adapter
|
2523
|
-
@panels[destination_domain]['splitted_frames']=parent_splitted_adapter
|
2524
|
-
else
|
2525
|
-
@panels[destination_domain]['splitted_frames']= nil
|
2526
|
-
end
|
2527
|
-
#-----
|
2528
|
-
source_row,source_col = source_domain.split('.')
|
2529
|
-
# shift_left(source_row.to_i,source_col.to_i)
|
2530
|
-
if vertical
|
2531
|
-
shift_left(source_row.to_i,source_col.to_i-1)
|
2532
|
-
else
|
2533
|
-
shift_top(source_row.to_i-1,source_col.to_i)
|
2534
|
-
end
|
2535
|
-
end
|
2536
|
-
else # CLOSE OTHER
|
2537
|
-
other_ds = domains_on_frame(@panels[_domain]['splitted_frames'].frame1)
|
2538
|
-
if other_ds.length == 1
|
2539
|
-
other_dom = other_ds[0]
|
2540
|
-
else
|
2541
|
-
if vertical
|
2542
|
-
other_dom = domain_name(_row.to_i, _col.to_i-1)
|
2543
|
-
else
|
2544
|
-
other_dom = domain_name(_row.to_i-1, _col.to_i)
|
2545
|
-
end
|
2546
|
-
end
|
2547
|
-
if @panels[_domain]['splitted_frames'] != @panels[other_dom]['splitted_frames']
|
2548
|
-
if @panels[other_dom]['root_splitted_frames'] && @panels[other_dom]['root_splitted_frames'] != @panels[_domain]['splitted_frames']
|
2549
|
-
other_root_splitted_adapter = @panels[other_dom]['root_splitted_frames']
|
2550
|
-
elsif @panels[other_dom]['splitted_frames']
|
2551
|
-
other_root_splitted_adapter = @panels[other_dom]['splitted_frames']
|
2552
|
-
end
|
2553
|
-
end
|
2554
|
-
|
2555
|
-
if other_root_splitted_adapter
|
2556
|
-
p "terzo quadrante"
|
2557
|
-
other_root_splitted_adapter.detach_frame
|
2558
|
-
splitted_adapter.detach_frame
|
2559
|
-
splitted_adapter.destroy
|
2560
|
-
other_root_splitted_adapter.attach_frame(splitted_adapter_frame)
|
2561
|
-
|
2562
|
-
@frames[_row.to_i][_col.to_i] = nil
|
2563
|
-
# @domains[_row.to_i][_col.to_i] = nil
|
2564
|
-
@panels.delete(_domain)
|
2565
|
-
else
|
2566
|
-
p "quarto quadrante"
|
2567
|
-
source_save = Hash.new
|
2568
|
-
source_save.update(@panels[other_dom]['sons'])
|
2569
|
-
source_save.each{|name,ffw|
|
2570
|
-
unregister_panel(ffw, false, false)
|
2571
|
-
}
|
2572
|
-
splitted_adapter.detach_frame
|
2573
|
-
splitted_adapter.destroy
|
2574
|
-
@panels[other_dom]['root']=splitted_adapter_frame
|
2575
|
-
|
2576
|
-
@frames[_row.to_i][_col.to_i] = nil
|
2577
|
-
# @domains[_row.to_i][_col.to_i] = nil
|
2578
|
-
build_titled_frame(other_dom)
|
2579
|
-
@panels.delete(_domain)
|
2580
|
-
|
2581
|
-
source_save.each{|name,ffw|
|
2582
|
-
ffw.domain = other_dom
|
2583
|
-
register_panel(ffw, ffw.hinner_frame)
|
2584
|
-
}
|
2585
|
-
#-----
|
2586
|
-
parent_splitted_adapter = find_splitted_frame(@panels[other_dom]['root'])
|
2587
|
-
if parent_splitted_adapter
|
2588
|
-
@panels[other_dom]['splitted_frames']=parent_splitted_adapter
|
2589
|
-
else
|
2590
|
-
@panels[other_dom]['splitted_frames']= nil
|
2591
|
-
end
|
2592
|
-
other_row,other_col = other_dom.split('.')
|
2593
|
-
@frames[other_row.to_i][other_col.to_i] = splitted_adapter_frame
|
2594
|
-
# @domains[other_row.to_i][other_col.to_i] = other_dom
|
2595
|
-
# if vertical
|
2596
|
-
# @frames[_row.to_i][_col.to_i-1] = splitted_adapter_frame
|
2597
|
-
# # @domains[_row.to_i][_col.to_i-1] = other_dom
|
2598
|
-
# else
|
2599
|
-
# @frames[_row.to_i-1][_col.to_i] = splitted_adapter_frame
|
2600
|
-
# # @domains[_row.to_i-1][_col.to_i] = other_dom
|
2601
|
-
# end
|
2602
|
-
end
|
2603
|
-
|
2604
|
-
if vertical
|
2605
|
-
shift_left(_row.to_i,_col.to_i)
|
2606
|
-
else
|
2607
|
-
shift_top(_row.to_i,_col.to_i)
|
2608
|
-
end
|
2609
|
-
end
|
2610
|
-
build_invert_menu(true)
|
2611
|
-
end
|
2612
2370
|
|
2613
2371
|
def find_splitted_frame(_start_frame)
|
2614
2372
|
splitted_frame = _start_frame
|
@@ -2746,8 +2504,8 @@ class ArcadiaLayout
|
|
2746
2504
|
|
2747
2505
|
def build_titled_frame(domain)
|
2748
2506
|
if @panels[domain]
|
2749
|
-
tframe =
|
2750
|
-
mb = tframe.
|
2507
|
+
tframe = TkTitledFrameAdapter.new(@panels[domain]['root']).place('x'=>0, 'y'=>0,'relheight'=>1, 'relwidth'=>1)
|
2508
|
+
mb = tframe.add_fixed_menu_button('ext')
|
2751
2509
|
# add commons item
|
2752
2510
|
menu = mb.cget('menu')
|
2753
2511
|
add_commons_menu_items(domain, menu)
|
@@ -2805,10 +2563,10 @@ class ArcadiaLayout
|
|
2805
2563
|
end
|
2806
2564
|
|
2807
2565
|
def change_domain(_target_domain, _source_name)
|
2808
|
-
tt1= @panels[_target_domain]['root'].top_text
|
2566
|
+
#tt1= @panels[_target_domain]['root'].top_text
|
2809
2567
|
source_domain = @wrappers[_source_name].domain
|
2810
2568
|
source_has_domain = !source_domain.nil?
|
2811
|
-
tt2= @panels[source_domain]['root'].top_text if source_has_domain
|
2569
|
+
#tt2= @panels[source_domain]['root'].top_text if source_has_domain
|
2812
2570
|
if @arcadia.conf('layout.exchange_panel_if_no_tabbed')=='true' && source_has_domain && @panels[source_domain]['sons'].length ==1 && @panels[_target_domain]['sons'].length > 0
|
2813
2571
|
# change ------
|
2814
2572
|
ffw1 = raised_fixed_frame(_target_domain)
|
@@ -2819,20 +2577,29 @@ class ArcadiaLayout
|
|
2819
2577
|
ffw2.domain = _target_domain
|
2820
2578
|
register_panel(ffw1, ffw1.hinner_frame) if ffw1
|
2821
2579
|
register_panel(ffw2, ffw2.hinner_frame)
|
2822
|
-
|
2823
|
-
|
2580
|
+
#@panels[_target_domain]['root'].top_text(tt2)
|
2581
|
+
#@panels[source_domain]['root'].top_text(tt1)
|
2582
|
+
@panels[_target_domain]['root'].save_caption(ffw2.name, @panels[source_domain]['root'].last_caption(ffw2.name))
|
2583
|
+
@panels[source_domain]['root'].save_caption(ffw1.name, @panels[_target_domain]['root'].last_caption(ffw1.name))
|
2584
|
+
@panels[_target_domain]['root'].restore_caption(ffw2.name)
|
2585
|
+
@panels[source_domain]['root'].restore_caption(ffw1.name)
|
2586
|
+
@panels[_target_domain]['root'].change_adapter(ffw2.name, @panels[source_domain]['root'].forge_transient_adapter(ffw2.name))
|
2587
|
+
@panels[source_domain]['root'].change_adapter(ffw1.name, @panels[_target_domain]['root'].forge_transient_adapter(ffw1.name))
|
2824
2588
|
elsif source_has_domain && @panels[source_domain]['sons'].length >= 1
|
2825
2589
|
ffw2 = @panels[source_domain]['sons'][_source_name]
|
2826
2590
|
unregister_panel(ffw2, false, false)
|
2827
2591
|
ffw2.domain = _target_domain
|
2828
2592
|
register_panel(ffw2, ffw2.hinner_frame)
|
2829
|
-
|
2830
|
-
|
2593
|
+
#@panels[_target_domain]['root'].top_text(tt2)
|
2594
|
+
#@panels[source_domain]['root'].top_text('')
|
2595
|
+
@panels[_target_domain]['root'].save_caption(ffw2.name, @panels[source_domain]['root'].last_caption(ffw2.name))
|
2596
|
+
@panels[_target_domain]['root'].restore_caption(ffw2.name)
|
2597
|
+
@panels[_target_domain]['root'].change_adapter(ffw2.name, @panels[source_domain]['root'].forge_transient_adapter(ffw2.name))
|
2831
2598
|
elsif !source_has_domain
|
2832
2599
|
ffw2 = @wrappers[_source_name]
|
2833
2600
|
ffw2.domain = _target_domain
|
2834
2601
|
register_panel(ffw2, ffw2.hinner_frame)
|
2835
|
-
|
2602
|
+
#@panels[_target_domain]['root'].top_text('')
|
2836
2603
|
end
|
2837
2604
|
# refresh -----
|
2838
2605
|
build_invert_menu
|
@@ -2872,7 +2639,7 @@ class ArcadiaLayout
|
|
2872
2639
|
@panels.keys.each{|dom|
|
2873
2640
|
if dom != '_domain_root_' && dom != _ffw.domain && @panels[dom] && @panels[dom]['root']
|
2874
2641
|
titledFrame = @panels[dom]['root']
|
2875
|
-
if titledFrame.instance_of?(
|
2642
|
+
if titledFrame.instance_of?(TkTitledFrameAdapter)
|
2876
2643
|
menu = @panels[dom]['root'].menu_button('ext').cget('menu')
|
2877
2644
|
menu.insert('0',:command,
|
2878
2645
|
:label=>_ffw.title,
|
@@ -2886,7 +2653,7 @@ class ArcadiaLayout
|
|
2886
2653
|
}
|
2887
2654
|
if @panels[_ffw.domain]
|
2888
2655
|
titledFrame = @panels[_ffw.domain]['root']
|
2889
|
-
if titledFrame.instance_of?(
|
2656
|
+
if titledFrame.instance_of?(TkTitledFrameAdapter)
|
2890
2657
|
mymenu = titledFrame.menu_button('ext').cget('menu')
|
2891
2658
|
index = mymenu.index('end').to_i
|
2892
2659
|
if @panels.keys.length > 2
|
@@ -2914,7 +2681,7 @@ class ArcadiaLayout
|
|
2914
2681
|
@panels.keys.each{|dom|
|
2915
2682
|
if dom != '_domain_root_' && @panels[dom] && @panels[dom]['root']
|
2916
2683
|
titledFrame = @panels[dom]['root']
|
2917
|
-
if titledFrame.instance_of?(
|
2684
|
+
if titledFrame.instance_of?(TkTitledFrameAdapter)
|
2918
2685
|
menu = titledFrame.menu_button('ext').cget('menu')
|
2919
2686
|
if refresh_commons_items
|
2920
2687
|
@panels[dom]['root'].menu_button('ext').cget('menu').delete('0','end')
|
@@ -2956,23 +2723,23 @@ class ArcadiaLayout
|
|
2956
2723
|
if pan!=nil
|
2957
2724
|
num = pan['sons'].length
|
2958
2725
|
if @headed
|
2726
|
+
root_frame = pan['root'].frame
|
2959
2727
|
pan['root'].title(_title)
|
2960
|
-
|
2728
|
+
pan['root'].restore_caption(_name)
|
2729
|
+
pan['root'].change_adapter_name(_name)
|
2730
|
+
if !root_frame.instance_of?(TkFrameAdapter) && num==0
|
2961
2731
|
if _adapter
|
2962
2732
|
adapter = _adapter
|
2963
2733
|
else
|
2964
2734
|
adapter = TkFrameAdapter.new(self.root, Arcadia.style('frame'))
|
2965
2735
|
end
|
2966
|
-
adapter.attach_frame(
|
2736
|
+
adapter.attach_frame(root_frame)
|
2967
2737
|
adapter.raise
|
2968
|
-
#@wrappers[_name]=wrapper
|
2969
2738
|
end
|
2970
|
-
root_frame = pan['root'].frame
|
2971
2739
|
else
|
2972
2740
|
root_frame = pan['root']
|
2973
2741
|
end
|
2974
2742
|
if (num == 0 && @autotab)
|
2975
|
-
#api = ArcadiaPanelInfo.new(_name,_title,wrapper,_ffw)
|
2976
2743
|
pan['sons'][_name] = _ffw
|
2977
2744
|
process_frame(_ffw)
|
2978
2745
|
return adapter
|
@@ -2989,7 +2756,8 @@ class ArcadiaLayout
|
|
2989
2756
|
'text'=>api.title,
|
2990
2757
|
'raisecmd'=>proc{
|
2991
2758
|
pan['root'].title(api.title)
|
2992
|
-
pan['root'].
|
2759
|
+
pan['root'].restore_caption(api.name)
|
2760
|
+
pan['root'].change_adapter_name(api.name)
|
2993
2761
|
Arcadia.process_event(LayoutRaisingFrameEvent.new(self,'extension_name'=>pan['sons'][api.name].extension_name, 'frame_name'=>pan['sons'][api.name].name))
|
2994
2762
|
# changed
|
2995
2763
|
# notify_observers('RAISE', api.name)
|
@@ -3009,7 +2777,9 @@ class ArcadiaLayout
|
|
3009
2777
|
_panel = pan['notebook'].insert('end',_name ,
|
3010
2778
|
'text'=>_title,
|
3011
2779
|
'raisecmd'=>proc{
|
3012
|
-
|
2780
|
+
pan['root'].title(_title)
|
2781
|
+
pan['root'].restore_caption(_name)
|
2782
|
+
pan['root'].change_adapter_name(_name)
|
3013
2783
|
Arcadia.process_event(LayoutRaisingFrameEvent.new(self,'extension_name'=>_ffw.extension_name, 'frame_name'=>_ffw.name))
|
3014
2784
|
# changed
|
3015
2785
|
# notify_observers('RAISE', _name)
|
@@ -3062,9 +2832,13 @@ class ArcadiaLayout
|
|
3062
2832
|
if @panels[_domain_name]['sons'].length == 1
|
3063
2833
|
w = @panels[_domain_name]['sons'].values[0].hinner_frame
|
3064
2834
|
t = @panels[_domain_name]['sons'].values[0].title
|
2835
|
+
n = @panels[_domain_name]['sons'].values[0].name
|
3065
2836
|
w.detach_frame
|
3066
2837
|
w.attach_frame(@panels[_domain_name]['root'].frame)
|
3067
2838
|
@panels[_domain_name]['root'].title(t)
|
2839
|
+
@panels[_domain_name]['root'].restore_caption(n)
|
2840
|
+
@panels[_domain_name]['root'].change_adapter_name(n)
|
2841
|
+
|
3068
2842
|
@panels[_domain_name]['notebook'].destroy
|
3069
2843
|
@panels[_domain_name]['notebook']=nil
|
3070
2844
|
elsif @panels[_domain_name]['sons'].length > 1
|
@@ -3076,6 +2850,7 @@ class ArcadiaLayout
|
|
3076
2850
|
#p "unregister #{_name} ------> 5"
|
3077
2851
|
elsif @panels[_domain_name]['sons'].length == 0
|
3078
2852
|
@panels[_domain_name]['root'].title('')
|
2853
|
+
@panels[_domain_name]['root'].top_text('')
|
3079
2854
|
end
|
3080
2855
|
build_invert_menu if refresh_menu
|
3081
2856
|
end
|
@@ -3143,7 +2918,7 @@ class ArcadiaLayout
|
|
3143
2918
|
ret = _frame
|
3144
2919
|
# child = TkWinfo.children(_frame)[0]
|
3145
2920
|
TkWinfo.children(_frame).each{|child|
|
3146
|
-
if child.instance_of?(
|
2921
|
+
if child.instance_of?(TkTitledFrameAdapter)
|
3147
2922
|
ret = child.frame
|
3148
2923
|
break
|
3149
2924
|
end
|
@@ -3350,11 +3125,19 @@ class FocusEventManager
|
|
3350
3125
|
end
|
3351
3126
|
|
3352
3127
|
def do_upper_case(_focused_widget)
|
3353
|
-
|
3128
|
+
if _focused_widget.respond_to?(:do_upper_case)
|
3129
|
+
_focused_widget.do_upper_case
|
3130
|
+
else
|
3131
|
+
_replace_sel(_focused_widget, :upcase)
|
3132
|
+
end
|
3354
3133
|
end
|
3355
3134
|
|
3356
3135
|
def do_lower_case(_focused_widget)
|
3357
|
-
|
3136
|
+
if _focused_widget.respond_to?(:do_lower_case)
|
3137
|
+
_focused_widget.do_lower_case
|
3138
|
+
else
|
3139
|
+
_replace_sel(_focused_widget, :downcase)
|
3140
|
+
end
|
3358
3141
|
end
|
3359
3142
|
|
3360
3143
|
def _replace_sel(_focused_widget, _method)
|