summaryrefslogtreecommitdiff
path: root/include/tool/tool_action.h
diff options
context:
space:
mode:
authorsaurabhb172020-02-26 16:11:59 +0530
committerGitHub2020-02-26 16:11:59 +0530
commite255d0622297488c1c52755be670733418c994cf (patch)
tree1392c90227aeea231c1d86371131e04c40382918 /include/tool/tool_action.h
parent0db48f6533517ecebfd9f0693f89deca28408b76 (diff)
parentc38609295ad4b617aef472b9c575aee18710a50f (diff)
downloadKiCad-eSim-e255d0622297488c1c52755be670733418c994cf.tar.gz
KiCad-eSim-e255d0622297488c1c52755be670733418c994cf.tar.bz2
KiCad-eSim-e255d0622297488c1c52755be670733418c994cf.zip
Merge pull request #1 from saurabhb17/develop
Secondary files
Diffstat (limited to 'include/tool/tool_action.h')
-rw-r--r--include/tool/tool_action.h223
1 files changed, 223 insertions, 0 deletions
diff --git a/include/tool/tool_action.h b/include/tool/tool_action.h
new file mode 100644
index 0000000..727397a
--- /dev/null
+++ b/include/tool/tool_action.h
@@ -0,0 +1,223 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2013-2015 CERN
+ * @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
+ * @author Maciej Suminski <maciej.suminski@cern.ch>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __TOOL_ACTION_H
+#define __TOOL_ACTION_H
+
+#include <string>
+#include <cassert>
+
+#include <tool/tool_event.h>
+
+struct BITMAP_OPAQUE;
+
+/**
+ * Class TOOL_ACTION
+ *
+ * Represents a single user action. For instance:
+ * - changing layer to top by pressing PgUp
+ * - running the DRC from the menu
+ * and so on, and so forth....
+ * Action class groups all necessary properties of an action, including explanation,
+ * icons, hotkeys, menu items, etc.
+ */
+class TOOL_ACTION
+{
+public:
+ TOOL_ACTION( const std::string& aName, TOOL_ACTION_SCOPE aScope = AS_CONTEXT,
+ int aDefaultHotKey = 0, const wxString aMenuItem = wxEmptyString,
+ const wxString& aMenuDesc = wxEmptyString, const BITMAP_OPAQUE* aIcon = NULL,
+ TOOL_ACTION_FLAGS aFlags = AF_NONE, void* aParam = NULL );
+
+ ~TOOL_ACTION();
+
+ bool operator==( const TOOL_ACTION& aRhs ) const
+ {
+ return m_id == aRhs.m_id;
+ }
+
+ bool operator!=( const TOOL_ACTION& aRhs ) const
+ {
+ return m_id != aRhs.m_id;
+ }
+
+ /**
+ * Function GetName()
+ * Returns name of the action. It is the same one that is contained in TOOL_EVENT that is
+ * sent by activating the TOOL_ACTION.
+ *
+ * @return Name of the action.
+ */
+ const std::string& GetName() const
+ {
+ return m_name;
+ }
+
+ /**
+ * Function GetId()
+ * Returns the unique id of the TOOL_ACTION object. It is valid only after registering the
+ * TOOL_ACTION by ACTION_MANAGER.
+ *
+ * @return The unique identification number. If the number is negative, then it is not valid.
+ */
+ int GetId() const
+ {
+ return m_id;
+ }
+
+ /**
+ * Function HasHotKey()
+ * Checks if the action has a hot key assigned.
+ *
+ * @return True if there is a hot key assigned, false otherwise.
+ */
+
+ /**
+ * Function MakeEvent()
+ * Returns the event associated with the action (i.e. the event that will be sent after
+ * activating the action).
+ *
+ * @return The event associated with the action.
+ */
+ TOOL_EVENT MakeEvent() const
+ {
+ if( IsActivation() )
+ return TOOL_EVENT( TC_COMMAND, TA_ACTIVATE, m_name, m_scope, m_param );
+ else if( IsNotification() )
+ return TOOL_EVENT( TC_MESSAGE, TA_NONE, m_name, m_scope, m_param );
+ else
+ return TOOL_EVENT( TC_COMMAND, TA_ACTION, m_name, m_scope, m_param );
+ }
+
+ const wxString& GetMenuItem() const
+ {
+ return m_menuItem;
+ }
+
+ void SetMenuItem( const wxString& aItem )
+ {
+ m_menuItem = aItem;
+ }
+
+ const wxString& GetDescription() const
+ {
+ return m_menuDescription;
+ }
+
+ void SetDescription( const wxString& aDescription )
+ {
+ m_menuDescription = aDescription;
+ }
+
+ TOOL_ACTION_SCOPE GetScope() const
+ {
+ return m_scope;
+ }
+
+ /**
+ * Returns name of the tool associated with the action. It is basically the action name
+ * stripped of the last part (e.g. for "pcbnew.InteractiveDrawing.drawCircle" it is
+ * "pcbnew.InteractiveDrawing").
+ */
+ std::string GetToolName() const;
+
+ /**
+ * Returns true if the action is intended to activate a tool.
+ */
+ bool IsActivation() const
+ {
+ return m_flags & AF_ACTIVATE;
+ }
+
+ /**
+ * Returns true if the action is a notification.
+ */
+ bool IsNotification() const
+ {
+ return m_flags & AF_NOTIFY;
+ }
+
+ /**
+ * Returns an icon associated with the action. It is used in context menu.
+ */
+ const BITMAP_OPAQUE* GetIcon() const
+ {
+ return m_icon;
+ }
+
+ /**
+ * Creates a hot key code that refers to a legacy hot key setting, instead of a particular key.
+ * @param aHotKey is an ID of hot key to be referred (see @hotkeys.h).
+ */
+ inline static int LegacyHotKey( int aHotKey )
+ {
+ assert( ( aHotKey & LEGACY_HK ) == 0 );
+
+ return aHotKey | LEGACY_HK;
+ }
+
+private:
+ friend class ACTION_MANAGER;
+
+ /// Returns the hot key assigned in the object definition. It may refer to a legacy hot key setting
+ /// (if LEGACY_HK flag is set).
+ int getDefaultHotKey()
+ {
+ return m_defaultHotKey;
+ }
+
+ /// Name of the action (convention is: app.[tool.]action.name)
+ std::string m_name;
+
+ /// Scope of the action
+ TOOL_ACTION_SCOPE m_scope;
+
+ /// Default hot key that activates the action.
+ const int m_defaultHotKey;
+
+ /// Menu entry text
+ wxString m_menuItem;
+
+ /// Pop-up help
+ wxString m_menuDescription;
+
+ // Icon for menu entry
+ const BITMAP_OPAQUE* m_icon;
+
+ /// Unique ID for fast matching. Assigned by ACTION_MANAGER.
+ int m_id;
+
+ /// Action flags
+ TOOL_ACTION_FLAGS m_flags;
+
+ /// Generic parameter
+ void* m_param;
+
+ /// Flag to determine the hot key settings is not a particular key, but a reference to legacy
+ /// hot key setting.
+ static const int LEGACY_HK = 0x800000;
+};
+
+#endif