arcadia 0.1.3 → 0.2.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 (56) hide show
  1. data/README +69 -77
  2. data/arcadia.rb +1097 -770
  3. data/base/a-commons.rb +480 -0
  4. data/base/a-contracts.rb +207 -322
  5. data/base/{a-utils.rb → a-tkcommons.rb} +933 -993
  6. data/conf/arcadia.conf +130 -203
  7. data/conf/arcadia.res.rb +1332 -1325
  8. data/ext/ae-action-dispatcher/ae-action-dispatcher.conf +6 -0
  9. data/ext/ae-action-dispatcher/ae-action-dispatcher.rb +22 -0
  10. data/ext/ae-complete-code/ae-complete-code.conf +2 -2
  11. data/ext/ae-complete-code/ae-complete-code.rb +82 -80
  12. data/ext/ae-doc-code/ae-doc-code.conf +2 -2
  13. data/ext/ae-doc-code/ae-doc-code.rb +114 -111
  14. data/ext/ae-editor/ae-editor.conf +110 -105
  15. data/ext/ae-editor/ae-editor.rb +2501 -2287
  16. data/ext/ae-editor/langs/conf.lang +15 -0
  17. data/ext/ae-editor/langs/lang.lang.bind +1 -0
  18. data/ext/ae-editor/langs/rb.lang +67 -0
  19. data/ext/ae-editor/langs/rbw.lang.bind +1 -0
  20. data/ext/ae-event-log/ae-event-log.rb +45 -52
  21. data/ext/ae-file-history/ae-file-history.conf +4 -4
  22. data/ext/ae-file-history/ae-file-history.rb +298 -286
  23. data/ext/ae-flag/ae-flag.conf +6 -6
  24. data/ext/ae-flag/ae-flag.rb +12 -12
  25. data/ext/ae-inspector/ae-inspector.conf +3 -3
  26. data/ext/ae-inspector/ae-inspector.rb +2 -2
  27. data/ext/ae-output-event/ae-output-event.conf +15 -15
  28. data/ext/ae-output/ae-output.conf +5 -3
  29. data/ext/ae-output/ae-output.rb +62 -33
  30. data/ext/ae-palette/ae-palette.conf +3 -3
  31. data/ext/ae-palette/ae-palette.rb +265 -306
  32. data/ext/ae-rad/ae-rad-inspector.rb +1534 -0
  33. data/{base/a-libs.rb → ext/ae-rad/ae-rad-libs.rb} +1118 -846
  34. data/ext/ae-rad/ae-rad-palette.rb +273 -0
  35. data/ext/ae-rad/ae-rad.conf +71 -0
  36. data/ext/ae-rad/ae-rad.rb +56 -0
  37. data/{lib → ext/ae-rad/lib}/tk/al-tk.rb +21 -110
  38. data/{lib → ext/ae-rad/lib}/tk/al-tk.res.rb +0 -0
  39. data/{lib → ext/ae-rad/lib}/tk/al-tkarcadia.rb +26 -26
  40. data/{lib → ext/ae-rad/lib}/tk/al-tkcustom.rb +70 -70
  41. data/{lib → ext/ae-rad/lib}/tkext/al-bwidget.rb +194 -194
  42. data/{lib → ext/ae-rad/lib}/tkext/al-iwidgets.rb +25 -25
  43. data/{lib → ext/ae-rad/lib}/tkext/al-tile.rb +173 -173
  44. data/{lib → ext/ae-rad/lib}/tkext/al-tktable.rb +0 -0
  45. data/ext/ae-ruby-debug/ae-ruby-debug.conf +7 -4
  46. data/ext/ae-ruby-debug/ae-ruby-debug.rb +278 -142
  47. data/ext/ae-search-in-files/ae-search-in-files.conf +15 -0
  48. data/ext/ae-search-in-files/ae-search-in-files.rb +284 -0
  49. data/ext/ae-shell/ae-shell.rb +88 -8
  50. data/ext/ae-shell/sh.rb +7 -0
  51. metadata +93 -79
  52. data/base/a-contracts-work.rb +0 -219
  53. data/base/a-ext.rb +0 -280
  54. data/ext/ae-debug/ae-debug.conf +0 -7
  55. data/ext/ae-debug/ae-debug.rb +0 -601
  56. data/ext/ae-debug/debug1.57.rb +0 -998
