diff --git a/data/pref.xml b/data/pref.xml
index 14854954b..a57971d9b 100644
--- a/data/pref.xml
+++ b/data/pref.xml
@@ -147,6 +147,7 @@
+
diff --git a/data/widgets/export_sprite_sheet.xml b/data/widgets/export_sprite_sheet.xml
index 5021b83ad..7e259df49 100644
--- a/data/widgets/export_sprite_sheet.xml
+++ b/data/widgets/export_sprite_sheet.xml
@@ -24,6 +24,8 @@
+
+
diff --git a/src/app/app.cpp b/src/app/app.cpp
index 7a7c9665d..09d44c1f3 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -434,7 +434,7 @@ void App::initialize(const AppOptions& options)
if (trim)
m_exporter->setTrimCels(true);
- m_exporter->exportSheet();
+ base::UniquePtr spriteSheet(m_exporter->exportSheet());
m_exporter.reset(NULL);
PRINTF("Export sprite sheet: Done\n");
diff --git a/src/app/commands/cmd_export_sprite_sheet.cpp b/src/app/commands/cmd_export_sprite_sheet.cpp
index cad170132..0edd618aa 100644
--- a/src/app/commands/cmd_export_sprite_sheet.cpp
+++ b/src/app/commands/cmd_export_sprite_sheet.cpp
@@ -121,6 +121,8 @@ public:
if (m_docPref.spriteSheet.type() != app::gen::SpriteSheetType::NONE)
sheetType()->setSelectedItemIndex((int)m_docPref.spriteSheet.type()-1);
+ openGenerated()->setSelected(m_docPref.spriteSheet.openGenerated());
+
for (int i=2; i<=8192; i*=2) {
std::string value = base::convert_to(i);
if (i >= m_sprite->width()) fitWidth()->addItem(value);
@@ -210,6 +212,10 @@ public:
return std::string();
}
+ bool openGeneratedValue() {
+ return openGenerated()->isSelected();
+ }
+
protected:
void onSheetTypeChange() {
@@ -369,6 +375,7 @@ void ExportSpriteSheetCommand::onExecute(Context* context)
docPref.spriteSheet.bestFit(window.bestFitValue());
docPref.spriteSheet.textureFilename(window.filenameValue());
docPref.spriteSheet.dataFilename(window.dataFilenameValue());
+ docPref.spriteSheet.openGenerated(window.openGeneratedValue());
}
m_type = docPref.spriteSheet.type();
@@ -418,11 +425,19 @@ void ExportSpriteSheetCommand::onExecute(Context* context)
exporter.setTextureHeight(sheet_h);
exporter.setTexturePack(true);
exporter.addDocument(document);
- exporter.exportSheet();
+
+ base::UniquePtr newDocument(exporter.exportSheet());
+ if (!newDocument)
+ return;
StatusBar* statusbar = StatusBar::instance();
if (statusbar)
statusbar->showTip(1000, "Sprite Sheet Generated");
+
+ if (docPref.spriteSheet.openGenerated()) {
+ newDocument->setContext(context);
+ newDocument.release();
+ }
}
Command* CommandFactory::createExportSpriteSheetCommand()
diff --git a/src/app/document_exporter.h b/src/app/document_exporter.h
index 480f9d8da..b627f290c 100644
--- a/src/app/document_exporter.h
+++ b/src/app/document_exporter.h
@@ -95,7 +95,7 @@ namespace app {
m_documents.push_back(Item(document, layer));
}
- void exportSheet();
+ Document* exportSheet();
private:
class Sample;