summaryrefslogtreecommitdiffstats
path: root/kexi/core/kexiactioncategories.h
diff options
context:
space:
mode:
Diffstat (limited to 'kexi/core/kexiactioncategories.h')
-rw-r--r--kexi/core/kexiactioncategories.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/kexi/core/kexiactioncategories.h b/kexi/core/kexiactioncategories.h
new file mode 100644
index 00000000..6e672133
--- /dev/null
+++ b/kexi/core/kexiactioncategories.h
@@ -0,0 +1,108 @@
+/* This file is part of the KDE project
+ Copyright (C) 2006 Jaroslaw Staniek <[email protected]>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KEXI_ACTION_CATEGORIES_H
+#define KEXI_ACTION_CATEGORIES_H
+
+#include <ksharedptr.h>
+#include "kexipart.h"
+
+namespace Kexi {
+
+enum ActionCategory
+{
+ NoActionCategory = 0, //!< no category at all
+ GlobalActionCategory = 1, //!< global application action like editcopy;
+ //!< can be applied to focused widget (of many types)
+ PartItemActionCategory = 2,//!< action related to part item, e.g. data_execute;
+ //!< requires context, used only in the navigator
+ WindowActionCategory = 4 //!< action related to active window, which can display
+ //!< table, query, form, report...
+};
+
+//! @short A set of functions used to declare action categories
+/*! Note: we do not declare actions used in design/text view modes,
+ because the categories are used in the data view,
+ for now in the 'assign action to a push button' function. */
+class KEXICORE_EXPORT ActionCategories : public KShared
+{
+ public:
+ ActionCategories();
+ ~ActionCategories();
+
+ /*! Declares action \a name for categories \a category (a combination of ActionCategory enum values).
+ The categories is merged with the previous declaration (if any).
+ \a supportedObjectTypes can be specified for ActionCategory::WindowAction to declare what object types
+ the action allows, it is a combination of KexiPart::ObjectTypes enum values. */
+ void addAction(const char* name, int categories,
+ KexiPart::ObjectTypes supportedObjectType1 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType2 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType3 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType4 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType5 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType6 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType7 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType8 = (KexiPart::ObjectTypes)0);
+
+ void addGlobalAction(const char* name)
+ { addAction(name, Kexi::GlobalActionCategory); }
+
+ //! Convenience function for adding action of category "part item", uses \ref addAction().
+ void addPartItemAction(const char* name)
+ { addAction(name, Kexi::PartItemActionCategory); }
+
+ /*! Convenience function for adding action of category "window", uses \ref addAction().
+ \a supportedObjectTypes is a combination of KexiPart::ObjectTypes enum values describing
+ object types supported by the action. */
+ void addWindowAction(const char* name,
+ KexiPart::ObjectTypes supportedObjectType1 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType2 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType3 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType4 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType5 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType6 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType7 = (KexiPart::ObjectTypes)0,
+ KexiPart::ObjectTypes supportedObjectType8 = (KexiPart::ObjectTypes)0)
+ { addAction(name, Kexi::WindowActionCategory, supportedObjectType1, supportedObjectType2,
+ supportedObjectType3, supportedObjectType4, supportedObjectType5, supportedObjectType6,
+ supportedObjectType7, supportedObjectType8); }
+
+ /*! If \a set is true, action with name \a name will support any possible object type
+ that can be checked by actionSupportsObjectType().
+ Makes sense for action of category Kexi::WindowActionCategory. */
+ void setAllObjectTypesSupported(const char* name, bool set);
+
+ //! \return categories for action \a name (a combination of ActionCategory enum values).
+ //! If there is no such actions declared at all, -1 is returned.
+ int actionCategories(const char* name) const;
+
+ /*! \return true if action \a name supports \a objectType.
+ Only works for actions of WindowAction category. */
+ bool actionSupportsObjectType(const char* name, KexiPart::ObjectTypes objectType) const;
+ protected:
+ class Private;
+ Private *d;
+};
+
+//! \return ActionCategories singleton object
+KEXICORE_EXPORT ActionCategories *actionCategories();
+
+}
+
+#endif