Add command to open/close layer groups (Shift+E)

This commit is contained in:
David Capello 2017-01-09 14:39:29 -03:00
parent 042b427f49
commit e2595f3cce
4 changed files with 79 additions and 4 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.2-dev">
<!-- Keyboard shortcuts -->
<keyboard version="1">
@ -61,6 +61,7 @@
<!-- Layer -->
<key command="LayerProperties" shortcut="Shift+P" />
<key command="LayerVisibility" shortcut="Shift+X" />
<key command="OpenGroup" shortcut="Shift+E" />
<key command="NewLayer" shortcut="Shift+N" />
<key command="NewLayer" shortcut="Alt+Shift+N">
<param name="group" value="true" />
@ -679,6 +680,7 @@
<menu text="&amp;Layer">
<item command="LayerProperties" text="&amp;Properties..." />
<item command="LayerVisibility" text="&amp;Visible" />
<item command="OpenGroup" text="&amp;Open Group" />
<separator />
<item command="NewLayer" text="&amp;New Layer" />
<item command="NewLayer" text="New &amp;Group">

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)
@ -257,6 +257,7 @@ add_library(app-lib
commands/cmd_onionskin.cpp
commands/cmd_open_browser.cpp
commands/cmd_open_file.cpp
commands/cmd_open_group.cpp
commands/cmd_open_in_folder.cpp
commands/cmd_open_with_app.cpp
commands/cmd_options.cpp

View File

@ -0,0 +1,71 @@
// 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/commands/command.h"
#include "app/context_access.h"
#include "app/modules/gui.h"
#include "doc/layer.h"
namespace app {
using namespace ui;
class OpenGroupCommand : public Command {
public:
OpenGroupCommand();
Command* clone() const override { return new OpenGroupCommand(*this); }
protected:
bool onEnabled(Context* context) override;
bool onChecked(Context* context) override;
void onExecute(Context* context) override;
// TODO onGetFriendlyName() needs the Context so we can return "Open
// Group" or "Close Group" depending on the context
//std::string onGetFriendlyName() const override;
};
OpenGroupCommand::OpenGroupCommand()
: Command("OpenGroup",
"Open/Close Group",
CmdRecordableFlag)
{
}
bool OpenGroupCommand::onEnabled(Context* context)
{
const ContextReader reader(context);
const Layer* layer = reader.layer();
return (layer && layer->isGroup());
}
bool OpenGroupCommand::onChecked(Context* context)
{
const ContextReader reader(context);
const Layer* layer = reader.layer();
return (layer && layer->isExpanded());
}
void OpenGroupCommand::onExecute(Context* context)
{
ContextWriter writer(context);
Layer* layer = writer.layer();
layer->setCollapsed(layer->isExpanded());
update_screen_for_document(writer.document());
}
Command* CommandFactory::createOpenGroupCommand()
{
return new OpenGroupCommand;
}
} // 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.
@ -82,6 +82,7 @@ FOR_EACH_COMMAND(NewLayer)
FOR_EACH_COMMAND(NewSpriteFromSelection)
FOR_EACH_COMMAND(OpenBrowser)
FOR_EACH_COMMAND(OpenFile)
FOR_EACH_COMMAND(OpenGroup)
FOR_EACH_COMMAND(OpenInFolder)
FOR_EACH_COMMAND(OpenWithApp)
FOR_EACH_COMMAND(Options)
@ -121,7 +122,6 @@ FOR_EACH_COMMAND(ShowExtras)
FOR_EACH_COMMAND(ShowGrid)
FOR_EACH_COMMAND(ShowLayerEdges)
FOR_EACH_COMMAND(ShowOnionSkin)
FOR_EACH_COMMAND(ToggleTimelineThumbnails)
FOR_EACH_COMMAND(ShowPixelGrid)
FOR_EACH_COMMAND(ShowSelectionEdges)
FOR_EACH_COMMAND(SnapToGrid)
@ -132,6 +132,7 @@ FOR_EACH_COMMAND(SymmetryMode)
FOR_EACH_COMMAND(TiledMode)
FOR_EACH_COMMAND(Timeline)
FOR_EACH_COMMAND(TogglePreview)
FOR_EACH_COMMAND(ToggleTimelineThumbnails)
FOR_EACH_COMMAND(Undo)
FOR_EACH_COMMAND(UndoHistory)
FOR_EACH_COMMAND(UnlinkCel)