2015-08-22 20:11:33 +02:00
|
|
|
require_relative "ref_view"
|
2015-07-13 22:11:00 +02:00
|
|
|
|
2015-08-22 20:11:33 +02:00
|
|
|
class ObjectView < ListView
|
2015-07-13 22:11:00 +02:00
|
|
|
|
2015-08-21 19:07:27 +02:00
|
|
|
def initialize interpreter , object_id
|
|
|
|
@object_id = object_id
|
|
|
|
@interpreter = interpreter
|
|
|
|
@interpreter.register_event(:object_changed, self)
|
2015-08-22 20:11:33 +02:00
|
|
|
super( content_elements )
|
2015-07-13 22:11:00 +02:00
|
|
|
end
|
|
|
|
|
2015-08-21 19:07:27 +02:00
|
|
|
def draw
|
2015-08-22 20:11:33 +02:00
|
|
|
@element = super("ul.nav!")
|
|
|
|
prepend_element div("li" , "-------------------------")
|
|
|
|
prepend_element div( "li" ) << div("span" , class_header(@object_id) )
|
2015-08-22 17:19:07 +02:00
|
|
|
return @element
|
2015-07-14 12:07:28 +02:00
|
|
|
end
|
|
|
|
|
2015-08-22 20:11:33 +02:00
|
|
|
def object_changed reg , at
|
2015-08-21 19:07:27 +02:00
|
|
|
puts "Object changed in #{reg}"
|
2015-08-22 02:40:19 +02:00
|
|
|
for_object = @interpreter.get_register( reg )
|
|
|
|
return unless for_object == @object_id
|
2015-08-22 20:11:33 +02:00
|
|
|
puts "Object changed #{for_object} , at #{at}"
|
2015-08-21 19:07:27 +02:00
|
|
|
|
2015-07-13 22:11:00 +02:00
|
|
|
end
|
2015-08-21 19:07:27 +02:00
|
|
|
|
|
|
|
def class_header(id)
|
|
|
|
object = Virtual.machine.objects[id]
|
|
|
|
clazz = object.class.name.split("::").last
|
2015-08-22 20:11:33 +02:00
|
|
|
[clazz, id].join " : "
|
2015-07-13 22:11:00 +02:00
|
|
|
end
|
2015-08-21 19:07:27 +02:00
|
|
|
|
2015-08-22 20:11:33 +02:00
|
|
|
def content_elements
|
|
|
|
object = Virtual.machine.objects[@object_id]
|
2015-08-21 19:07:27 +02:00
|
|
|
fields = []
|
|
|
|
if object and ! object.is_a?(String)
|
|
|
|
object.get_instance_variables.each do |variable|
|
|
|
|
f = object.get_instance_variable(variable)
|
2015-08-22 20:11:33 +02:00
|
|
|
fields << RefView.new( variable , f.object_id )
|
2015-08-21 19:07:27 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
fields
|
2015-07-13 22:11:00 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|