[aseprite] 25/308: Convert ink menu into a popup menu specified in gui.xml
Tobias Hansen
thansen at moszumanska.debian.org
Tue Mar 8 02:44:48 UTC 2016
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit e8dd1526f6173690528438394cbda287af4d492e
Author: David Capello <davidcapello at gmail.com>
Date: Fri Nov 27 11:36:27 2015 -0300
Convert ink menu into a popup menu specified in gui.xml
---
data/gui.xml | 21 +++++++++++
src/app/CMakeLists.txt | 1 +
src/app/app_menus.cpp | 1 +
src/app/app_menus.h | 2 +
src/app/commands/cmd_set_ink_type.cpp | 7 ++++
src/app/commands/cmd_set_same_ink.cpp | 69 +++++++++++++++++++++++++++++++++++
src/app/commands/commands_list.h | 1 +
src/app/ui/context_bar.cpp | 57 ++---------------------------
8 files changed, 106 insertions(+), 53 deletions(-)
diff --git a/data/gui.xml b/data/gui.xml
index a464f84..da9c5c0 100644
--- a/data/gui.xml
+++ b/data/gui.xml
@@ -373,6 +373,7 @@
<key command="SetInkType"><param name="type" value="copy-color" /></key>
<key command="SetInkType"><param name="type" value="lock-alpha" /></key>
<key command="SetInkType"><param name="type" value="shading" /></key>
+ <key command="SetSameInk" />
</commands>
<!-- Keyboard shortcuts to select tools -->
@@ -846,6 +847,26 @@
<item command="ColorQuantization" text="Create Palette from Current Sprite" />
</menu>
+ <menu id="ink_popup">
+ <item command="SetInkType" text="Simple Ink">
+ <param name="type" value="simple" />
+ </item>
+ <item command="SetInkType" text="Alpha Compositing">
+ <param name="type" value="alpha-compositing" />
+ </item>
+ <item command="SetInkType" text="Copy Alpha+Color">
+ <param name="type" value="copy-color" />
+ </item>
+ <item command="SetInkType" text="Lock Alpha">
+ <param name="type" value="lock-alpha" />
+ </item>
+ <item command="SetInkType" text="Shading">
+ <param name="type" value="shading" />
+ </item>
+ <separator />
+ <item command="SetSameInk" text="Same in all Tools" />
+ </menu>
+
</menus>
<!-- tools -->
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index c75ecaf..e6c23e2 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -247,6 +247,7 @@ add_library(app-lib
commands/cmd_set_loop_section.cpp
commands/cmd_set_palette.cpp
commands/cmd_set_palette_entry_size.cpp
+ commands/cmd_set_same_ink.cpp
commands/cmd_sprite_properties.cpp
commands/cmd_sprite_size.cpp
commands/cmd_switch_colors.cpp
diff --git a/src/app/app_menus.cpp b/src/app/app_menus.cpp
index 26beff7..e3d64d9 100644
--- a/src/app/app_menus.cpp
+++ b/src/app/app_menus.cpp
@@ -89,6 +89,7 @@ void AppMenus::reload()
m_celMovementPopupMenu.reset(loadMenuById(handle, "cel_movement_popup"));
m_frameTagPopupMenu.reset(loadMenuById(handle, "frame_tag_popup"));
m_palettePopupMenu.reset(loadMenuById(handle, "palette_popup"));
+ m_inkPopupMenu.reset(loadMenuById(handle, "ink_popup"));
////////////////////////////////////////
// Load keyboard shortcuts for commands
diff --git a/src/app/app_menus.h b/src/app/app_menus.h
index 4347cf8..9b68608 100644
--- a/src/app/app_menus.h
+++ b/src/app/app_menus.h
@@ -47,6 +47,7 @@ namespace app {
Menu* getCelMovementPopupMenu() { return m_celMovementPopupMenu; }
Menu* getFrameTagPopupMenu() { return m_frameTagPopupMenu; }
Menu* getPalettePopupMenu() { return m_palettePopupMenu; }
+ Menu* getInkPopupMenu() { return m_inkPopupMenu; }
void applyShortcutToMenuitemsWithCommand(Command* command, const Params& params, Key* key);
@@ -67,6 +68,7 @@ namespace app {
base::UniquePtr<Menu> m_celMovementPopupMenu;
base::UniquePtr<Menu> m_frameTagPopupMenu;
base::UniquePtr<Menu> m_palettePopupMenu;
+ base::UniquePtr<Menu> m_inkPopupMenu;
ScopedConnection m_recentFilesConn;
};
diff --git a/src/app/commands/cmd_set_ink_type.cpp b/src/app/commands/cmd_set_ink_type.cpp
index b53774c..fe2eec1 100644
--- a/src/app/commands/cmd_set_ink_type.cpp
+++ b/src/app/commands/cmd_set_ink_type.cpp
@@ -26,6 +26,7 @@ public:
protected:
void onLoadParams(const Params& params) override;
+ bool onChecked(Context* context) override;
void onExecute(Context* context) override;
std::string onGetFriendlyName() const override;
@@ -58,6 +59,12 @@ void SetInkTypeCommand::onLoadParams(const Params& params)
m_type = tools::InkType::DEFAULT;
}
+bool SetInkTypeCommand::onChecked(Context* context)
+{
+ tools::Tool* tool = App::instance()->activeTool();
+ return (Preferences::instance().tool(tool).ink() == m_type);
+}
+
void SetInkTypeCommand::onExecute(Context* context)
{
App::instance()
diff --git a/src/app/commands/cmd_set_same_ink.cpp b/src/app/commands/cmd_set_same_ink.cpp
new file mode 100644
index 0000000..95b3dd2
--- /dev/null
+++ b/src/app/commands/cmd_set_same_ink.cpp
@@ -0,0 +1,69 @@
+// Aseprite
+// Copyright (C) 2001-2015 David Capello
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation.
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "app/app.h"
+#include "app/commands/command.h"
+#include "app/commands/commands.h"
+#include "app/commands/params.h"
+#include "app/pref/preferences.h"
+#include "app/tools/tool.h"
+#include "app/tools/tool_box.h"
+
+namespace app {
+
+class SetSameInkCommand : public Command {
+public:
+ SetSameInkCommand();
+ Command* clone() const override { return new SetSameInkCommand(*this); }
+
+protected:
+ bool onChecked(Context* context) override;
+ void onExecute(Context* context) override;
+};
+
+SetSameInkCommand::SetSameInkCommand()
+ : Command("SetSameInk",
+ "Same Ink in All Tools",
+ CmdUIOnlyFlag)
+{
+}
+
+bool SetSameInkCommand::onChecked(Context* context)
+{
+ return Preferences::instance().shared.shareInk();
+}
+
+void SetSameInkCommand::onExecute(Context* context)
+{
+ Preferences& pref = Preferences::instance();
+ bool newState = !pref.shared.shareInk();
+ pref.shared.shareInk(newState);
+
+ if (newState) {
+ tools::Tool* activeTool = App::instance()->activeTool();
+ tools::InkType inkType = pref.tool(activeTool).ink();
+ int opacity = pref.tool(activeTool).opacity();
+
+ for (tools::Tool* tool : *App::instance()->getToolBox()) {
+ if (tool != activeTool) {
+ pref.tool(tool).ink(inkType);
+ pref.tool(tool).opacity(opacity);
+ }
+ }
+ }
+}
+
+Command* CommandFactory::createSetSameInkCommand()
+{
+ return new SetSameInkCommand;
+}
+
+} // namespace app
diff --git a/src/app/commands/commands_list.h b/src/app/commands/commands_list.h
index fb778f0..599a115 100644
--- a/src/app/commands/commands_list.h
+++ b/src/app/commands/commands_list.h
@@ -109,6 +109,7 @@ FOR_EACH_COMMAND(SetInkType)
FOR_EACH_COMMAND(SetLoopSection)
FOR_EACH_COMMAND(SetPalette)
FOR_EACH_COMMAND(SetPaletteEntrySize)
+FOR_EACH_COMMAND(SetSameInk)
FOR_EACH_COMMAND(ShowGrid)
FOR_EACH_COMMAND(ShowOnionSkin)
FOR_EACH_COMMAND(ShowPixelGrid)
diff --git a/src/app/ui/context_bar.cpp b/src/app/ui/context_bar.cpp
index 86408c7..67e7ce3 100644
--- a/src/app/ui/context_bar.cpp
+++ b/src/app/ui/context_bar.cpp
@@ -12,6 +12,7 @@
#include "app/ui/context_bar.h"
#include "app/app.h"
+#include "app/app_menus.h"
#include "app/color_utils.h"
#include "app/commands/commands.h"
#include "app/document.h"
@@ -376,63 +377,13 @@ protected:
gfx::Rect bounds = getBounds();
- Menu menu;
- MenuItem
- simple(tools::ink_type_to_string(tools::InkType::SIMPLE)),
- alphacompo(tools::ink_type_to_string(tools::InkType::ALPHA_COMPOSITING)),
- copycolor(tools::ink_type_to_string(tools::InkType::COPY_COLOR)),
- lockalpha(tools::ink_type_to_string(tools::InkType::LOCK_ALPHA)),
- shading(tools::ink_type_to_string(tools::InkType::SHADING)),
- alltools("Same in all Tools");
- menu.addChild(&simple);
- menu.addChild(&alphacompo);
- menu.addChild(©color);
- menu.addChild(&lockalpha);
- menu.addChild(&shading);
- menu.addChild(new MenuSeparator);
- menu.addChild(&alltools);
-
- Tool* tool = App::instance()->activeTool();
- switch (Preferences::instance().tool(tool).ink()) {
- case tools::InkType::SIMPLE: simple.setSelected(true); break;
- case tools::InkType::ALPHA_COMPOSITING: alphacompo.setSelected(true); break;
- case tools::InkType::COPY_COLOR: copycolor.setSelected(true); break;
- case tools::InkType::LOCK_ALPHA: lockalpha.setSelected(true); break;
- case tools::InkType::SHADING: shading.setSelected(true); break;
- }
- alltools.setSelected(Preferences::instance().shared.shareInk());
-
- simple.Click.connect(Bind<void>(&InkTypeField::setInkType, this, InkType::SIMPLE));
- alphacompo.Click.connect(Bind<void>(&InkTypeField::setInkType, this, InkType::ALPHA_COMPOSITING));
- copycolor.Click.connect(Bind<void>(&InkTypeField::setInkType, this, InkType::COPY_COLOR));
- lockalpha.Click.connect(Bind<void>(&InkTypeField::setInkType, this, InkType::LOCK_ALPHA));
- shading.Click.connect(Bind<void>(&InkTypeField::setInkType, this, InkType::SHADING));
- alltools.Click.connect(Bind<void>(&InkTypeField::onSameInAllTools, this));
-
- menu.showPopup(gfx::Point(bounds.x, bounds.y+bounds.h));
+ AppMenus::instance()
+ ->getInkPopupMenu()
+ ->showPopup(gfx::Point(bounds.x, bounds.y+bounds.h));
deselectItems();
}
- void onSameInAllTools() {
- Preferences& pref = Preferences::instance();
- bool newState = !pref.shared.shareInk();
- pref.shared.shareInk(newState);
-
- if (newState) {
- Tool* activeTool = App::instance()->activeTool();
- InkType inkType = pref.tool(activeTool).ink();
- int opacity = pref.tool(activeTool).opacity();
-
- for (Tool* tool : *App::instance()->getToolBox()) {
- if (tool != activeTool) {
- pref.tool(tool).ink(inkType);
- pref.tool(tool).opacity(opacity);
- }
- }
- }
- }
-
ContextBar* m_owner;
};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list