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
@@ -1,6 +1,6 @@
1
- name=flag
2
- label=Flag
3
- frame=0.0
4
- active=no
5
- require=ext/ae-flag/ae-flag
6
- class=ArcadiaFlag
1
+ name=flag
2
+ labels=Flag
3
+ frames=0.0
4
+ active=no
5
+ require=ext/ae-flag/ae-flag
6
+ class=ArcadiaFlag
@@ -1,12 +1,12 @@
1
-
2
-
3
- class ArcadiaFlag < ArcadiaExt
4
- def build
5
- @tkLabel3 = TkLabel.new(self.frame){
6
- image TkPhotoImage.new('format'=>'GIF','data' =>A_LOGO_GIF)
7
- background "#000000"
8
- place('x'=> 0,'y' => 0, 'relwidth' =>'1', 'relheight'=>'1')
9
- }
10
-
11
- end
12
- end
1
+
2
+
3
+ class ArcadiaFlag < ArcadiaExt
4
+ def on_build(_event)
5
+ @tkLabel3 = TkLabel.new(self.frame){
6
+ image TkPhotoImage.new('format'=>'GIF','data' =>A_LOGO_GIF)
7
+ background "#000000"
8
+ place('x'=> 0,'y' => 0, 'relwidth' =>'1', 'relheight'=>'1')
9
+ }
10
+
11
+ end
12
+ end
@@ -1,7 +1,7 @@
1
1
  name=objic
2
- label=Object Inspector
3
- frame=1.0
4
- active=yes
2
+ labels=Object Inspector
3
+ frames=1.0
4
+ active=no
5
5
  require=ext/ae-inspector/ae-inspector
6
6
  class=ObjiController
7
7
 
@@ -1277,12 +1277,12 @@ end
1277
1277
  class ObjiController < ArcadiaExt
1278
1278
  attr_reader :active
1279
1279
 
1280
- def before_build
1280
+ def on_before_build(_event)
1281
1281
  ArcadiaContractListener.new(self, InspectorContract, :do_inspector_event)
1282
1282
  ArcadiaContractListener.new(self, WrapperContract, :do_wrapper_event)
1283
1283
  end
1284
1284
 
1285
- def build
1285
+ def on_build(_event)
1286
1286
  #@main_frame = ObjiControllerView.new(self.frame)
1287
1287
  @objis = Hash.new
1288
1288
  @wrappers_obji = Hash.new
@@ -1,15 +1,15 @@
1
- name=output2
2
- label=Event Log
3
- frame=1.1
4
- active=no
5
- require=ext/ae-output/ae-output
6
- class=Output
7
- MsgContract.channel=CH1
8
-
9
-
10
- font=courier 10
11
- font.bold=courier 10 bold
12
- freebsd::font=courier 10
13
- freebsd::font.bold=courier 12 bold
14
- win::font={Courier New} 9
15
- win::font.bold={Courier New} 9 bold
1
+ name=output2
2
+ labels=Event Log
3
+ frames=1.1
4
+ active=no
5
+ require=ext/ae-output/ae-output
6
+ class=Output
7
+ MsgContract.channel=CH1
8
+
9
+
10
+ font=courier 10
11
+ font.bold=courier 10 bold
12
+ freebsd::font=courier 10
13
+ freebsd::font.bold=courier 12 bold
14
+ win::font={Courier New} 9
15
+ win::font.bold={Courier New} 9 bold
@@ -1,14 +1,16 @@
1
1
  name=output
2
- label=Output
3
- frame=1.1
2
+ labels=Output
3
+ frames=1.1
4
4
  active=yes
5
5
  require=ext/ae-output/ae-output
6
6
  class=Output
7
7
  MsgContract.channel=0
8
-
8
+ #--------------------------------------
9
9
  font=courier 10
10
10
  font.bold=courier 10 bold
11
11
  freebsd::font=courier 12
12
12
  freebsd::font.bold=courier 12 bold
13
13
  win::font={Courier New} 9
14
14
  win::font.bold={Courier New} 9 bold
