54 |
end |
end |
55 |
# @@debugRenderer = Renderer.new(plugin,slot) |
# @@debugRenderer = Renderer.new(plugin,slot) |
56 |
|
|
57 |
# Add command |
# Add command to Show/Hide the debugger - Command only |
58 |
plugin["/system/ui/commands"].manager.add("App/View/Debugger","Debugger","View Debugger") do |cmd_slot| |
# available when debugger session exists |
59 |
|
cmd = plugin["/system/ui/commands"].manager.add("App/View/Debugger","Debugger","View Debugger") do |cmd_slot| |
60 |
@@debugRenderer.toggle |
@@debugRenderer.toggle |
61 |
end |
end |
|
plugin["/system/ui/commands"].manager.command("App/View/Debugger").icon = "/system/ui/icons/Debugger/startDebugger" |
|
62 |
plugin["/system/ui/keys"].manager.bind("App/View/Debugger", :F8) |
plugin["/system/ui/keys"].manager.bind("App/View/Debugger", :F8) |
63 |
|
|
64 |
plugin["/system/ui/current/ToolBar"].manager.add_command("View", "App/View/Debugger") |
cmd.availability=false |
65 |
|
cmd.manage_availability do |command| |
66 |
|
plugin['/system/ui/current'].subscribe do |event, slot| |
67 |
|
if slot.name=="Debugger" |
68 |
|
case event |
69 |
|
when :notify_slot_link |
70 |
|
command.availability=true |
71 |
|
when :notify_slot_unlink |
72 |
|
command.availability=false |
73 |
|
end |
74 |
|
end |
75 |
|
end |
76 |
|
end |
77 |
|
|
78 |
|
# Add command to start the debugger from the toolbar |
79 |
|
plugin["/system/ui/commands"].manager.command("App/Run/Debugger").icon = "/system/ui/icons/Debugger/startDebugger" |
80 |
|
plugin["/system/ui/current/ToolBar"].manager.add_command("View", "App/Run/Debugger") |
81 |
|
|
82 |
# Insert the inspector in the Tools menu |
# Insert the inspector in the Tools menu |
83 |
viewmenu = plugin["/system/ui/components/MenuPane/View_menu"].manager |
viewmenu = plugin["/system/ui/components/MenuPane/View_menu"].manager |
121 |
#end |
#end |
122 |
@dockpane_slot = plugin['/system/ui/components/DockPane'].manager.add("Debugger") |
@dockpane_slot = plugin['/system/ui/components/DockPane'].manager.add("Debugger") |
123 |
@dockpane_slot.data = @frm |
@dockpane_slot.data = @frm |
124 |
@debugger = nil |
|
|
|
|
125 |
setup_actions() |
setup_actions() |
126 |
@plugin.log_info << "Debugger renderer created #{slot.path}" |
@plugin.log_info << "Debugger renderer created #{slot.path}" |
127 |
|
|
139 |
bind_action("start", :start) |
bind_action("start", :start) |
140 |
bind_action("stop", :stop) |
bind_action("stop", :stop) |
141 |
bind_action("toggle", :toggle) |
bind_action("toggle", :toggle) |
142 |
bind_action("hide", :hide) |
bind_action("hide", :my_hide) |
143 |
bind_action("show", :show) |
bind_action("show", :my_show) |
144 |
end |
end |
145 |
|
|
146 |
def bind_action(name, meth) |
def bind_action(name, meth) |
147 |
@slot["actions/#{name}"].set_proc method(meth) |
@slot["actions/#{name}"].set_proc method(meth) |
148 |
end |
end |
149 |
|
|
150 |
|
|
151 |
|
def my_show |
152 |
|
unless @docked |
153 |
|
@dockpane_slot.manager.dock('south') |
154 |
|
@docked = true |
155 |
|
@viewmenu.check("App/View/Debugger") |
156 |
|
update |
157 |
|
@checked = true |
158 |
|
#@plugin.properties["Open"] = true |
159 |
|
end |
160 |
|
@dockpane_slot.manager.show |
161 |
|
@checked = true |
162 |
|
@viewmenu.check("App/View/Debugger") |
163 |
|
#@plugin.properties["Open"] = true |
164 |
|
end |
165 |
|
|
166 |
|
def my_hide |
167 |
|
unless @docked |
168 |
|
@dockpane_slot.manager.dock('south') |
169 |
|
@docked = true |
170 |
|
@viewmenu.check("App/View/Debugger") |
171 |
|
update |
172 |
|
@checked = true |
173 |
|
#@plugin.properties["Open"] = true |
174 |
|
end |
175 |
|
@dockpane_slot.manager.hide |
176 |
|
@viewmenu.uncheck("App/View/Debugger") |
177 |
|
@checked = false |
178 |
|
#@plugin.properties["Open"] = false |
179 |
|
end |
180 |
|
|
181 |
def toggle |
def toggle |
182 |
unless @docked |
unless @docked |
183 |
@dockpane_slot.manager.dock('south') |
@dockpane_slot.manager.dock('south') |
188 |
#@plugin.properties["Open"] = true |
#@plugin.properties["Open"] = true |
189 |
else |
else |
190 |
if @checked |
if @checked |
191 |
@dockpane_slot.manager.hide |
my_hide() |
|
@viewmenu.uncheck("App/View/Debugger") |
|
|
@checked = false |
|
|
#@plugin.properties["Open"] = false |
|
192 |
else |
else |
193 |
@dockpane_slot.manager.show |
my_show() |
|
@checked = true |
|
|
@viewmenu.check("App/View/Debugger") |
|
|
#@plugin.properties["Open"] = true |
|
194 |
end |
end |
195 |
end |
end |
196 |
end |
end |
197 |
|
|
|
|
|
198 |
## |
## |
199 |
# Create the debugger UI and put it in a top frame |
# Create the debugger UI and put it in a top frame |
200 |
# |
# |
422 |
# Update the frame list (combobox) |
# Update the frame list (combobox) |
423 |
# |
# |
424 |
def update_frame_list(fr_list) |
def update_frame_list(fr_list) |
425 |
return unless @debugger |
return unless @slot.manager |
426 |
@cbox_frame.clearItems |
@cbox_frame.clearItems |
427 |
idx = 0 |
idx = 0 |
428 |
fr_list.each do |f| |
fr_list.each do |f| |
602 |
|
|
603 |
|
|
604 |
def onCmdStart(sender, sel, ptr) |
def onCmdStart(sender, sel, ptr) |
605 |
return 0 unless @debugger |
return 0 unless @slot.manager |
606 |
@slot.manager.start |
@slot.manager.start |
607 |
return 1 |
return 1 |
608 |
end |
end |
609 |
|
|
610 |
def onUpdStart(sender, sel, ptr) |
def onUpdStart(sender, sel, ptr) |
611 |
if @debugger |
if @slot.manager |
612 |
update_state(sender,sel,ptr, !@debugger.running?) |
update_state(sender,sel,ptr, !@slot.manager.running?) |
613 |
else |
else |
614 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
615 |
end |
end |
617 |
end |
end |
618 |
|
|
619 |
def onCmdStop(sender, sel, ptr) |
def onCmdStop(sender, sel, ptr) |
620 |
@debugger.stop if @debugger |
@slot.manager.stop if @slot.manager |
621 |
return 1 |
return 1 |
622 |
end |
end |
623 |
|
|
624 |
def onUpdStop(sender, sel, ptr) |
def onUpdStop(sender, sel, ptr) |
625 |
if @debugger |
if @slot.manager |
626 |
update_state(sender,sel,ptr, @debugger.running?) |
update_state(sender,sel,ptr, @slot.manager.running?) |
627 |
else |
else |
628 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
629 |
end |
end |
631 |
end |
end |
632 |
|
|
633 |
def onCmdClose(sender, sel, ptr) |
def onCmdClose(sender, sel, ptr) |
634 |
@debugger.send_command('CLOSE') if @debugger |
@slot.manager.send_command('CLOSE') if @slot.manager |
635 |
return 1 |
return 1 |
636 |
end |
end |
637 |
|
|
638 |
def onCmdStepOver(sender, sel, ptr) |
def onCmdStepOver(sender, sel, ptr) |
639 |
@debugger.send_command('next') if @debugger |
@slot.manager.send_command('next') if @slot.manager |
640 |
return 1 |
return 1 |
641 |
end |
end |
642 |
|
|
643 |
def onUpdStepOver(sender, sel, ptr) |
def onUpdStepOver(sender, sel, ptr) |
644 |
if @debugger |
if @slot.manager |
645 |
update_state(sender,sel,ptr, @debugger.running? && @debugger.paused?) |
update_state(sender,sel,ptr, @slot.manager.running? && @slot.manager.paused?) |
646 |
else |
else |
647 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
648 |
end |
end |
650 |
end |
end |
651 |
|
|
652 |
def onCmdStepIn(sender, sel, ptr) |
def onCmdStepIn(sender, sel, ptr) |
653 |
@debugger.send_command('step') if @debugger |
@slot.manager.send_command('step') if @slot.manager |
654 |
return 1 |
return 1 |
655 |
end |
end |
656 |
|
|
657 |
def onUpdStepIn(sender, sel, ptr) |
def onUpdStepIn(sender, sel, ptr) |
658 |
if @debugger |
if @slot.manager |
659 |
update_state(sender,sel,ptr, @debugger.running? && @debugger.paused?) |
update_state(sender,sel,ptr, @slot.manager.running? && @slot.manager.paused?) |
660 |
else |
else |
661 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
662 |
end |
end |
664 |
end |
end |
665 |
|
|
666 |
def onCmdStepOut(sender, sel, ptr) |
def onCmdStepOut(sender, sel, ptr) |
667 |
@debugger.send_command('finish') if @debugger |
@slot.manager.send_command('finish') if @slot.manager |
668 |
return 1 |
return 1 |
669 |
end |
end |
670 |
|
|
671 |
def onUpdStepOut(sender, sel, ptr) |
def onUpdStepOut(sender, sel, ptr) |
672 |
if @debugger |
if @slot.manager |
673 |
update_state(sender,sel,ptr, @debugger.running? && @debugger.paused?) |
update_state(sender,sel,ptr, @slot.manager.running? && @slot.manager.paused?) |
674 |
else |
else |
675 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
676 |
end |
end |
678 |
end |
end |
679 |
|
|
680 |
def onCmdResume(sender, sel, ptr) |
def onCmdResume(sender, sel, ptr) |
681 |
@debugger.resume if @debugger |
@slot.manager.resume if @slot.manager |
682 |
return 1 |
return 1 |
683 |
end |
end |
684 |
|
|
685 |
def onUpdResume(sender, sel, ptr) |
def onUpdResume(sender, sel, ptr) |
686 |
if @debugger |
if @slot.manager |
687 |
update_state(sender,sel,ptr, @debugger.running? && @debugger.paused?) |
update_state(sender,sel,ptr, @slot.manager.running? && @slot.manager.paused?) |
688 |
else |
else |
689 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
690 |
end |
end |
692 |
end |
end |
693 |
|
|
694 |
def onCmdPause(sender, sel, ptr) |
def onCmdPause(sender, sel, ptr) |
695 |
@debugger.pause if @debugger |
@slot.manager.pause if @slot.manager |
696 |
return 1 |
return 1 |
697 |
end |
end |
698 |
|
|
699 |
def onUpdPause(sender, sel, ptr) |
def onUpdPause(sender, sel, ptr) |
700 |
if @debugger |
if @slot.manager |
701 |
update_state(sender,sel,ptr, @debugger.running? && !@debugger.paused?) |
update_state(sender,sel,ptr, @slot.manager.running? && !@slot.manager.paused?) |
702 |
else |
else |
703 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
704 |
end |
end |
706 |
end |
end |
707 |
|
|
708 |
def onCmdRunToCursor(sender, sel, ptr) |
def onCmdRunToCursor(sender, sel, ptr) |
709 |
@debugger.run_to_cursor |
@slot.manager.run_to_cursor |
710 |
return 1 |
return 1 |
711 |
end |
end |
712 |
|
|
713 |
def onUpdRunToCursor(sender, sel, ptr) |
def onUpdRunToCursor(sender, sel, ptr) |
714 |
if @debugger |
if @slot.manager |
715 |
update_state(sender,sel,ptr, @debugger.running? && @debugger.paused?) |
update_state(sender,sel,ptr, @slot.manager.running? && @slot.manager.paused?) |
716 |
else |
else |
717 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
718 |
end |
end |
729 |
end |
end |
730 |
|
|
731 |
def onCmdShowExecPoint(sender, sel, ptr) |
def onCmdShowExecPoint(sender, sel, ptr) |
732 |
@debugger.show_exec_point if @debugger |
@slot.manager.show_exec_point if @slot.manager |
733 |
return 1 |
return 1 |
734 |
end |
end |
735 |
|
|
736 |
def onUpdShowExecPoint(sender, sel, ptr) |
def onUpdShowExecPoint(sender, sel, ptr) |
737 |
if @debugger |
if @slot.manager |
738 |
update_state(sender,sel,ptr, @debugger.running?) |
update_state(sender,sel,ptr, @slot.manager.running?) |
739 |
else |
else |
740 |
update_state(sender,sel,ptr, false) |
update_state(sender,sel,ptr, false) |
741 |
end |
end |
744 |
|
|
745 |
def onCmdHelp(sender, sel, ptr) |
def onCmdHelp(sender, sel, ptr) |
746 |
#TODO: to be done |
#TODO: to be done |
747 |
@debugger.show_thread_list if @debugger |
@slot.manager.show_thread_list if @slot.manager |
748 |
return 1 |
return 1 |
749 |
end |
end |
750 |
|
|
771 |
def onCmdThreadSelect(sender, sel, ptr) |
def onCmdThreadSelect(sender, sel, ptr) |
772 |
# Get the index of the selected thread |
# Get the index of the selected thread |
773 |
idx = sender.currentItem |
idx = sender.currentItem |
774 |
@debugger.select_thread(sender.getItemData(idx)) if @debugger |
@slot.manager.select_thread(sender.getItemData(idx)) if @slot.manager |
775 |
return 1 |
return 1 |
776 |
end |
end |
777 |
|
|
778 |
def onCmdFrameSelect(sender, sel, ptr) |
def onCmdFrameSelect(sender, sel, ptr) |
779 |
# Get the index of the selected frame |
# Get the index of the selected frame |
780 |
idx = sender.currentItem |
idx = sender.currentItem |
781 |
@debugger.select_frame(sender.getItemData(idx)) if @debugger |
@slot.manager.select_frame(sender.getItemData(idx)) if @slot.manager |
782 |
return 1 |
return 1 |
783 |
end |
end |
784 |
|
|