arcadia 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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