fidgit 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/fidgit/elements/combo_box.rb +1 -1
- data/lib/fidgit/elements/element.rb +3 -1
- data/lib/fidgit/elements/group.rb +2 -4
- data/lib/fidgit/elements/label.rb +13 -9
- data/lib/fidgit/elements/menu_pane.rb +7 -1
- data/lib/fidgit/event.rb +4 -4
- data/lib/fidgit/states/gui_state.rb +4 -1
- data/lib/fidgit/version.rb +1 -1
- metadata +10 -10
| @@ -152,6 +152,8 @@ module Fidgit | |
| 152 152 |  | 
| 153 153 | 
             
                  @enabled = options[:enabled]
         | 
| 154 154 |  | 
| 155 | 
            +
                  @mouse_over = false
         | 
| 156 | 
            +
             | 
| 155 157 | 
             
                  # Alignment and min/max dimensions.
         | 
| 156 158 | 
             
                  @align_h = options[:align_h] || Array(options[:align]).last || default(:align_h)
         | 
| 157 159 | 
             
                  raise ArgumentError, "Invalid align_h: #{@align_h}" unless VALID_ALIGN_H.include? @align_h
         | 
| @@ -263,7 +265,7 @@ module Fidgit | |
| 263 265 | 
             
                    when 1
         | 
| 264 266 | 
             
                      yield self
         | 
| 265 267 | 
             
                    when 0
         | 
| 266 | 
            -
                      instance_methods_eval | 
| 268 | 
            +
                      instance_methods_eval(&block)
         | 
| 267 269 | 
             
                    else
         | 
| 268 270 | 
             
                      raise "block arity must be 0 or 1"
         | 
| 269 271 | 
             
                  end
         | 
| @@ -67,7 +67,11 @@ module Fidgit | |
| 67 67 | 
             
                        center_x = (current_x + x + rect.width - padding_right) / 2.0
         | 
| 68 68 | 
             
                    end
         | 
| 69 69 |  | 
| 70 | 
            -
                     | 
| 70 | 
            +
                    # Make text centered alongside the icon
         | 
| 71 | 
            +
                    # TODO: Probably should have this as an option.
         | 
| 72 | 
            +
                    center_y = y + padding_top + ((y + height - padding_bottom) - (y + padding_top)) / 2.0
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                    font.draw_rel(@text, center_x, center_y, z, rel_x, 0.5, 1, 1, @color)
         | 
| 71 75 | 
             
                  end
         | 
| 72 76 |  | 
| 73 77 | 
             
                  nil
         | 
| @@ -77,20 +81,20 @@ module Fidgit | |
| 77 81 | 
             
                def layout
         | 
| 78 82 | 
             
                  if @icon
         | 
| 79 83 | 
             
                    if @text.empty?
         | 
