mirror of
https://github.com/aseprite/aseprite.git
synced 2025-02-11 00:40:08 +00:00
Merge branch 'save-palette-as-preset'
This commit is contained in:
commit
d4072fac94
@ -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">
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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()
|
||||
|
@ -34,6 +34,7 @@ namespace app {
|
||||
|
||||
ui::TooltipManager m_tooltips;
|
||||
obs::scoped_connection m_extPaletteChanges;
|
||||
obs::scoped_connection m_extPresetsChanges;
|
||||
};
|
||||
|
||||
} // namespace app
|
||||
|
@ -211,8 +211,10 @@ void ResourcesListBox::onTick()
|
||||
listItem.release();
|
||||
}
|
||||
|
||||
if (m_resourcesLoader->isDone())
|
||||
if (m_resourcesLoader->isDone()) {
|
||||
FinishLoading();
|
||||
stop();
|
||||
}
|
||||
}
|
||||
|
||||
void ResourcesListBox::stop()
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user