@@ -0,0 +1,273 @@
1
+ #
2
+ # ae-palette.rb - Arcadia Ruby ide
3
+ # by Antonio Galeone <antonio-galeone@rubyforge.org>
4
+ #
5
+
6
+ require 'ext/ae-rad/ae-rad-libs'
7
+ require 'ext/ae-rad/lib/tk/al-tk'
8
+ require 'tk'
9
+ require 'tkmenubar'
10
+ require 'tkextlib/bwidget'
11
+
12
+
13
+ class Palette #< ArcadiaExt
14
+ attr_reader :buttons
15
+ attr_reader :selected_wrapper
16
+ attr_reader :rad
17
+ def initialize(_rad)
18
+ @rad = _rad
19
+ ArcadiaContractListener.new(self, InspectorContract, :do_inspector_event)
20
+ ArcadiaContractListener.new(self, PaletteContract, :do_palette_event)
21
+ build
22
+ end
23
+
24
+ # def on_before_build(_event)
25
+ # ArcadiaContractListener.new(self, InspectorContract, :do_inspector_event)
26
+ # ArcadiaContractListener.new(self, PaletteContract, :do_palette_event)
27
+ # end
28
+
29
+ def build
30
+ @buttons = Hash.new
31
+ create_palettes
32
+ end
33
+
34
+ def on_after_build(_event)
35
+ end
36
+
37
+ def do_inspector_event(_event)
38
+ case _event.signature
39
+ when InspectorContract::SELECT_WRAPPER
40
+ @selected_wrapper=_event.context.wrapper
41
+ end
42
+ end
43
+
44
+ def do_palette_event(_event)
45
+ case _event.signature
46
+ when PaletteContract::MAKE_SELECTED_WRAPPER
47
+ give_me_obj(_event.context.parent)
48
+ end
49
+ end
50
+
51
+ def eval_form_file(_filename)
52
+ cod = '';
53
+ IO.foreach(_filename) { |line| cod += line };
54
+ Revparsel.new(cod, _filename)
55
+ end
56
+
57
+
58
+ def eval_file(_filename)
59
+ cod = '';
60
+ begin
61
+ IO.foreach(_filename) { |line| cod += line }
62
+ rescue SystemCallError
63
+ handleException # defined elsewhere
64
+ end
65
+ eval(cod)
66
+ end
67
+
68
+ def create_palettes
69
+ @cc = WrapperContainer.new(self){
70
+ border 0
71
+ borderwidth 1
72
+ }
73
+ @cc.pack('side' =>'left', 'fill' =>'both', 'anchor'=>'nw', :padx=>2, :pady=>2)
74
+ @rad.libs.list.each{|lib|
75
+ @cc.add_palette(lib)
76
+ }
77
+ end
78
+
79
+ def give_me_obj(_owner)
80
+ @cc.new_wrapper(_owner)
81
+ end
82
+
83
+ def give_me_code
84
+ @cc.new_wrapper_code
85
+ end
86
+
87
+ end
88
+
89
+ class WrapperContainer < TkFrame
90
+
91
+ def initialize(_owner)
92
+
93
+ super(_owner.rad.float_frame(0, 'x'=>10, 'y'=>10, 'width'=>200,'heigh'=>220).frame)
94
+ @owner = _owner
95
+ _self = self
96
+ frame = TkFrame.new(self).pack('side' =>'left', 'anchor'=>'n', :padx=>2, :pady=>2)
97
+
98
+ @button_u = Tk::BWidget::Button.new(frame){
99
+ image TkPhotoImage.new('dat' => CURSOR_GIF)
100
+ helptext 'Select'
101
+ text 'C'
102
+ foreground 'blue'
103
+ command proc{_self.unfill}
104
+ relief 'groove'
105
+ pack('side' =>'top', 'anchor'=>'n',:padx=>2, :pady=>2)
106
+ }
107
+ @button_m = Tk::BWidget::Button.new(frame){
108
+ _command = proc{
109
+ require 'tk/clipboard'
110
+ _code = AG.active.renderer.class_code.to_s if AG.active
111
+ TkClipboard::set(_code)
112
+ eval(_code)
113
+ _self.fill(
114
+ self,
115
+ _owner.selected_wrapper.class,
116
+ nil,
117
+ _owner.selected_wrapper.getInstanceClass
118
+ )
119
+ _self.new_wrapper if _owner.selected_wrapper.class.is_top
120
+
121
+ }
122
+ image TkPhotoImage.new('dat' => WIDGET_COPY_GIF)
123
+ helptext 'Copy current selected'
124
+ text 'C'
125
+ foreground 'blue'
126
+ command _command
127
+ relief 'groove'
128
+ pack('side' =>'left','anchor'=>'n', :padx=>2, :pady=>2)
129
+ }
130
+ @familyts = Tk::BWidget::NoteBook.new(self){
131
+ tabbevelsize 0
132
+ internalborderwidth 1
133
+ activeforeground 'orange'
134
+ font $arcadia['conf']['main.font']
135
+ pack('side' =>'left','expand'=>'yes','fill'=>'both', :padx=>2, :pady=>2)
136
+ }
137
+ @objCollections = Array.new
138
+ end
139
+
140
+ def new_wrapper_code
141
+ _code = ''
142
+ if @selected_button != nil && @selected_class_obj != nil
143
+ #objiinfo = @owner.ae_inspector_talker.info
144
+ #_code = objiinfo.active_wrapper.renderer.class_code.to_s
145
+ _code = AG.active.renderer.class_code.to_s
146
+ @selected_button.configure('relief'=>'groove')
147
+ @selected_button = @selected_class = @selected_require = nil
148
+ end
149
+ return _code
150
+ end
151
+
152
+
153
+ def new_wrapper(_parent = nil, _obj = nil)
154
+ if @selected_button == nil
155
+ return
156
+ end
157
+ # copy obj
158
+ if @selected_class_obj != nil && _obj == nil
159
+ _obj = eval(@selected_class_obj).new(_parent == nil ?nil:_parent.obj)
160
+ end
161
+
162
+ w = @selected_class.new(_parent, _obj)
163
+ #$arcadia['objic'].active.select_last(true) if @selected_class_obj != nil
164
+ #$arcadia.objects('objic').active.addRequire(@selected_require) if @selected_require != nil
165
+
166
+
167
+ w.select.activate if @selected_class_obj != nil
168
+ w.add_require([@selected_require]) if @selected_require != nil
169
+
170
+ @selected_button.configure('relief'=>'groove')
171
+ @selected_button = @selected_class = @selected_require = nil
172
+ end
173
+
174
+
175
+ def fill(_b, _class, _require, _class_obj = nil)
176
+ _b.configure('relief'=>'sunken')
177
+ if @selected_button != nil
178
+ @selected_button.configure('relief'=>'groove')
179
+ end
180
+ @selected_button = _b
181
+ @selected_class = _class
182
+ @selected_require = _require
183
+ @selected_class_obj = _class_obj
184
+ @owner.rad.float_frame.title(_class.class_wrapped)
185
+ #Arcadia.instance.layout.domain(Arcadia.instance['conf']['palette.frame'])['root'].top_text(_class.class_wrapped)
186
+
187
+ end
188
+
189
+ def unfill
190
+ if @selected_button != nil
191
+ @selected_button.configure('relief'=>'groove')
192
+ end
193
+ @selected_button = nil
194
+ @selected_class = nil
195
+ @selected_require = nil
196
+ @selected_class_obj = nil
197
+ Arcadia.instance.layout.domain(Arcadia.instance['conf']['palette.frame'])['root'].top_text('')
198
+ end
199
+
200
+ def add_palette(_lib_obj)
201
+ _name = _lib_obj.arcadia_lib_params.name
202
+ _file = _lib_obj.arcadia_lib_params.require
203
+ _img = nil
204
+ @objCollections << {
205
+ 'name'=>_name,
206
+ 'collection'=>_lib_obj,
207
+ 'file'=>_file,
208
+ 'img'=>_img
209
+ }
210
+
211
+ @classes_panel = @familyts.insert('end',_name,
212
+ 'text'=>_name#,
213
+ )
214
+
215
+ _background = @classes_panel.cget('background')
216
+
217
+ @tpanel = TkText.new(@classes_panel){
218
+ relief 'flat'
219
+ background _background
220
+ }.pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
221
+
222
+
223
+ _lib_obj.classes.each{|value|
224
+ _self = self
225
+ _image = self.class_image(value)
226
+ ewin = TkTextWindow.new(@tpanel, 'end',
227
+ 'window'=> Tk::BWidget::Button.new(@tpanel){
228
+ _command = proc{
229
+ _self.fill(self, value, _file)
230
+ _self.new_wrapper if value.is_top
231
+ }
232
+ text value.class_wrapped.to_s
233
+ helptext value.class_wrapped.to_s
234
+ image TkPhotoImage.new( 'dat' => _image )
235
+ foreground 'blue'
236
+ command _command
237
+ font $arcadia['conf']['main.component.font']
238
+ relief 'groove'
239
+ height 25
240
+ width 25
241
+ #pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
242
+ }
243
+ )
244
+ }
245
+
246
+ if @objCollections.length == 1
247
+ @familyts.raise(_name)
248
+ end
249
+ end
250
+
251
+ def class_image(_class=nil)
252
+ _current_class = _class
253
+ _found = false
254
+ if _class
255
+ _dir = File.dirname(_class.library.arcadia_lib_params.source)
256
+ end
257
+ while _current_class != nil && !_found
258
+ if defined?(_current_class.library)
259
+ _dir = File.dirname(_current_class.library.arcadia_lib_params.source)
260
+ end
261
+ _img = (_current_class.to_s+"_gif").upcase
262
+ _data = eval(_img + ' if defined?('+_img+')' )
263
+ #_file = _dir+"/res/"+_current_class.to_s+".gif"
264
+ if _data
265
+ #if FileTest.exist?(_file)
266
+ _found = true
267
+ else
268
+ _current_class = _current_class.superclass
269
+ end
270
+ end
271
+ return (_found)?_data:A_WIDGET_GIF
272
+ end
273
+ end
@@ -0,0 +1,71 @@
1
+ name=rad
2
+ labels=Rad,Object Inspector
3
+ frames=0.0
4
+ active=yes
5
+ require=ext/ae-rad/ae-rad
6
+ class=Rad
7
+
8
+ #:::::::::::::::: user toolbar :::::::::::::::::::::::::<begin>
9
+ user_toolbar.contexts=tkrad
10
+ user_toolbar.tkrad = show
11
+ user_toolbar.tkrad.show.name=show_rad
12
+ user_toolbar.tkrad.show.hint=Show Rad Palette
13
+ user_toolbar.tkrad.show.image_data=AGTKTOPLEVEL_GIF
14
+ user_toolbar.tkrad.show.event_class=ActionEvent
15
+ user_toolbar.tkrad.show.event_args={'receiver'=>self, 'action' =>'show_rad'}
16
+ #:::::::::::::::: user toolbar :::::::::::::::::::::::::<end>
17
+
18
+ #:::::::::::::::: Libraries group ::::::::::::::::::::::<begin>
19
+
20
+ # this section is for the components pallets of the wrapped class
21
+
22
+ libraries=tk,tkCustom
23
+ #libraries=tk,tkBWidget,tkCustom,tkArcadia
24
+ #win::libraries=tk,tkBWidget,tkCustom, tkIWidget
25
+ # tk library properties
26
+ libraries.tk.name=Tk
27
+ libraries.tk.source=ext/ae-rad/lib/tk/al-tk.rb
28
+ #libraries.tk.collection.class=AWClassesTk
29
+ libraries.tk.collection.class=ArcadiaLibTk
30
+ libraries.tk.action=
31
+ libraries.tk.require=tk
32
+
33
+ # tk BWidget library properties
34
+ libraries.tkBWidget.name=Tk BWidget
35
+ libraries.tkBWidget.source=ext/ae-rad/lib/tkext/al-bwidget.rb
36
+ libraries.tkBWidget.collection.class=ArcadiaLibBWidget
37
+ libraries.tkBWidget.action=
38
+ libraries.tkBWidget.require=tk
39
+
40
+ # tk Tile library properties
41
+ libraries.tkTile.name=Tk Tile
42
+ libraries.tkTile.source=ext/ae-rad/lib/tkext/al-tile.rb
43
+ libraries.tkTile.collection.class=ArcadiaLibTkTile
44
+ libraries.tkTile.action=
45
+ libraries.tkTile.require=tk
46
+
47
+
48
+ # tk IWidget library properties
49
+ libraries.tkIWidget.name=Tk IWidget
50
+ libraries.tkIWidget.source=ext/ae-rad/lib/tkext/al-iwidgets.rb
51
+ libraries.tkIWidget.collection.class=AWClassesTkIWidget
52
+ libraries.tkIWidget.action=
53
+ libraries.tkIWidget.require=tk
54
+
55
+
56
+ # tk Custom library properties
57
+ libraries.tkCustom.name=Tk Custom
58
+ libraries.tkCustom.source=ext/ae-rad/lib/tk/al-tkcustom.rb
59
+ libraries.tkCustom.collection.class=ArcadiaLibTkCustom
60
+ libraries.tkCustom.action=
61
+ libraries.tkCustom.require=tk
62
+
63
+ # tk Arcadia library properties
64
+ libraries.tkArcadia.name=Tk Arcadia
65
+ libraries.tkArcadia.source=ext/ae-rad/lib/tk/al-tkarcadia.rb
66
+ libraries.tkArcadia.collection.class=ArcadiaLibArcadiaTk
67
+ libraries.tkArcadia.action=
68
+ libraries.tkArcadia.require=tk
69
+
70
+
71
+ #:::::::::::::::: Libraries group ::::::::::::::::::::::<end>
@@ -0,0 +1,56 @@
1
+ #
2
+ # ae-rad.rb - Arcadia Ruby ide
3
+ # by Antonio Galeone <antonio-galeone@rubyforge.org>
4
+ #
5
+
6
+ require 'ext/ae-rad/ae-rad-libs'
7
+ require 'ext/ae-rad/ae-rad-palette'
8
+ require 'ext/ae-rad/ae-rad-inspector'
9
+
10
+ class Rad < ArcadiaExt
11
+ attr_reader :libs
12
+ attr_reader :palette
13
+ attr_reader :inspector
14
+ def on_build(_event)
15
+ load_libs
16
+ end
17
+
18
+ def show_rad
19
+ if @palette.nil?
20
+ @palette = Palette.new(self)
21
+ @inspector = ObjiController.new(self)
22
+ else
23
+ float_frame(0).show
24
+ end
25
+ end
26
+
27
+ def load_libs
28
+ @libs = ArcadiaLibs.new(self)
29
+ libs = conf('libraries').split(',')
30
+ libs.each{|lib|
31
+ if lib
32
+ begin
33
+ require conf('libraries.'+lib+'.source')
34
+ @libs.add_lib(
35
+ ArcadiaLibs::ArcadiaLibParams.new(
36
+ conf('libraries.'+lib+'.name'),
37
+ conf('libraries.'+lib+'.source'),
38
+ conf('libraries.'+lib+'.require'),
39
+ eval(conf('libraries.'+lib+'.collection.class')))
40
+ )
41
+ rescue Exception
42
+ msg = "Loading lib "+'"'+lib+'"'+" ("+$!.class.to_s+") "+" : "+$! + " at : "+$@.to_s
43
+ if Tk.messageBox('icon' => 'error', 'type' => 'okcancel',
44
+ 'title' => '(Rad) Libs',
45
+ 'message' => msg) == 'cancel'
46
+ raise
47
+ exit
48
+ else
49
+ Tk.update
50
+ end
51
+ end
52
+ end
53
+ }
54
+ end
55
+
56
+ end
@@ -4,9 +4,9 @@
4
4
  #
