From ea0cfdcd3d27bf33e73e537b71ccaeb6221f206e Mon Sep 17 00:00:00 2001 From: Andrew Kesterson Date: Fri, 23 May 2014 23:00:16 -0700 Subject: [PATCH] Midway on #8 : Export button now exports all split tiles into a directory --- lib/tailor/GUI/GridDisplay.rb | 4 +++- lib/tailor/GUI/TilesetEditor.rb | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/tailor/GUI/GridDisplay.rb b/lib/tailor/GUI/GridDisplay.rb index af0f47b..5daade5 100644 --- a/lib/tailor/GUI/GridDisplay.rb +++ b/lib/tailor/GUI/GridDisplay.rb @@ -116,8 +116,10 @@ module Tailor def get_tiles ret = [] @rectlist.each do |rect| - ret << @pristineImage.sub_bitmap(rect) + img = @pristineImage.sub_bitmap(rect) + ret << img end + ret end def get_selected_tile diff --git a/lib/tailor/GUI/TilesetEditor.rb b/lib/tailor/GUI/TilesetEditor.rb index 55b9069..c3427f8 100644 --- a/lib/tailor/GUI/TilesetEditor.rb +++ b/lib/tailor/GUI/TilesetEditor.rb @@ -110,12 +110,41 @@ module Tailor end def on_ExportClicked(event) + dirfinder = Wx::DirDialog.new(self, message = "Choose an export folder") + if dirfinder.show_modal == Wx::ID_OK + progdialog = Wx::ProgressDialog.new("Exporting...", + "Exporting...", + @tilesetSlicer.get_size - 1, + self, + style = Wx::PD_CAN_ABORT | Wx::PD_SMOOTH | Wx::PD_AUTO_HIDE) + dirname = dirfinder.get_path + tiles = @tilesetSlicer.get_tiles + (0..(tiles.size-1)).each do |i| + tile = tiles[i] + tileName = @tilesetNames[i] + filename = File.join(dirname, tileName) + ".png" + check = progdialog.update_and_check(i, "Exporting #{tileName} ... ") + + if not check[0] + next + elsif check[1] + Wx::MessageDialog.new(self, + "Export operation aborted by user!", + style = Wx::ICON_EXCLAMATION).show_modal + return + end + Wx::Image.from_bitmap(tile).save_file(filename) + end + end + end def on_SaveClicked(event) + end def on_tilepropsChanged(event) + return if @tilesetSlicer.get_size < 1 ret = Wx::MessageDialog.new(self, "Changing tile properties will reset all tile names. Continue?", "WARNING").show_modal