diff --git a/lib/cyberarm_engine/ui/check_box.rb b/lib/cyberarm_engine/ui/check_box.rb index 85433d5..326bc54 100644 --- a/lib/cyberarm_engine/ui/check_box.rb +++ b/lib/cyberarm_engine/ui/check_box.rb @@ -21,6 +21,14 @@ module CyberarmEngine recalculate end + def value + @toggle_button.value + end + + def value=(bool) + @toggle_button.vlaue = bool + end + def define_label_singletons @label.define_singleton_method(:_toggle_button) do |button| @_toggle_button = button diff --git a/lib/cyberarm_engine/ui/container.rb b/lib/cyberarm_engine/ui/container.rb index 9b30495..5a44d95 100644 --- a/lib/cyberarm_engine/ui/container.rb +++ b/lib/cyberarm_engine/ui/container.rb @@ -65,6 +65,11 @@ module CyberarmEngine def recalculate @current_position = Vector.new(@margin_left, @margin_top) + unless @visible + @width = 0 + @height= 0 + return + end layout diff --git a/lib/cyberarm_engine/ui/edit_line.rb b/lib/cyberarm_engine/ui/edit_line.rb index 73d7b41..96648a7 100644 --- a/lib/cyberarm_engine/ui/edit_line.rb +++ b/lib/cyberarm_engine/ui/edit_line.rb @@ -77,6 +77,12 @@ module CyberarmEngine def recalculate super + unless @visible + @width = 0 + @height= 0 + return + end + @width = default(:width) update_background end diff --git a/lib/cyberarm_engine/ui/element.rb b/lib/cyberarm_engine/ui/element.rb index 429850c..ce12755 100644 --- a/lib/cyberarm_engine/ui/element.rb +++ b/lib/cyberarm_engine/ui/element.rb @@ -53,6 +53,7 @@ module CyberarmEngine # raise "#{self.class} 'padding' must be a number" unless @padding.is_a?(Numeric) @enabled = true + @visible = true default_events end @@ -122,7 +123,28 @@ module CyberarmEngine @enabled end + def visible? + @visible + end + + def toggle + @visible = !@visible + root.recalculate + end + + def show + @visible = true + root.recalculate + end + + def hide + @visible = false + root.recalculate + end + def draw + return unless @visible + @background_canvas.draw @border_canvas.draw render diff --git a/lib/cyberarm_engine/ui/image.rb b/lib/cyberarm_engine/ui/image.rb index 548bbeb..891c3e4 100644 --- a/lib/cyberarm_engine/ui/image.rb +++ b/lib/cyberarm_engine/ui/image.rb @@ -31,6 +31,12 @@ module CyberarmEngine end def recalculate + unless @visible + @width = 0 + @height= 0 + return + end + @width = @image.width * @scale_x @height = @image.height * @scale_y end diff --git a/lib/cyberarm_engine/ui/label.rb b/lib/cyberarm_engine/ui/label.rb index 86db4c2..9ad3d53 100644 --- a/lib/cyberarm_engine/ui/label.rb +++ b/lib/cyberarm_engine/ui/label.rb @@ -17,6 +17,12 @@ module CyberarmEngine end def recalculate + unless @visible + @width = 0 + @height= 0 + return + end + @width = @text.width.round @height= @text.height.round diff --git a/lib/cyberarm_engine/ui/toggle_button.rb b/lib/cyberarm_engine/ui/toggle_button.rb index 6c633f3..6b9c88a 100644 --- a/lib/cyberarm_engine/ui/toggle_button.rb +++ b/lib/cyberarm_engine/ui/toggle_button.rb @@ -38,6 +38,12 @@ module CyberarmEngine def recalculate super + unless @visible + @width = 0 + @height= 0 + return + end + @width = @text.textobject.text_width(@options[:checkmark]) update_background end