Sha256: 16b541e00aa3c5c1028e8c2568590fca5ae5eef8280805c24e69271e7d29108e

Contents?: true

Size: 1.34 KB

Versions: 9

Compression:

Stored size: 1.34 KB

Contents

module RubySketch


  extend module Functions

    def start (context, start_at_exit: false, &block)
      window = Window.new do
        context.instance_eval &block if block
      end

      context.on_start__ window

      start = proc do
        Reflex.start {window.show}
      end

      if start_at_exit
        at_exit {start.call unless $!}
      else
        start.call
      end

      window
    end

    private

    def start_on_object_at_exit (object, context)
      klass   = context.class
      methods = klass.instance_methods(false)
        .reject {|name| name =~ /__$/}
      consts  = klass.constants
        .reject {|name| name =~ /__$/}
        .each_with_object({}) {|name, h| h[name] = klass.const_get name}

      object.class.class_eval do
        methods.each do |name|
          define_method name do |*args, &block|
            context.__send__ name, *args, &block
          end
        end
        consts.each do |(name, value)|
          const_set name, value
        end
      end

      window = start context, start_at_exit: true

      window.canvas_painter.__send__ :begin_paint
      at_exit {window.canvas_painter.__send__ :end_paint}
    end

    self

  end# Functions


  module Starter

    def start (*args, &block)
      RubySketch.start self.new(*args), start_at_exit: true, &block
    end

  end# Starter


end# RubySketch

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rubysketch-0.2.5 lib/rubysketch/starter.rb
rubysketch-0.2.4 lib/rubysketch/starter.rb
rubysketch-0.2.3 lib/rubysketch/starter.rb
rubysketch-0.2.2 lib/rubysketch/starter.rb
rubysketch-0.2.1 lib/rubysketch/starter.rb
rubysketch-0.2.0 lib/rubysketch/starter.rb
rubysketch-0.1.5 lib/rubysketch/starter.rb
rubysketch-0.1.4 lib/rubysketch/starter.rb
rubysketch-0.1.3 lib/rubysketch/starter.rb