make class view use ref view
so one can drill into a class like any old object some work refreshing them (as they change on reboot)
This commit is contained in:
parent
e8b0a38478
commit
88aa296356
@ -1,15 +1,28 @@
|
|||||||
|
require_relative "ref_view"
|
||||||
|
|
||||||
class ClassesView < ListView
|
class ClassesView < ListView
|
||||||
|
|
||||||
def initialize interpreter
|
def initialize interpreter
|
||||||
@interpreter = interpreter
|
@interpreter = interpreter
|
||||||
|
@interpreter.register_event(:state_changed, self)
|
||||||
|
super( class_views )
|
||||||
|
end
|
||||||
|
|
||||||
|
def class_views
|
||||||
classes = []
|
classes = []
|
||||||
Register.machine.space.classes.each do |name , claz|
|
Register.machine.space.classes.each do |name , claz|
|
||||||
next if [:Kernel,:Module,:MetaClass,:BinaryCode].index name
|
next if [:Kernel,:Module,:MetaClass,:BinaryCode].index name
|
||||||
classes << claz
|
classes << claz
|
||||||
end
|
end
|
||||||
classes.sort! {|a,b| a.name <=> b.name }
|
classes.sort! {|a,b| a.name <=> b.name }
|
||||||
super( classes.collect{|c| ClassView.new(c)})
|
classes.collect{|c| ClassView.new(c)}
|
||||||
|
end
|
||||||
|
|
||||||
|
def state_changed old , new_s
|
||||||
|
return unless new_s == :running
|
||||||
|
class_views.each_with_index do |v, i|
|
||||||
|
replace_at i , v
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def draw
|
def draw
|
||||||
@ -21,17 +34,12 @@ class ClassesView < ListView
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
class ClassView < ElementView
|
class ClassView < RefView
|
||||||
def initialize clazz
|
def initialize clazz
|
||||||
@clazz = clazz
|
super(clazz.name , clazz.object_id , 20 )
|
||||||
end
|
end
|
||||||
|
|
||||||
def draw
|
def ref_text
|
||||||
@element = div("li") << div( "a" , @clazz.name ) << (ul = div("ul"))
|
@name
|
||||||
@clazz.object_layout.instance_names.each do |name|
|
|
||||||
ul << (div("li") << div("a", name ))
|
|
||||||
end
|
|
||||||
@element.style["z-index"] = 20
|
|
||||||
@element
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -15,12 +15,16 @@ class RefView < ListView
|
|||||||
end
|
end
|
||||||
|
|
||||||
def draw
|
def draw
|
||||||
@element = div("li") << div("a" , "#{@name} : #{marker(@value)}" )
|
@element = div("li") << div("a" , ref_text )
|
||||||
add_hover
|
add_hover
|
||||||
@element.style["z-index"] = @z if @z
|
@element.style["z-index"] = @z if @z
|
||||||
@element
|
@element
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def ref_text
|
||||||
|
"#{@name} : #{marker(@value)}"
|
||||||
|
end
|
||||||
|
|
||||||
def add_hover
|
def add_hover
|
||||||
return if is_string?
|
return if is_string?
|
||||||
@element.on("hover"){ hover } if is_object?(@value)
|
@element.on("hover"){ hover } if is_object?(@value)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user