[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(&copycolor);
-    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