| 80 | 
            -
                      rect.width = [padding_left + @icon.width + padding_right,  | 
| 81 | 
            -
                      rect.height = [padding_top + @icon.height + padding_bottom,  | 
| 84 | 
            +
                      rect.width = [padding_left + @icon.width + padding_right, min_width].max
         | 
| 85 | 
            +
                      rect.height = [padding_top + @icon.height + padding_bottom, min_height].max
         | 
| 82 86 | 
             
                    else
         | 
| 83 87 | 
             
                      # Todo: Use padding_h inside here? Probably by making this a Composite.
         | 
| 84 | 
            -
                      rect.width = [padding_left + @icon.width + [padding_left + padding_right].max + font.text_width(@text) + padding_right,  | 
| 85 | 
            -
                      rect.height = [padding_top + [@icon.height, font_size].max + padding_bottom,  | 
| 88 | 
            +
                      rect.width = [padding_left + @icon.width + [padding_left + padding_right].max + font.text_width(@text) + padding_right, min_width].max
         | 
| 89 | 
            +
                      rect.height = [padding_top + [@icon.height, font_size].max + padding_bottom, min_height].max
         | 
| 86 90 | 
             
                    end
         | 
| 87 91 | 
             
                  else
         | 
| 88 92 | 
             
                    if @text.empty?
         | 
| 89 | 
            -
                      rect.width = [padding_left + padding_right,  | 
| 90 | 
            -
                      rect.height = [padding_top + padding_bottom,  | 
| 93 | 
            +
                      rect.width = [padding_left + padding_right, min_width].max
         | 
| 94 | 
            +
                      rect.height = [padding_top + padding_bottom, min_height].max
         | 
| 91 95 | 
             
                    else
         | 
| 92 | 
            -
                      rect.width = [padding_left + font.text_width(@text) + padding_right,  | 
| 93 | 
            -
                      rect.height = [padding_top + font_size + padding_bottom,  | 
| 96 | 
            +
                      rect.width = [padding_left + font.text_width(@text) + padding_right, min_width].max
         | 
| 97 | 
            +
                      rect.height = [padding_top + font_size + padding_bottom, min_height].max
         | 
| 94 98 | 
             
                    end
         | 
| 95 99 | 
             
                  end
         | 
| 96 100 |  | 
| @@ -65,6 +65,8 @@ module Fidgit | |
| 65 65 | 
             
                event :selected
         | 
| 66 66 |  | 
| 67 67 | 
             
                def index(value); @items.index find(value); end
         | 
| 68 | 
            +
                def x=(value); super(value); recalc; end
         | 
| 69 | 
            +
                def y=(value); super(value); recalc; end
         | 
| 68 70 |  | 
| 69 71 | 
             
                # @option (see Composite#initialize)
         | 
| 70 72 | 
             
                # @option options [Float] :x (cursor x, if in a GuiState)
         | 
| @@ -86,6 +88,8 @@ module Fidgit | |
| 86 88 | 
             
                    }.merge! options
         | 
| 87 89 | 
             
                  end
         | 
| 88 90 |  | 
| 91 | 
            +
                  @items = nil
         | 
| 92 | 
            +
             | 
| 89 93 | 
             
                  super(options)
         | 
| 90 94 |  | 
| 91 95 | 
             
                  @items = vertical spacing: 0, padding: 0
         | 
| @@ -133,7 +137,7 @@ module Fidgit | |
| 133 137 | 
             
                  super
         | 
| 134 138 |  | 
| 135 139 | 
             
                  if @items
         | 
| 136 | 
            -
                    # Ensure the menu can't go over the edge of the screen. If it can't be avoided, align with left edge of screen.
         | 
| 140 | 
            +
                    # Ensure the menu can't go over the edge of the screen. If it can't be avoided, align with top-left edge of screen.
         | 
| 137 141 | 
             
                    rect.x = [[x, $window.width - width - padding_right].min, 0].max
         | 
| 138 142 | 
             
                    rect.y = [[y, $window.height - height - padding_bottom].min, 0].max
         | 
| 139 143 |  | 
| @@ -144,6 +148,8 @@ module Fidgit | |
| 144 148 | 
             
                    # Ensure that all items are of the same width.
         | 
| 145 149 | 
             
                    max_width = @items.each.to_a.map {|c| c.width }.max || 0
         | 
| 146 150 | 
             
                    @items.each {|c| c.rect.width = max_width }
         | 
| 151 | 
            +
             | 
| 152 | 
            +
                    @items.recalc # Move all the items inside the packer to correct ones.
         | 
| 147 153 | 
             
                  end
         | 
| 148 154 |  | 
| 149 155 | 
             
                  nil
         | 
    
        data/lib/fidgit/event.rb
    CHANGED
    
    | @@ -34,7 +34,7 @@ module Fidgit | |
| 34 34 | 
             
                  raise ArgumentError, "Expected method or block for event handler" unless !block.nil? ^ !method.nil?
         | 
| 35 35 | 
             
                  raise ArgumentError, "#{self.class} does not handle #{event.inspect}" unless events.include? event
         | 
| 36 36 |  | 
| 37 | 
            -
                  @_event_handlers  | 
| 37 | 
            +
                  @_event_handlers ||= Hash.new() { |hash, key| hash[key] = [] }
         | 
| 38 38 | 
             
                  @_event_handlers[event].push(method ? method : block)
         | 
| 39 39 |  | 
| 40 40 | 
             
                  nil
         | 
| @@ -59,7 +59,7 @@ module Fidgit | |
| 59 59 | 
             
                    return :handled if send(event, self, *args) == :handled
         | 
| 60 60 | 
             
                  end
         | 
| 61 61 |  | 
| 62 | 
            -
                  if @_event_handlers
         | 
| 62 | 
            +
                  if defined? @_event_handlers
         | 
| 63 63 | 
             
                    @_event_handlers[event].reverse_each do |handler|
         | 
| 64 64 | 
             
                      return :handled if handler.call(self, *args) == :handled
         | 
| 65 65 | 
             
                    end
         | 
| @@ -77,8 +77,8 @@ module Fidgit | |
| 77 77 | 
             
                def self.included(base)
         | 
| 78 78 | 
             
                  class << base
         | 
| 79 79 | 
             
                    def events
         | 
| 80 | 
            -
                       | 
| 81 | 
            -
             | 
| 80 | 
            +
                      # Copy the events already set up for your parent.
         | 
| 81 | 
            +
                      unless defined? @events
         | 
| 82 82 | 
             
                        @events = if superclass.respond_to? :events
         | 
| 83 83 | 
             
                          superclass.events.dup
         | 
| 84 84 | 
             
                        else
         | 
| @@ -45,11 +45,14 @@ module Fidgit | |
| 45 45 | 
             
                def message(text, options = {}, &block); MessageDialog.new(text, options, &block); end
         | 
| 46 46 |  | 
| 47 47 | 
             
                # (see Container#clear)
         | 
| 48 | 
            -
                def clear(*args, &block); @container.clear | 
| 48 | 
            +
                def clear(*args, &block); @container.clear(*args, &block); end
         | 
| 49 49 |  | 
| 50 50 | 
             
                def initialize
         | 
| 51 51 | 
             
                  # The container is where the user puts their content.
         | 
| 52 52 | 
             
                  @container = MainPacker.new
         | 
| 53 | 
            +
                  @menu = nil
         | 
| 54 | 
            +
                  @last_cursor_pos = [-1, -1]
         | 
| 55 | 
            +
                  @mouse_over = nil
         | 
| 53 56 |  | 
| 54 57 | 
             
                  unless defined? @@draw_pixel
         | 
| 55 58 | 
             
                    media_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'media'))
         | 
    
        data/lib/fidgit/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fidgit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,12 +9,12 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2011-06- | 
| 12 | 
            +
            date: 2011-06-13 00:00:00.000000000 +01:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: gosu
         | 
| 17 | 
            -
              requirement: & | 
| 17 | 
            +
              requirement: &26059560 !ruby/object:Gem::Requirement
         | 
| 18 18 | 
             
                none: false
         | 
| 19 19 | 
             
                requirements:
         | 
| 20 20 | 
             
                - - ~>
         | 
| @@ -22,10 +22,10 @@ dependencies: | |
| 22 22 | 
             
                    version: 0.7.32
         | 
| 23 23 | 
             
              type: :runtime
         | 
| 24 24 | 
             
              prerelease: false
         | 
| 25 | 
            -
              version_requirements: * | 
| 25 | 
            +
              version_requirements: *26059560
         | 
| 26 26 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 27 27 | 
             
              name: chingu
         | 
| 28 | 
            -
              requirement: & | 
| 28 | 
            +
              requirement: &26059164 !ruby/object:Gem::Requirement
         | 
| 29 29 | 
             
                none: false
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - ~>
         | 
| @@ -33,10 +33,10 @@ dependencies: | |
| 33 33 | 
             
                    version: 0.9rc5
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 | 
            -
              version_requirements: * | 
| 36 | 
            +
              version_requirements: *26059164
         | 
| 37 37 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 38 38 | 
             
              name: rspec
         | 
| 39 | 
            -
              requirement: & | 
| 39 | 
            +
              requirement: &26058780 !ruby/object:Gem::Requirement
         | 
| 40 40 | 
             
                none: false
         | 
| 41 41 | 
             
                requirements:
         | 
| 42 42 | 
             
                - - ~>
         | 
| @@ -44,10 +44,10 @@ dependencies: | |
| 44 44 | 
             
                    version: 2.1.0
         | 
| 45 45 | 
             
              type: :development
         | 
| 46 46 | 
             
              prerelease: false
         | 
| 47 | 
            -
              version_requirements: * | 
| 47 | 
            +
              version_requirements: *26058780
         | 
| 48 48 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 49 49 | 
             
              name: texplay
         | 
| 50 | 
            -
              requirement: & | 
| 50 | 
            +
              requirement: &26058396 !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                none: false
         | 
| 52 52 | 
             
                requirements:
         | 
| 53 53 | 
             
                - - ~>
         | 
| @@ -55,7 +55,7 @@ dependencies: | |
| 55 55 | 
             
                    version: 0.3.5
         | 
| 56 56 | 
             
              type: :development
         | 
| 57 57 | 
             
              prerelease: false
         | 
| 58 | 
            -
              version_requirements: * | 
| 58 | 
            +
              version_requirements: *26058396
         | 
| 59 59 | 
             
            description: Fidgit is a GUI library built on Gosu/Chingu
         | 
| 60 60 | 
             
            email:
         | 
| 61 61 | 
             
            - bil.bagpuss@gmail.com
         |