introducing mom view

rename source to vool
and instruction to risc
This commit is contained in:
Torsten Ruger 2018-04-17 19:08:10 +03:00
parent 88e49afb60
commit ce0bdc46a9
5 changed files with 62 additions and 16 deletions

View File

@ -15,20 +15,24 @@ body
.classes .classes
@include span(12%) @include span(12%)
.source_view .vool_view
@include span(24%) @include span(18%)
.mom_view
@include span(18%)
.instruction_view .risc_view
@include span(30%) @include span(18%)
.status_view .status_view
@include span(15%) @include span(14%)
line-height : 1.25em line-height : 1.25em
.header_state .header_state
color: #53a5ff color: #53a5ff
.vool_view , .mom_view , .risc_view , .status_view
margin-left: 0%
.labels_view .labels_view
@include span(1) @include span(1)
margin-right: span(1) margin-right: span(1)
@ -41,8 +45,6 @@ body
@include gallery(1) @include gallery(1)
margin-top: 10px margin-top: 10px
.field .field
@include span(5) @include span(5)

View File

@ -16,8 +16,9 @@ require "base/list_view"
# each seperate view is in it's own class. # each seperate view is in it's own class.
require "views/left_view" require "views/left_view"
require "views/status_view" require "views/status_view"
require "views/source_view" require "views/vool_view"
require "views/instruction_view" require "views/mom_view"
require "views/risc_view"
require "views/registers_view" require "views/registers_view"
class Bignum class Bignum
end end
@ -43,8 +44,9 @@ class MainView < ListView
Risc.machine.boot Risc.machine.boot
@interpreter = Risc::Interpreter.new @interpreter = Risc::Interpreter.new
super( [LeftView.new(@interpreter) , super( [LeftView.new(@interpreter) ,
SourceView.new(@interpreter) , VoolView.new(@interpreter) ,
InstructionView.new(@interpreter) , MomView.new(@interpreter) ,
RiscView.new(@interpreter) ,
StatusView.new(@interpreter) , StatusView.new(@interpreter) ,
RegistersView.new(@interpreter) ] ) RegistersView.new(@interpreter) ] )
end end

42
lib/views/mom_view.rb Normal file
View File

@ -0,0 +1,42 @@
require "base/constant_view"
require "base/list_view"
class MomView < ListView
def initialize interpreter
@interpreter = interpreter
@current = nil
super([start_view])
@interpreter.register_event(:instruction_changed, self)
@interpreter.register_event(:state_changed, self)
end
def start_view
ConstantView.new( "span.bright" , "starting" )
end
def instruction_changed
i = @interpreter.instruction
return unless i && i.source.is_a?(Mom::Instruction)
@element.at_css(".mom_bright").remove_class("mom_bright")
instruction_text = i.source.to_s
instruction = append_view( ConstantView.new( "span.mom_bright" , instruction_text ) )
wrap_node_with( instruction , div )
remove_first if( @elements.length > 6)
end
def draw
super()
wrap_node_with @elements.first , div
wrap_element div(".mom_view") << div("h4" ,"Mom::Instruction")
@element
end
def state_changed(old , new_s)
return unless new_s == :running
clear_view
@current = nil
append_view start_view
end
end

View File

@ -1,7 +1,7 @@
require "base/constant_view" require "base/constant_view"
require "base/list_view" require "base/list_view"
class InstructionView < ListView class RiscView < ListView
def initialize interpreter def initialize interpreter
@interpreter = interpreter @interpreter = interpreter
@ -24,7 +24,7 @@ class InstructionView < ListView
def draw def draw
super() super()
wrap_node_with @elements.first , div wrap_node_with @elements.first , div
wrap_element div(".instruction_view") << div("h4" ,"Register Machine Instruction") wrap_element div(".risc_view") << div("h4" ,"Register Machine Instruction")
@element @element
end end

View File

@ -1,6 +1,6 @@
require_relative "html_converter" require_relative "html_converter"
class SourceView < ElementView class VoolView < ElementView
def initialize interpreter def initialize interpreter
@interpreter = interpreter @interpreter = interpreter
@ -10,7 +10,7 @@ class SourceView < ElementView
def draw def draw
@text = div(".text") @text = div(".text")
@ticker = div(".ticker") @ticker = div(".ticker")
@element = div(".source_view") << div("h4.source" , "Class.Method") << @ticker << @text @element = div(".vool_view") << div("h4.source" , "Class.Method") << @ticker << @text
@element @element
end end