Merge branch 'save-palette-as-preset'

This commit is contained in:
David Capello 2021-01-05 11:48:57 -03:00
commit d4072fac94
11 changed files with 42 additions and 13 deletions

View File

@ -1078,16 +1078,18 @@
<param name="type" value="normal-map-wheel" />
</item>
<separator />
<item command="ColorQuantization" text="@.create_palette_from_current_sprite" group="palette_generation" />
<item command="LoadPalette" text="@.load_palette" />
<item command="SavePalette" text="@.save_palette" />
<item command="LoadPalette" text="@.load_default_palette">
<param name="preset" value="default" />
</item>
<item command="SavePalette" text="@.save_palette" />
<item command="SavePalette" text="@.save_palette_as_preset">
<param name="saveAsPreset" value="true" />
</item>
<item command="SavePalette" text="@.save_as_default_palette" group="palette_files">
<param name="preset" value="default" />
</item>
<separator />
<item command="ColorQuantization" text="@.create_palette_from_current_sprite" group="palette_generation" />
</menu>
<menu id="ink_popup_menu">

View File

@ -1318,9 +1318,10 @@ ryb_color_wheel = RYB Color Wheel
normal_map_color_wheel = Normal Map Color Wheel
load_palette = L&oad Palette
save_palette = S&ave Palette
save_palette_as_preset = Save Palette as Preset
load_default_palette = Load Default Palette
save_as_default_palette = Save as Default Palette
create_palette_from_current_sprite = Create Palette from Current Sprite
save_as_default_palette = Save Palette as Default
create_palette_from_current_sprite = New Palette from Sprite
[palette_size]
title = Palette Size

View File

@ -124,6 +124,7 @@ namespace app {
obs::signal<void()> Exit;
obs::signal<void()> PaletteChange;
obs::signal<void()> ColorSpaceChange;
obs::signal<void()> PalettePresetsChange;
private:
class CoreModules;

View File

@ -8,6 +8,7 @@
#include "config.h"
#endif
#include "app/app.h"
#include "app/commands/cmd_set_palette.h"
#include "app/commands/commands.h"
#include "app/commands/params.h"
@ -35,6 +36,7 @@ protected:
private:
std::string m_preset;
bool m_saveAsPreset = false;
};
SavePaletteCommand::SavePaletteCommand()
@ -45,6 +47,7 @@ SavePaletteCommand::SavePaletteCommand()
void SavePaletteCommand::onLoadParams(const Params& params)
{
m_preset = params.get("preset");
m_saveAsPreset = (params.get("saveAsPreset") == "true");
}
void SavePaletteCommand::onExecute(Context* context)
@ -58,8 +61,9 @@ void SavePaletteCommand::onExecute(Context* context)
else {
base::paths exts = get_writable_palette_extensions();
base::paths selFilename;
std::string initialPath = (m_saveAsPreset ? get_preset_palettes_dir(): "");
if (!app::show_file_selector(
"Save Palette", "", exts,
"Save Palette", initialPath, exts,
FileSelectorType::Save, selFilename))
return;
@ -74,6 +78,9 @@ void SavePaletteCommand::onExecute(Context* context)
if (!context->activeDocument())
set_current_palette(palette, false);
}
if (m_saveAsPreset) {
App::instance()->PalettePresetsChange();
}
}
Command* CommandFactory::createSavePaletteCommand()

View File

@ -161,12 +161,7 @@ bool set_current_palette(const Palette *_palette, bool forced)
std::string get_preset_palette_filename(const std::string& preset,
const std::string& dot_extension)
{
ResourceFinder rf;
rf.includeUserDir(base::join_path("palettes", ".").c_str());
std::string palettesDir = rf.getFirstOrCreateDefault();
if (!base::is_directory(palettesDir))
base::make_directory(palettesDir);
std::string palettesDir = get_preset_palettes_dir();
return base::join_path(palettesDir, preset + dot_extension);
}
@ -176,4 +171,16 @@ std::string get_default_palette_preset_name()
return "default";
}
std::string get_preset_palettes_dir()
{
ResourceFinder rf;
rf.includeUserDir(base::join_path("palettes", ".").c_str());
std::string palettesDir = rf.getFirstOrCreateDefault();
if (!base::is_directory(palettesDir))
base::make_directory(palettesDir);
return palettesDir;
}
} // namespace app

View File

@ -33,6 +33,7 @@ namespace app {
std::string get_preset_palette_filename(const std::string& preset,
const std::string& dot_extension);
std::string get_default_palette_preset_name();
std::string get_preset_palettes_dir();
} // namespace app

View File

@ -42,6 +42,7 @@ PalettePopup::PalettePopup()
addChild(m_popup);
m_paletteListBox.DoubleClickItem.connect(base::Bind<void>(&PalettePopup::onLoadPal, this));
m_paletteListBox.FinishLoading.connect(base::Bind<void>(&PalettePopup::onSearchChange, this));
m_popup->search()->Change.connect(base::Bind<void>(&PalettePopup::onSearchChange, this));
m_popup->loadPal()->Click.connect(base::Bind<void>(&PalettePopup::onLoadPal, this));
m_popup->openFolder()->Click.connect(base::Bind<void>(&PalettePopup::onOpenFolder, this));

View File

@ -124,6 +124,9 @@ PalettesListBox::PalettesListBox()
m_extPaletteChanges =
App::instance()->extensions().PalettesChange.connect(
base::Bind<void>(&PalettesListBox::reload, this));
m_extPresetsChanges =
App::instance()->PalettePresetsChange.connect(
base::Bind<void>(&PalettesListBox::reload, this));
}
doc::Palette* PalettesListBox::selectedPalette()

View File

@ -34,6 +34,7 @@ namespace app {
ui::TooltipManager m_tooltips;
obs::scoped_connection m_extPaletteChanges;
obs::scoped_connection m_extPresetsChanges;
};
} // namespace app

View File

@ -211,9 +211,11 @@ void ResourcesListBox::onTick()
listItem.release();
}
if (m_resourcesLoader->isDone())
if (m_resourcesLoader->isDone()) {
FinishLoading();
stop();
}
}
void ResourcesListBox::stop()
{

View File

@ -9,6 +9,7 @@
#pragma once
#include "app/res/resources_loader.h"
#include "obs/signal.h"
#include "ui/listbox.h"
#include "ui/listitem.h"
#include "ui/timer.h"
@ -43,6 +44,8 @@ class ResourceListItem : public ui::ListItem {
void reload();
obs::signal<void()> FinishLoading;
protected:
virtual bool onProcessMessage(ui::Message* msg) override;
virtual void onChange() override;