arcadia 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. data/README +132 -134
  2. data/bin/arcadia +13 -0
  3. data/conf/arcadia.conf +196 -3
  4. data/conf/arcadia.init.rb +27 -6
  5. data/conf/arcadia.res.rb +10 -0
  6. data/ext/ae-complete-code/ae-complete-code.rb +76 -82
  7. data/ext/ae-doc-code/ae-doc-code.rb +295 -291
  8. data/ext/ae-editor/ae-editor.conf +88 -67
  9. data/ext/ae-editor/ae-editor.rb +400 -202
  10. data/ext/ae-editor/langs/conf.lang +16 -5
  11. data/ext/ae-editor/langs/lang.lang.bind +1 -1
  12. data/ext/ae-editor/langs/rb.lang +77 -41
  13. data/ext/ae-editor/langs/rbw.lang.bind +1 -1
  14. data/ext/ae-event-log/ae-event-log.rb +46 -45
  15. data/ext/ae-file-history/ae-file-history.conf +1 -1
  16. data/ext/ae-file-history/ae-file-history.rb +373 -298
  17. data/ext/ae-output/ae-output.conf +2 -0
  18. data/ext/ae-output/ae-output.rb +200 -202
  19. data/ext/ae-rad/ae-rad-inspector.rb +64 -70
  20. data/ext/ae-rad/ae-rad-palette.rb +14 -14
  21. data/ext/ae-rad/ae-rad.conf +2 -0
  22. data/ext/ae-rad/lib/tk/al-tk.rb +2991 -2987
  23. data/ext/ae-rad/lib/tk/al-tkarcadia.rb +26 -26
  24. data/ext/ae-ruby-debug/ae-ruby-debug.conf +8 -8
  25. data/ext/ae-ruby-debug/ae-ruby-debug.rb +1566 -1465
  26. data/ext/ae-search-in-files/ae-search-in-files.rb +294 -284
  27. data/ext/ae-shell/ae-shell.rb +20 -11
  28. data/{base → lib}/a-commons.rb +291 -80
  29. data/{base → lib}/a-contracts.rb +40 -18
  30. data/{arcadia.rb → lib/a-core.rb} +238 -148
  31. data/{base → lib}/a-tkcommons.rb +81 -63
  32. metadata +64 -65
  33. data/ext/ae-action-dispatcher/ae-action-dispatcher.conf +0 -6
  34. data/ext/ae-action-dispatcher/ae-action-dispatcher.rb +0 -22
  35. data/ext/ae-inspector/ae-inspector.conf +0 -7
  36. data/ext/ae-inspector/ae-inspector.rb +0 -1519
  37. data/ext/ae-palette/ae-palette.conf +0 -7
  38. data/ext/ae-palette/ae-palette.rb +0 -265
