class Kame::Remocon::Opal::AppView
# n角形
n = 5
forward 100 turn_left 90 backword(Math::PI * 100 / n)
pen_down n.times do
forward(Math::PI * 200 / n) turn_left(360 / n)
end
Public Class Methods
new()
click to toggle source
# File lib/kame/remocon/opal/views/app_view.rb, line 23 def initialize @code= <<~PROG pen_down forward 100 turn_left 90 forward 100 turn_left 90 forward 100 turn_left 90 forward 100 PROG end
render(parent, &block)
click to toggle source
# File lib/kame/remocon/opal/views/app_view.rb, line 36 def self.render(parent, &block) Hyalite.render(Kame::Remocon::Opal::AppView.el(on_mounted: block), parent) end
Public Instance Methods
exec()
click to toggle source
# File lib/kame/remocon/opal/views/app_view.rb, line 55 def exec @code = @refs[:program].value wait = @refs[:wait][:checked] ? 0.3 : 0 @turtle.exec @code, wait end
mounted(canvas)
click to toggle source
# File lib/kame/remocon/opal/views/app_view.rb, line 40 def mounted(canvas) @canvas = canvas @turtle = Kame::Remocon::Opal::Turtle.new(canvas) @turtle.exec @code @code_getter = -> { @refs[:program].value } if Kame::Remocon::Opal::Config.ws_enabled? @remote = DRb::DRbObject.new_with_uri "ws://127.0.0.1:9292" DRb.start_service("ws://127.0.0.1:9292/callback") @remote.set_turtle DRb::DRbObject.new(@turtle) end @props[:on_mounted]&.call(@turtle, @remote) end
render()
click to toggle source
# File lib/kame/remocon/opal/views/app_view.rb, line 67 def render code = @code render_image = @state[:render_image] bg_color = @state[:bg_color] div do div do Kame::Remocon::Opal::CanvasView.el(onMounted: -> canvas { mounted(canvas) }, render_image: render_image, bg_color: bg_color) div({class: "wrap-code-text"}, textarea({style: {width: "400px", height: "400px"}, ref: :program}, code)) end div({class: :setting}) do ul do li do input({type: :checkbox, checked: true, id: :wait, ref: :wait}) label({for: :wait}, "描く過程を表示する") end li do input({type: :checkbox, checked: true, id: :bg_color, ref: :bg_color, onClick: -> {set_background}}) label({for: :bg_color}, "黒背景") end end end Hyalite.create_element(:p, {class: "exec-button"}, button({onClick: -> { exec }, name: "exec"}, "実行する")) end end
set_background()
click to toggle source
# File lib/kame/remocon/opal/views/app_view.rb, line 61 def set_background bg_color = @refs[:bg_color][:checked] @turtle.default_color = bg_color ? "white" : "black" set_state(bg_color: bg_color ? "black" : "white") end