arcadia 0.9.1 → 0.9.2
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 +5 -10
- data/ext/ae-dir-projects/ae-dir-projects.rb +26 -44
- data/ext/ae-editor/ae-editor.rb +3 -3
- data/ext/ae-file-history/ae-file-history.rb +6 -3
- data/ext/ae-output/ae-output.rb +5 -3
- data/ext/ae-search-in-files/ae-search-in-files.rb +4 -4
- data/ext/ae-shell/ae-shell.rb +3 -3
- data/ext/ae-subprocess-inspector/ae-subprocess-inspector.rb +8 -1
- data/lib/a-core.rb +52 -6
- data/lib/a-tkcommons.rb +268 -261
- metadata +7 -3
data/README
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
= Arcadia Ide
|
2
|
-
version 0.9.
|
2
|
+
version 0.9.2
|
3
3
|
|
4
4
|
by Antonio Galeone
|
5
|
-
on
|
5
|
+
on Nov 21, 2010
|
6
6
|
|
7
7
|
|
8
8
|
== About
|
@@ -16,16 +16,11 @@ Some of Arcadia 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.9.
|
19
|
+
== In this release 0.9.2
|
20
20
|
|
21
21
|
[Improvements]
|
22
|
-
|
23
|
-
|
24
|
-
new features:
|
25
|
-
editor
|
26
|
-
- added a button for close current tab
|
27
|
-
- added menu button for quick file selection
|
28
|
-
- "Edit/Prettify Current" now works
|
22
|
+
- bugs fixed in case of ruby 1.8 enviroment
|
23
|
+
- supported the maximized state saving of the main window
|
29
24
|
|
30
25
|
== Dependencies
|
31
26
|
- rubygems
|
@@ -129,50 +129,13 @@ class DirProjects < ArcadiaExt
|
|
129
129
|
do_close_folder_cmd = proc{|_node| do_close_folder(_node)}
|
130
130
|
|
131
131
|
# @htree = Tk::BWidget::Tree.new(self.frame.hinner_frame, Arcadia.style('treepanel')){
|
132
|
-
@htree =
|
132
|
+
@htree = BWidgetTreePatched.new(self.frame.hinner_frame, Arcadia.style('treepanel')){
|
133
133
|
showlines false
|
134
134
|
deltay 18
|
135
135
|
opencmd do_open_folder_cmd
|
136
136
|
closecmd do_close_folder_cmd
|
137
137
|
selectcommand do_select_item
|
138
138
|
}
|
139
|
-
|
140
|
-
class << @htree
|
141
|
-
def open?(node)
|
142
|
-
bool(self.itemcget(tagid(node), 'open'))
|
143
|
-
end
|
144
|
-
|
145
|
-
def areabind(context, *args)
|
146
|
-
if TkComm._callback_entry?(args[0]) || !block_given?
|
147
|
-
cmd = args.shift
|
148
|
-
else
|
149
|
-
cmd = Proc.new
|
150
|
-
end
|
151
|
-
_bind_for_event_class(Event_for_Items, [path, 'bindArea'],
|
152
|
-
context, cmd, *args)
|
153
|
-
self
|
154
|
-
end
|
155
|
-
|
156
|
-
def areabind_append(context, *args)
|
157
|
-
if TkComm._callback_entry?(args[0]) || !block_given?
|
158
|
-
cmd = args.shift
|
159
|
-
else
|
160
|
-
cmd = Proc.new
|
161
|
-
end
|
162
|
-
_bind_append_for_event_class(Event_for_Items, [path, 'bindArea'],
|
163
|
-
context, cmd, *args)
|
164
|
-
self
|
165
|
-
end
|
166
|
-
|
167
|
-
def areabind_remove(*args)
|
168
|
-
_bind_remove_for_event_class(Event_for_Items, [path, 'bindArea'], *args)
|
169
|
-
self
|
170
|
-
end
|
171
|
-
|
172
|
-
def areabindinfo(*args)
|
173
|
-
_bindinfo_for_event_class(Event_for_Items, [path, 'bindArea'], *args)
|
174
|
-
end
|
175
|
-
end
|
176
139
|
@htree.extend(TkScrollableWidget).show(0,26)
|
177
140
|
self.pop_up_menu_tree
|
178
141
|
@image_kdir = TkPhotoImage.new('dat' => ICON_FOLDER_OPEN_GIF)
|
@@ -194,7 +157,25 @@ class DirProjects < ArcadiaExt
|
|
194
157
|
}
|
195
158
|
|
196
159
|
@htree.textbind_append('Double-1',do_double_click)
|
197
|
-
|
160
|
+
end
|
161
|
+
|
162
|
+
def do_select_item2
|
163
|
+
proc{|_tree, _selected|
|
164
|
+
if File.exist?(node2file(_selected))
|
165
|
+
if File.ftype(node2file(_selected)) == 'file'
|
166
|
+
_sync_val = @sync
|
167
|
+
@sync = false
|
168
|
+
begin
|
169
|
+
Arcadia.process_event(OpenBufferTransientEvent.new(self,'file'=>node2file(_selected)))
|
170
|
+
ensure
|
171
|
+
@sync = _sync_val
|
172
|
+
end
|
173
|
+
end
|
174
|
+
else
|
175
|
+
shure_delete_node(_selected)
|
176
|
+
end
|
177
|
+
}
|
178
|
+
end
|
198
179
|
|
199
180
|
def key_press(_keysym)
|
200
181
|
case _keysym
|
@@ -535,8 +516,6 @@ class DirProjects < ArcadiaExt
|
|
535
516
|
end
|
536
517
|
_ret
|
537
518
|
}
|
538
|
-
# @htree.textbind('KeyPress', proc{|e|
|
539
|
-
# p 'pippo'})
|
540
519
|
@htree.edit(tmp_node_name, tmp_node_name.split(File::SEPARATOR)[-1], _verify_cmd, 1)
|
541
520
|
end
|
542
521
|
|
@@ -817,14 +796,17 @@ class DirProjects < ArcadiaExt
|
|
817
796
|
def shure_select_node(_node)
|
818
797
|
return if @selecting_node
|
819
798
|
@selecting_node = true
|
820
|
-
_proc = @htree.selectcommand
|
821
|
-
|
799
|
+
#_proc = @htree.selectcommand
|
800
|
+
#@htree.selectcommand(nil)
|
801
|
+
_proc = @htree.cget('selectcommand')
|
802
|
+
@htree.configure('selectcommand'=>nil)
|
822
803
|
begin
|
823
804
|
@htree.selection_clear
|
824
805
|
@htree.selection_add(_node)
|
825
806
|
@htree.see(_node)
|
826
807
|
ensure
|
827
|
-
|
808
|
+
#@htree.selectcommand(_proc)
|
809
|
+
@htree.configure('selectcommand'=>_proc)
|
828
810
|
@selecting_node = false
|
829
811
|
end
|
830
812
|
end
|
data/ext/ae-editor/ae-editor.rb
CHANGED
@@ -1284,7 +1284,7 @@ class AgEditor
|
|
1284
1284
|
_buffer = @text.get(_begin_index, 'insert')
|
1285
1285
|
_buffer_ini_length = _buffer.length
|
1286
1286
|
@raised_listbox_frame.place('x'=>_xroot,'y'=>_yroot, 'width'=>_width, 'height'=>_height)
|
1287
|
-
@raised_listbox.extend(TkScrollableWidget).show(0,0
|
1287
|
+
@raised_listbox.extend(TkScrollableWidget).show(0,0)
|
1288
1288
|
@raised_listbox.focus
|
1289
1289
|
#@raised_listbox.activate(0)
|
1290
1290
|
@raised_listbox.select(1)
|
@@ -3358,7 +3358,7 @@ class AgMultiEditor < ArcadiaExt
|
|
3358
3358
|
entry_hash[:dir]= _event.dir if _event.dir
|
3359
3359
|
entry_hash[:title]= "#{bn}"
|
3360
3360
|
|
3361
|
-
Arcadia.persistent("runners.#{bn}", entry_hash.
|
3361
|
+
Arcadia.persistent("runners.#{bn}", entry_hash.inspect)
|
3362
3362
|
# here add new menu' item
|
3363
3363
|
mr = Arcadia.menu_root('runcurr')
|
3364
3364
|
if mr
|
@@ -3368,7 +3368,7 @@ class AgMultiEditor < ArcadiaExt
|
|
3368
3368
|
)
|
3369
3369
|
}
|
3370
3370
|
exts = ''
|
3371
|
-
run =
|
3371
|
+
run = Arcadia.runner(entry_hash[:runner])
|
3372
3372
|
if run
|
3373
3373
|
file_exts = run[:file_exts]
|
3374
3374
|
end
|
@@ -242,8 +242,10 @@ class FilesHistrory < ArcadiaExt
|
|
242
242
|
_f = _f.downcase if is_windows?
|
243
243
|
_file_node_rif = _d+'@@@'+_f
|
244
244
|
if @htree.exist?(_file_node_rif)
|
245
|
-
_proc = @htree.selectcommand
|
246
|
-
@htree.selectcommand
|
245
|
+
_proc = @htree.cget('selectcommand')
|
246
|
+
@htree.configure('selectcommand'=>nil)
|
247
|
+
#_proc = @htree.selectcommand
|
248
|
+
#@htree.selectcommand(proc{nil})
|
247
249
|
begin
|
248
250
|
parent = root.dir(_d)
|
249
251
|
@htree.selection_clear
|
@@ -255,7 +257,8 @@ class FilesHistrory < ArcadiaExt
|
|
255
257
|
end
|
256
258
|
@htree.see(_file_node_rif)
|
257
259
|
ensure
|
258
|
-
|
260
|
+
#@htree.selectcommand(_proc)
|
261
|
+
@htree.configure('selectcommand'=>_proc)
|
259
262
|
end
|
260
263
|
end
|
261
264
|
end
|
data/ext/ae-output/ae-output.rb
CHANGED
@@ -140,7 +140,7 @@ end
|
|
140
140
|
|
141
141
|
class Output < ArcadiaExt
|
142
142
|
attr_reader :main_frame
|
143
|
-
|
143
|
+
MARKSUF='mark-'
|
144
144
|
def on_before_build(_event)
|
145
145
|
#ArcadiaContractListener.new(self, MsgContract, :do_msg_event)
|
146
146
|
Arcadia.attach_listener(self, MsgEvent)
|
@@ -161,7 +161,9 @@ class Output < ArcadiaExt
|
|
161
161
|
def on_msg(_event)
|
162
162
|
self.frame.show
|
163
163
|
if _event.mark
|
164
|
-
|
164
|
+
_mark_index = _event.mark.sub(MARKSUF,'');
|
165
|
+
_index_begin = "#{_mark_index} + 1 lines + 1 chars"
|
166
|
+
#_index_begin = "#{@main_frame.text.index(_event.mark)} + 1 lines + 1 chars"
|
165
167
|
# _b = Tk::BWidget::Button.new(@main_frame.text,
|
166
168
|
# 'helptext'=>Time.now.strftime("-> %d-%b-%Y %H:%M:%S"),
|
167
169
|
# 'background'=>Arcadia.style('edit')['background'],
|
@@ -194,7 +196,7 @@ class Output < ArcadiaExt
|
|
194
196
|
end
|
195
197
|
@main_frame.text.see(_index_end)
|
196
198
|
@main_frame.text.mark_unset(_event.mark)
|
197
|
-
_event.mark="
|
199
|
+
_event.mark="#{MARKSUF}#{_index_end}"
|
198
200
|
@main_frame.text.mark_set(_event.mark, "#{_index_end} - 1 lines -1 chars")
|
199
201
|
# if _event.instance_of?(MsgRunEvent)
|
200
202
|
# _b = TkButton.new(@main_frame.text,
|
@@ -139,16 +139,16 @@ class SearchOutput
|
|
139
139
|
Arcadia.process_event(OpenBufferTransientEvent.new(self,'file'=>@results[n_parent][n][0], 'row'=>@results[n_parent][n][1])) if n && @results[n_parent][n]
|
140
140
|
#EditorContract.instance.open_file(self, 'file'=>@results[n_parent][n][0], 'line'=>@results[n_parent][n][1]) if n && @results[n_parent][n]
|
141
141
|
end
|
142
|
-
|
143
142
|
@tree = Tk::BWidget::Tree.new(@ext.frame.hinner_frame, Arcadia.style('treepanel')){
|
144
143
|
#background '#FFFFFF'
|
145
144
|
#relief 'flat'
|
146
145
|
#showlines true
|
147
146
|
#linesfill '#e7de8f'
|
148
|
-
selectcommand
|
147
|
+
selectcommand(_open_file)
|
149
148
|
deltay 15
|
150
|
-
}
|
151
|
-
|
149
|
+
}
|
150
|
+
#.place('x' => '25','y' => '0','relwidth' => '1', 'relheight' => '1', 'width' => '-40', 'height'=>'-15')
|
151
|
+
@tree.extend(TkScrollableWidget).show(25,0)
|
152
152
|
|
153
153
|
_proc_clear = proc{clear_tree}
|
154
154
|
|
data/ext/ae-shell/ae-shell.rb
CHANGED
@@ -193,15 +193,15 @@ class Shell < ArcadiaExt
|
|
193
193
|
}
|
194
194
|
|
195
195
|
alive_check = proc{
|
196
|
-
num = `ps -p #{fi_pid}|wc -l`
|
197
|
-
num.to_i > 1
|
196
|
+
num = `ps -p #{fi_pid}|wc -l` if fi_pid
|
197
|
+
num.to_i > 1 && fi_pid
|
198
198
|
}
|
199
199
|
|
200
200
|
|
201
201
|
#Arcadia.console(self,'msg'=>"#{th}", 'level'=>'debug', 'abort_action'=>abort_action)
|
202
202
|
|
203
203
|
Open3.popen3(_cmd_){|stdin, stdout, stderr, th|
|
204
|
-
fi_pid = th.pid
|
204
|
+
fi_pid = th.pid if th
|
205
205
|
output_mark = Arcadia.console(self,'msg'=>" [pid #{fi_pid}]", 'level'=>'debug', 'mark'=>output_mark, 'append'=>true)
|
206
206
|
Arcadia.process_event(SubProcessEvent.new(self, 'pid'=>fi_pid, 'name'=>_event.file,'abort_action'=>abort_action, 'alive_check'=>alive_check))
|
207
207
|
|
@@ -34,6 +34,13 @@ class SubProcessInspector < ArcadiaExt
|
|
34
34
|
pr.event.abort_action.call if !pr.nil?
|
35
35
|
}
|
36
36
|
end
|
37
|
+
|
38
|
+
def do_delete_process(_process)
|
39
|
+
@processs.delete(_process)
|
40
|
+
if @processs.length == 0
|
41
|
+
self.frame.free
|
42
|
+
end
|
43
|
+
end
|
37
44
|
|
38
45
|
end
|
39
46
|
|
@@ -98,7 +105,7 @@ class SubProcessWidget < TkFrame
|
|
98
105
|
#p "ALIVE=#{alive}"
|
99
106
|
if !alive
|
100
107
|
@timer.stop
|
101
|
-
@parent.
|
108
|
+
@parent.do_delete_process(self)
|
102
109
|
self.destroy
|
103
110
|
end
|
104
111
|
@progress.numeric += 1
|
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.2',
|
26
26
|
'conf/arcadia.conf',
|
27
27
|
'conf/arcadia.pers'
|
28
28
|
)
|
@@ -55,8 +55,6 @@ class Arcadia < TkApplication
|
|
55
55
|
protocol( "WM_DELETE_WINDOW", $arcadia['action.on_exit'])
|
56
56
|
iconphoto(TkPhotoImage.new('dat'=>ARCADIA_RING_GIF))
|
57
57
|
}
|
58
|
-
|
59
|
-
|
60
58
|
@on_event = Hash.new
|
61
59
|
|
62
60
|
@main_menu_bar = TkMenubar.new(
|
@@ -102,6 +100,13 @@ class Arcadia < TkApplication
|
|
102
100
|
@root.geometry(geometry)
|
103
101
|
@root.raise
|
104
102
|
Tk.update_idletasks
|
103
|
+
if self['conf']['geometry.state'] == 'zoomed'
|
104
|
+
if Arcadia.is_windows?
|
105
|
+
@root.state('zoomed')
|
106
|
+
else
|
107
|
+
@root.wm_attributes('zoomed',1)
|
108
|
+
end
|
109
|
+
end
|
105
110
|
#sleep(1)
|
106
111
|
@splash.destroy if @splash
|
107
112
|
if @first_run # first ARCADIA ever
|
@@ -286,7 +291,7 @@ class Arcadia < TkApplication
|
|
286
291
|
end
|
287
292
|
end
|
288
293
|
|
289
|
-
def
|
294
|
+
def load_maximized
|
290
295
|
lm = self['conf']['layout.maximized']
|
291
296
|
if lm
|
292
297
|
ext,index=lm.split(',')
|
@@ -592,7 +597,12 @@ class Arcadia < TkApplication
|
|
592
597
|
mr.insert('0', :separator) if runs && !runs.empty?
|
593
598
|
pers_runner = Hash.new
|
594
599
|
runs.each{|name, hash_string|
|
595
|
-
|
600
|
+
begin
|
601
|
+
pers_runner[name]=eval hash_string
|
602
|
+
rescue Exception => e
|
603
|
+
p "Loading runners : probably bud runner conf '#{hash_string}' : #{e.message}"
|
604
|
+
Arcadia.unpersistent("runners.#{name}")
|
605
|
+
end
|
596
606
|
}
|
597
607
|
|
598
608
|
pers_runner.each{|name, run|
|
@@ -723,8 +733,44 @@ class Arcadia < TkApplication
|
|
723
733
|
_event.can_exit
|
724
734
|
end
|
725
735
|
|
736
|
+
def geometry_refine(_geometry)
|
737
|
+
begin
|
738
|
+
a = geometry_to_a(_geometry)
|
739
|
+
toolbar_height = @root.winfo_height-@root.winfo_screenheight
|
740
|
+
a[3] = (a[3].to_i - toolbar_height).to_s
|
741
|
+
geometry_from_a(a)
|
742
|
+
rescue
|
743
|
+
return _geometry
|
744
|
+
end
|
745
|
+
end
|
746
|
+
|
747
|
+
def geometry_to_a(_geometry=nil)
|
748
|
+
return if _geometry.nil?
|
749
|
+
wh,x,y=_geometry.split('+')
|
750
|
+
w,h=wh.split('x')
|
751
|
+
[w,h,x,y]
|
752
|
+
end
|
753
|
+
|
754
|
+
def geometry_from_a(_a=nil)
|
755
|
+
return "0x0+0+0" if _a.nil? || _a.length < 4
|
756
|
+
"#{_a[0]}x#{_a[1]}+#{_a[2]}+#{_a[3]}"
|
757
|
+
end
|
758
|
+
|
726
759
|
def save_layout
|
727
|
-
self['conf']['geometry']= TkWinfo.geometry(@root)
|
760
|
+
self['conf']['geometry']= geometry_refine(TkWinfo.geometry(@root))
|
761
|
+
begin
|
762
|
+
if Arcadia.is_windows?
|
763
|
+
self['conf']['geometry.state'] = @root.state.to_s
|
764
|
+
else
|
765
|
+
if @root.wm_attributes('zoomed') == '1'
|
766
|
+
self['conf']['geometry.state']='zoomed'
|
767
|
+
else
|
768
|
+
self['conf']['geometry.state']='normal'
|
769
|
+
end
|
770
|
+
end
|
771
|
+
rescue
|
772
|
+
self['conf']['geometry.state']='not_supported'
|
773
|
+
end
|
728
774
|
Arcadia.del_conf_group(self['conf'],'layout')
|
729
775
|
# resizing
|
730
776
|
@exts_i.each{|e|
|
data/lib/a-tkcommons.rb
CHANGED
@@ -11,15 +11,15 @@ class BWidgetTreePatched < Tk::BWidget::Tree
|
|
11
11
|
def open?(node)
|
12
12
|
bool(self.itemcget(tagid(node), 'open'))
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def areabind(context, *args)
|
16
16
|
if TkComm._callback_entry?(args[0]) || !block_given?
|
17
17
|
cmd = args.shift
|
18
18
|
else
|
19
19
|
cmd = Proc.new
|
20
20
|
end
|
21
|
-
_bind_for_event_class(Event_for_Items, [path, 'bindArea'],
|
22
|
-
|
21
|
+
_bind_for_event_class(Event_for_Items, [path, 'bindArea'],
|
22
|
+
context, cmd, *args)
|
23
23
|
self
|
24
24
|
end
|
25
25
|
|
@@ -29,8 +29,8 @@ class BWidgetTreePatched < Tk::BWidget::Tree
|
|
29
29
|
else
|
30
30
|
cmd = Proc.new
|
31
31
|
end
|
32
|
-
_bind_append_for_event_class(Event_for_Items, [path, 'bindArea'],
|
33
|
-
|
32
|
+
_bind_append_for_event_class(Event_for_Items, [path, 'bindArea'],
|
33
|
+
context, cmd, *args)
|
34
34
|
self
|
35
35
|
end
|
36
36
|
|
@@ -43,6 +43,9 @@ class BWidgetTreePatched < Tk::BWidget::Tree
|
|
43
43
|
_bindinfo_for_event_class(Event_for_Items, [path, 'bindArea'], *args)
|
44
44
|
end
|
45
45
|
|
46
|
+
# def selectcommand(_proc=nil)
|
47
|
+
# self.configure('selectcommand'=>_proc)
|
48
|
+
# end
|
46
49
|
end
|
47
50
|
|
48
51
|
|
@@ -52,11 +55,11 @@ class TkApplication < Application
|
|
52
55
|
super(_application_params)
|
53
56
|
@tcltk_info = TclTkInfo.new
|
54
57
|
end
|
55
|
-
|
58
|
+
|
56
59
|
def self.sys_info
|
57
|
-
|
60
|
+
"#{super}\n[TclTk version = #{TclTkInfo.new.level}]"
|
58
61
|
end
|
59
|
-
|
62
|
+
|
60
63
|
def run
|
61
64
|
Tk.appname(self['applicationParams'].name)
|
62
65
|
Tk.mainloop
|
@@ -77,18 +80,18 @@ module TkMovable
|
|
77
80
|
@moving_obj.bind_remove("B1-Motion")
|
78
81
|
@moving_obj.bind_remove("ButtonPress-1")
|
79
82
|
end
|
80
|
-
|
83
|
+
|
81
84
|
def moving_do_press(_x, _y)
|
82
|
-
|
83
|
-
|
85
|
+
@x0 = _x
|
86
|
+
@y0 = _y
|
84
87
|
end
|
85
|
-
|
88
|
+
|
86
89
|
def moving_do_move_obj(_x, _y)
|
87
90
|
_x = TkPlace.info(@moved_obj)['x'] + _x - @x0
|
88
91
|
_y = TkPlace.info(@moved_obj)['y'] + _y - @y0
|
89
92
|
@moved_obj.place('x'=>_x, 'y'=>_y)
|
90
93
|
end
|
91
|
-
|
94
|
+
|
92
95
|
end
|
93
96
|
|
94
97
|
module TkResizable
|
@@ -107,12 +110,12 @@ module TkResizable
|
|
107
110
|
@moving_obj.bind_remove("B1-Motion")
|
108
111
|
@moving_obj.bind_remove("ButtonPress-1")
|
109
112
|
end
|
110
|
-
|
113
|
+
|
111
114
|
def resizing_do_press(_x, _y)
|
112
|
-
|
113
|
-
|
115
|
+
@x0 = _x
|
116
|
+
@y0 = _y
|
114
117
|
end
|
115
|
-
|
118
|
+
|
116
119
|
def resizing_do_move_obj(_x, _y)
|
117
120
|
_width0 = TkPlace.info(@moved_obj)['width']
|
118
121
|
_height0 = TkPlace.info(@moved_obj)['height']
|
@@ -122,7 +125,7 @@ module TkResizable
|
|
122
125
|
_height = MIN_HEIGHT if _height < MIN_HEIGHT
|
123
126
|
@moved_obj.place('width'=>_width, 'height'=>_height)
|
124
127
|
end
|
125
|
-
|
128
|
+
|
126
129
|
end
|
127
130
|
|
128
131
|
|
@@ -247,27 +250,27 @@ class TkFrameAdapter < TkFrame
|
|
247
250
|
@movable = true
|
248
251
|
start_moving(_obj, self)
|
249
252
|
end
|
250
|
-
|
253
|
+
|
251
254
|
def detach_frame
|
252
|
-
if @frame
|
255
|
+
if @frame
|
253
256
|
if @movable
|
254
|
-
@frame.bind_remove("Configure")
|
255
|
-
@frame.bind_remove("Map")
|
256
|
-
@frame.bind_remove("Unmap")
|
257
|
+
@frame.bind_remove("Configure")
|
258
|
+
@frame.bind_remove("Map")
|
259
|
+
@frame.bind_remove("Unmap")
|
257
260
|
end
|
258
261
|
@frame = nil
|
259
262
|
self.unmap
|
260
263
|
end
|
261
264
|
end
|
262
|
-
|
265
|
+
|
263
266
|
def unmap
|
264
267
|
if is_place?
|
265
268
|
self.unplace
|
266
269
|
elsif is_pack?
|
267
270
|
self.unpack
|
268
|
-
end
|
271
|
+
end
|
269
272
|
end
|
270
|
-
|
273
|
+
|
271
274
|
def attach_frame(_frame)
|
272
275
|
@frame = _frame
|
273
276
|
@frame_manager = TkWinfo.manager(@frame)
|
@@ -287,15 +290,15 @@ class TkFrameAdapter < TkFrame
|
|
287
290
|
def is_pack?
|
288
291
|
@frame_manager == 'pack'
|
289
292
|
end
|
290
|
-
|
293
|
+
|
291
294
|
def refresh(_x=0, _y=0)
|
292
|
-
if is_place?
|
295
|
+
if is_place?
|
293
296
|
place('in'=>@frame, 'x'=>_x, 'y'=>_y, 'relheight'=> 1, 'relwidth'=>1, 'bordermode'=>'outside')
|
294
297
|
elsif is_pack?
|
295
298
|
pack('in'=>@frame, 'fill'=>'both', 'expand'=>true)
|
296
299
|
end
|
297
300
|
end
|
298
|
-
|
301
|
+
|
299
302
|
end
|
300
303
|
|
301
304
|
class AGTkSplittedFrames < TkFrameAdapter
|
@@ -340,19 +343,19 @@ class AGTkVSplittedFrames < AGTkSplittedFrames
|
|
340
343
|
@frame1 = @left_frame
|
341
344
|
if perc
|
342
345
|
p_width = TkWinfo.screenwidth(self)
|
343
|
-
|
346
|
+
x = (p_width/100*width).to_i
|
344
347
|
else
|
345
|
-
x = width
|
348
|
+
x = width
|
346
349
|
end
|
347
|
-
|
350
|
+
|
348
351
|
@left_frame.place(
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
352
|
+
'relx' => 0,
|
353
|
+
'x' => 0,
|
354
|
+
'y' => '0',
|
355
|
+
'relheight' => '1',
|
356
|
+
'rely' => 0,
|
357
|
+
'bordermode' => 'inside',
|
358
|
+
'width' => x
|
356
359
|
)
|
357
360
|
@left_frame_obj = AGTkObjPlace.new(@left_frame, 'x', nil, false)
|
358
361
|
@left_frame_obj.width = x
|
@@ -363,47 +366,47 @@ class AGTkVSplittedFrames < AGTkSplittedFrames
|
|
363
366
|
@splitter_frame = TkFrame.new(self, Arcadia.style('splitter'))
|
364
367
|
|
365
368
|
@splitter_frame.place(
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
369
|
+
'relx' => 0,
|
370
|
+
'x' => x,
|
371
|
+
'y' => '0',
|
372
|
+
'relheight' => '1',
|
373
|
+
'rely' => 0,
|
374
|
+
'bordermode' => 'inside',
|
375
|
+
'width' => @slen
|
373
376
|
)
|
374
|
-
|
377
|
+
|
375
378
|
if @user_control
|
376
379
|
@splitter_frame.bind_append(
|
377
|
-
|
378
|
-
|
380
|
+
"ButtonRelease-1",
|
381
|
+
proc{do_resize}
|
379
382
|
)
|
380
383
|
_xbutton = TkButton.new(@splitter_frame, Arcadia.style('toolbarbutton')){
|
381
384
|
background '#4966d7'
|
382
385
|
}
|
383
386
|
_xbutton.place(
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
387
|
+
'x' => 0,
|
388
|
+
'y' => 0,
|
389
|
+
'relwidth' => 1,
|
390
|
+
'bordermode' => 'outside',
|
391
|
+
'height' => 20
|
389
392
|
)
|
390
393
|
_xbutton.bind_append(
|
391
|
-
|
392
|
-
|
394
|
+
"ButtonPress-1",
|
395
|
+
proc{hide_left}
|
393
396
|
)
|
394
397
|
_ybutton = TkButton.new(@splitter_frame, Arcadia.style('toolbarbutton')){
|
395
398
|
background '#118124'
|
396
399
|
}
|
397
400
|
_ybutton.place(
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
401
|
+
'x' => 0,
|
402
|
+
'y' => 21,
|
403
|
+
'bordermode' => 'outside',
|
404
|
+
'height' => 20,
|
405
|
+
'relwidth' => 1
|
403
406
|
)
|
404
407
|
_ybutton.bind_append(
|
405
|
-
|
406
|
-
|
408
|
+
"ButtonPress-1",
|
409
|
+
proc{hide_right}
|
407
410
|
)
|
408
411
|
end
|
409
412
|
#-----
|
@@ -417,14 +420,14 @@ class AGTkVSplittedFrames < AGTkSplittedFrames
|
|
417
420
|
@right_frame = TkFrame.new(self, Arcadia.style('panel'))
|
418
421
|
@frame2 = @right_frame
|
419
422
|
@right_frame.place(
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
423
|
+
'relwidth' => 1,
|
424
|
+
'relx' => 0,
|
425
|
+
'x' => x,
|
426
|
+
'y' => 0,
|
427
|
+
'width' => -x,
|
428
|
+
'relheight' => 1,
|
429
|
+
'rely' => 0,
|
430
|
+
'bordermode' => 'inside'
|
428
431
|
)
|
429
432
|
@right_frame_obj = AGTkObjPlace.new(@right_frame, 'x', nil, false)
|
430
433
|
@right_frame_obj.width = -x
|
@@ -483,7 +486,7 @@ class AGTkVSplittedFrames < AGTkSplittedFrames
|
|
483
486
|
@right_frame_obj.width = - _w - @slen
|
484
487
|
@right_frame_obj.amove(_w + @slen,0)
|
485
488
|
end
|
486
|
-
|
489
|
+
|
487
490
|
def is_left_hide?
|
488
491
|
@left_frame_obj.w == 0
|
489
492
|
end
|
@@ -553,21 +556,21 @@ class AGTkOSplittedFrames < AGTkSplittedFrames
|
|
553
556
|
def initialize(parent=nil, frame=nil, height=10, slen=5, perc=false, user_control=true, keys=nil)
|
554
557
|
super(parent, frame, height, slen, user_control, keys)
|
555
558
|
@top_frame = TkFrame.new(self, Arcadia.style('panel')){
|
556
|
-
|
559
|
+
# relief 'flat'
|
557
560
|
}
|
558
561
|
@frame1 = @top_frame
|
559
562
|
if perc
|
560
|
-
p_height = TkWinfo.screenheight(self)
|
561
|
-
|
563
|
+
p_height = TkWinfo.screenheight(self)
|
564
|
+
y = (p_height/100*height).to_i
|
562
565
|
else
|
563
566
|
y = height
|
564
567
|
end
|
565
568
|
@top_frame.place(
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
+
'relwidth' => '1',
|
570
|
+
'bordermode' => 'inside',
|
571
|
+
'height' => y
|
569
572
|
)
|
570
|
-
|
573
|
+
|
571
574
|
@top_frame_obj = AGTkObjPlace.new(@top_frame, 'y', nil, false)
|
572
575
|
@top_frame_obj.width = 0
|
573
576
|
@top_frame_obj.height = y
|
@@ -578,13 +581,13 @@ class AGTkOSplittedFrames < AGTkSplittedFrames
|
|
578
581
|
#border 1
|
579
582
|
}
|
580
583
|
@splitter_frame.place(
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
584
|
+
'relx' => 0,
|
585
|
+
'x' => 0,
|
586
|
+
'y' => y,
|
587
|
+
'relwidth' => '1',
|
588
|
+
'rely' => 0,
|
589
|
+
'bordermode' => 'inside',
|
590
|
+
'height' => @slen
|
588
591
|
)
|
589
592
|
@splitter_frame_obj = AGTkObjPlace.new(@splitter_frame, 'y', nil, user_control)
|
590
593
|
@splitter_frame_obj.width = 0
|
@@ -593,18 +596,18 @@ class AGTkOSplittedFrames < AGTkSplittedFrames
|
|
593
596
|
@splitter_frame_obj.relheight = 0
|
594
597
|
y = y + @slen
|
595
598
|
@bottom_frame = TkFrame.new(self, Arcadia.style('panel')){
|
596
|
-
|
599
|
+
# relief 'flat'
|
597
600
|
}
|
598
601
|
@frame2 = @bottom_frame
|
599
602
|
@bottom_frame.place(
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
603
|
+
'relwidth' => 1,
|
604
|
+
'relx' => 0,
|
605
|
+
'x' => 0,
|
606
|
+
'y' => y,
|
607
|
+
'height' => -y,
|
608
|
+
'relheight' => 1,
|
609
|
+
'rely' => 0,
|
610
|
+
'bordermode' => 'inside'
|
608
611
|
)
|
609
612
|
@bottom_frame_obj = AGTkObjPlace.new(@bottom_frame, 'y', nil, false)
|
610
613
|
@bottom_frame_obj.width = 0
|
@@ -613,40 +616,40 @@ class AGTkOSplittedFrames < AGTkSplittedFrames
|
|
613
616
|
@bottom_frame_obj.relheight = 1
|
614
617
|
if @user_control
|
615
618
|
@splitter_frame.bind_append(
|
616
|
-
|
617
|
-
|
619
|
+
"B1-Motion",
|
620
|
+
proc{@splitter_frame.raise}
|
618
621
|
)
|
619
622
|
@splitter_frame.bind_append(
|
620
|
-
|
621
|
-
|
623
|
+
"ButtonRelease-1",
|
624
|
+
proc{do_resize}
|
622
625
|
)
|
623
626
|
_xbutton = TkButton.new(@splitter_frame, Arcadia.style('toolbarbutton')){
|
624
627
|
background '#4966d7'
|
625
628
|
}
|
626
629
|
_xbutton.place(
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
630
|
+
'x' => 0,
|
631
|
+
'y' => 0,
|
632
|
+
'relheight' => 1,
|
633
|
+
'bordermode' => 'outside',
|
634
|
+
'width' => 20
|
632
635
|
)
|
633
636
|
_xbutton.bind_append(
|
634
|
-
|
635
|
-
|
637
|
+
"ButtonPress-1",
|
638
|
+
proc{hide_top}
|
636
639
|
)
|
637
640
|
_ybutton = TkButton.new(@splitter_frame, Arcadia.style('toolbarbutton')){
|
638
641
|
background '#118124'
|
639
642
|
}
|
640
643
|
_ybutton.place(
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
644
|
+
'x' => 21,
|
645
|
+
'y' => 0,
|
646
|
+
'bordermode' => 'outside',
|
647
|
+
'width' => 20,
|
648
|
+
'relheight' => 1
|
646
649
|
)
|
647
650
|
_ybutton.bind_append(
|
648
|
-
|
649
|
-
|
651
|
+
"ButtonPress-1",
|
652
|
+
proc{hide_bottom}
|
650
653
|
)
|
651
654
|
end
|
652
655
|
@state = 'middle'
|
@@ -879,10 +882,10 @@ class TkTitledFrame < TkBaseTitledFrame
|
|
879
882
|
def create_right_label
|
880
883
|
__create_right_label(@top)
|
881
884
|
end
|
882
|
-
|
885
|
+
|
883
886
|
def __create_left_label(_frame)
|
884
887
|
@title.nil??_text_title ='':_text_title = @title+' :: '
|
885
|
-
_img=@img
|
888
|
+
_img=@img
|
886
889
|
TkLabel.new(_frame, Arcadia.style('titlelabel')){
|
887
890
|
text _text_title
|
888
891
|
anchor 'w'
|
@@ -901,7 +904,7 @@ class TkTitledFrame < TkBaseTitledFrame
|
|
901
904
|
pack('side'=> 'left','anchor'=> 'e')
|
902
905
|
}
|
903
906
|
end
|
904
|
-
|
907
|
+
|
905
908
|
def title(_text=nil)
|
906
909
|
if _text.nil?
|
907
910
|
return @title
|
@@ -926,11 +929,11 @@ class TkTitledFrame < TkBaseTitledFrame
|
|
926
929
|
def save_caption(_name, _caption)
|
927
930
|
@right_labels_text[_name] = _caption
|
928
931
|
end
|
929
|
-
|
932
|
+
|
930
933
|
def last_caption(_name)
|
931
934
|
@right_labels_text[_name]
|
932
|
-
end
|
933
|
-
|
935
|
+
end
|
936
|
+
|
934
937
|
def restore_caption(_name)
|
935
938
|
if @right_labels_text[_name]
|
936
939
|
top_text(@right_labels_text[_name])
|
@@ -939,9 +942,9 @@ class TkTitledFrame < TkBaseTitledFrame
|
|
939
942
|
end
|
940
943
|
end
|
941
944
|
|
942
|
-
# def top_text(_text)
|
943
|
-
# @right_label.text(_text)
|
944
|
-
# end
|
945
|
+
# def top_text(_text)
|
946
|
+
# @right_label.text(_text)
|
947
|
+
# end
|
945
948
|
|
946
949
|
def head_buttons
|
947
950
|
@bmaxmin = add_fixed_button('[ ]',proc{resize}, W_MAX_GIF)
|
@@ -965,7 +968,7 @@ class TkTitledFrame < TkBaseTitledFrame
|
|
965
968
|
end
|
966
969
|
self.raise
|
967
970
|
end
|
968
|
-
|
971
|
+
|
969
972
|
def maximized?
|
970
973
|
@state == 'maximize'
|
971
974
|
end
|
@@ -1010,20 +1013,20 @@ end
|
|
1010
1013
|
# @god_parent = god_parent
|
1011
1014
|
# #add_moved_by(self)
|
1012
1015
|
# end
|
1013
|
-
#
|
1016
|
+
#
|
1014
1017
|
# def add_moved_by(_obj)
|
1015
1018
|
# start_moving(_obj, self)
|
1016
1019
|
# end
|
1017
1020
|
#
|
1018
1021
|
# def detach_frame
|
1019
|
-
# if @frame
|
1020
|
-
# @frame.bind_remove("Configure")
|
1021
|
-
# @frame.bind_remove("Map")
|
1022
|
-
# @frame.bind_remove("Unmap")
|
1022
|
+
# if @frame
|
1023
|
+
# @frame.bind_remove("Configure")
|
1024
|
+
# @frame.bind_remove("Map")
|
1025
|
+
# @frame.bind_remove("Unmap")
|
1023
1026
|
# @frame = nil
|
1024
1027
|
# end
|
1025
1028
|
# end
|
1026
|
-
#
|
1029
|
+
#
|
1027
1030
|
# def attach_frame(_frame)
|
1028
1031
|
# @frame = _frame
|
1029
1032
|
# init
|
@@ -1040,9 +1043,9 @@ end
|
|
1040
1043
|
# @last_y = 0
|
1041
1044
|
# @last_w = 100
|
1042
1045
|
# @last_h = 100
|
1043
|
-
# reset_offset
|
1044
|
-
# end
|
1045
|
-
#
|
1046
|
+
# reset_offset
|
1047
|
+
# end
|
1048
|
+
#
|
1046
1049
|
# def reset
|
1047
1050
|
# w = TkPlace.info(@frame)['width']
|
1048
1051
|
# h = TkPlace.info(@frame)['height']
|
@@ -1050,7 +1053,7 @@ end
|
|
1050
1053
|
# y = TkPlace.info(@frame)['y']
|
1051
1054
|
# refresh(x,y,w,h)
|
1052
1055
|
# end
|
1053
|
-
#
|
1056
|
+
#
|
1054
1057
|
# def reset_offset
|
1055
1058
|
# @x0=0
|
1056
1059
|
# @y0=0
|
@@ -1062,9 +1065,9 @@ end
|
|
1062
1065
|
# @x0=@x0+xc if xc
|
1063
1066
|
# @y0=@y0+yc if yc
|
1064
1067
|
# parent= TkWinfo.parent(parent)
|
1065
|
-
# end
|
1068
|
+
# end
|
1066
1069
|
# end
|
1067
|
-
#
|
1070
|
+
#
|
1068
1071
|
# def refresh(_x=nil, _y=nil, _w=nil, _h=nil)
|
1069
1072
|
# reset_offset
|
1070
1073
|
# _x=@last_x if _x.nil?
|
@@ -1092,11 +1095,11 @@ end
|
|
1092
1095
|
# @wrapper.attach_frame(@frame)
|
1093
1096
|
# @frame=@wrapper
|
1094
1097
|
# end
|
1095
|
-
#
|
1098
|
+
#
|
1096
1099
|
# def change_wrapper(_new_wrapper)
|
1097
1100
|
# @wrapper = _new_wrapper
|
1098
1101
|
# @frame = _new_wrapper
|
1099
|
-
# end
|
1102
|
+
# end
|
1100
1103
|
#
|
1101
1104
|
# # def initialize(root_parent=nil, parent=nil, title=nil, img=nil , keys=nil)
|
1102
1105
|
# # @root_parent = root_parent
|
@@ -1106,7 +1109,7 @@ end
|
|
1106
1109
|
# # #@wrapper.add_moved_by(@top)
|
1107
1110
|
# # @wrapper.attach_frame(parent)
|
1108
1111
|
# # end
|
1109
|
-
#
|
1112
|
+
#
|
1110
1113
|
#end
|
1111
1114
|
|
1112
1115
|
class TkTitledFrameAdapter < TkTitledFrame
|
@@ -1122,23 +1125,23 @@ class TkTitledFrameAdapter < TkTitledFrame
|
|
1122
1125
|
}
|
1123
1126
|
@transient_frame_adapter = Hash.new
|
1124
1127
|
end
|
1125
|
-
|
1128
|
+
|
1126
1129
|
def forge_transient_adapter(_name)
|
1127
1130
|
if @transient_frame_adapter[_name].nil?
|
1128
|
-
@transient_frame_adapter[_name] = TkFrameAdapter.new(Arcadia.layout.root,
|
1129
|
-
|
1131
|
+
@transient_frame_adapter[_name] = TkFrameAdapter.new(Arcadia.layout.root,
|
1132
|
+
Arcadia.style('frame').update({'background'=> Arcadia.conf('titlelabel.background')}))
|
1130
1133
|
__attach_adapter(@transient_frame_adapter[_name])
|
1131
1134
|
@transient_frame_adapter[_name].raise
|
1132
1135
|
end
|
1133
1136
|
@transient_frame_adapter[_name]
|
1134
1137
|
end
|
1135
|
-
|
1138
|
+
|
1136
1139
|
def __attach_adapter(_adapter)
|
1137
1140
|
@last_attached_adapter.detach_frame if @last_attached_adapter
|
1138
1141
|
_adapter.attach_frame(@transient_frame)
|
1139
1142
|
@last_attached_adapter = _adapter
|
1140
1143
|
end
|
1141
|
-
|
1144
|
+
|
1142
1145
|
def change_adapter(_name, _adapter)
|
1143
1146
|
@transient_frame_adapter[_name] = _adapter
|
1144
1147
|
@transient_frame_adapter[_name].detach_frame
|
@@ -1165,7 +1168,7 @@ class TkTitledFrameAdapter < TkTitledFrame
|
|
1165
1168
|
forge_transient_adapter(_sender_name)
|
1166
1169
|
__add_sep(_width, @transient_frame_adapter[_sender_name])
|
1167
1170
|
end
|
1168
|
-
|
1171
|
+
|
1169
1172
|
end
|
1170
1173
|
|
1171
1174
|
|
@@ -1214,14 +1217,14 @@ class TkFloatTitledFrame < TkBaseTitledFrame
|
|
1214
1217
|
start_moving(frame, self)
|
1215
1218
|
start_resizing(@resizing_label, self)
|
1216
1219
|
@grabbed = false
|
1217
|
-
# frame.bind_append('KeyPress'){|e|
|
1218
|
-
# p e.keysym
|
1219
|
-
# case e.keysym
|
1220
|
-
# when 'Escape'
|
1221
|
-
# p "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
|
1222
|
-
# hide
|
1223
|
-
# end
|
1224
|
-
# }
|
1220
|
+
# frame.bind_append('KeyPress'){|e|
|
1221
|
+
# p e.keysym
|
1222
|
+
# case e.keysym
|
1223
|
+
# when 'Escape'
|
1224
|
+
# p "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
|
1225
|
+
# hide
|
1226
|
+
# end
|
1227
|
+
# }
|
1225
1228
|
end
|
1226
1229
|
|
1227
1230
|
def title(_text)
|
@@ -1231,24 +1234,24 @@ class TkFloatTitledFrame < TkBaseTitledFrame
|
|
1231
1234
|
def on_close=(_proc)
|
1232
1235
|
add_fixed_button('X', _proc, TAB_CLOSE_GIF)
|
1233
1236
|
end
|
1234
|
-
|
1237
|
+
|
1235
1238
|
def hide
|
1236
|
-
@manager = TkWinfo.manager(self)
|
1239
|
+
@manager = TkWinfo.manager(self)
|
1237
1240
|
if @manager == 'place'
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1241
|
+
@x_place = TkPlace.info(self)['x']
|
1242
|
+
@y_place = TkPlace.info(self)['y']
|
1243
|
+
@width_place = TkPlace.info(self)['width']
|
1244
|
+
@height_place = TkPlace.info(self)['height']
|
1245
|
+
self.unplace
|
1243
1246
|
end
|
1244
|
-
|
1247
|
+
|
1245
1248
|
if @grabbed
|
1246
1249
|
self.grab("release")
|
1247
1250
|
@grabbed = false
|
1248
1251
|
end
|
1249
1252
|
self
|
1250
1253
|
end
|
1251
|
-
|
1254
|
+
|
1252
1255
|
def show
|
1253
1256
|
if @manager == 'place'
|
1254
1257
|
self.place('x'=>@x_place, 'y'=>@y_place, 'width'=>@width_place, 'height'=>@height_place)
|
@@ -1261,11 +1264,11 @@ class TkFloatTitledFrame < TkBaseTitledFrame
|
|
1261
1264
|
@grabbed = true
|
1262
1265
|
self.grab("set")
|
1263
1266
|
end
|
1264
|
-
|
1265
|
-
# def show_modal
|
1266
|
-
# # not implemented
|
1267
|
-
# end
|
1268
|
-
|
1267
|
+
|
1268
|
+
# def show_modal
|
1269
|
+
# # not implemented
|
1270
|
+
# end
|
1271
|
+
|
1269
1272
|
def head_buttons
|
1270
1273
|
end
|
1271
1274
|
|
@@ -1280,14 +1283,14 @@ class TkProgressframe < TkFloatTitledFrame
|
|
1280
1283
|
@progress = TkVariable.new
|
1281
1284
|
@progress.value = -1
|
1282
1285
|
Tk::BWidget::ProgressBar.new(self, :width=>150, :height=>10,
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
@buttons_frame = TkFrame.new(self).pack('fill'=>'x', 'side'=>'bottom')
|
1286
|
+
:background=>'red',
|
1287
|
+
:foreground=>'blue',
|
1288
|
+
:variable=>@progress,
|
1289
|
+
:borderwidth=>0,
|
1290
|
+
:relief=>'flat',
|
1291
|
+
:maximum=>_max).place('width' => '150','x' => 25,'y' => 30,'height' => 15)
|
1292
|
+
|
1293
|
+
@buttons_frame = TkFrame.new(self).pack('fill'=>'x', 'side'=>'bottom')
|
1291
1294
|
|
1292
1295
|
@b_cancel = TkButton.new(@buttons_frame){|_b_go|
|
1293
1296
|
default 'disabled'
|
@@ -1299,11 +1302,11 @@ class TkProgressframe < TkFloatTitledFrame
|
|
1299
1302
|
|
1300
1303
|
place('x'=>100,'y'=>100,'height'=> 120,'width'=> 200)
|
1301
1304
|
end
|
1302
|
-
|
1305
|
+
|
1303
1306
|
def quit
|
1304
1307
|
#self.destroy
|
1305
1308
|
end
|
1306
|
-
|
1309
|
+
|
1307
1310
|
def progress(_incr=1)
|
1308
1311
|
@progress.numeric += _incr
|
1309
1312
|
end
|
@@ -1314,7 +1317,7 @@ class TkProgressframe < TkFloatTitledFrame
|
|
1314
1317
|
end
|
1315
1318
|
|
1316
1319
|
class TkBuffersChoiseView < TkToplevel
|
1317
|
-
|
1320
|
+
|
1318
1321
|
def initialize
|
1319
1322
|
super
|
1320
1323
|
Tk.tk_call('wm', 'title', self, '...hello' )
|
@@ -1325,11 +1328,11 @@ class TkBuffersChoiseView < TkToplevel
|
|
1325
1328
|
place('relwidth' => '1','relx' => 0,'x' => '0','y' => '0','relheight' => '1','rely' => 0,'height' => '0','bordermode' => 'inside','width' => '0')
|
1326
1329
|
}
|
1327
1330
|
end
|
1328
|
-
|
1331
|
+
|
1329
1332
|
end
|
1330
1333
|
|
1331
1334
|
class TkBuffersChoise < TkBuffersChoiseView
|
1332
|
-
|
1335
|
+
|
1333
1336
|
def initialize
|
1334
1337
|
super
|
1335
1338
|
@lb.value= $arcadia['buffers.code.in_memory'].keys
|
@@ -1342,7 +1345,7 @@ class TkBuffersChoise < TkBuffersChoiseView
|
|
1342
1345
|
})
|
1343
1346
|
raise
|
1344
1347
|
end
|
1345
|
-
|
1348
|
+
|
1346
1349
|
end
|
1347
1350
|
|
1348
1351
|
class TclTkInfo
|
@@ -1374,39 +1377,39 @@ class TkWidgetFactory
|
|
1374
1377
|
initialize_tile_widgets if @use_tile
|
1375
1378
|
end
|
1376
1379
|
end
|
1377
|
-
|
1380
|
+
|
1378
1381
|
def initialize_tile_widgets
|
1379
1382
|
#TScrollbar
|
1380
1383
|
Tk::Tile::Style.configure("Arcadia.TScrollbar", Arcadia.style('scrollbar'))
|
1381
|
-
Tk::Tile::Style.map("Arcadia.TScrollbar",
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
Tk::Tile::Style.layout(Tk::Tile.style('Vertical', "Arcadia.TScrollbar"),
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1391
|
-
|
1392
|
-
Tk::Tile::Style.layout(Tk::Tile.style('Horizontal', "Arcadia.TScrollbar"),
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
#TFrame
|
1384
|
+
Tk::Tile::Style.map("Arcadia.TScrollbar",
|
1385
|
+
:background=>[:pressed, '#694418', :disabled, '#333333', :active, Arcadia.style('scrollbar')['activebackground']],
|
1386
|
+
:arrowcolor=>[:pressed, '#FEF7CB', :disabled, Arcadia.style('scrollbar')['background'], :active, Arcadia.style('scrollbar')['activebackground']],
|
1387
|
+
:relief=>[:pressed, :sunken])
|
1388
|
+
|
1389
|
+
Tk::Tile::Style.layout(Tk::Tile.style('Vertical', "Arcadia.TScrollbar"),
|
1390
|
+
["Scrollbar.trough",{:sticky=>"nsew", :children=>[
|
1391
|
+
"Scrollbar.uparrow",{:side=>:top, :sticky=>"we"},
|
1392
|
+
"Scrollbar.downarrow", {:side=>:bottom, :sticky=>"we"},
|
1393
|
+
"Scrollbar.thumb", {:sticky=>"nswe",:side=>:top, :border =>1, :expand=>true}]}])
|
1394
|
+
|
1395
|
+
Tk::Tile::Style.layout(Tk::Tile.style('Horizontal', "Arcadia.TScrollbar"),
|
1396
|
+
['Scrollbar.trough', {:children=>[
|
1397
|
+
'Scrollbar.leftarrow', {:side=>:left},
|
1398
|
+
'Scrollbar.rightarrow', {:side=>:right},
|
1399
|
+
'Scrollbar.thumb', {:side=>:left, :expand=>true}]}])
|
1400
|
+
|
1401
|
+
#TFrame
|
1399
1402
|
#Tk::Tile::Style.configure(Tk::Tile::TFrame, Arcadia.style('panel'))
|
1400
1403
|
|
1401
|
-
#TPaned
|
1404
|
+
#TPaned
|
1402
1405
|
#Tk::Tile::Style.configure(Tk::Tile::TPaned, Arcadia.style('panel'))
|
1403
|
-
|
1406
|
+
|
1404
1407
|
#TEntry
|
1405
1408
|
#Tk::Tile::Style.configure(Tk::Tile::TEntry, Arcadia.style('edit'))
|
1406
1409
|
|
1407
1410
|
#TCombobox
|
1408
1411
|
#Tk::Tile::Style.configure(Tk::Tile::TCombobox, Arcadia.style('combobox'))
|
1409
|
-
|
1412
|
+
|
1410
1413
|
#TLabel
|
1411
1414
|
#Tk::Tile::Style.configure(Tk::Tile::TLabel, Arcadia.style('label'))
|
1412
1415
|
|
@@ -1421,16 +1424,16 @@ class TkWidgetFactory
|
|
1421
1424
|
#TButton
|
1422
1425
|
#Tk::Tile::Style.configure(Tk::Tile::TButton, Arcadia.style('button'))
|
1423
1426
|
end
|
1424
|
-
|
1427
|
+
|
1425
1428
|
def scrollbar(_parent,_args=nil, &b)
|
1426
1429
|
if @use_tile
|
1427
1430
|
return Tk::Tile::Scrollbar.new(_parent,{:style=>"Arcadia.TScrollbar"}.update(_args), &b)
|
1428
1431
|
else
|
1429
1432
|
return TkScrollbar.new(_parent,Arcadia.style('scrollbar').update(_args), &b)
|
1430
1433
|
end
|
1431
|
-
|
1434
|
+
|
1432
1435
|
end
|
1433
|
-
|
1436
|
+
|
1434
1437
|
end
|
1435
1438
|
|
1436
1439
|
|
@@ -1456,7 +1459,7 @@ module TkAutoPostMenu
|
|
1456
1459
|
def self.included(_widget)
|
1457
1460
|
_widget.__initialize_posting(_widget)
|
1458
1461
|
end
|
1459
|
-
|
1462
|
+
|
1460
1463
|
def event_posting_on
|
1461
1464
|
@event_posting_on = true
|
1462
1465
|
@posting_on = false
|
@@ -1467,12 +1470,12 @@ module TkAutoPostMenu
|
|
1467
1470
|
@posting_on = true
|
1468
1471
|
end
|
1469
1472
|
|
1470
|
-
|
1473
|
+
|
1471
1474
|
def __initialize_posting(_widget=self)
|
1472
|
-
# parent = TkWinfo.parent(_widget)
|
1473
|
-
# parent.bind_append("Enter", proc{p "Enter parent"})
|
1474
|
-
# parent.bind_append("Leave", proc{p "Leave parent"})
|
1475
|
-
|
1475
|
+
# parent = TkWinfo.parent(_widget)
|
1476
|
+
# parent.bind_append("Enter", proc{p "Enter parent"})
|
1477
|
+
# parent.bind_append("Leave", proc{p "Leave parent"})
|
1478
|
+
|
1476
1479
|
chs = TkWinfo.children(_widget)
|
1477
1480
|
hh = 22
|
1478
1481
|
@last_post = nil
|
@@ -1492,7 +1495,7 @@ module TkAutoPostMenu
|
|
1492
1495
|
@last_clicked.unpost
|
1493
1496
|
@last_clicked = nil
|
1494
1497
|
end
|
1495
|
-
|
1498
|
+
|
1496
1499
|
ch.menu.post(x-rx,y-ry+hh)
|
1497
1500
|
|
1498
1501
|
#just_posted = TkWinfo.containing(x, y+hh)
|
@@ -1503,26 +1506,26 @@ module TkAutoPostMenu
|
|
1503
1506
|
@last_menu_posted.bind("Enter", proc{
|
1504
1507
|
@last_menu_posted.bind("Leave", proc{
|
1505
1508
|
if @posting_on
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1509
|
+
@last_post.unpost if @last_post
|
1510
|
+
@last_post = nil
|
1511
|
+
@last_menu_posted.bind("Enter", proc{})
|
1512
|
+
@last_menu_posted.bind("Leave", proc{})
|
1510
1513
|
end
|
1511
1514
|
})
|
1512
1515
|
})
|
1513
1516
|
#@last_post = just_posted
|
1514
1517
|
end
|
1515
|
-
|
1518
|
+
|
1516
1519
|
#@last_post=ch.menu
|
1517
|
-
|
1520
|
+
}, "%X %Y %x %y")
|
1518
1521
|
ch.bind_append("Leave", proc{
|
1519
1522
|
ch.configure("state"=>:normal, "relief"=>:flat)
|
1520
1523
|
if @posting_on
|
1521
1524
|
if @last_post
|
1522
1525
|
_x = TkWinfo.x(@last_post)
|
1523
1526
|
_y = TkWinfo.y(@last_post)
|
1524
|
-
ch.event_generate("KeyPress", :keysym=>"Escape") #if Tk.focus.kind_of?(TkMenu) && Tk.focus != ch.menu
|
1525
|
-
@last_post.post(_x,_y) if @last_clicked && @last_clicked == ch.menu
|
1527
|
+
ch.event_generate("KeyPress", :keysym=>"Escape") #if Tk.focus.kind_of?(TkMenu) && Tk.focus != ch.menu
|
1528
|
+
@last_post.post(_x,_y) if @last_clicked && @last_clicked == ch.menu
|
1526
1529
|
end
|
1527
1530
|
if @last_post!=ch.menu
|
1528
1531
|
@last_post=ch.menu
|
@@ -1547,12 +1550,12 @@ module TkAutoPostMenu
|
|
1547
1550
|
#@last_post.unpost
|
1548
1551
|
#@last_post.post(0,0)
|
1549
1552
|
#@last_post.set_focus
|
1550
|
-
|
1553
|
+
|
1551
1554
|
}, "%X %Y %x %y")
|
1552
|
-
|
1555
|
+
|
1553
1556
|
}
|
1554
1557
|
_widget.bind_append("Leave", proc{
|
1555
|
-
if @posting_on && Tk.focus != @last_menu_posted
|
1558
|
+
if @posting_on && Tk.focus != @last_menu_posted
|
1556
1559
|
@last_post.unpost if @last_post
|
1557
1560
|
@last_post=nil
|
1558
1561
|
@posting_on = false if @event_posting_on
|
@@ -1560,17 +1563,17 @@ module TkAutoPostMenu
|
|
1560
1563
|
TkAfter.new(1000,1, proc{
|
1561
1564
|
one_post = false
|
1562
1565
|
@m_show.each{|m,v|
|
1563
|
-
one_post = v
|
1564
|
-
break if v
|
1566
|
+
one_post = v
|
1567
|
+
break if v
|
1565
1568
|
}
|
1566
1569
|
@posting_on = one_post if @event_posting_on
|
1567
1570
|
}).start
|
1568
1571
|
})
|
1569
|
-
|
1570
|
-
|
1572
|
+
|
1573
|
+
|
1571
1574
|
_widget.bind_append("1", proc{
|
1572
|
-
|
1573
|
-
|
1575
|
+
@posting_on=true if @event_posting_on
|
1576
|
+
})
|
1574
1577
|
|
1575
1578
|
end
|
1576
1579
|
end
|
@@ -1585,7 +1588,7 @@ module TkScrollableWidget
|
|
1585
1588
|
def self.included(_widget)
|
1586
1589
|
_widget.__initialize_scrolling(_widget)
|
1587
1590
|
end
|
1588
|
-
|
1591
|
+
|
1589
1592
|
def __initialize_scrolling(_widget=self)
|
1590
1593
|
@widget = _widget
|
1591
1594
|
@parent = TkWinfo.parent(@widget)
|
@@ -1602,21 +1605,21 @@ module TkScrollableWidget
|
|
1602
1605
|
@h_scroll.destroy
|
1603
1606
|
@v_scroll.destroy
|
1604
1607
|
end
|
1605
|
-
|
1608
|
+
|
1606
1609
|
def add_yscrollcommand(cmd=Proc.new)
|
1607
1610
|
@v_scroll_command = cmd
|
1608
|
-
end
|
1609
|
-
|
1611
|
+
end
|
1612
|
+
|
1610
1613
|
def do_yscrollcommand(first,last)
|
1611
1614
|
if first != nil && last != nil
|
1612
1615
|
delta = last.to_f - first.to_f
|
1613
1616
|
if delta < 1 && delta > 0 && last != @last_y_last
|
1614
1617
|
show_v_scroll
|
1615
|
-
|
1616
|
-
|
1617
|
-
|
1618
|
-
|
1619
|
-
|
1618
|
+
begin
|
1619
|
+
@v_scroll.set(first,last) #if TkWinfo.mapped?(@v_scroll)
|
1620
|
+
rescue Exception => e
|
1621
|
+
p "#{e.message}"
|
1622
|
+
end
|
1620
1623
|
elsif delta == 1 || delta == 0
|
1621
1624
|
hide_v_scroll
|
1622
1625
|
end
|
@@ -1624,21 +1627,21 @@ module TkScrollableWidget
|
|
1624
1627
|
@last_y_last = last if last.to_f < 1
|
1625
1628
|
end
|
1626
1629
|
end
|
1627
|
-
|
1630
|
+
|
1628
1631
|
def add_xscrollcommand(cmd=Proc.new)
|
1629
1632
|
@h_scroll_command = cmd
|
1630
|
-
end
|
1631
|
-
|
1633
|
+
end
|
1634
|
+
|
1632
1635
|
def do_xscrollcommand(first,last)
|
1633
1636
|
if first != nil && last != nil
|
1634
1637
|
delta = last.to_f - first.to_f
|
1635
1638
|
if delta < 1 && delta > 0 && last != @last_x_last
|
1636
1639
|
show_h_scroll
|
1637
|
-
|
1640
|
+
begin
|
1638
1641
|
@h_scroll.set(first,last) #if TkWinfo.mapped?(@h_scroll)
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
+
rescue Exception => e
|
1643
|
+
p "#{e.message}"
|
1644
|
+
end
|
1642
1645
|
elsif delta == 1 || delta == 0
|
1643
1646
|
hide_h_scroll
|
1644
1647
|
end
|
@@ -1646,18 +1649,20 @@ module TkScrollableWidget
|
|
1646
1649
|
@last_x_last = last if last.to_f < 1
|
1647
1650
|
end
|
1648
1651
|
end
|
1649
|
-
|
1650
|
-
def show(_x=0,_y=0,_border_mode='inside')
|
1652
|
+
|
1653
|
+
def show(_x=0,_y=0,_w=nil,_h=nil,_border_mode='inside')
|
1651
1654
|
@x=_x
|
1652
1655
|
@y=_y
|
1656
|
+
_w != nil ? @w=_w : @w=-@x
|
1657
|
+
_h != nil ? @h=_h : @h=-@y
|
1653
1658
|
@widget.place(
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1658
|
-
|
1659
|
-
|
1660
|
-
|
1659
|
+
'x'=>@x,
|
1660
|
+
'y'=>@y,
|
1661
|
+
'width' => @w,
|
1662
|
+
'height' => @h,
|
1663
|
+
'relheight'=>1,
|
1664
|
+
'relwidth'=>1,
|
1665
|
+
'bordermode'=>_border_mode
|
1661
1666
|
)
|
1662
1667
|
@widget.raise
|
1663
1668
|
if @v_scroll_on
|
@@ -1667,9 +1672,9 @@ module TkScrollableWidget
|
|
1667
1672
|
show_h_scroll(true)
|
1668
1673
|
end
|
1669
1674
|
begin
|
1670
|
-
|
1675
|
+
arm_scroll_binding
|
1671
1676
|
rescue Exception => e
|
1672
|
-
|
1677
|
+
p "#{e.message}"
|
1673
1678
|
end
|
1674
1679
|
end
|
1675
1680
|
|
@@ -1679,15 +1684,15 @@ module TkScrollableWidget
|
|
1679
1684
|
@v_scroll.unpack
|
1680
1685
|
@h_scroll.unpack
|
1681
1686
|
end
|
1682
|
-
|
1687
|
+
|
1683
1688
|
def arm_scroll_binding
|
1684
|
-
@widget.yscrollcommand(proc{|first,last|
|
1689
|
+
@widget.yscrollcommand(proc{|first,last|
|
1685
1690
|
do_yscrollcommand(first,last)
|
1686
1691
|
})
|
1687
1692
|
@v_scroll.command(proc{|*args|
|
1688
1693
|
@widget.yview *args
|
1689
1694
|
})
|
1690
|
-
@widget.xscrollcommand(proc{|first,last|
|
1695
|
+
@widget.xscrollcommand(proc{|first,last|
|
1691
1696
|
do_xscrollcommand(first,last)
|
1692
1697
|
})
|
1693
1698
|
@h_scroll.command(proc{|*args|
|
@@ -1701,13 +1706,14 @@ module TkScrollableWidget
|
|
1701
1706
|
@v_scroll.command(proc{})
|
1702
1707
|
@h_scroll.command(proc{})
|
1703
1708
|
end
|
1704
|
-
|
1709
|
+
|
1705
1710
|
def show_v_scroll(_force=false)
|
1706
1711
|
if _force || !@v_scroll_on
|
1707
1712
|
begin
|
1708
1713
|
@widget.place('width' => -@scroll_width-@x)
|
1709
1714
|
@v_scroll.pack('side' => 'right', 'fill' => 'y')
|
1710
1715
|
@v_scroll_on = true
|
1716
|
+
@v_scroll.raise
|
1711
1717
|
rescue RuntimeError => e
|
1712
1718
|
p "RuntimeError : #{e.message}"
|
1713
1719
|
end
|
@@ -1720,6 +1726,7 @@ module TkScrollableWidget
|
|
1720
1726
|
@widget.place('height' => -@scroll_width-@y)
|
1721
1727
|
@h_scroll.pack('side' => 'bottom', 'fill' => 'x')
|
1722
1728
|
@h_scroll_on = true
|
1729
|
+
@h_scroll.raise
|
1723
1730
|
rescue RuntimeError => e
|
1724
1731
|
p "RuntimeError : #{e.message}"
|
1725
1732
|
end
|
@@ -1748,7 +1755,7 @@ module TkScrollableWidget
|
|
1748
1755
|
rescue RuntimeError => e
|
1749
1756
|
p "RuntimeError : #{e.message}"
|
1750
1757
|
end
|
1751
|
-
end
|
1758
|
+
end
|
1752
1759
|
end
|
1753
1760
|
|
1754
1761
|
end
|