148 lines
5.4 KiB
C++
148 lines
5.4 KiB
C++
// This file is part of VSTGUI. It is subject to the license terms
|
|
// in the LICENSE file found in the top-level directory of this
|
|
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
|
|
|
|
#pragma once
|
|
|
|
#include "../../lib/cstring.h"
|
|
#include "interface.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
namespace VSTGUI {
|
|
namespace Standalone {
|
|
|
|
//------------------------------------------------------------------------
|
|
/** %Command definition
|
|
*
|
|
* Commands are automatically dispatched to the Application::IDelegate, the focus view controller
|
|
* or IWindowController instances if they implement the ICommandHandler interface.
|
|
*
|
|
* Commands are registered via IApplication::registerCommand.
|
|
*
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
struct Command
|
|
{
|
|
UTF8String group;
|
|
UTF8String name;
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
inline bool operator== (const Command& c1, const Command& c2)
|
|
{
|
|
return c1.group == c2.group && c1.name == c2.name;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
inline bool operator!= (const Command& c1, const Command& c2)
|
|
{
|
|
return c1.group != c2.group || c1.name != c2.name;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
/** Handler for commands
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
class ICommandHandler : public Interface
|
|
{
|
|
public:
|
|
/** Check if command can be handled. */
|
|
virtual bool canHandleCommand (const Command& command) = 0;
|
|
/** Handle command. */
|
|
virtual bool handleCommand (const Command& command) = 0;
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
/** predefined command groups
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
namespace CommandGroup {
|
|
|
|
static constexpr IdStringPtr Application = "Application";
|
|
static constexpr IdStringPtr File = "File";
|
|
static constexpr IdStringPtr Edit = "Edit";
|
|
static constexpr IdStringPtr Window = "Window";
|
|
static constexpr IdStringPtr Debug = "Debug";
|
|
|
|
//------------------------------------------------------------------------
|
|
} // CommandGroup
|
|
|
|
//------------------------------------------------------------------------
|
|
namespace CommandName {
|
|
|
|
static constexpr IdStringPtr About = "About";
|
|
static constexpr IdStringPtr Preferences = "Preferences...";
|
|
static constexpr IdStringPtr Quit = "Quit";
|
|
static constexpr IdStringPtr Help = "Help";
|
|
static constexpr IdStringPtr New = "New";
|
|
static constexpr IdStringPtr Open = "Open...";
|
|
static constexpr IdStringPtr Save = "Save";
|
|
static constexpr IdStringPtr SaveAs = "Save As...";
|
|
static constexpr IdStringPtr Revert = "Revert";
|
|
static constexpr IdStringPtr CloseWindow = "Close Window";
|
|
static constexpr IdStringPtr Undo = "Undo";
|
|
static constexpr IdStringPtr Redo = "Redo";
|
|
static constexpr IdStringPtr Cut = "Cut";
|
|
static constexpr IdStringPtr Copy = "Copy";
|
|
static constexpr IdStringPtr Paste = "Paste";
|
|
static constexpr IdStringPtr Delete = "Delete";
|
|
static constexpr IdStringPtr SelectAll = "Select All";
|
|
static constexpr IdStringPtr FindNext = "Find Next";
|
|
static constexpr IdStringPtr FindPrevious = "Find Previous";
|
|
|
|
static constexpr IdStringPtr MenuSeparator = "~";
|
|
|
|
static constexpr IdStringPtr ToggleInlineUIEditor = "Toggle Inline UI-Editor";
|
|
static constexpr IdStringPtr RecreateView = "Recreate View";
|
|
static constexpr IdStringPtr ResaveSharedResources = "Resave Shared Resources";
|
|
|
|
} // CommandName
|
|
|
|
//------------------------------------------------------------------------
|
|
/** predefined commands
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
namespace Commands {
|
|
|
|
static const Command About {CommandGroup::Application, CommandName::About};
|
|
static const Command Preferences {CommandGroup::Application, CommandName::Preferences};
|
|
static const Command Quit {CommandGroup::Application, CommandName::Quit};
|
|
static const Command Help {CommandGroup::Application, CommandName::Help};
|
|
|
|
static const Command NewDocument {CommandGroup::File, CommandName::New};
|
|
static const Command OpenDocument {CommandGroup::File, CommandName::Open};
|
|
static const Command SaveDocument {CommandGroup::File, CommandName::Save};
|
|
static const Command SaveDocumentAs {CommandGroup::File, CommandName::SaveAs};
|
|
static const Command RevertDocument {CommandGroup::File, CommandName::Revert};
|
|
static const Command CloseWindow {CommandGroup::File, CommandName::CloseWindow};
|
|
|
|
static const Command Undo {CommandGroup::Edit, CommandName::Undo};
|
|
static const Command Redo {CommandGroup::Edit, CommandName::Redo};
|
|
static const Command Cut {CommandGroup::Edit, CommandName::Cut};
|
|
static const Command Copy {CommandGroup::Edit, CommandName::Copy};
|
|
static const Command Paste {CommandGroup::Edit, CommandName::Paste};
|
|
static const Command Delete {CommandGroup::Edit, CommandName::Delete};
|
|
static const Command SelectAll {CommandGroup::Edit, CommandName::SelectAll};
|
|
static const Command FindNext {CommandGroup::Edit, CommandName::FindNext};
|
|
static const Command FindPrevious {CommandGroup::Edit, CommandName::FindPrevious};
|
|
|
|
//------------------------------------------------------------------------
|
|
namespace Debug {
|
|
|
|
static const Command ToggleInlineUIEditor {CommandGroup::Debug, CommandName::ToggleInlineUIEditor};
|
|
static const Command RecreateView {CommandGroup::Debug, CommandName::RecreateView};
|
|
static const Command ResaveSharedResources {CommandGroup::Debug,
|
|
CommandName::ResaveSharedResources};
|
|
|
|
//------------------------------------------------------------------------
|
|
} // Debug
|
|
} // Commands
|
|
|
|
//------------------------------------------------------------------------
|
|
} // Standalone
|
|
} // VSTGUI
|