@@ -1,284 +1,294 @@
1
- #
2
- # ae-search-in-files.rb - Arcadia Ruby ide
3
- # by Antonio Galeone <antonio-galeone@rubyforge.org>
4
- #
5
-
6
- class SearchInFilesService < ArcadiaExt
7
-
8
- def on_before_build(_event)
9
- Arcadia.add_listener(SearchInFilesListener.new(self),SearchInFilesEvent)
10
- end
11
-
12
- end
13
-
14
-
15
- class SearchInFilesListener
16
- def initialize(_service)
17
- @service = _service
18
- create_find
19
- end
20
-
21
- def on_before_search_in_files(_event)
22
- if _event.what.nil?
23
- @find.show
24
- end
25
- end
26
-
27
- #def on_search_in_files(_event)
28
- #Arcadia.new_msg(self, "... ti ho fregato!")
29
- #end
30
-
31
- #def on_after_search_in_files(_event)
32
- #end
33
-
34
- def create_find
35
- @find = FindFrame.new(@service.arcadia.layout.root)
36
- @find.on_close=proc{@find.hide}
37
- @find.hide
38
- @find.b_go.bind('1', proc{Thread.new{do_find}})
39
- @find.e_what_entry.bind_append('KeyRelease'){|e|
40
- case e.keysym
41
- when 'Return'
42
- do_find
43
- Tk.callback_break
44
- end
45
- }
46
-
47
- end
48
- private :create_find
49
-
50
- def do_find
51
- return if @find.e_what.text.strip.length == 0 || @find.e_filter.text.strip.length == 0 || @find.e_dir.text.strip.length == 0
52
- @find.hide
53
- if !defined?(@search_output)
54
- @search_output = SearchOutput.new(@service)
55
- else
56
- @service.frame_raise
57
- end
58
- _search_title = 'search result for : "'+@find.e_what.text+'" in :"'+@find.e_dir.text+'"'+' ['+@find.e_filter.text+']'
59
- _filter = @find.e_dir.text+'/**/'+@find.e_filter.text
60
- _files = Dir[_filter]
61
- _node = @search_output.new_result(_search_title, _files.length)
62
- @progress_bar = TkProgressframe.new(@service.arcadia.layout.root, _files.length)
63
- @progress_bar.title('Searching')
64
- #@progress_bar.on_cancel=proc{cancel}
65
- pattern = Regexp.new(@find.e_what.text)
66
- _files.each do |_filename|
67
- File.open(_filename) do |file|
68
- file.grep(pattern) do |line|
69
- @search_output.add_result(_node, _filename, file.lineno.to_s, line)
70
- end
71
- end
72
- @progress_bar.progress
73
- end
74
- @progress_bar.destroy
75
-
76
- end
77
-
78
-
79
- end
80
-
81
- class SearchOutput
82
- def initialize(_ext)
83
- @sequence = 0
84
- @ext = _ext
85
- left_frame = TkFrame.new(@ext.frame).place('x' => '0','y' => '0','relheight' => '1','width' => '25')
86
- #right_frame = TkFrame.new(@ext.frame).place('x' => '25','y' => '0','relwidth' => '1', 'relheight' => '1', 'width' => '-25')
87
- @results = {}
88
- _open_file = proc do |tree, sel|
89
- n_parent, n = sel.split('@@@')
90
- Arcadia.process_event(OpenBufferEvent.new(self,'file'=>@results[n_parent][n][0], 'row'=>@results[n_parent][n][1])) if n && @results[n_parent][n]
91
- #EditorContract.instance.open_file(self, 'file'=>@results[n_parent][n][0], 'line'=>@results[n_parent][n][1]) if n && @results[n_parent][n]
92
- end
93
-
94
- @tree = Tk::BWidget::Tree.new(@ext.frame){
95
- background '#FFFFFF'
96
- relief 'flat'
97
- showlines true
98
- linesfill '#e7de8f'
99
- selectcommand _open_file
100
- deltay 15
101
- }.place('x' => '25','y' => '0','relwidth' => '1', 'relheight' => '1', 'width' => '-40', 'height'=>'-15')
102
- #---- y scrollbar
103
- _yscrollcommand = proc{|*args| @tree.yview(*args)}
104
- _yscrollbar = TkScrollbar.new(@ext.frame){|s|
105
- #width 8
106
- command _yscrollcommand
107
- }.pack('side'=>'right', 'fill'=>'y')
108
- @tree.yscrollcommand proc{|first,last| _yscrollbar.set(first,last)}
109
- #---- x scrollbar
110
- _xscrollcommand = proc{|*args| @tree.xview(*args)}
111
- _xscrollbar = TkScrollbar.new(@ext.frame){|s|
112
- #width 8
113
- orient 'horizontal'
114
- command _xscrollcommand
115
- }.pack('side'=>'bottom', 'fill'=>'x')
116
- @tree.xscrollcommand proc{|first,last| _xscrollbar.set(first,last)}
117
-
118
- _proc_clear = proc{clear_tree}
119
-
120
- @button_u = Tk::BWidget::Button.new(left_frame){
121
- image TkPhotoImage.new('dat' => CLEAR_GIF)
122
- helptext 'Clear'
123
- foreground 'blue'
124
- command _proc_clear
125
- relief 'groove'
126
- pack('side' =>'top', 'anchor'=>'n',:padx=>0, :pady=>0)
127
- }
128
-
129
- @found_color='#3f941b'
130
- @not_found_color= 'red'
131
- @item_color='#6fc875'
132
- end
133
-
134
- def clear_tree
135
- @tree.delete(@tree.nodes('root'))
136
- @results.clear
137
- end
138
-
139
- def new_node_name
140
- @sequence = @sequence + 1
141
- return 'n'+@sequence.to_s
142
- end
143
-
144
- def new_result(_text, _length=0)
145
- @results.each_key{|key| @tree.close_tree(key)}
146
- _r_node = new_node_name
147
- @text_result = _text
148
- #_text = _text + ' { '+_length.to_s+' found }'
149
- #_length > 0 ? _color='#3f941b':_color = 'red'
150
- @tree.insert('end', 'root' ,_r_node, {
151
- 'fill'=>@not_found_color,
152
- 'open'=>true,
153
- 'anchor'=>'w',
154
- 'font' => @ext.conf('font.bold'),
155
- 'text' => _text
156
- })
157
- Tk.update
158
- @results[_r_node]={}
159
- @count = 0
160
- return _r_node
161
- end
162
-
163
- def add_result(_node, _file, _line='', _line_text='')
164
- @count = @count+1
165
- @tree.itemconfigure(_node, 'fill'=>@found_color, 'text'=>@text_result+' { '+@count.to_s+' found }')
166
- _text = _file+':'+_line+' : '+_line_text
167
- _node_name = new_node_name
168
- @tree.insert('end', _node ,_node+'@@@'+_node_name, {
169
- 'fill'=>@item_color,
170
- 'anchor'=>'w',
171
- 'font' => @ext.conf('font'),
172
- 'text' => _text.strip
173
- })
174
- @results[_node][_node_name]=[_file,_line]
175
- Tk.update
176
- end
177
-
178
- end
179
-
180
- class FindFrame < TkFloatTitledFrame
181
- attr_reader :e_what
182
- attr_reader :e_what_entry
183
- attr_reader :e_filter
184
- attr_reader :e_dir
185
- attr_reader :b_go
186
- def initialize(_parent)
187
- super(_parent)
188
- y0 = 10
189
- d = 23
190
- TkLabel.new(self.frame){
191
- text 'Find what:'
192
- place('x' => 8,'y' => y0,'height' => 19)
193
- }
194
- y0 = y0 + d
195
- @e_what = Tk::BWidget::ComboBox.new(self.frame){
196
- editable true
197
- justify 'left'
198
- relief 'ridge'
199
- autocomplete 'true'
200
- entrybg '#FFFFFF'
201
- expand 'tab'
202
- takefocus 'true'
203
- place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
204
- }
205
- @e_what_entry = TkWinfo.children(@e_what)[0]
206
- y0 = y0 + d
207
- TkLabel.new(self.frame){
208
- text 'Files filter:'
209
- place('x' => 8,'y' => y0,'height' => 19)
210
- }
211
- y0 = y0 + d
212
-
213
- @e_filter = Tk::BWidget::ComboBox.new(self.frame){
214
- editable true
215
- justify 'left'
216
- relief 'ridge'
217
- autocomplete 'true'
218
- #insertbackground '#FFFFFF'
219
- entrybg '#FFFFFF'
220
- expand 'tab'
221
- takefocus 'true'
222
- #pack('padx'=>10, 'fill'=>'x')
223
- place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
224
- }
225
- @e_filter.text('*.rb')
226
- y0 = y0 + d
227
-
228
- TkLabel.new(self.frame){
229
- text 'Directory:'
230
- place('x' => 8,'y' => y0,'height' => 19)
231
- }
232
- y0 = y0 + d
233
-
234
- _h_frame = TkFrame.new(self.frame).place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
235
- @e_dir = Tk::BWidget::ComboBox.new(_h_frame){
236
- editable true
237
- justify 'left'
238
- relief 'ridge'
239
- autocomplete 'true'
240
- #insertbackground '#FFFFFF'
241
- entrybg '#FFFFFF'
242
- expand 'tab'
243
- takefocus 'true'
244
- #pack('side'=>'left','fill'=>'x')
245
- pack('fill'=>'x')
246
- #place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
247
- }
248
- @e_dir.text(Dir.pwd)
249
- @b_dir = TkButton.new(_h_frame){
250
- compound 'none'
251
- default 'disabled'
252
- text '...'
253
- overrelief 'raised'
254
- justify 'center'
255
- pack('side'=>'right','ipadx'=>5, 'padx'=>5)
256
- }.bind('1', proc{
257
- _d = Tk.chooseDirectory('initialdir'=>@e_dir.text,'mustexist'=>true)
258
- if _d && _d.strip.length > 0
259
- @e_dir.text(_d)
260
- end
261
- })
262
-
263
- y0 = y0 + d
264
- y0 = y0 + d
265
- @buttons_frame = TkFrame.new(self.frame).pack('fill'=>'x', 'side'=>'bottom')
266
-
267
- @b_go = TkButton.new(@buttons_frame){|_b_go|
268
- compound 'none'
269
- default 'disabled'
270
- text 'Find'
271
- overrelief 'raised'
272
- justify 'center'
273
- pack('side'=>'right','ipadx'=>5, 'padx'=>5)
274
- }
275
- place('x'=>100,'y'=>100,'height'=> 220,'width'=> 300)
276
- end
277
-
278
- def show
279
- super
280
- self.focus
281
- @e_what.focus
282
- @e_what_entry.selection_range(0,'end')
283
- end
284
- end
1
+ #
2
+ # ae-search-in-files.rb - Arcadia Ruby ide
3
+ # by Antonio Galeone <antonio-galeone@rubyforge.org>
4
+ #
5
+
6
+ class SearchInFilesService < ArcadiaExt
7
+
8
+ def on_before_build(_event)
9
+ Arcadia.attach_listener(SearchInFilesListener.new(self),SearchInFilesEvent)
10
+ end
11
+
12
+ end
13
+
14
+
15
+ class SearchInFilesListener
16
+ def initialize(_service)
17
+ @service = _service
18
+ create_find
19
+ end
20
+
21
+ def on_before_search_in_files(_event)
22
+ if _event.what.nil?
23
+ @find.show
24
+ end
25
+ end
26
+
27
+ #def on_search_in_files(_event)
28
+ #Arcadia.new_msg(self, "... ti ho fregato!")
29
+ #end
30
+
31
+ #def on_after_search_in_files(_event)
32
+ #end
33
+
34
+ def create_find
35
+ @find = FindFrame.new(@service.arcadia.layout.root)
36
+ @find.on_close=proc{@find.hide}
37
+ @find.hide
38
+ @find.b_go.bind('1', proc{Thread.new{do_find}})
39
+ @find.e_what_entry.bind_append('KeyRelease'){|e|
40
+ case e.keysym
41
+ when 'Return'
42
+ do_find
43
+ Tk.callback_break
44
+ end
45
+ }
46
+
47
+ end
48
+ private :create_find
49
+
50
+ def do_find
51
+ return if @find.e_what.text.strip.length == 0 || @find.e_filter.text.strip.length == 0 || @find.e_dir.text.strip.length == 0
52
+ @find.hide
53
+ if !defined?(@search_output)
54
+ @search_output = SearchOutput.new(@service)
55
+ else
56
+ @service.frame.show
57
+ end
58
+ begin
59
+ _search_title = 'search result for : "'+@find.e_what.text+'" in :"'+@find.e_dir.text+'"'+' ['+@find.e_filter.text+']'
60
+ _filter = @find.e_dir.text+'/**/'+@find.e_filter.text
61
+ _files = Dir[_filter]
62
+ _node = @search_output.new_result(_search_title, _files.length)
63
+ progress_stop=false
64
+ @progress_bar = TkProgressframe.new(@service.arcadia.layout.root, _files.length)
65
+ @progress_bar.title('Searching')
66
+ @progress_bar.on_cancel=proc{progress_stop=true}
67
+ #@progress_bar.on_cancel=proc{cancel}
68
+ pattern = Regexp.new(@find.e_what.text)
69
+ _files.each do |_filename|
70
+ File.open(_filename) do |file|
71
+ file.grep(pattern) do |line|
72
+ @search_output.add_result(_node, _filename, file.lineno.to_s, line)
73
+ break if progress_stop
74
+ end
75
+ end
76
+ @progress_bar.progress
77
+ break if progress_stop
78
+ end
79
+ rescue Exception => e
80
+ Arcadia.console(self, 'msg'=>e.message, 'level'=>'error')
81
+ #Arcadia.new_error_msg(self, e.message)
82
+ ensure
83
+ @progress_bar.destroy
84
+ end
85
+
86
+ end
87
+
88
+
89
+ end
90
+
91
+ class SearchOutput
92
+ def initialize(_ext)
93
+ @sequence = 0
94
+ @ext = _ext
95
+ left_frame = TkFrame.new(@ext.frame.hinner_frame, Arcadia.style('panel')).place('x' => '0','y' => '0','relheight' => '1','width' => '25')
96
+ #right_frame = TkFrame.new(@ext.frame).place('x' => '25','y' => '0','relwidth' => '1', 'relheight' => '1', 'width' => '-25')
97
+ @results = {}
98
+ _open_file = proc do |tree, sel|
99
+ n_parent, n = sel.split('@@@')
100
+ Arcadia.process_event(OpenBufferEvent.new(self,'file'=>@results[n_parent][n][0], 'row'=>@results[n_parent][n][1])) if n && @results[n_parent][n]
101
+ #EditorContract.instance.open_file(self, 'file'=>@results[n_parent][n][0], 'line'=>@results[n_parent][n][1]) if n && @results[n_parent][n]
102
+ end
103
+
104
+ @tree = Tk::BWidget::Tree.new(@ext.frame.hinner_frame, Arcadia.style('treepanel')){
105
+ #background '#FFFFFF'
106
+ #relief 'flat'
107
+ #showlines true
108
+ #linesfill '#e7de8f'
109
+ selectcommand _open_file
110
+ deltay 15
111
+ }.place('x' => '25','y' => '0','relwidth' => '1', 'relheight' => '1', 'width' => '-40', 'height'=>'-15')
112
+ #---- y scrollbar
113
+ _yscrollcommand = proc{|*args| @tree.yview(*args)}
114
+ _yscrollbar = TkScrollbar.new(@ext.frame.hinner_frame, Arcadia.style('scrollbar')){|s|
115
+ #width 8
116
+ command _yscrollcommand
117
+ }.pack('side'=>'right', 'fill'=>'y')
118
+ @tree.yscrollcommand proc{|first,last| _yscrollbar.set(first,last)}
119
+ #---- x scrollbar
120
+ _xscrollcommand = proc{|*args| @tree.xview(*args)}
121
+ _xscrollbar = TkScrollbar.new(@ext.frame.hinner_frame, Arcadia.style('scrollbar')){|s|
122
+ #width 8
123
+ orient 'horizontal'
124
+ command _xscrollcommand
125
+ }.pack('side'=>'bottom', 'fill'=>'x')
126
+ @tree.xscrollcommand proc{|first,last| _xscrollbar.set(first,last)}
127
+
128
+ _proc_clear = proc{clear_tree}
129
+
130
+ @button_u = Tk::BWidget::Button.new(left_frame, Arcadia.style('toolbarbutton')){
131
+ image TkPhotoImage.new('dat' => CLEAR_GIF)
132
+ helptext 'Clear'
133
+ foreground 'blue'
134
+ command _proc_clear
135
+ relief 'groove'
136
+ pack('side' =>'top', 'anchor'=>'n',:padx=>0, :pady=>0)
137
+ }
138
+
139
+ # @found_color='#3f941b'
140
+ # @not_found_color= 'red'
141
+ # @item_color='#6fc875'
142
+ @found_color=Arcadia.conf('hightlight.5.foreground')
143
+ @not_found_color= Arcadia.conf('hightlight.6.foreground')
144
+ @item_color=Arcadia.conf('treeitem.fill')
145
+ end
146
+
147
+ def clear_tree
148
+ @tree.delete(@tree.nodes('root'))
149
+ @results.clear
150
+ end
151
+
152
+ def new_node_name
153
+ @sequence = @sequence + 1
154
+ return 'n'+@sequence.to_s
155
+ end
156
+
157
+ def new_result(_text, _length=0)
158
+ @results.each_key{|key| @tree.close_tree(key)}
159
+ _r_node = new_node_name
160
+ @text_result = _text
161
+ #_text = _text + ' { '+_length.to_s+' found }'
162
+ #_length > 0 ? _color='#3f941b':_color = 'red'
163
+ @tree.insert('end', 'root' ,_r_node, {
164
+ 'fill'=>@not_found_color,
165
+ 'open'=>true,
166
+ 'anchor'=>'w',
167
+ 'font' => "#{Arcadia.conf('treeitem.font')} bold",
168
+ 'text' => _text
169
+ })
170
+ Tk.update
171
+ @results[_r_node]={}
172
+ @count = 0
173
+ return _r_node
174
+ end
175
+
176
+ def add_result(_node, _file, _line='', _line_text='')
177
+ @count = @count+1
178
+ @tree.itemconfigure(_node, 'fill'=>@found_color, 'text'=>@text_result+' { '+@count.to_s+' found }')
179
+ _text = _file+':'+_line+' : '+_line_text
180
+ _node_name = new_node_name
181
+ @tree.insert('end', _node ,_node+'@@@'+_node_name, {
182
+ 'fill'=>@item_color,
183
+ 'anchor'=>'w',
184
+ 'font' => Arcadia.conf('treeitem.font'),
185
+ 'text' => _text.strip
186
+ })
187
+ @results[_node][_node_name]=[_file,_line]
188
+ Tk.update
189
+ end
190
+
191
+ end
192
+
193
+ class FindFrame < TkFloatTitledFrame
194
+ attr_reader :e_what
195
+ attr_reader :e_what_entry
196
+ attr_reader :e_filter
197
+ attr_reader :e_dir
198
+ attr_reader :b_go
199
+ def initialize(_parent)
200
+ super(_parent)
201
+ y0 = 10
202
+ d = 23
203
+ TkLabel.new(self.frame, Arcadia.style('label')){
204
+ text 'Find what:'
205
+ place('x' => 8,'y' => y0,'height' => 19)
206
+ }
207
+ y0 = y0 + d
208
+ @e_what = Tk::BWidget::ComboBox.new(self.frame, Arcadia.style('combobox')){
209
+ editable true
210
+ justify 'left'
211
+ autocomplete 'true'
212
+ expand 'tab'
213
+ takefocus 'true'
214
+ place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
215
+ }
216
+ @e_what_entry = TkWinfo.children(@e_what)[0]
217
+ @e_what_entry.bind_append("1",proc{Arcadia.process_event(InputEnterEvent.new(self,'receiver'=>@e_what_entry))})
218
+
219
+ y0 = y0 + d
220
+ TkLabel.new(self.frame, Arcadia.style('label')){
221
+ text 'Files filter:'
222
+ place('x' => 8,'y' => y0,'height' => 19)
223
+ }
224
+ y0 = y0 + d
225
+
226
+ @e_filter = Tk::BWidget::ComboBox.new(self.frame, Arcadia.style('combobox')){
227
+ editable true
228
+ justify 'left'
229
+ autocomplete 'true'
230
+ expand 'tab'
231
+ takefocus 'true'
232
+ #pack('padx'=>10, 'fill'=>'x')
233
+ place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
234
+ }
235
+ @e_filter_entry = TkWinfo.children(@e_filter)[0]
236
+ @e_filter_entry.bind_append("1",proc{Arcadia.process_event(InputEnterEvent.new(self,'receiver'=>@e_filter_entry))})
237
+
238
+ @e_filter.text('*.rb')
239
+ y0 = y0 + d
240
+
241
+ TkLabel.new(self.frame, Arcadia.style('label')){
242
+ text 'Directory:'
243
+ place('x' => 8,'y' => y0,'height' => 19)
244
+ }
245
+ y0 = y0 + d
246
+
247
+ _h_frame = TkFrame.new(self.frame, Arcadia.style('panel')).place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
248
+ @e_dir = Tk::BWidget::ComboBox.new(_h_frame, Arcadia.style('combobox')){
249
+ editable true
250
+ justify 'left'
251
+ autocomplete 'true'
252
+ expand 'tab'
253
+ takefocus 'true'
254
+ #pack('side'=>'left','fill'=>'x')
255
+ pack('fill'=>'x')
256
+ #place('relwidth' => 1, 'width'=>-16,'x' => 8,'y' => y0,'height' => 19)
257
+ }
258
+ @e_dir.text(Dir.pwd)
259
+ @b_dir = TkButton.new(_h_frame, Arcadia.style('button') ){
260
+ compound 'none'
261
+ default 'disabled'
262
+ text '...'
263
+ #overrelief 'raised'
264
+ #justify 'center'
265
+ pack('side'=>'right','ipadx'=>5, 'padx'=>5)
266
+ }.bind('1', proc{
267
+ _d = Tk.chooseDirectory('initialdir'=>@e_dir.text,'mustexist'=>true)
268
+ if _d && _d.strip.length > 0
269
+ @e_dir.text(_d)
270
+ end
271
+ })
272
+
273
+ y0 = y0 + d
274
+ y0 = y0 + d
275
+ @buttons_frame = TkFrame.new(self.frame, Arcadia.style('panel')).pack('fill'=>'x', 'side'=>'bottom')
276
+
277
+ @b_go = TkButton.new(@buttons_frame, Arcadia.style('button')){|_b_go|
278
+ compound 'none'
279
+ default 'disabled'
280
+ text 'Find'
281
+ #overrelief 'raised'
282
+ #justify 'center'
283
+ pack('side'=>'right','ipadx'=>5, 'padx'=>5)
284
+ }
285
+ place('x'=>100,'y'=>100,'height'=> 220,'width'=> 300)
286
+ end
287
+
288
+ def show
289
+ super
290
+ self.focus
291
+ @e_what.focus
292
+ @e_what_entry.selection_range(0,'end')
293
+ end
294
+ end