15
+ hightlight.sel.color.foreground=black
16
+ hightlight.sel.color.background=#ff8000
@@ -4,7 +4,7 @@
4
4
  #
5
5
 
6
6
  require "tk"
7
- require "base/a-utils"
7
+ #require "base/a-utils"
8
8
 
9
9
  class OutputView
10
10
  attr_reader :text
@@ -55,6 +55,9 @@ class OutputView
55
55
  #'foreground' => '#b9b8b9'
56
56
  'foreground' => '#7c9b10'
57
57
  )
58
+ @text.tag_configure('sel',
59
+ 'background'=>parent.conf('hightlight.sel.color.background'),
60
+ 'foreground'=>parent.conf('hightlight.sel.color.foreground'))
58
61
 
59
62
  end
60
63
  end
@@ -62,55 +65,80 @@ end
62
65
  class Output < ArcadiaExt
63
66
  attr_reader :main_frame
64
67
 
65
- def before_build
66
- ArcadiaContractListener.new(self, MsgContract, :do_msg_event)
68
+ def on_before_build(_event)
69
+ #ArcadiaContractListener.new(self, MsgContract, :do_msg_event)
70
+ Arcadia.add_listener(self, MsgEvent)
67
71
  #_frame = @arcadia.layout.register_panel('_rome_',@name, 'Output')
68
72
  @main_frame = OutputView.new(self)
69
73
  @run_threads = Array.new
70
- @main_frame.text.tag_configure('error','foreground' => 'red')
71
74
  end
72
75
 
73
76
 
74
- def build
75
- #@ae_file_contract = @arcadia.retrieve_contract(self, EditorActionContract, :file_state)
76
- end
77
-
78
- def after_build
79
- MainContract.instance.raise_extension(self,
80
- 'domain'=>@arcadia['conf'][@name+'.frame'],
81
- 'extension' =>@name,
82
- 'channel'=>conf('MsgContract.channel'))
77
+ def on_after_build(_event)
78
+ self.frame_raise
79
+ # MainContract.instance.raise_extension(self,
80
+ # 'domain'=>@arcadia['conf'][@name+'.frame'],
81
+ # 'extension' =>@name,
82
+ # 'channel'=>conf('MsgContract.channel'))
83
83
  end
84
84
 
85
85
  def format_time(_time)
86
86
  _time.strftime("at %a %d-%b-%Y %H:%M:%S")
87
87
  end
88
-
89
- def do_msg_event(_event)
90
- #p _event.context.text.class
91
- _txt = "\n+--- "+format_time(_event.time)+" ---+\n"+_event.context.text.strip+"\n"
88
+
89
+ def on_msg(_event)
90
+ self.frame_raise
91
+ _txt = "\n+--- "+format_time(_event.time)+" ---+\n"+_event.msg.strip+"\n"
92
92
  _index_begin = @main_frame.text.index('end')
93
93
  @main_frame.text.insert(_index_begin,_txt)
94
94
  _index_end = @main_frame.text.index('end')
