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-debug/ae-debug.conf
DELETED
data/ext/ae-debug/ae-debug.rb
DELETED
@@ -1,601 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# ae-debug.rb - Arcadia Ruby ide
|
3
|
-
# by Antonio Galeone <antonio-galeone@rubyforge.org>
|
4
|
-
#
|
5
|
-
|
6
|
-
require "observer"
|
7
|
-
|
8
|
-
class ArcadiaDebugWrapper
|
9
|
-
include Observable
|
10
|
-
attr_reader :last_command
|
11
|
-
attr_reader :debugging
|
12
|
-
def initialize
|
13
|
-
(RUBY_PLATFORM.include?('mswin32'))?_cmd="cmd":_cmd='sh'
|
14
|
-
@io = IO.popen(_cmd,'w')
|
15
|
-
@last_command = _cmd
|
16
|
-
@stop = false
|
17
|
-
@transfer_file=ArcadiaDebugWrapper.transfer_file
|
18
|
-
@threads = Array.new
|
19
|
-
@debugging = false
|
20
|
-
end
|
21
|
-
|
22
|
-
def ArcadiaDebugWrapper.transfer_file
|
23
|
-
'~transfer-debug-file.tmp'
|
24
|
-
end
|
25
|
-
|
26
|
-
def start_debug(_file=nil)
|
27
|
-
@breakpoint_id=0
|
28
|
-
@file=_file
|
29
|
-
if File.exist?(@transfer_file)
|
30
|
-
File.delete(@transfer_file)
|
31
|
-
end
|
32
|
-
if _file
|
33
|
-
@main_thread = Thread.new{
|
34
|
-
command($arcadia['conf']['shell.ruby']+" -r ext/ae-debug/debug1.57 "+_file)
|
35
|
-
@last_command = 'debug'
|
36
|
-
read
|
37
|
-
}
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def quit_debug
|
42
|
-
command("q\ny\n")
|
43
|
-
command("exit\n")
|
44
|
-
@threads.each{|t|
|
45
|
-
if t.alive?
|
46
|
-
t.kill
|
47
|
-
end
|
48
|
-
}
|
49
|
-
@main_thread.kill
|
50
|
-
end
|
51
|
-
|
52
|
-
def step_over
|
53
|
-
@threads << Thread.new{
|
54
|
-
command("n")
|
55
|
-
read
|
56
|
-
}
|
57
|
-
end
|
58
|
-
|
59
|
-
def step_into
|
60
|
-
@threads << Thread.new{
|
61
|
-
command("s")
|
62
|
-
read
|
63
|
-
}
|
64
|
-
end
|
65
|
-
|
66
|
-
def resume
|
67
|
-
Thread.new{
|
68
|
-
command("c")
|
69
|
-
read
|
70
|
-
}
|
71
|
-
end
|
72
|
-
|
73
|
-
def finish
|
74
|
-
Thread.new{
|
75
|
-
command("fin")
|
76
|
-
read
|
77
|
-
}
|
78
|
-
end
|
79
|
-
|
80
|
-
def v_global
|
81
|
-
@threads << Thread.new{
|
82
|
-
command("v g")
|
83
|
-
read
|
84
|
-
}
|
85
|
-
end
|
86
|
-
|
87
|
-
def v_local
|
88
|
-
@threads << Thread.new{
|
89
|
-
command("v l")
|
90
|
-
read
|
91
|
-
}
|
92
|
-
end
|
93
|
-
|
94
|
-
def v_instance(_obj)
|
95
|
-
@threads << Thread.new{
|
96
|
-
command("v i "+_obj)
|
97
|
-
read
|
98
|
-
}
|
99
|
-
end
|
100
|
-
|
101
|
-
def breakpoint_set(_pos, _context=nil)
|
102
|
-
@threads << Thread.new{
|
103
|
-
if _context
|
104
|
-
command("b "+_context+':'+_pos)
|
105
|
-
else
|
106
|
-
command("b "+_pos)
|
107
|
-
end
|
108
|
-
read
|
109
|
-
}
|
110
|
-
@breakpoint_id = @breakpoint_id + 1 if @breakpoint_id
|
111
|
-
end
|
112
|
-
|
113
|
-
def breckpoint_del(_id)
|
114
|
-
@threads << Thread.new{
|
115
|
-
if _id
|
116
|
-
command("del "+_id)
|
117
|
-
else
|
118
|
-
command("del")
|
119
|
-
end
|
120
|
-
read
|
121
|
-
}
|
122
|
-
end
|
123
|
-
|
124
|
-
def command(_command)
|
125
|
-
begin
|
126
|
-
@debugging = true
|
127
|
-
@io.puts(_command)
|
128
|
-
@last_command = _command
|
129
|
-
rescue Exception => e
|
130
|
-
$arcadia.outln("\n"+" error on :"+" command >>> "+_command+' : '+e.to_s ) if $arcadia
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def stop
|
135
|
-
@stop = true
|
136
|
-
end
|
137
|
-
|
138
|
-
def read
|
139
|
-
# t_i = 0
|
140
|
-
# t_out = 5
|
141
|
-
# while !File.exist?(@transfer_file) && t_i < t_out
|
142
|
-
# sleep(t_i)
|
143
|
-
# t_i = t_i + 1
|
144
|
-
# end
|
145
|
-
# if !File.exist?(@transfer_file)
|
146
|
-
# return
|
147
|
-
# end
|
148
|
-
|
149
|
-
begin
|
150
|
-
while !File.exist?(@transfer_file)
|
151
|
-
end
|
152
|
-
if File.exist?(@transfer_file)
|
153
|
-
while !File.stat(@transfer_file).readable?
|
154
|
-
end
|
155
|
-
File.open(@transfer_file) do |f|
|
156
|
-
$ppp = Marshal.load(f)
|
157
|
-
end
|
158
|
-
while !File.stat(@transfer_file).writable?
|
159
|
-
end
|
160
|
-
File.delete(@transfer_file) if File.exist?(@transfer_file)
|
161
|
-
changed
|
162
|
-
notify_observers($ppp)
|
163
|
-
end
|
164
|
-
rescue Exception => e
|
165
|
-
MsgContract.instance.out_debug(self, "\n"+'Error on : '+" reading >>> "+@transfer_file+" : "+e.to_s )
|
166
|
-
ensure
|
167
|
-
@debugging = false
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
class ArcadiaDebug < ArcadiaExt
|
173
|
-
|
174
|
-
class VariablesViewText < TkTitledFrame
|
175
|
-
attr_reader :text
|
176
|
-
|
177
|
-
def initialize(parent=nil, title='...', maximize_to=nil ,keys=nil)
|
178
|
-
super(parent, title, maximize_to, keys)
|
179
|
-
@top_label.configure(:background => 'red')
|
180
|
-
@text = TkText.new(self.frame,
|
181
|
-
'relief' => 'flat',
|
182
|
-
'wrap' => 'none'
|
183
|
-
){|j|
|
184
|
-
parent = TkWinfo.parent(j)
|
185
|
-
TkScrollbar.new(parent){|s|
|
186
|
-
command proc{|*args| j.yview(*args)}
|
187
|
-
j.yscrollcommand proc{|first,last| s.set first,last}
|
188
|
-
}.pack('side'=>'right', 'fill'=>'y')
|
189
|
-
TkScrollbar.new(parent){|s|
|
190
|
-
command proc{|*args| j.xview(*args)}
|
191
|
-
orient 'horizontal'
|
192
|
-
j.xscrollcommand proc{|first,last| s.set first,last}
|
193
|
-
}.pack('side'=>'bottom', 'fill'=>'x')
|
194
|
-
}.place(
|
195
|
-
'relwidth' => '1',
|
196
|
-
'relx' => 0,
|
197
|
-
'x' => '0',
|
198
|
-
'y' => '0',
|
199
|
-
'relheight' => '1',
|
200
|
-
'rely' => 0,
|
201
|
-
'height' => '-15',
|
202
|
-
'bordermode' =>
|
203
|
-
'inside',
|
204
|
-
'width' => '-15'
|
205
|
-
)
|
206
|
-
place('x'=>0, 'y'=>0,'relheight'=>1, 'relwidth'=>1)
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
class VariablesViewProperties < TkTitledScrollFrame
|
211
|
-
attr_reader :inspector
|
212
|
-
|
213
|
-
def initialize(parent=nil, title='...', maximize_to=nil ,keys=nil)
|
214
|
-
super(parent, title, maximize_to, keys)
|
215
|
-
@inspector=InspectListReadOnly.new(self.frame.cwin)
|
216
|
-
place('x'=>0, 'y'=>0,'relheight'=>1, 'relwidth'=>1)
|
217
|
-
end
|
218
|
-
|
219
|
-
end
|
220
|
-
|
221
|
-
|
222
|
-
class ArcadiaDebugInfo
|
223
|
-
|
224
|
-
def initialize(_parent=nil)
|
225
|
-
@nb = Tk::BWidget::NoteBook.new(_parent){
|
226
|
-
tabbevelsize 0
|
227
|
-
internalborderwidth 2
|
228
|
-
activeforeground 'red'
|
229
|
-
activebackground 'yellow'
|
230
|
-
borderwidth 1
|
231
|
-
side $arcadia['conf']['editor.tabs.side']
|
232
|
-
font $arcadia['conf']['editor.tabs.font']
|
233
|
-
pack('fill'=>'both', :expand => 'yes')
|
234
|
-
}
|
235
|
-
|
236
|
-
@nb_variables = @nb.insert('end','var' ,'text'=>'Variables' )
|
237
|
-
|
238
|
-
@hsplitter = AGTkOSplittedFrames.new(@nb_variables,220)
|
239
|
-
|
240
|
-
@hsplitter2 = AGTkOSplittedFrames.new(@hsplitter.top_frame,80)
|
241
|
-
@vvl=VariablesViewText.new(@hsplitter2.top_frame,'Local')
|
242
|
-
@vvi=VariablesViewText.new(@hsplitter2.bottom_frame,'Instance(self)')
|
243
|
-
@vvg=VariablesViewText.new(@hsplitter.bottom_frame,'Global')
|
244
|
-
font = $arcadia['conf']['inspectors.debug.tabs.font']
|
245
|
-
font_b = $arcadia['conf']['inspectors.debug.tabs.font.bold']
|
246
|
-
@vvl.text.tag_configure('key',
|
247
|
-
'foreground' => 'blue',
|
248
|
-
'font'=> font
|
249
|
-
)
|
250
|
-
@vvl.text.tag_configure('value',
|
251
|
-
'foreground' => 'black',
|
252
|
-
'font'=> font
|
253
|
-
)
|
254
|
-
@vvl.text.tag_configure('sep',
|
255
|
-
'foreground' => 'gray',
|
256
|
-
'font'=> font
|
257
|
-
)
|
258
|
-
|
259
|
-
@vvi.text.tag_configure('key',
|
260
|
-
'foreground' => 'blue',
|
261
|
-
'font'=> font
|
262
|
-
)
|
263
|
-
|
264
|
-
@vvi.text.tag_configure('value',
|
265
|
-
'foreground' => 'black',
|
266
|
-
'font'=> font
|
267
|
-
)
|
268
|
-
|
269
|
-
@vvi.text.tag_configure('sep',
|
270
|
-
'foreground' => 'gray',
|
271
|
-
'font'=> font
|
272
|
-
)
|
273
|
-
|
274
|
-
@vvg.text.tag_configure('key',
|
275
|
-
'foreground' => '#018869',
|
276
|
-
'font'=> font
|
277
|
-
)
|
278
|
-
|
279
|
-
@vvg.text.tag_configure('value',
|
280
|
-
'foreground' => 'black' ,
|
281
|
-
'font'=> font
|
282
|
-
)
|
283
|
-
|
284
|
-
@vvg.text.tag_configure('sep',
|
285
|
-
'foreground' => 'gray',
|
286
|
-
'font'=> font
|
287
|
-
)
|
288
|
-
|
289
|
-
@nb.raise('var')
|
290
|
-
end
|
291
|
-
|
292
|
-
def hash_to_str(_hash, _ind=0)
|
293
|
-
str = ''
|
294
|
-
_hash.each{|key,val|
|
295
|
-
str = str + "/s"*_ind+ key.to_s+' => '+val.to_s+"\n"
|
296
|
-
if val.kind_of?(Hash)
|
297
|
-
str = str + hash_to_str(val,_ind+2)
|
298
|
-
end
|
299
|
-
}
|
300
|
-
return str
|
301
|
-
end
|
302
|
-
|
303
|
-
def update_globals(_vars)
|
304
|
-
@vvg.text.delete('1.0','end')
|
305
|
-
if _vars != nil
|
306
|
-
str = ''
|
307
|
-
_vars.each{|key,val|
|
308
|
-
@vvg.text.insert('end',key.to_s.ljust(18),'key')
|
309
|
-
@vvg.text.insert('end','','sep')
|
310
|
-
@vvg.text.insert('end',val.to_s+"\n",'value')
|
311
|
-
}
|
312
|
-
end
|
313
|
-
end
|
314
|
-
def update_locals(_vars)
|
315
|
-
@vvl.text.delete('1.0','end')
|
316
|
-
if _vars != nil
|
317
|
-
# @vvl.inspector.updatelines(_vars)
|
318
|
-
_vars.each{|key,val|
|
319
|
-
@vvl.text.insert('end',key.to_s.ljust(18),'key')
|
320
|
-
@vvl.text.insert('end','','sep')
|
321
|
-
@vvl.text.insert('end',val.to_s+"\n",'value')
|
322
|
-
}
|
323
|
-
end
|
324
|
-
end
|
325
|
-
|
326
|
-
def update_instances(_vars)
|
327
|
-
@vvi.text.delete('1.0','end')
|
328
|
-
if _vars != nil
|
329
|
-
_vars.each{|key,val|
|
330
|
-
@vvi.text.insert('end',key.to_s.ljust(18),'key')
|
331
|
-
@vvi.text.insert('end','','sep')
|
332
|
-
@vvi.text.insert('end',val.to_s+"\n",'value')
|
333
|
-
}
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
|
-
end
|
338
|
-
|
339
|
-
|
340
|
-
def before_build
|
341
|
-
ArcadiaContractListener.new(self, EditorContract, :do_editor_event)
|
342
|
-
@breakpoints = Hash.new
|
343
|
-
@static_breakpoints = Array.new
|
344
|
-
end
|
345
|
-
|
346
|
-
def build
|
347
|
-
end
|
348
|
-
|
349
|
-
def debug_state
|
350
|
-
end
|
351
|
-
|
352
|
-
def breakpoint_suf(_file,_line)
|
353
|
-
return _line.to_s + "-" + _file.to_s
|
354
|
-
end
|
355
|
-
|
356
|
-
def breakpoint_add(_file,_line)
|
357
|
-
if @adw
|
358
|
-
@breakpoints[breakpoint_suf(_file,_line)] = @adw.breakpoint_set(_line, _file)
|
359
|
-
else
|
360
|
-
@static_breakpoints << {:file=>_file,:line=>_line}
|
361
|
-
end
|
362
|
-
end
|
363
|
-
|
364
|
-
def breakpoint_del(_file,_line)
|
365
|
-
if @adw
|
366
|
-
@adw.breakpoint_del(@breakpoints.delete(breakpoint_suf(_file,_line)))
|
367
|
-
end
|
368
|
-
@static_breakpoints.delete_if{|b| (b[:file]==_file && b[:line]==_line)}
|
369
|
-
end
|
370
|
-
|
371
|
-
def do_editor_event(_event)
|
372
|
-
#@arcadia.outln('in debug _sender ----> '+_sender.to_s)
|
373
|
-
#@arcadia.outln('in debug _event.signature ----> '+_event.signature)
|
374
|
-
case _event.signature
|
375
|
-
when EditorContract::BREAKPOINT_AFTER_CREATE
|
376
|
-
self.breakpoint_add(_event.context.file, _event.context.line)
|
377
|
-
when EditorContract::BREAKPOINT_AFTER_DELETE
|
378
|
-
self.breakpoint_del(_event.context.file, _event.context.line)
|
379
|
-
when EditorContract::BUFFER_AFTER_RAISE
|
380
|
-
@raised_file=_event.context.file
|
381
|
-
end
|
382
|
-
end
|
383
|
-
|
384
|
-
def can_exit_query
|
385
|
-
if @adw
|
386
|
-
query = (Tk.messageBox('icon' => 'question', 'type' => 'yesno',
|
387
|
-
'title' => '(Arcadia) Debug',
|
388
|
-
'message' => "Debug in course, do you want to exit?")=='yes')
|
389
|
-
if query
|
390
|
-
debug_quit
|
391
|
-
return true
|
392
|
-
else
|
393
|
-
return false
|
394
|
-
end
|
395
|
-
else
|
396
|
-
return true
|
397
|
-
end
|
398
|
-
end
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
def debug_begin
|
403
|
-
@breakpoints.clear
|
404
|
-
DebugContract.instance.debug_begin(self)
|
405
|
-
end
|
406
|
-
|
407
|
-
|
408
|
-
def debug_last
|
409
|
-
debug($arcadia['pers']['run.file.last'])
|
410
|
-
end
|
411
|
-
|
412
|
-
def debug_current
|
413
|
-
debug(@raised_file) if @raised_file!=nil
|
414
|
-
end
|
415
|
-
|
416
|
-
def debug(_filename=nil)
|
417
|
-
if _filename
|
418
|
-
begin
|
419
|
-
self.debug_begin
|
420
|
-
@debug_button_box = Tk::BWidget::ButtonBox.new(self.frame){
|
421
|
-
homogeneous true
|
422
|
-
}.pack('anchor'=>'w')#('fill'=>'x')
|
423
|
-
@debug_button_box.add(
|
424
|
-
'name'=>'debug_next',
|
425
|
-
'command'=>proc{self.debug_next},
|
426
|
-
'helptext'=>'step next',
|
427
|
-
'image'=> TkPhotoImage.new('dat' => DEBUG_NEXT_GIF),
|
428
|
-
'relief'=>'flat'
|
429
|
-
)
|
430
|
-
@debug_button_box.add(
|
431
|
-
'name'=>'debug_into',
|
432
|
-
'command'=>proc{self.debug_into},
|
433
|
-
'helptext'=>'step into',
|
434
|
-
'image'=> TkPhotoImage.new('dat' => DEBUG_INTO_GIF),
|
435
|
-
'relief'=>'flat'
|
436
|
-
)
|
437
|
-
@debug_button_box.add(
|
438
|
-
'name'=>'debug_fin',
|
439
|
-
'helptext'=>'step over',
|
440
|
-
'command'=>proc{self.debug_fin},
|
441
|
-
'image'=> TkPhotoImage.new('dat' => DEBUG_OUT_GIF),
|
442
|
-
'relief'=>'flat'
|
443
|
-
)
|
444
|
-
@debug_button_box.add(
|
445
|
-
'name'=>'debug_resume',
|
446
|
-
'helptext'=>'resume',
|
447
|
-
'image'=> TkPhotoImage.new('dat' => DEBUG_RESUME_GIF),
|
448
|
-
'command'=>proc{self.debug_resume},
|
449
|
-
'relief'=>'flat'
|
450
|
-
)
|
451
|
-
|
452
|
-
@debug_button_box.configure(:state=>'disabled')
|
453
|
-
@debug_info = ArcadiaDebugInfo.new(self.frame)
|
454
|
-
$arcadia['pers']['run.file.last']=_filename
|
455
|
-
@adw = ArcadiaDebugWrapper.new
|
456
|
-
@adw.add_observer(self)
|
457
|
-
@adw.start_debug(_filename)
|
458
|
-
#@arcadia['editor'].debug_begin
|
459
|
-
MsgContract.instance.out_simple(self,"\n<begin debug>")
|
460
|
-
|
461
|
-
#@arcadia['shell'].outln("\n<begin debug>")
|
462
|
-
rescue Exception => e
|
463
|
-
MsgContract.instance.out_debug(self,"---> "+e.to_s)
|
464
|
-
#@arcadia['shell'].outln("---> "+e.to_s )
|
465
|
-
end
|
466
|
-
end
|
467
|
-
end
|
468
|
-
|
469
|
-
def debug_next
|
470
|
-
if @adw
|
471
|
-
begin
|
472
|
-
@debug_button_box.configure(:state=>'disabled')
|
473
|
-
@adw.step_over
|
474
|
-
rescue Exception => e
|
475
|
-
MsgContract.instance.out_debug(self,"---> "+e.to_s)
|
476
|
-
#@arcadia['shell'].outln("---> "+e.to_s )
|
477
|
-
end
|
478
|
-
end
|
479
|
-
end
|
480
|
-
|
481
|
-
def debug_resume
|
482
|
-
if @adw
|
483
|
-
begin
|
484
|
-
@debug_button_box.configure(:state=>'disabled')
|
485
|
-
@adw.resume
|
486
|
-
rescue Exception => e
|
487
|
-
MsgContract.instance.out_debug(self, "debug_resume:---> "+e.to_s)
|
488
|
-
#@arcadia['shell'].outln("debug_resume:---> "+e.to_s )
|
489
|
-
end
|
490
|
-
end
|
491
|
-
end
|
492
|
-
|
493
|
-
def debug_into
|
494
|
-
if @adw
|
495
|
-
begin
|
496
|
-
@debug_button_box.configure(:state=>'disabled')
|
497
|
-
@adw.step_into
|
498
|
-
rescue Exception => e
|
499
|
-
MsgContract.instance.out_debug(self, "---> "+e.to_s)
|
500
|
-
# @arcadia['shell'].outln("---> "+e.to_s )
|
501
|
-
end
|
502
|
-
end
|
503
|
-
end
|
504
|
-
|
505
|
-
def debug_fin
|
506
|
-
if @adw
|
507
|
-
begin
|
508
|
-
@debug_button_box.configure(:state=>'disabled')
|
509
|
-
@adw.finish
|
510
|
-
rescue Exception => e
|
511
|
-
MsgContract.instance.out_debug(self, "---> "+e.to_s)
|
512
|
-
#@arcadia['shell'].outln("---> "+e.to_s )
|
513
|
-
end
|
514
|
-
end
|
515
|
-
end
|
516
|
-
|
517
|
-
def debug_quit
|
518
|
-
if @adw
|
519
|
-
if @adw.debugging
|
520
|
-
Thread.new{
|
521
|
-
Tk.messageBox('icon' => 'info',
|
522
|
-
'type' => 'ok',
|
523
|
-
'title' => '(Arcadia) Debug',
|
524
|
-
'message' => "Debug in course, wait next step to exit")
|
525
|
-
}
|
526
|
-
else
|
527
|
-
begin
|
528
|
-
self.frame_free
|
529
|
-
#self.debug_end
|
530
|
-
@adw.quit_debug
|
531
|
-
@adw = nil
|
532
|
-
#$arcadia['editor'].debug_end
|
533
|
-
MsgContract.instance.out_debug(self, "\n<end debug>")
|
534
|
-
|
535
|
-
#@arcadia['shell'].outln("\n<end debug>")
|
536
|
-
rescue Exception => e
|
537
|
-
MsgContract.instance.out_debug(self, "debug_quit:---> "+e.to_s)
|
538
|
-
#@arcadia['shell'].outln("debug_quit:---> "+e.to_s )
|
539
|
-
end
|
540
|
-
end
|
541
|
-
end
|
542
|
-
end
|
543
|
-
def debug_wrapper
|
544
|
-
return @adw
|
545
|
-
end
|
546
|
-
|
547
|
-
def update(dbg)
|
548
|
-
if dbg[:file] != nil
|
549
|
-
DebugContract.instance.debug_step(self, 'file'=> dbg[:file], 'line'=>dbg[:line])
|
550
|
-
#$arcadia['editor'].open_file_in_debug(dbg[:file], dbg[:line])
|
551
|
-
end
|
552
|
-
if @adw.last_command == 'debug' && @static_breakpoints.length > 0
|
553
|
-
#set breakpoint
|
554
|
-
@sindex = 0
|
555
|
-
_line = @static_breakpoints[@sindex][:line]
|
556
|
-
_file = @static_breakpoints[@sindex][:file]
|
557
|
-
self.breakpoint_add(_file, _line)
|
558
|
-
@sindex = @sindex + 1
|
559
|
-
return
|
560
|
-
elsif @adw.last_command[0..1] == 'b ' && @sindex < @static_breakpoints.length
|
561
|
-
_line = @static_breakpoints[@sindex][:line]
|
562
|
-
_file = @static_breakpoints[@sindex][:file]
|
563
|
-
self.breakpoint_add(_file, _line)
|
564
|
-
@sindex = @sindex + 1
|
565
|
-
return
|
566
|
-
end
|
567
|
-
if dbg[:error_text] != nil
|
568
|
-
str = "\n"+dbg[:file]+':'+dbg[:line].to_s
|
569
|
-
str = str + ":\t" +dbg[:error_text].to_s+'('+dbg[:error_class].to_s+')'
|
570
|
-
MsgContract.instance.out_debug(self, str)
|
571
|
-
#@arcadia['shell'].outln(str,'error')
|
572
|
-
end
|
573
|
-
if dbg[:callers] != nil
|
574
|
-
str = ''
|
575
|
-
dbg[:callers].each{|caller|
|
576
|
-
str = str+"\n from:"+caller.to_s
|
577
|
-
}
|
578
|
-
|
579
|
-
end
|
580
|
-
if str
|
581
|
-
MsgContract.instance.out_debug(self, str)
|
582
|
-
#@arcadia['shell'].outln(str)
|
583
|
-
end
|
584
|
-
update_variables(dbg)
|
585
|
-
@debug_button_box.configure(:state=>'normal')
|
586
|
-
end
|
587
|
-
|
588
|
-
def update_variables(dbg)
|
589
|
-
if @adw.last_command == 'v g'
|
590
|
-
@debug_info.update_globals(dbg[:variables])
|
591
|
-
@adw.v_local
|
592
|
-
elsif @adw.last_command == 'v l'
|
593
|
-
@debug_info.update_locals(dbg[:variables])
|
594
|
-
@adw.v_instance('self')
|
595
|
-
elsif @adw.last_command == 'v i self'
|
596
|
-
@debug_info.update_instances(dbg[:variables])
|
597
|
-
elsif @adw.last_command[0..1] !='v '
|
598
|
-
@adw.v_global
|
599
|
-
end
|
600
|
-
end
|
601
|
-
end
|