summaryrefslogtreecommitdiffstats
path: root/kexi/plugins/macros/lib/action.h
blob: 51e97869b06e0873d0f1dd2b1af8f226d41452d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
/***************************************************************************
 * This file is part of the KDE project
 * copyright (C) 2005 by Sebastian Sauer ([email protected])
 * copyright (C) 2005 by Tobi Krebs ([email protected])
 * copyright (C) 2006 by Sascha Kupper ([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 KOMACRO_ACTION_H
#define KOMACRO_ACTION_H

#include "manager.h"
#include "context.h"
#include "variable.h"

#include <tqobject.h>
#include <ksharedptr.h>
#include <tqstringlist.h>

namespace KoMacro {

	/**
	 * The Action class extendes KAction to implement some additional
	 * functionality KAction doesn't provide.
	 */
	class KOMACRO_EXPORT Action
		: public TQObject // TQt functionality like signals and slots
		, public KShared // shared reference-counting
	{
			Q_OBJECT
  TQ_OBJECT

			/// Property to get/set the name.
			TQ_PROPERTY(TQString name READ name WRITE setName)

			/// Property to get/set the text.
			TQ_PROPERTY(TQString text READ text WRITE setText)

			/// Property to get/set the comment.
			TQ_PROPERTY(TQString comment READ comment WRITE setComment)

		public:

			/**
			* Shared pointer to implement reference-counting.
			*/
			typedef TQMap<TQString, KSharedPtr<Action> > Map;

			/**
			* Constructor.
			* 
			* @param name The unique name this @a Action has.
			* @param text The i18n-caption text this @a Action has.
			*/
			explicit Action(const TQString& name, const TQString& text = TQString());

			/**
			* Destructor.
			*/
			virtual ~Action();

			/**
			* @return a string representation of the functionality
			* this action provides.
			*/
			virtual const TQString toString() const;

			/**
			* The name this @a Action has.
			*/
			const TQString name() const;
			
			/**
			* Set the name of the @a Action to @p name .
			*/
			void setName(const TQString& name); 

			/**
			* @return the i18n-caption text this @a Action has.
			*/
			const TQString text() const;

			/**
			* Set the i18n-caption text this @a Action has.
			*/
			void setText(const TQString& text);

			/**
			* @return the comment associated with this action.
			*/
			const TQString comment() const;

			/**
			* Set the @p comment associated with this action.
			*/
			void setComment(const TQString& comment);

			/**
			* @return true if there exists a variable with the
			* name @p name else false is returned.
			*/
			bool hasVariable(const TQString& name) const;

			/**
			* @return the variable @a Variable defined for the
			* name @p name . If there exists no @a Variable with
			* such a name, NULL is returned.
			*/
			KSharedPtr<Variable> variable(const TQString& name) const;

			/**
			* @return the map of variables this @a Action provides.
			*/
			Variable::Map variables() const;

			/**
			* @return a list of variablenames this @a Action provides.s
			*/
			TQStringList variableNames() const;

			/**
			 * Append the @a Variable @p variable to list of variables
			 * this @a Action provides.
			 */
			void setVariable(KSharedPtr<Variable> variable);

			/**
			 * Set the variable.
			 *
			 * @param name The name the variable should have.
			 * @param text The i18n-caption used for display.
			 * @param variant The TQVariant value.
			 */
			void setVariable(const TQString& name, const TQString& text, const TQVariant& variant);

			/**
			* Remove the variable defined with @p name . If there exists
			* no such variable, nothing is done.
			*/
			void removeVariable(const TQString& name);

			/**
			* This function is called, when the @a KoMacro::Variable
			* with name @p name used within the @a KoMacro::MacroItem
			* @p macroitem got changed.
			*
			* @param macroitem The @a KoMacro::MacroItem instance where
			* the variable defined with @p name is located in.
			* @param name The name the @a KoMacro::Variable has.
			* @return true if the update was successfully else false
			* is returned.
			*/
			virtual bool notifyUpdated(const KSharedPtr<MacroItem> &macroitem, const TQString& name) {
				Q_UNUSED(macroitem);
				Q_UNUSED(name);
				return true; // The default implementation does nothing.
			}

		public slots:

			/**
			* Called if the @a Action should be executed within the
			* defined @p context .
			*/
			virtual void activate(KSharedPtr<Context> context) = 0;

		private:
			/// @internal d-pointer class.
			class Private;
			/// @internal d-pointer instance.
			Private* const d;
	};

}

#endif