95
- if _event.context.type == MsgContract::TYPE_DEBUG
96
- @main_frame.text.tag_remove('simple_msg',_index_begin, _index_end+ ' lineend')
97
- @main_frame.text.tag_remove('error_msg',_index_begin, _index_end+ ' lineend')
98
- @main_frame.text.tag_add('debug_msg',_index_begin, _index_end+ ' lineend')
99
- parse_debug(_index_begin.split('.')[0].to_i)
100
- elsif _event.context.type == MsgContract::TYPE_ERROR
101
- @main_frame.text.tag_remove('simple_msg',_index_begin, _index_end+ ' lineend')
102
- @main_frame.text.tag_remove('debug_msg',_index_begin, _index_end+ ' lineend')
103
- @main_frame.text.tag_add('error_msg',_index_begin, _index_end+ ' lineend')
104
- parse_debug(_index_begin.split('.')[0].to_i)
105
- else
106
- @main_frame.text.tag_remove('error_msg',_index_begin, _index_end+ ' lineend')
107
- @main_frame.text.tag_remove('debug_msg',_index_begin, _index_end+ ' lineend')
108
- @main_frame.text.tag_add('simple_msg',_index_begin, _index_end+ ' lineend')
95
+ case _event
96
+ when DebugMsgEvent
97
+ @main_frame.text.tag_remove('simple_msg',_index_begin, _index_end+ ' lineend')
98
+ @main_frame.text.tag_remove('error_msg',_index_begin, _index_end+ ' lineend')
99
+ @main_frame.text.tag_add('debug_msg',_index_begin, _index_end+ ' lineend')
100
+ parse_debug(_index_begin.split('.')[0].to_i)
101
+ when ErrorMsgEvent
102
+ @main_frame.text.tag_remove('simple_msg',_index_begin, _index_end+ ' lineend')
103
+ @main_frame.text.tag_remove('debug_msg',_index_begin, _index_end+ ' lineend')
104
+ @main_frame.text.tag_add('error_msg',_index_begin, _index_end+ ' lineend')
105
+ parse_debug(_index_begin.split('.')[0].to_i)
106
+ else
107
+ @main_frame.text.tag_remove('error_msg',_index_begin, _index_end+ ' lineend')
108
+ @main_frame.text.tag_remove('debug_msg',_index_begin, _index_end+ ' lineend')
109
+ @main_frame.text.tag_add('simple_msg',_index_begin, _index_end+ ' lineend')
109
110
  end
110
111
  @main_frame.text.tag_add('bord_msg',_index_begin+' linestart', _index_begin+ ' lineend')
111
112
  @main_frame.text.tag_add('bord_msg',_index_end+' -1 lines linestart', _index_end+ ' -1 lines lineend')
112
113
  @main_frame.text.see(_index_end)
113
- end
114
+ end
115
+
116
+ # def do_msg_event(_event)
117
+ # self.frame_raise
118
+ # #p _event.context.text.class
119
+ # _txt = "\n+--- "+format_time(_event.time)+" ---+\n"+_event.context.text.strip+"\n"
120
+ # _index_begin = @main_frame.text.index('end')
121
+ # @main_frame.text.insert(_index_begin,_txt)
122
+ # _index_end = @main_frame.text.index('end')
123
+ # if _event.context.type == MsgContract::TYPE_DEBUG
124
+ # @main_frame.text.tag_remove('simple_msg',_index_begin, _index_end+ ' lineend')
125
+ # @main_frame.text.tag_remove('error_msg',_index_begin, _index_end+ ' lineend')
126
+ # @main_frame.text.tag_add('debug_msg',_index_begin, _index_end+ ' lineend')
127
+ # parse_debug(_index_begin.split('.')[0].to_i)
128
+ # elsif _event.context.type == MsgContract::TYPE_ERROR
129
+ # @main_frame.text.tag_remove('simple_msg',_index_begin, _index_end+ ' lineend')
130
+ # @main_frame.text.tag_remove('debug_msg',_index_begin, _index_end+ ' lineend')
131
+ # @main_frame.text.tag_add('error_msg',_index_begin, _index_end+ ' lineend')
132
+ # parse_debug(_index_begin.split('.')[0].to_i)
133
+ # else
134
+ # @main_frame.text.tag_remove('error_msg',_index_begin, _index_end+ ' lineend')
135
+ # @main_frame.text.tag_remove('debug_msg',_index_begin, _index_end+ ' lineend')
136
+ # @main_frame.text.tag_add('simple_msg',_index_begin, _index_end+ ' lineend')
137
+ # end
138
+ # @main_frame.text.tag_add('bord_msg',_index_begin+' linestart', _index_begin+ ' lineend')
139
+ # @main_frame.text.tag_add('bord_msg',_index_end+' -1 lines linestart', _index_end+ ' -1 lines lineend')
140
+ # @main_frame.text.see(_index_end)
141
+ # end
114
142
 
115
143
  def parse_debug(_from_row=0)
116
144
  _row = 0
@@ -137,7 +165,8 @@ class Output < ArcadiaExt
137
165
  @main_frame.text.tag_add(_row,_ibegin,_iend)
