Add options to configure default extension in other commands (fix #1683)

Maybe too much configuration for my taste, but well, more configuration
is good.
This commit is contained in:
David Capello 2018-03-19 15:53:02 -03:00
parent edc79dc886
commit 0429282967
6 changed files with 56 additions and 21 deletions

View File

@ -260,9 +260,12 @@
</section>
<section id="export_file">
<option id="show_overwrite_files_alert" type="bool" default="true" />
<option id="image_default_extension" type="std::string" default="&quot;png&quot;" />
<option id="animation_default_extension" type="std::string" default="&quot;gif&quot;" />
</section>
<section id="sprite_sheet">
<option id="show_overwrite_files_alert" type="bool" default="true" />
<option id="default_extension" type="std::string" default="&quot;png&quot;" />
</section>
<section id="gif">
<option id="show_alert" type="bool" default="true" />

View File

@ -856,7 +856,11 @@ show_full_path_tooltip = <<<END
Uncheck this option if you would prefer to hide
full path on UI (e.g. useful for live streaming)
END
default_extension = Default extension when saving files
default_extension_for = Default extension for:
save_default_extension = File > Save:
export_image_default_extension = File > Export (one image):
export_animation_default_extension = File > Export (animation):
export_sprite_sheet_default_extension = File > Export Sprite Sheet:
recent_files = Recent Items:
recent_files_tooltip = Number of recent files and folders
clear_recent_files = Clear

View File

@ -79,10 +79,22 @@
<!-- Files -->
<vbox id="section_files">
<separator text="@.section_files" horizontal="true" />
<hbox>
<label text="@.default_extension" />
<label text="@.default_extension_for" />
<grid columns="2">
<label text="@.save_default_extension" />
<combobox id="default_extension" />
</hbox>
<label text="@.export_image_default_extension" />
<combobox id="export_image_default_extension" />
<label text="@.export_animation_default_extension" />
<combobox id="export_animation_default_extension" />
<label text="@.export_sprite_sheet_default_extension" />
<combobox id="export_sprite_sheet_default_extension" />
</grid>
<grid columns="2">
<label text="@.recent_files" />
<hbox>

View File

@ -246,10 +246,12 @@ public:
if (m_filename.empty() ||
m_filename == kSpecifiedFilename) {
if (base::utf8_icmp(base::get_file_extension(site.document()->filename()), "png") == 0)
m_filename = base + "-sheet.png";
std::string defExt = Preferences::instance().spriteSheet.defaultExtension();
if (base::utf8_icmp(base::get_file_extension(site.document()->filename()), defExt) == 0)
m_filename = base + "-sheet." + defExt;
else
m_filename = base + ".png";
m_filename = base + "." + defExt;
}
if (m_dataFilename.empty() ||

View File

@ -143,15 +143,10 @@ public:
sectionListbox()->Change.connect(base::Bind<void>(&OptionsWindow::onChangeSection, this));
// Default extension to save files
{
std::string defExt = m_pref.saveFile.defaultExtension();
base::paths exts = get_writable_extensions();
for (const auto& e : exts) {
int index = defaultExtension()->addItem(e);
if (base::utf8_icmp(e, defExt) == 0)
defaultExtension()->setSelectedItemIndex(index);
}
}
fillExtensionsCombobox(defaultExtension(), m_pref.saveFile.defaultExtension());
fillExtensionsCombobox(exportImageDefaultExtension(), m_pref.exportFile.imageDefaultExtension());
fillExtensionsCombobox(exportAnimationDefaultExtension(), m_pref.exportFile.animationDefaultExtension());
fillExtensionsCombobox(exportSpriteSheetDefaultExtension(), m_pref.spriteSheet.defaultExtension());
// Number of recent items
recentFiles()->setValue(m_pref.general.recentItems());
@ -395,10 +390,10 @@ public:
m_pref.general.rewindOnStop(rewindOnStop()->isSelected());
m_globPref.timeline.firstFrame(firstFrame()->textInt());
m_pref.general.showFullPath(showFullPath()->isSelected());
{
Widget* defExt = defaultExtension()->getSelectedItem();
m_pref.saveFile.defaultExtension(defExt ? defExt->text(): std::string());
}
m_pref.saveFile.defaultExtension(getExtension(defaultExtension()));
m_pref.exportFile.imageDefaultExtension(getExtension(exportImageDefaultExtension()));
m_pref.exportFile.animationDefaultExtension(getExtension(exportAnimationDefaultExtension()));
m_pref.spriteSheet.defaultExtension(getExtension(exportSpriteSheetDefaultExtension()));
{
const int limit = recentFiles()->getValue();
m_pref.general.recentItems(limit);
@ -546,6 +541,22 @@ public:
private:
void fillExtensionsCombobox(ui::ComboBox* combobox,
const std::string& defExt) {
base::paths exts = get_writable_extensions();
for (const auto& e : exts) {
int index = combobox->addItem(e);
if (base::utf8_icmp(e, defExt) == 0)
combobox->setSelectedItemIndex(index);
}
}
std::string getExtension(ui::ComboBox* combobox) {
Widget* defExt = combobox->getSelectedItem();
ASSERT(defExt);
return (defExt ? defExt->text(): std::string());
}
void selectScalingItems() {
// Screen/UI Scale
screenScale()->setSelectedItemIndex(

View File

@ -29,6 +29,8 @@ ExportFileWindow::ExportFileWindow(const Document* doc)
, m_docPref(Preferences::instance().document(doc))
, m_preferredResize(1)
{
auto& pref = Preferences::instance();
// Is a default output filename in the preferences?
if (!m_docPref.saveCopy.filename().empty()) {
setOutputFilename(m_docPref.saveCopy.filename());
@ -36,7 +38,8 @@ ExportFileWindow::ExportFileWindow(const Document* doc)
else {
std::string newFn = base::replace_extension(
doc->filename(),
doc->sprite()->totalFrames() > 1 ? "gif": "png");
(doc->sprite()->totalFrames() > 1 ? pref.exportFile.animationDefaultExtension():
pref.exportFile.imageDefaultExtension()));
if (newFn == doc->filename()) {
newFn = base::join_path(
base::get_file_path(newFn),