diff --git a/lib/tailor/GUI/MainWindow.rb b/lib/tailor/GUI/MainWindow.rb index 889dfdc..d38f26d 100644 --- a/lib/tailor/GUI/MainWindow.rb +++ b/lib/tailor/GUI/MainWindow.rb @@ -40,11 +40,26 @@ module Tailor def init_mainpanel @mainPanel = Wx::Panel.new(self) - @mainPanelSizer = Wx::BoxSizer.new(Wx::HORIZONTAL) end def on_file_new - @tilesetProperties = Tailor::GUI::TilesetProperties.new(@mainPanelSizer, Wx::ID_ANY) + @mainPanelSizer = Wx::BoxSizer.new(Wx::VERTICAL) + @mainPanel.set_sizer(@mainPanelSizer) + @tilesetProperties = Tailor::GUI::TilesetProperties.new(@mainPanel, Wx::ID_ANY) + @mainPanelSizer.add(@tilesetProperties) + button = Wx::Button.new(@mainPanel, Wx::ID_ANY, "Click me") + evt_button(button.get_id()) { |event| on_clickme(event) } + @mainPanelSizer.add(button, 0, Wx::EXPAND|Wx::ALL, 2) + @mainPanelSizer.set_size_hints(self) + end + + def on_clickme(event) + puts "Tile X: #{@tilesetProperties.TileX}" + puts "Tile Y: #{@tilesetProperties.TileY}" + puts "Pad X: #{@tilesetProperties.PadX}" + puts "Pad Y: #{@tilesetProperties.PadY}" + puts "Space X: #{@tilesetProperties.SpaceX}" + puts "Space Y: #{@tilesetProperties.SpaceY}" end def on_file_open @@ -57,6 +72,8 @@ module Tailor end def on_file_close + @mainPanel.set_sizer(nil) + @mainPanelSizer = nil end def on_help_about diff --git a/lib/tailor/GUI/TilesetProperties.rb b/lib/tailor/GUI/TilesetProperties.rb index 75e34e1..f2dfd38 100644 --- a/lib/tailor/GUI/TilesetProperties.rb +++ b/lib/tailor/GUI/TilesetProperties.rb @@ -3,13 +3,12 @@ require 'wx' module Tailor module GUI class TilesetProperties < Wx::Panel - def initialize(parent = nil, - id = Wx::ID_ANY, - pos = Wx::DEFAULT_POSITION, - size = Wx::DEFAULT_SIZE, - style = Wx::TAB_TRAVERSAL, - name = "TilesetProperties") - super(parent, id, pos, size, style, name) + def create_method( name, &block ) + self.class.send( :define_method, name, &block ) + end + + def initialize(*args) + super(*args) values = { "Tile X" => 32, "Tile Y" => 32, @@ -19,12 +18,28 @@ module Tailor "Space Y" => 0 } @sizer = Wx::BoxSizer.new(Wx::VERTICAL) + self.set_sizer(@sizer) values.each_pair do |elem, value| tmpsizer = Wx::BoxSizer.new(Wx::HORIZONTAL) - Wx::StaticText.new(tmpsizer, Wx::ID_ANY, elem) - self.send(elem.gsub(/ /, ''), Wx::TextCtrl.new(tmpsizer, Wx::ID_ANY, value.to_s)) + tmpsizer.add(Wx::StaticText.new(self, + Wx::ID_ANY, + elem), + flag = Wx::EXPAND|Wx::ALIGN_LEFT) + elemCtrl = Wx::TextCtrl.new(self, + Wx::ID_ANY, + value.to_s) + tmpsizer.add(elemCtrl, flag = Wx::EXPAND|Wx::ALIGN_RIGHT) + + rubyname = elem.gsub(/ /, '') + create_method( "@#{rubyname}=".to_sym ) { |val| + elemCtrl.set_value(val) + } + create_method( "#{rubyname}".to_sym ) { + elemCtrl.get_value + } @sizer.add(tmpsizer) end + @sizer.set_size_hints(self) end end end