Closes #16 : Reusable tileset properties widget

This commit is contained in:
2014-05-06 23:47:50 -07:00
parent 3feee8cb8e
commit 15f731461c
2 changed files with 43 additions and 11 deletions

View File

@@ -40,11 +40,26 @@ module Tailor
def init_mainpanel def init_mainpanel
@mainPanel = Wx::Panel.new(self) @mainPanel = Wx::Panel.new(self)
@mainPanelSizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
end end
def on_file_new 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 end
def on_file_open def on_file_open
@@ -57,6 +72,8 @@ module Tailor
end end
def on_file_close def on_file_close
@mainPanel.set_sizer(nil)
@mainPanelSizer = nil
end end
def on_help_about def on_help_about

View File

@@ -3,13 +3,12 @@ require 'wx'
module Tailor module Tailor
module GUI module GUI
class TilesetProperties < Wx::Panel class TilesetProperties < Wx::Panel
def initialize(parent = nil, def create_method( name, &block )
id = Wx::ID_ANY, self.class.send( :define_method, name, &block )
pos = Wx::DEFAULT_POSITION, end
size = Wx::DEFAULT_SIZE,
style = Wx::TAB_TRAVERSAL, def initialize(*args)
name = "TilesetProperties") super(*args)
super(parent, id, pos, size, style, name)
values = { values = {
"Tile X" => 32, "Tile X" => 32,
"Tile Y" => 32, "Tile Y" => 32,
@@ -19,12 +18,28 @@ module Tailor
"Space Y" => 0 "Space Y" => 0
} }
@sizer = Wx::BoxSizer.new(Wx::VERTICAL) @sizer = Wx::BoxSizer.new(Wx::VERTICAL)
self.set_sizer(@sizer)
values.each_pair do |elem, value| values.each_pair do |elem, value|
tmpsizer = Wx::BoxSizer.new(Wx::HORIZONTAL) tmpsizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
Wx::StaticText.new(tmpsizer, Wx::ID_ANY, elem) tmpsizer.add(Wx::StaticText.new(self,
self.send(elem.gsub(/ /, ''), Wx::TextCtrl.new(tmpsizer, Wx::ID_ANY, value.to_s)) 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) @sizer.add(tmpsizer)
end end
@sizer.set_size_hints(self)
end end
end end
end end