5
5
 
6
6
  require 'tk'
7
- require 'base/a-libs'
8
- require "base/a-ext"
9
- require "lib/tk/al-tk.res"
7
+ require 'ext/ae-rad/ae-rad-libs'
8
+ require "base/a-tkcommons"
9
+ require "ext/ae-rad/lib/tk/al-tk.res"
10
10
 
11
11
  TkAllPhotoImage = TkPhotoImage
12
12
 
@@ -1429,112 +1429,6 @@ class ParsifalTk
1429
1429
 
1430
1430
  end
1431
1431
 
1432
- class AGTkObjPlace
1433
- attr_reader :obj, :r, :start_x, :start_y, :motion, :x0, :y0, :w0, :h0, :width,:height,:relwidth,:relheight
1434
- attr_writer :r, :start_x, :start_y, :motion,:width,:height,:relwidth,:relheight
1435
-
1436
- def initialize(_obj=nil , _side='both' , _cursor=nil, _bind = true )
1437
- if !_obj
1438
- break
1439
- end
1440
- @obj = _obj
1441
- if !_cursor
1442
- case _side
1443
- when 'x'
1444
- _cursor = 'sb_h_double_arrow'
1445
- when 'y'
1446
- _cursor = 'sb_v_double_arrow'
1447
- when 'both'
1448
- _cursor = 'draft_small'
1449
- end
1450
- end
1451
- @motion = false
1452
- @side = _side
1453
- @x0 = TkPlace.info(@obj)['x']
1454
- @y0 = TkPlace.info(@obj)['y']
1455
- if TkWinfo.mapped?(@obj)
1456
- @w0=TkWinfo.width(@obj)
1457
- @h0=TkWinfo.height(@obj)
1458
- else
1459
- @w0=TkWinfo.reqwidth(@obj)
1460
- @h0=TkWinfo.reqheight(@obj)
1461
- end
1462
- @start_x = @x0
1463
- @start_y = @y0
1464
- @cursor = _cursor
1465
- if _bind
1466
- @obj.bind_append("Enter", proc{|x, y| do_enter(x, y)}, "%x %y")
1467
- @obj.bind_append("ButtonPress-1", proc{|e| do_press(e.x, e.y)})
1468
- @obj.bind_append("B1-Motion", proc{|x, y| do_motion(x,y)},"%x %y")
1469
- end
1470
- end
1471
-
1472
- def w
1473
- if TkWinfo.mapped?(@obj)
1474
- @w0= TkWinfo.width(@obj)
1475
- else
1476
- @w0= TkWinfo.reqwidth(@obj)
1477
- end
1478
- end
1479
-
1480
- def h
1481
- if TkWinfo.mapped?(@obj)
1482
- @h0= TkWinfo.height(@obj)
1483
- else
1484
- @h0= TkWinfo.reqheight(@obj)
1485
- end
1486
- end
1487
-
1488
- def do_enter(x, y)
1489
- @oldcursor = @obj.cget('cursor')
1490
- @obj.configure('cursor'=> @cursor)
1491
- end
1492
-
1493
- def do_leave
1494
- @obj.configure('cursor'=>@oldcursor)
1495
- end
1496
-
1497
- def do_press(x, y)
1498
- @start_x = x
1499
- @start_y = y
1500
- end
1501
-
1502
- def do_motion( _x, _y)
1503
- @motion = true
1504
- move(_x - @start_x, _y - @start_y)
1505
- end
1506
-
1507
- def move(_x,_y)
1508
- case @side
1509
- when 'both'
1510
- @x0 = @x0 + _x if (@x0 + _x) >= 0
1511
- @y0 = @y0 + _y
1512
- @obj.place('x' => @x0, 'y' => @y0, 'width' => @width, 'height'=>@height, 'relwidth'=>@relwidth, 'relheight'=>@relheight)
1513
- when 'x'
1514
- @x0 = @x0 + _x if (@x0 + _x) >= 0
1515
- @obj.place('x' => @x0, 'width' => @width, 'height'=>@height, 'relwidth'=>@relwidth, 'relheight'=>@relheight)
1516
- when 'y'
1517
- @y0 = @y0 + _y
1518
- @obj.place('y' => @y0, 'width' => @width, 'height'=>@height, 'relwidth'=>@relwidth, 'relheight'=>@relheight)
1519
- end
1520
- end
1521
-
1522
- def amove(_x,_y)
1523
- move(_x - @x0 , _y - @y0)
1524
- end
1525
-
1526
- def go(_w, _h)
1527
- case @side
1528
- when 'x'
1529
- @w0 = _w
1530
- @obj.place('width' => @w0, 'height'=>@height, 'relwidth'=>@relwidth, 'relheight'=>@relheight)
1531
- when 'y'
1532
- @h0 = _h
1533
- @obj.place('height' => @h0, 'width' => @width, 'relwidth'=>@relwidth, 'relheight'=>@relheight)
1534
- end
1535
- end
1536
-
1537
- end
1538
1432
 
