diff --git a/lib/object_view.rb b/lib/object_view.rb index aa44dc0..111f3be 100644 --- a/lib/object_view.rb +++ b/lib/object_view.rb @@ -2,15 +2,15 @@ require_relative "ref_view" class ObjectView < ListView - def initialize interpreter , object_id + def initialize object_id , interpreter = nil @object_id = object_id @interpreter = interpreter - @interpreter.register_event(:object_changed, self) + @interpreter.register_event(:object_changed, self) if interpreter super( content_elements ) end def draw - @element = super("ul.nav!") + @element = super(@interpreter ? "ul.nav!" : "ul") prepend_element div("li" , "-------------------------") prepend_element div( "li" ) << div("span" , class_header(@object_id) ) return @element diff --git a/lib/ref_view.rb b/lib/ref_view.rb index c137dce..d7d2493 100644 --- a/lib/ref_view.rb +++ b/lib/ref_view.rb @@ -1,16 +1,38 @@ -class RefView < ElementView +class RefView < ListView def initialize name , value @name = name @value = value + super [] + end + + attr_reader :value + + def value= val + @value = val + add_hover end - attr_accessor :value - def draw @element = div("li") << div("a" , "#{@name} : #{marker(@value)}" ) + add_hover + @element end + def add_hover + @element.on("hover"){ hover } if is_object?(@value) + end + + def is_object?( id ) + Virtual.machine.objects[id] != nil + end + + def hover + puts "hovering #{@name}" + append ObjectView.new(@value) + @element.off("hover") + end + def marker id var = Virtual.machine.objects[id] if var.is_a? String diff --git a/lib/registers_view.rb b/lib/registers_view.rb index 3387d79..4fb5002 100644 --- a/lib/registers_view.rb +++ b/lib/registers_view.rb @@ -26,7 +26,7 @@ class RegistersView < ListView reg = reg.symbol unless reg.is_a? Symbol index = reg.to_s[1 .. -1 ].to_i if( is_object? value ) - swap = ObjectView.new( @interpreter, value ) + swap = ObjectView.new( value , @interpreter ) else swap = ValueView.new value end