Midstream on #8: Got the 'Load' button working (Save/Load, yay) and renamed the rest of the buttons
This commit is contained in:
@@ -23,15 +23,18 @@ module Tailor
|
|||||||
@tilesetProperties = Tailor::GUI::TilesetProperties.new(@panel, Wx::ID_ANY)
|
@tilesetProperties = Tailor::GUI::TilesetProperties.new(@panel, Wx::ID_ANY)
|
||||||
evt_tileprops_changed(@tilesetProperties) { |event| on_tilepropsChanged(event) }
|
evt_tileprops_changed(@tilesetProperties) { |event| on_tilepropsChanged(event) }
|
||||||
tmpversizer.add(@tilesetProperties, 0, flag = Wx::EXPAND|Wx::ALL)
|
tmpversizer.add(@tilesetProperties, 0, flag = Wx::EXPAND|Wx::ALL)
|
||||||
@cancelBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Cancel")
|
@cancelBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Close")
|
||||||
evt_button(@cancelBtn.get_id()) { |event| on_CancelClicked(event) }
|
evt_button(@cancelBtn.get_id()) { |event| on_CancelClicked(event) }
|
||||||
@importBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Import")
|
@importBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Import Image")
|
||||||
evt_button(@importBtn.get_id()) { |event| on_ImportClicked(event) }
|
evt_button(@importBtn.get_id()) { |event| on_ImportClicked(event) }
|
||||||
|
|
||||||
@exportBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Export")
|
@exportBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Export Images")
|
||||||
evt_button(@exportBtn.get_id()) { |event| on_ExportClicked(event) }
|
evt_button(@exportBtn.get_id()) { |event| on_ExportClicked(event) }
|
||||||
|
|
||||||
@saveBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Save")
|
@loadBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Load JSON")
|
||||||
|
evt_button(@loadBtn.get_id()) { |event| on_LoadClicked(event) }
|
||||||
|
|
||||||
|
@saveBtn = Wx::Button.new(@panel, Wx::ID_ANY, "Save JSON")
|
||||||
evt_button(@saveBtn.get_id()) { |event| on_SaveClicked(event) }
|
evt_button(@saveBtn.get_id()) { |event| on_SaveClicked(event) }
|
||||||
|
|
||||||
tmpversizer.add_spacer(20)
|
tmpversizer.add_spacer(20)
|
||||||
@@ -39,6 +42,8 @@ module Tailor
|
|||||||
tmpversizer.add_spacer(20)
|
tmpversizer.add_spacer(20)
|
||||||
tmpversizer.add(@exportBtn, 0, flag=Wx::EXPAND)
|
tmpversizer.add(@exportBtn, 0, flag=Wx::EXPAND)
|
||||||
tmpversizer.add_spacer(20)
|
tmpversizer.add_spacer(20)
|
||||||
|
tmpversizer.add(@loadBtn, 0, flag=Wx::EXPAND)
|
||||||
|
tmpversizer.add_spacer(20)
|
||||||
tmpversizer.add(@saveBtn, 0, flag=Wx::EXPAND)
|
tmpversizer.add(@saveBtn, 0, flag=Wx::EXPAND)
|
||||||
tmpversizer.add_spacer(20)
|
tmpversizer.add_spacer(20)
|
||||||
tmpversizer.add(@cancelBtn, 0, flag=Wx::EXPAND)
|
tmpversizer.add(@cancelBtn, 0, flag=Wx::EXPAND)
|
||||||
@@ -103,8 +108,8 @@ module Tailor
|
|||||||
:wildcard => wildcards,
|
:wildcard => wildcards,
|
||||||
:style => Wx::FD_FILE_MUST_EXIST | Wx::FD_PREVIEW )
|
:style => Wx::FD_FILE_MUST_EXIST | Wx::FD_PREVIEW )
|
||||||
if fd.show_modal == Wx::ID_OK
|
if fd.show_modal == Wx::ID_OK
|
||||||
@tilesetFilename = fd.get_path
|
|
||||||
@tilesetNames = []
|
@tilesetNames = []
|
||||||
|
@tilesetImage = Wx::Image.new(fd.get_path)
|
||||||
refresh_image
|
refresh_image
|
||||||
(0..(@tilesetSlicer.get_size)).each do |i|
|
(0..(@tilesetSlicer.get_size)).each do |i|
|
||||||
@tilesetNames << "Tile #{i}"
|
@tilesetNames << "Tile #{i}"
|
||||||
@@ -148,6 +153,26 @@ module Tailor
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def on_LoadClicked(event)
|
||||||
|
@tileset = Tailor::Tileset.new
|
||||||
|
wildcards = "*.json"
|
||||||
|
fd = Wx::FileDialog.new(self, "Select tileset to load",
|
||||||
|
:wildcard => wildcards,
|
||||||
|
:style => Wx::FD_FILE_MUST_EXIST)
|
||||||
|
if fd.show_modal == Wx::ID_OK
|
||||||
|
@tileset.from_json(JSON.parse(File.read(fd.get_path)))
|
||||||
|
# FIXME : This is redundant.
|
||||||
|
@tileset.tiles.each do |tile|
|
||||||
|
@tilesetNames << tile['name']
|
||||||
|
end
|
||||||
|
@tilesetImage = @tileset.image
|
||||||
|
@tileNameCtrl.disable
|
||||||
|
@tilesetSlicer.tileset = @tileset
|
||||||
|
@tilesetProperties.set_tileset(@tileset)
|
||||||
|
refresh_image
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def on_SaveClicked(event)
|
def on_SaveClicked(event)
|
||||||
wildcards = "*.json"
|
wildcards = "*.json"
|
||||||
fd = Wx::FileDialog.new(self, "Select tileset to import",
|
fd = Wx::FileDialog.new(self, "Select tileset to import",
|
||||||
@@ -208,7 +233,6 @@ module Tailor
|
|||||||
|
|
||||||
def refresh_image
|
def refresh_image
|
||||||
begin
|
begin
|
||||||
@tilesetImage = Wx::Image.new(@tilesetFilename)
|
|
||||||
if @tilesetImage.is_ok
|
if @tilesetImage.is_ok
|
||||||
@tilesetSlicer.set_image @tilesetImage
|
@tilesetSlicer.set_image @tilesetImage
|
||||||
# The + 20 here is a hack to make scroll bars go away where we don't want them
|
# The + 20 here is a hack to make scroll bars go away where we don't want them
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ module Tailor
|
|||||||
attr_accessor :space_y
|
attr_accessor :space_y
|
||||||
attr_accessor :pad_x
|
attr_accessor :pad_x
|
||||||
attr_accessor :pad_y
|
attr_accessor :pad_y
|
||||||
|
attr_accessor :tiles
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
self.image = nil
|
self.image = nil
|
||||||
@@ -27,7 +28,7 @@ module Tailor
|
|||||||
self.space_y = 0
|
self.space_y = 0
|
||||||
self.pad_x = 0
|
self.pad_x = 0
|
||||||
self.pad_y = 0
|
self.pad_y = 0
|
||||||
@tiles = []
|
self.tiles = []
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_tile(name, image)
|
def add_tile(name, image)
|
||||||
@@ -37,18 +38,20 @@ module Tailor
|
|||||||
throw TypeError("Tailor::Tileset::add_tile only accepts Wx::Image or Wx::Bitmap")
|
throw TypeError("Tailor::Tileset::add_tile only accepts Wx::Image or Wx::Bitmap")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@tiles << {"name" => name, "image" => image}
|
self.tiles << {"name" => name, "image" => image}
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_tile(elem)
|
def get_tile(elem)
|
||||||
if elem.instance_of?(String)
|
if elem.instance_of?(String)
|
||||||
@tiles.each do
|
self.tiles.each do
|
||||||
if tile['name'] == elem
|
if tile['name'] == elem
|
||||||
return tile['image']
|
return tile['image']
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elsif elem.instance_of?(Integer)
|
elsif elem.instance_of?(Integer)
|
||||||
return @tiles[elem]['image']
|
if elem <= self.tiles.size
|
||||||
|
return self.tiles[elem]['image']
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -60,6 +63,34 @@ module Tailor
|
|||||||
io_obj.write(JSON.pretty_generate(obj))
|
io_obj.write(JSON.pretty_generate(obj))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def from_json(js)
|
||||||
|
self.tileset_name = js['name']
|
||||||
|
self.license = js['license']
|
||||||
|
self.notes = js['notes']
|
||||||
|
self.tile_x = js['dimensions']['tile_x']
|
||||||
|
self.tile_y = js['dimensions']['tile_y']
|
||||||
|
self.space_x = js['dimensions']['space_x']
|
||||||
|
self.space_y = js['dimensions']['space_y']
|
||||||
|
self.pad_x = js['dimensions']['pad_x']
|
||||||
|
self.pad_y = js['dimensions']['pad_y']
|
||||||
|
StringIO.open do |iostream|
|
||||||
|
iostream.write(Base64.decode64(js['image']))
|
||||||
|
iostream.rewind
|
||||||
|
self.image = Wx::Image.read(iostream, Wx::BITMAP_TYPE_PNG)
|
||||||
|
end
|
||||||
|
self.tiles = []
|
||||||
|
js['tiles'].each do |tile|
|
||||||
|
StringIO.open do |iostream|
|
||||||
|
iostream.write(Base64.decode64(tile['image']))
|
||||||
|
iostream.rewind
|
||||||
|
self.tiles << {
|
||||||
|
'name' => tile['name'],
|
||||||
|
'image' => Wx::Image.read(iostream, Wx::BITMAP_TYPE_PNG)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def to_json(callback = nil)
|
def to_json(callback = nil)
|
||||||
obj = {
|
obj = {
|
||||||
"name" => self.tileset_name,
|
"name" => self.tileset_name,
|
||||||
@@ -88,7 +119,7 @@ module Tailor
|
|||||||
end
|
end
|
||||||
|
|
||||||
idx = 0
|
idx = 0
|
||||||
@tiles.each do |tile|
|
self.tiles.each do |tile|
|
||||||
StringIO.open do |iostream|
|
StringIO.open do |iostream|
|
||||||
if not callback.nil?
|
if not callback.nil?
|
||||||
callback.call("Converting to base64", tile['image'], tile['name'], idx)
|
callback.call("Converting to base64", tile['image'], tile['name'], idx)
|
||||||
@@ -106,5 +137,6 @@ module Tailor
|
|||||||
|
|
||||||
obj
|
obj
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user