138
166
  @main_frame.text.tag_bind(_row,"Double-ButtonPress-1",
139
167
  proc{
140
- EditorContract.instance.open_file(self, 'file'=>_file, 'line'=>_line)
168
+ Arcadia.process_event(OpenBufferEvent.new(self,'file'=>_file, 'row'=>_line))
169
+ #EditorContract.instance.open_file(self, 'file'=>_file, 'line'=>_line)
141
170
  }
142
171
  )
143
172
  @main_frame.text.tag_bind(_row,"Enter",
@@ -1,7 +1,7 @@
1
1
  name=palette
2
- label=Palette
3
- frame=0.0
4
- active=yes
2
+ labels=Palette
3
+ frames=0.0
4
+ active=no
5
5
  require=ext/ae-palette/ae-palette
6
6
  class=Palette
7
7
 
@@ -1,306 +1,265 @@
1
- #
2
- # ae-palette.rb - Arcadia Ruby ide
3
- # by Antonio Galeone <antonio-galeone@rubyforge.org>
4
- #
5
-
6
- require 'base/a-libs'
7
- require '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
-
17
- def before_build
18
- ArcadiaContractListener.new(self, InspectorContract, :do_inspector_event)
19
- ArcadiaContractListener.new(self, PaletteContract, :do_palette_event)
20
- end
21
-
22
- def build
23
- @buttons = Hash.new
24
- create_palettes
25
- end
26
-
27
- def after_build
28
- end
29
-
30
- def do_inspector_event(_event)
31
- case _event.signature
32
- when InspectorContract::SELECT_WRAPPER
33
- @selected_wrapper=_event.context.wrapper
34
- end
35
- end
36
-
37
- def do_palette_event(_event)
38
- case _event.signature
39
- when PaletteContract::MAKE_SELECTED_WRAPPER
40
- give_me_obj(_event.context.parent)
41
- end
42
- end
43
-
44
- def eval_form_file(_filename)
45
- cod = '';
46
- IO.foreach(_filename) { |line| cod += line };
47
- Revparsel.new(cod, _filename)
48
- end
49
-
50
-
51
- def eval_file(_filename)
52
- cod = '';
53
- begin
54
- IO.foreach(_filename) { |line| cod += line }
55
- rescue SystemCallError
56
- handleException # defined elsewhere
57
- end
58
- eval(cod)
59
- end
60
-
61
- def create_palettes
62
- @cc = WrapperContainer.new(self){
63
- border 0
64
- borderwidth 1
65
- }
66
- @cc.pack('side' =>'left', 'fill' =>'both', 'anchor'=>'nw', :padx=>2, :pady=>2)
67
- @arcadia.libs.list.each{|lib|
68
- @cc.add_palette(lib)
69
- }
70
- end
71
-
72
- def give_me_obj(_owner)
73
- @cc.new_wrapper(_owner)
74
- end
75
-
76
- def give_me_code
77
- @cc.new_wrapper_code
78
- end
79
-
80
- end
81
-
82
- class WrapperContainer < TkFrame
83
-
84
- def initialize(_owner)
85
- super(_owner.frame)
86
- @owner = _owner
87
- _self = self
88
- frame = TkFrame.new(self).pack('side' =>'left', 'anchor'=>'n', :padx=>2, :pady=>2)
89
-
90
- @button_u = Tk::BWidget::Button.new(frame){
91
- image TkPhotoImage.new('dat' => CURSOR_GIF)
92
- helptext 'Select'
93
- text 'C'
94
- foreground 'blue'
95
- command proc{_self.unfill}
96
- relief 'groove'
97
- pack('side' =>'top', 'anchor'=>'n',:padx=>2, :pady=>2)
98
- }
99
- @button_m = Tk::BWidget::Button.new(frame){
100
- _command = proc{
101
- require 'tk/clipboard'
102
- _code = AG.active.renderer.class_code.to_s if AG.active
103
- TkClipboard::set(_code)
104
- eval(_code)
105
- _self.fill(
106
- self,
107
- _owner.selected_wrapper.class,
108
- nil,
109
- _owner.selected_wrapper.getInstanceClass
110
- )
111
- _self.new_wrapper if _owner.selected_wrapper.class.is_top
112
-
113
- }
114
- image TkPhotoImage.new('dat' => WIDGET_COPY_GIF)
115
- helptext 'Copy current selected'
116
- text 'C'
117
- foreground 'blue'
118
- command _command
119
- relief 'groove'
120
- pack('side' =>'left','anchor'=>'n', :padx=>2, :pady=>2)
121
- }
122
- @familyts = Tk::BWidget::NoteBook.new(self){
123
- tabbevelsize 0
124
- internalborderwidth 1
125
- activeforeground 'orange'
126
- font $arcadia['conf']['main.font']
127
- pack('side' =>'left','expand'=>'yes','fill'=>'both', :padx=>2, :pady=>2)
128
- }
129
- @objCollections = Array.new
130
- end
131
-
132
- def new_wrapper_code
133
- _code = ''
134
- if @selected_button != nil && @selected_class_obj != nil
135
- #objiinfo = @owner.ae_inspector_talker.info
136
- #_code = objiinfo.active_wrapper.renderer.class_code.to_s
137
- _code = AG.active.renderer.class_code.to_s
138
- @selected_button.configure('relief'=>'groove')
139
- @selected_button = @selected_class = @selected_require = nil
140
- end
141
- return _code
142
- end
143
-
144
-
145
- def new_wrapper(_parent = nil, _obj = nil)
146
- if @selected_button == nil
147
- return
148
- end
149
- # copy obj
150
- if @selected_class_obj != nil && _obj == nil
151
- _obj = eval(@selected_class_obj).new(_parent == nil ?nil:_parent.obj)
152
- end
153
-
154
- w = @selected_class.new(_parent, _obj)
155
- #$arcadia['objic'].active.select_last(true) if @selected_class_obj != nil
156
- #$arcadia.objects('objic').active.addRequire(@selected_require) if @selected_require != nil
157
-
158
-
159
- w.select.activate if @selected_class_obj != nil
160
- w.add_require([@selected_require]) if @selected_require != nil
161
-
162
- @selected_button.configure('relief'=>'groove')
163
- @selected_button = @selected_class = @selected_require = nil
164
- end
165
-
166
-
167
- def fill(_b, _class, _require, _class_obj = nil)
168
- _b.configure('relief'=>'sunken')
169
- if @selected_button != nil
170
- @selected_button.configure('relief'=>'groove')
171
- end
172
- @selected_button = _b
173
- @selected_class = _class
174
- @selected_require = _require
175
- @selected_class_obj = _class_obj
176
- Arcadia.instance.layout.domain(Arcadia.instance['conf']['palette.frame'])['root'].top_text(_class.class_wrapped)
177
-
178
- end
179
-
180
- def unfill
181
- if @selected_button != nil
182
- @selected_button.configure('relief'=>'groove')
183
- end
184
- @selected_button = nil
185
- @selected_class = nil
186
- @selected_require = nil
187
- @selected_class_obj = nil
188
- Arcadia.instance.layout.domain(Arcadia.instance['conf']['palette.frame'])['root'].top_text('')
189
- end
190
-
191
- def add_palette(_lib_obj)
192
- _name = _lib_obj.arcadia_lib_params.name
193
- _file = _lib_obj.arcadia_lib_params.require
194
- _img = nil
195
- @objCollections << {
196
- 'name'=>_name,
197
- 'collection'=>_lib_obj,
198
- 'file'=>_file,
199
- 'img'=>_img
200
- }
201
-
202
- @classes_panel = @familyts.insert('end',_name,
203
- 'text'=>_name#,
204
- )
205
-
206
- _background = @classes_panel.cget('background')
207
-
208
- @tpanel = TkText.new(@classes_panel){
209
- relief 'flat'
210
- background _background
211
- }.pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
212
-
213
-
214
- _lib_obj.classes.each{|value|
215
- _self = self
216
- _image = self.class_image(value)
217
- ewin = TkTextWindow.new(@tpanel, 'end',
218
- 'window'=> Tk::BWidget::Button.new(@tpanel){
219
- _command = proc{
220
- _self.fill(self, value, _file)
221
- _self.new_wrapper if value.is_top
222
- }
223
- text value.class_wrapped.to_s
224
- helptext value.class_wrapped.to_s
225
- image TkPhotoImage.new( 'dat' => _image )
226
- foreground 'blue'
227
- command _command
228
- font $arcadia['conf']['main.component.font']
229
- relief 'groove'
230
- height 25
231
- width 25
232
- #pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
233
- }
234
- )
235
- }
236
-
237
-
238
- # _lib_obj.classes.each{|value|
239
- # _self = self
240
- # _image = self.class_image(value)
241
- # ewin = TkTextWindow.new(@tpanel, 'end',
242
- # 'window'=> Tk::BWidget::Button.new(@tpanel){
243
- # _command = proc{
244
- # _self.fill(self, value, _file)
245
- # _self.new_wrapper if value.is_top
246
- # }
247
- # text value.class_wrapped.to_s
248
- # helptext value.class_wrapped.to_s
249
- # image TkPhotoImage.new( 'dat' => _image )
250
- # foreground 'blue'
251
- # command _command
252
- # font $arcadia['conf']['main.component.font']
253
- # relief 'groove'
254
- # pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
255
- # }
256
- # )
257
- # }
258
-
259
- # _lib_obj.classes.each{|value|
260
- # _self = self
261
- # _image = self.class_image(value)
262
- # Tk::BWidget::Button.new(@classes_panel){
263
- # _command = proc{
264
- # _self.fill(self, value, _file)
265
- # _self.new_wrapper if value.is_top
266
- # }
267
- # text value.class_wrapped.to_s
268
- # helptext value.class_wrapped.to_s
269
- # image TkPhotoImage.new( 'dat' => _image )
270
- # foreground 'blue'
271
- # command _command
272
- # font $arcadia['conf']['main.component.font']
273
- # relief 'groove'
274
- # pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
275
- # }
276
- #
277
- # }
278
-
279
- if @objCollections.length == 1
280
- @familyts.raise(_name)
281
- end
282
- end
283
-
284
- def class_image(_class=nil)
285
- _current_class = _class
286
- _found = false
287
- if _class
288
- _dir = File.dirname(_class.library.arcadia_lib_params.source)
289
- end
290
- while _current_class != nil && !_found
291
- if defined?(_current_class.library)
292
- _dir = File.dirname(_current_class.library.arcadia_lib_params.source)
293
- end
294
- _img = (_current_class.to_s+"_gif").upcase
295
- _data = eval(_img + ' if defined?('+_img+')' )
296
- #_file = _dir+"/res/"+_current_class.to_s+".gif"
297
- if _data
298
- #if FileTest.exist?(_file)
299
- _found = true
300
- else
301
- _current_class = _current_class.superclass
302
- end
303
- end
304
- return (_found)?_data:A_WIDGET_GIF
305
- end
306
- end
1
+ #
2
+ # ae-palette.rb - Arcadia Ruby ide
3
+ # by Antonio Galeone <antonio-galeone@rubyforge.org>
4
+ #
5
+
6
+ require 'base/a-libs'
7
+ require '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
+
17
+ def on_before_build(_event)
18
+ ArcadiaContractListener.new(self, InspectorContract, :do_inspector_event)
19
+ ArcadiaContractListener.new(self, PaletteContract, :do_palette_event)
20
+ end
21
+
22
+ def on_build(_event)
23
+ @buttons = Hash.new
24
+ create_palettes
25
+ end
26
+
27
+ def on_after_build(_event)
28
+ end
29
+
30
+ def do_inspector_event(_event)
31
+ case _event.signature
32
+ when InspectorContract::SELECT_WRAPPER
33
+ @selected_wrapper=_event.context.wrapper
34
+ end
35
+ end
36
+
37
+ def do_palette_event(_event)
38
+ case _event.signature
39
+ when PaletteContract::MAKE_SELECTED_WRAPPER
40
+ give_me_obj(_event.context.parent)
41
+ end
42
+ end
43
+
44
+ def eval_form_file(_filename)
45
+ cod = '';
46
+ IO.foreach(_filename) { |line| cod += line };
47
+ Revparsel.new(cod, _filename)
48
+ end
49
+
50
+
51
+ def eval_file(_filename)
52
+ cod = '';
53
+ begin
54
+ IO.foreach(_filename) { |line| cod += line }
55
+ rescue SystemCallError
56
+ handleException # defined elsewhere
57
+ end
58
+ eval(cod)
59
+ end
60
+
61
+ def create_palettes
62
+ @cc = WrapperContainer.new(self){
63
+ border 0
64
+ borderwidth 1
65
+ }
66
+ @cc.pack('side' =>'left', 'fill' =>'both', 'anchor'=>'nw', :padx=>2, :pady=>2)
67
+ @arcadia.libs.list.each{|lib|
68
+ @cc.add_palette(lib)
69
+ }
70
+ end
71
+
72
+ def give_me_obj(_owner)
73
+ @cc.new_wrapper(_owner)
74
+ end
75
+
76
+ def give_me_code
77
+ @cc.new_wrapper_code
78
+ end
79
+
80
+ end
81
+
82
+ class WrapperContainer < TkFrame
83
+
84
+ def initialize(_owner)
85
+ super(_owner.frame)
86
+ @owner = _owner
87
+ _self = self
88
+ frame = TkFrame.new(self).pack('side' =>'left', 'anchor'=>'n', :padx=>2, :pady=>2)
89
+
90
+ @button_u = Tk::BWidget::Button.new(frame){
91
+ image TkPhotoImage.new('dat' => CURSOR_GIF)
92
+ helptext 'Select'
93
+ text 'C'
94
+ foreground 'blue'
95
+ command proc{_self.unfill}
96
+ relief 'groove'
97
+ pack('side' =>'top', 'anchor'=>'n',:padx=>2, :pady=>2)
98
+ }
99
+ @button_m = Tk::BWidget::Button.new(frame){
100
+ _command = proc{
101
+ require 'tk/clipboard'
102
+ _code = AG.active.renderer.class_code.to_s if AG.active
103
+ TkClipboard::set(_code)
104
+ eval(_code)
105
+ _self.fill(
106
+ self,
107
+ _owner.selected_wrapper.class,
108
+ nil,
109
+ _owner.selected_wrapper.getInstanceClass
110
+ )
111
+ _self.new_wrapper if _owner.selected_wrapper.class.is_top
112
+
113
+ }
114
+ image TkPhotoImage.new('dat' => WIDGET_COPY_GIF)
115
+ helptext 'Copy current selected'
116
+ text 'C'
117
+ foreground 'blue'
118
+ command _command
119
+ relief 'groove'
120
+ pack('side' =>'left','anchor'=>'n', :padx=>2, :pady=>2)
121
+ }
122
+ @familyts = Tk::BWidget::NoteBook.new(self){
123
+ tabbevelsize 0
124
+ internalborderwidth 1
125
+ activeforeground 'orange'
126
+ font $arcadia['conf']['main.font']
127
+ pack('side' =>'left','expand'=>'yes','fill'=>'both', :padx=>2, :pady=>2)
128
+ }
129
+ @objCollections = Array.new
130
+ end
131
+
132
+ def new_wrapper_code
133
+ _code = ''
134
+ if @selected_button != nil && @selected_class_obj != nil
135
+ #objiinfo = @owner.ae_inspector_talker.info
136
+ #_code = objiinfo.active_wrapper.renderer.class_code.to_s
137
+ _code = AG.active.renderer.class_code.to_s
138
+ @selected_button.configure('relief'=>'groove')
139
+ @selected_button = @selected_class = @selected_require = nil
140
+ end
141
+ return _code
142
+ end
143
+
144
+
145
+ def new_wrapper(_parent = nil, _obj = nil)
146
+ if @selected_button == nil
147
+ return
148
+ end
149
+ # copy obj
150
+ if @selected_class_obj != nil && _obj == nil
151
+ _obj = eval(@selected_class_obj).new(_parent == nil ?nil:_parent.obj)
152
+ end
153
+
154
+ w = @selected_class.new(_parent, _obj)
155
+ #$arcadia['objic'].active.select_last(true) if @selected_class_obj != nil
156
+ #$arcadia.objects('objic').active.addRequire(@selected_require) if @selected_require != nil
157
+
158
+
159
+ w.select.activate if @selected_class_obj != nil
160
+ w.add_require([@selected_require]) if @selected_require != nil
161
+
162
+ @selected_button.configure('relief'=>'groove')
163
+ @selected_button = @selected_class = @selected_require = nil
164
+ end
165
+
166
+
167
+ def fill(_b, _class, _require, _class_obj = nil)
168
+ _b.configure('relief'=>'sunken')
169
+ if @selected_button != nil
170
+ @selected_button.configure('relief'=>'groove')
171
+ end
172
+ @selected_button = _b
173
+ @selected_class = _class
174
+ @selected_require = _require
175
+ @selected_class_obj = _class_obj
176
+ @owner.frame_title(_class.class_wrapped)
177
+ #Arcadia.instance.layout.domain(Arcadia.instance['conf']['palette.frame'])['root'].top_text(_class.class_wrapped)
178
+
179
+ end
180
+
181
+ def unfill
182
+ if @selected_button != nil
183
+ @selected_button.configure('relief'=>'groove')
184
+ end
185
+ @selected_button = nil
186
+ @selected_class = nil
187
+ @selected_require = nil
188
+ @selected_class_obj = nil
189
+ Arcadia.instance.layout.domain(Arcadia.instance['conf']['palette.frame'])['root'].top_text('')
190
+ end
191
+
192
+ def add_palette(_lib_obj)
193
+ _name = _lib_obj.arcadia_lib_params.name
194
+ _file = _lib_obj.arcadia_lib_params.require
195
+ _img = nil
196
+ @objCollections << {
197
+ 'name'=>_name,
198
+ 'collection'=>_lib_obj,
199
+ 'file'=>_file,
200
+ 'img'=>_img
201
+ }
202
+
203
+ @classes_panel = @familyts.insert('end',_name,
204
+ 'text'=>_name#,
205
+ )
206
+
207
+ _background = @classes_panel.cget('background')
208
+
209
+ @tpanel = TkText.new(@classes_panel){
210
+ relief 'flat'
211
+ background _background
212
+ }.pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
213
+
214
+
215
+ _lib_obj.classes.each{|value|
216
+ _self = self
217
+ _image = self.class_image(value)
218
+ ewin = TkTextWindow.new(@tpanel, 'end',
219
+ 'window'=> Tk::BWidget::Button.new(@tpanel){
220
+ _command = proc{
221
+ _self.fill(self, value, _file)
222
+ _self.new_wrapper if value.is_top
223
+ }
224
+ text value.class_wrapped.to_s
225
+ helptext value.class_wrapped.to_s
226
+ image TkPhotoImage.new( 'dat' => _image )
227
+ foreground 'blue'
228
+ command _command
229
+ font $arcadia['conf']['main.component.font']
230
+ relief 'groove'
231
+ height 25
232
+ width 25
233
+ #pack('side' =>'left', 'anchor'=>'nw', :padx=>2, :pady=>2)
234
+ }
235
+ )
236
+ }
237
+
238
+ if @objCollections.length == 1
239
+ @familyts.raise(_name)
240
+ end
241
+ end
242
+
243
+ def class_image(_class=nil)
244
+ _current_class = _class
245
+ _found = false
246
+ if _class
247
+ _dir = File.dirname(_class.library.arcadia_lib_params.source)
248
+ end
249
+ while _current_class != nil && !_found
250
+ if defined?(_current_class.library)
251
+ _dir = File.dirname(_current_class.library.arcadia_lib_params.source)
252
+ end
253
+ _img = (_current_class.to_s+"_gif").upcase
254
+ _data = eval(_img + ' if defined?('+_img+')' )
255
+ #_file = _dir+"/res/"+_current_class.to_s+".gif"
256
+ if _data
257
+ #if FileTest.exist?(_file)
258
+ _found = true
259
+ else
260
+ _current_class = _current_class.superclass
261
+ end
262
+ end
263
+ return (_found)?_data:A_WIDGET_GIF
264
+ end
265
+ end