1539
1433
  class AGTkFramePlaceManager
1540
1434
  attr_reader :main_frame
@@ -2478,7 +2372,24 @@ class AGTkToplevel < AGTkContainer
2478
2372
  def form2code
2479
2373
  _title = @i_name+'.rb'
2480
2374
  _text = @renderer.class_code.to_s
2481
- EditorContract.instance.open_text(self, 'title'=>_title, 'text'=>_text)
2375
+ Arcadia.process_event(OpenBufferEvent.new(self,'title'=>_title, 'text'=>_text))
2376
+ meditor = $arcadia['editor']
2377
+ if meditor
2378
+ _editor = meditor.raised
2379
+ code2form = proc{
2380
+ Revparsel.new(_editor.text_value)
2381
+ meditor.close_editor(_editor, false)
2382
+ InspectorContract.instance.raise_last_widget(meditor)
2383
+ }
2384
+ _editor.insert_popup_menu_item('end',
2385
+ :command,
2386
+ :label=>'View as form',
2387
+ :hidemargin => false,
2388
+ :command=> code2form
2389
+ )
2390
+ end
2391
+
2392
+ #EditorContract.instance.open_text(self, 'title'=>_title, 'text'=>_text)
2482
2393
  self.delete
2483
2394
  end
2484
2395