arcadia 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +69 -77
- data/arcadia.rb +1097 -770
- data/base/a-commons.rb +480 -0
- data/base/a-contracts.rb +207 -322
- data/base/{a-utils.rb → a-tkcommons.rb} +933 -993
- data/conf/arcadia.conf +130 -203
- data/conf/arcadia.res.rb +1332 -1325
- data/ext/ae-action-dispatcher/ae-action-dispatcher.conf +6 -0
- data/ext/ae-action-dispatcher/ae-action-dispatcher.rb +22 -0
- data/ext/ae-complete-code/ae-complete-code.conf +2 -2
- data/ext/ae-complete-code/ae-complete-code.rb +82 -80
- data/ext/ae-doc-code/ae-doc-code.conf +2 -2
- data/ext/ae-doc-code/ae-doc-code.rb +114 -111
- data/ext/ae-editor/ae-editor.conf +110 -105
- data/ext/ae-editor/ae-editor.rb +2501 -2287
- data/ext/ae-editor/langs/conf.lang +15 -0
- data/ext/ae-editor/langs/lang.lang.bind +1 -0
- data/ext/ae-editor/langs/rb.lang +67 -0
- data/ext/ae-editor/langs/rbw.lang.bind +1 -0
- data/ext/ae-event-log/ae-event-log.rb +45 -52
- data/ext/ae-file-history/ae-file-history.conf +4 -4
- data/ext/ae-file-history/ae-file-history.rb +298 -286
- data/ext/ae-flag/ae-flag.conf +6 -6
- data/ext/ae-flag/ae-flag.rb +12 -12
- data/ext/ae-inspector/ae-inspector.conf +3 -3
- data/ext/ae-inspector/ae-inspector.rb +2 -2
- data/ext/ae-output-event/ae-output-event.conf +15 -15
- data/ext/ae-output/ae-output.conf +5 -3
- data/ext/ae-output/ae-output.rb +62 -33
- data/ext/ae-palette/ae-palette.conf +3 -3
- data/ext/ae-palette/ae-palette.rb +265 -306
- data/ext/ae-rad/ae-rad-inspector.rb +1534 -0
- data/{base/a-libs.rb → ext/ae-rad/ae-rad-libs.rb} +1118 -846
- data/ext/ae-rad/ae-rad-palette.rb +273 -0
- data/ext/ae-rad/ae-rad.conf +71 -0
- data/ext/ae-rad/ae-rad.rb +56 -0
- data/{lib → ext/ae-rad/lib}/tk/al-tk.rb +21 -110
- data/{lib → ext/ae-rad/lib}/tk/al-tk.res.rb +0 -0
- data/{lib → ext/ae-rad/lib}/tk/al-tkarcadia.rb +26 -26
- data/{lib → ext/ae-rad/lib}/tk/al-tkcustom.rb +70 -70
- data/{lib → ext/ae-rad/lib}/tkext/al-bwidget.rb +194 -194
- data/{lib → ext/ae-rad/lib}/tkext/al-iwidgets.rb +25 -25
- data/{lib → ext/ae-rad/lib}/tkext/al-tile.rb +173 -173
- data/{lib → ext/ae-rad/lib}/tkext/al-tktable.rb +0 -0
- data/ext/ae-ruby-debug/ae-ruby-debug.conf +7 -4
- data/ext/ae-ruby-debug/ae-ruby-debug.rb +278 -142
- data/ext/ae-search-in-files/ae-search-in-files.conf +15 -0
- data/ext/ae-search-in-files/ae-search-in-files.rb +284 -0
- data/ext/ae-shell/ae-shell.rb +88 -8
- data/ext/ae-shell/sh.rb +7 -0
- metadata +93 -79
- data/base/a-contracts-work.rb +0 -219
- data/base/a-ext.rb +0 -280
- data/ext/ae-debug/ae-debug.conf +0 -7
- data/ext/ae-debug/ae-debug.rb +0 -601
- data/ext/ae-debug/debug1.57.rb +0 -998
data/ext/ae-flag/ae-flag.conf
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
name=flag
|
2
|
-
|
3
|
-
|
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
|
data/ext/ae-flag/ae-flag.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class ArcadiaFlag < ArcadiaExt
|
4
|
-
def
|
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
|
@@ -1277,12 +1277,12 @@ end
|
|
1277
1277
|
class ObjiController < ArcadiaExt
|
1278
1278
|
attr_reader :active
|
1279
1279
|
|
1280
|
-
def
|
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
|
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
|
-
|
3
|
-
|
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
|
-
|
3
|
-
|
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
|
data/ext/ae-output/ae-output.rb
CHANGED
@@ -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
|
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
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
90
|
-
|
91
|
-
_txt = "\n+--- "+format_time(_event.time)+" ---+\n"+_event.
|
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
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
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
|
-
|
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
|
-
|
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,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
|
18
|
-
ArcadiaContractListener.new(self, InspectorContract, :do_inspector_event)
|
19
|
-
ArcadiaContractListener.new(self, PaletteContract, :do_palette_event)
|
20
|
-
end
|
21
|
-
|
22
|
-
def
|
23
|
-
@buttons = Hash.new
|
24
|
-
create_palettes
|
25
|
-
end
|
26
|
-
|
27
|
-
def
|
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
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
@
|
186
|
-
@
|
187
|
-
@
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
'
|
198
|
-
'
|
199
|
-
'
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
'
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
_self.
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
#
|
256
|
-
|
257
|
-
#
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
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
|