Closes #16 : Reusable tileset properties widget
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user