Add ContiguousFillCommand to switch Contiguous option with a shortcut

This commit is contained in:
David Capello 2017-01-09 13:04:00 -03:00
parent d9ae6812d5
commit 8691345f03
6 changed files with 80 additions and 5 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Aseprite -->
<!-- Copyright (C) 2001-2016 by David Capello -->
<!-- Copyright (C) 2001-2017 by David Capello -->
<gui version="1.1.12-dev">
<!-- Keyboard shortcuts -->
<keyboard version="1">
@ -388,6 +388,7 @@
<!-- Commands not associated to menu items and without shortcuts by default -->
<key command="PixelPerfectMode" />
<key command="ContiguousFill" />
<key command="SetInkType"><param name="type" value="simple" /></key>
<key command="SetInkType"><param name="type" value="alpha-compositing" /></key>
<key command="SetInkType"><param name="type" value="copy-color" /></key>

View File

@ -1,5 +1,5 @@
# Aseprite
# Copyright (C) 2001-2016 David Capello
# Copyright (C) 2001-2017 David Capello
# Generate a ui::Widget for each widget in a XML file
file(GLOB widget_files ${CMAKE_SOURCE_DIR}/data/widgets/*.xml)
@ -200,6 +200,7 @@ add_library(app-lib
commands/cmd_clear_cel.cpp
commands/cmd_close_file.cpp
commands/cmd_color_quantization.cpp
commands/cmd_contiguous_fill.cpp
commands/cmd_copy.cpp
commands/cmd_copy_cel.cpp
commands/cmd_copy_merged.cpp

View File

@ -0,0 +1,60 @@
// Aseprite
// Copyright (C) 2017 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "app/app.h"
#include "app/commands/command.h"
#include "app/pref/preferences.h"
#include "app/tools/tool.h"
namespace app {
class ContiguousFillCommand : public Command {
public:
ContiguousFillCommand();
Command* clone() const override { return new ContiguousFillCommand(*this); }
protected:
bool onChecked(Context* context) override;
void onExecute(Context* context) override;
};
ContiguousFillCommand::ContiguousFillCommand()
: Command("ContiguousFill",
"Switch Contiguous Fill",
CmdUIOnlyFlag)
{
}
bool ContiguousFillCommand::onChecked(Context* ctx)
{
tools::Tool* tool = App::instance()->activeTool();
if (!tool)
return false;
auto& toolPref = Preferences::instance().tool(tool);
return toolPref.contiguous();
}
void ContiguousFillCommand::onExecute(Context* ctx)
{
tools::Tool* tool = App::instance()->activeTool();
if (!tool)
return;
auto& toolPref = Preferences::instance().tool(tool);
toolPref.contiguous(!toolPref.contiguous());
}
Command* CommandFactory::createContiguousFillCommand()
{
return new ContiguousFillCommand;
}
} // namespace app

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2016 David Capello
// Copyright (C) 2001-2017 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -21,6 +21,7 @@ FOR_EACH_COMMAND(CloseAllFiles)
FOR_EACH_COMMAND(CloseFile)
FOR_EACH_COMMAND(ColorCurve)
FOR_EACH_COMMAND(ColorQuantization)
FOR_EACH_COMMAND(ContiguousFill)
FOR_EACH_COMMAND(ConvolutionMatrix)
FOR_EACH_COMMAND(Copy)
FOR_EACH_COMMAND(CopyCel)

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2016 David Capello
// Copyright (C) 2001-2017 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -1480,6 +1480,15 @@ void ContextBar::onToolSetFreehandAlgorithm()
}
}
void ContextBar::onToolSetContiguous()
{
Tool* tool = App::instance()->activeTool();
if (tool) {
m_contiguous->setSelected(
Preferences::instance().tool(tool).contiguous());
}
}
void ContextBar::onBrushSizeChange()
{
if (m_activeBrush->type() != kImageBrushType)
@ -1564,6 +1573,7 @@ void ContextBar::updateForTool(tools::Tool* tool)
m_angleConn = brushPref->angle.AfterChange.connect(base::Bind<void>(&ContextBar::onBrushAngleChange, this));
m_opacityConn = toolPref->opacity.AfterChange.connect(&ContextBar::onToolSetOpacity, this);
m_freehandAlgoConn = toolPref->freehandAlgorithm.AfterChange.connect(base::Bind<void>(&ContextBar::onToolSetFreehandAlgorithm, this));
m_contiguousConn = toolPref->contiguous.AfterChange.connect(base::Bind<void>(&ContextBar::onToolSetContiguous, this));
}
if (tool)

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2016 David Capello
// Copyright (C) 2001-2017 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -77,6 +77,7 @@ namespace app {
void onSizeHint(ui::SizeHintEvent& ev) override;
void onToolSetOpacity(const int& newOpacity);
void onToolSetFreehandAlgorithm();
void onToolSetContiguous();
private:
void onBrushSizeChange();
@ -145,6 +146,7 @@ namespace app {
obs::scoped_connection m_angleConn;
obs::scoped_connection m_opacityConn;
obs::scoped_connection m_freehandAlgoConn;
obs::scoped_connection m_contiguousConn;
};
} // namespace app