rubyx-debugger/lib/views/instruction_view.rb

42 lines
1020 B
Ruby
Raw Normal View History

require "base/constant_view"
require "base/list_view"
2015-08-21 00:37:41 +02:00
class InstructionView < ListView
2015-08-21 00:37:41 +02:00
def initialize interpreter
@interpreter = interpreter
super([start_view])
@interpreter.register_event(:instruction_changed, self)
@interpreter.register_event(:state_changed, self)
end
def start_view
ConstantView.new( "span.bright" , "starting" )
2015-08-21 00:37:41 +02:00
end
def instruction_changed
@element.at_css(".bright").remove_class("bright")
instruction = append_view( ConstantView.new( "span.bright" , instruction_text ) )
wrap_node_with instruction , div
remove_first if( @elements.length > 6)
2015-08-21 00:37:41 +02:00
end
def draw
super()
wrap_node_with @elements.first , div
2015-10-27 11:44:02 +01:00
wrap_element div(".source_view") << div("h4" ,"Register Machine Instruction")
@element
2015-08-21 00:37:41 +02:00
end
def state_changed old , new_s
return unless new_s == :running
clear_view
append_view start_view
end
def instruction_text
return "" unless @interpreter.instruction
@interpreter.instruction.to_s
2015-08-21 00:37:41 +02:00
end
end