diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch) | |
tree | acaf47eb0fa12142d3896416a69e74cbf5a72242 /kdevdesigner/designer/command.h | |
download | tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdevdesigner/designer/command.h')
-rw-r--r-- | kdevdesigner/designer/command.h | 1259 |
1 files changed, 1259 insertions, 0 deletions
diff --git a/kdevdesigner/designer/command.h b/kdevdesigner/designer/command.h new file mode 100644 index 00000000..ac5e9d5a --- /dev/null +++ b/kdevdesigner/designer/command.h @@ -0,0 +1,1259 @@ +/********************************************************************** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef COMMAND_H +#define COMMAND_H + +#include "metadatabase.h" +#include "layout.h" + +#include <qstring.h> +#include <qrect.h> +#include <qvaluelist.h> +#include <qvariant.h> +#include <qobject.h> +#include <qlistview.h> +#include <qptrlist.h> +#include <qmap.h> +#include <qiconset.h> + +class QWizard; +class QTabWidget; +class Command; +class QWidget; +class FormWindow; +class PropertyEditor; +class QListBox; +class QIconView; +class QTable; +class QAction; +class QDesignerToolBar; +class QMainWindow; +class QTextEdit; +struct LanguageInterface; +class QToolBox; + +class MenuBarEditor; +class MenuBarEditorItem; +class PopupMenuEditor; +class PopupMenuEditorItem; +class ActionEditor; + +class Command : public Qt +{ +public: + Command( const QString &n, FormWindow *fw ); + virtual ~Command(); + + enum Type { + Resize, + Insert, + Move, + Delete, + SetProperty, + LayoutHorizontal, + LayoutVertical, + LayoutHorizontalSplitter, + LayoutVerticalSplitter, + LayoutGrid, + BreakLayout, + Macro, + AddTabPage, + DeleteTabPage, + MoveTabPage, + AddWidgetStackPage, + DeleteWidgetStackPage, + AddWizardPage, + DeleteWizardPage, + SwapWizardPages, + MoveWizardPage, + RenameWizardPage, + AddConnection, + RemoveConnection, + Lower, + Raise, + Paste, + TabOrder, + PopulateListBox, + PopulateIconView, + PopulateListView, + PopulateMultiLineEdit, + PopulateTable, + AddActionToToolBar, + RemoveActionFromToolBar, + AddToolBar, + RemoveToolBar, + AddFunction, + ChangeFunctionAttrib, + RemoveFunction, + AddVariable, + SetVariables, + RemoveVariable, + EditDefinitions, + AddContainerPage, + DeleteContainerPage, + RenameContainerPage, + AddActionToPopup, + RemoveActionFromPopup, + ExchangeActionInPopup, + //MoveActionInPopup, + RenameAction, + SetActionIcons, + AddMenu, + RemoveMenu, + ExchangeMenu, + MoveMenu, + RenameMenu, + AddToolBoxPage, + DeleteToolBoxPage + }; + + QString name() const; + + virtual void execute() = 0; + virtual void unexecute() = 0; + virtual Type type() const = 0; + virtual void merge( Command *c ); + virtual bool canMerge( Command *c ); + + FormWindow *formWindow() const; + +private: + QString cmdName; + FormWindow *formWin; + +}; + +class CommandHistory : public QObject +{ + Q_OBJECT + +public: + CommandHistory( int s ); + + void addCommand( Command *cmd, bool tryCompress = FALSE ); + void undo(); + void redo(); + + void emitUndoRedo(); + + void setModified( bool m ); + bool isModified() const; + +public slots: + void checkCompressedCommand(); + +signals: + void undoRedoChanged( bool undoAvailable, bool redoAvailable, + const QString &undoCmd, const QString &redoCmd ); + void modificationChanged( bool m ); + +private: + QPtrList<Command> history; + int current, steps; + bool modified; + int savedAt; + Command *compressedCommand; + +}; + +class ResizeCommand : public Command +{ +public: + ResizeCommand( const QString &n, FormWindow *fw, + QWidget *w, const QRect &oldr, const QRect &nr ); + + void execute(); + void unexecute(); + Type type() const { return Resize; } + +private: + QWidget *widget; + QRect oldRect, newRect; + +}; + +class InsertCommand : public Command +{ +public: + InsertCommand( const QString &n, FormWindow *fw, QWidget *w, const QRect &g ); + + void execute(); + void unexecute(); + Type type() const { return Insert; } + +private: + QWidget *widget; + QRect geometry; + +}; + +class MoveCommand : public Command +{ +public: + MoveCommand( const QString &n, FormWindow *fw, + const QWidgetList &w, + const QValueList<QPoint> op, + const QValueList<QPoint> np, + QWidget *opr, QWidget *npr ); + void execute(); + void unexecute(); + Type type() const { return Move; } + void merge( Command *c ); + bool canMerge( Command *c ); + +private: + QWidgetList widgets; + QValueList<QPoint> oldPos, newPos; + QWidget *oldParent, *newParent; + +}; + +class DeleteCommand : public Command +{ +public: + DeleteCommand( const QString &n, FormWindow *fw, + const QWidgetList &w ); + void execute(); + void unexecute(); + Type type() const { return Delete; } + +private: + QWidgetList widgets; + QMap< QWidget*, QValueList<MetaDataBase::Connection> > connections; + +}; + +class SetPropertyCommand : public Command +{ +public: + SetPropertyCommand( const QString &n, FormWindow *fw, + QObject *w, PropertyEditor *e, + const QString &pn, const QVariant &ov, + const QVariant &nv, const QString &ncut, + const QString &ocut, + bool reset = FALSE ); + + void execute(); + void unexecute(); + Type type() const { return SetProperty; } + void merge( Command *c ); + bool canMerge( Command *c ); + bool checkProperty(); + +private: + void setProperty( const QVariant &v, const QString ¤tItemText, bool select = TRUE ); + + QGuardedPtr<QObject> widget; + PropertyEditor *editor; + QString propName; + QVariant oldValue, newValue; + QString oldCurrentItemText, newCurrentItemText; + bool wasChanged; + bool isResetCommand; + +}; + +class LayoutHorizontalCommand : public Command +{ +public: + LayoutHorizontalCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutHorizontal; } + +private: + HorizontalLayout layout; + +}; + +class LayoutHorizontalSplitCommand : public Command +{ +public: + LayoutHorizontalSplitCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutHorizontalSplitter; } + +private: + HorizontalLayout layout; + +}; + +class LayoutVerticalCommand : public Command +{ +public: + LayoutVerticalCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutVertical; } + +private: + VerticalLayout layout; + +}; + +class LayoutVerticalSplitCommand : public Command +{ +public: + LayoutVerticalSplitCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutVerticalSplitter; } + +private: + VerticalLayout layout; + +}; + +class LayoutGridCommand : public Command +{ +public: + LayoutGridCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl, int xres, int yres ); + + void execute(); + void unexecute(); + Type type() const { return LayoutGrid; } + +private: + GridLayout layout; + +}; + +class BreakLayoutCommand : public Command +{ +public: + BreakLayoutCommand( const QString &n, FormWindow *fw, + QWidget *layoutBase, const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return BreakLayout; } + +private: + Layout *layout; + int spacing; + int margin; + QWidget *lb; + QWidgetList widgets; + +}; + +class MacroCommand : public Command +{ +public: + MacroCommand( const QString &n, FormWindow *fw, + const QPtrList<Command> &cmds ); + + void execute(); + void unexecute(); + Type type() const { return Macro; } + +private: + QPtrList<Command> commands; + +}; + +class AddTabPageCommand : public Command +{ +public: + AddTabPageCommand( const QString &n, FormWindow *fw, + QTabWidget *tw, const QString &label ); + + void execute(); + void unexecute(); + Type type() const { return AddTabPage; } + +private: + QTabWidget *tabWidget; + int index; + QWidget *tabPage; + QString tabLabel; + +}; + +class DeleteTabPageCommand : public Command +{ +public: + DeleteTabPageCommand( const QString &n, FormWindow *fw, + QTabWidget *tw, QWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteTabPage; } + +private: + QTabWidget *tabWidget; + int index; + QWidget *tabPage; + QString tabLabel; + +}; + +class MoveTabPageCommand : public Command +{ +public: + MoveTabPageCommand(const QString &n, FormWindow *fw, + QTabWidget *tw, QWidget *page, const QString& label, int nIndex, int oIndex ); + + void execute(); + void unexecute(); + Type type() const { return MoveTabPage; } + +private: + QTabWidget *tabWidget; + int newIndex, oldIndex; + QWidget *tabPage; + QString tabLabel; + +}; +class QDesignerWidgetStack; +class AddWidgetStackPageCommand : public Command +{ +public: + AddWidgetStackPageCommand( const QString &n, FormWindow *fw, + QDesignerWidgetStack *ws ); + + void execute(); + void unexecute(); + Type type() const { return AddWidgetStackPage; } + +private: + QDesignerWidgetStack *widgetStack; + int index; + QWidget *stackPage; +}; + +class DeleteWidgetStackPageCommand : public Command +{ +public: + DeleteWidgetStackPageCommand( const QString &n, FormWindow *fw, + QDesignerWidgetStack *ws, QWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteWidgetStackPage; } + +private: + QDesignerWidgetStack *widgetStack; + int index; + QWidget *stackPage; +}; + + + +class AddWizardPageCommand : public Command +{ +public: + AddWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, const QString &label, int index = -1, bool show = TRUE ); + + void execute(); + void unexecute(); + Type type() const { return AddWizardPage; } + +private: + QWizard *wizard; + int index; + bool show; + QWidget *page; + QString pageLabel; + +}; + +class DeleteWizardPageCommand : public Command +{ +public: + DeleteWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, int index, bool show = TRUE ); + + void execute(); + void unexecute(); + Type type() const { return DeleteWizardPage; } + +private: + QWizard *wizard; + int index; + bool show; + QWidget *page; + QString pageLabel; + +}; + +class RenameWizardPageCommand : public Command +{ +public: + RenameWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, int index, const QString& name ); + + void execute(); + void unexecute(); + Type type() const { return RenameWizardPage; } + +private: + QWizard *wizard; + int index; + QWidget *page; + QString label; + +}; + +class SwapWizardPagesCommand : public Command +{ +public: + SwapWizardPagesCommand( const QString &n, FormWindow *fw, + QWizard *w, int index1, int index2 ); + + void execute(); + void unexecute(); + Type type() const { return SwapWizardPages; } + +private: + QWizard *wizard; + int index1, index2; + +}; + +class MoveWizardPageCommand : public Command +{ +public: + MoveWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, int index1, int index2 ); + + void execute(); + void unexecute(); + Type type() const { return MoveWizardPage; } + +private: + QWizard *wizard; + int index1, index2; + +}; + +class AddConnectionCommand : public Command +{ +public: + AddConnectionCommand( const QString &name, FormWindow *fw, + MetaDataBase::Connection c ); + + void execute(); + void unexecute(); + Type type() const { return AddConnection; } + +private: + MetaDataBase::Connection connection; + +}; + +class RemoveConnectionCommand : public Command +{ +public: + RemoveConnectionCommand( const QString &name, FormWindow *fw, + MetaDataBase::Connection c ); + + void execute(); + void unexecute(); + Type type() const { return RemoveConnection; } + +private: + MetaDataBase::Connection connection; + +}; + + +class AddFunctionCommand : public Command +{ +public: + AddFunctionCommand( const QString &name, FormWindow *fw, const QCString &f, const QString& spec, + const QString &a, const QString &t, const QString &l, const QString &rt ); + + void execute(); + void unexecute(); + Type type() const { return AddFunction; } + +private: + QCString function; + QString specifier; + QString access; + QString functionType; + QString language; + QString returnType; +}; + +class ChangeFunctionAttribCommand : public Command +{ +public: + ChangeFunctionAttribCommand( const QString &name, FormWindow *fw, MetaDataBase::Function f, + const QString &on, const QString &os, const QString &oa, + const QString &ot, const QString &ol, const QString &ort ); + + void execute(); + void unexecute(); + Type type() const { return ChangeFunctionAttrib; } + +private: + QString oldName, newName; + QString oldSpec, newSpec; + QString oldAccess, newAccess; + QString oldType, newType; + QString oldLang, newLang; + QString oldReturnType, newReturnType; +}; + +class RemoveFunctionCommand : public Command +{ +public: + RemoveFunctionCommand( const QString &name, FormWindow *fw, const QCString &f, const QString& spec, + const QString &a, const QString &t, const QString &l, const QString &rt ); + + void execute(); + void unexecute(); + Type type() const { return RemoveFunction; } + +private: + QCString function; + QString specifier; + QString access; + QString functionType; + QString language; + QString returnType; +}; + +class AddVariableCommand : public Command +{ +public: + AddVariableCommand( const QString &name, FormWindow *fw, const QString &vn, const QString &a ); + void execute(); + void unexecute(); + Type type() const { return AddVariable; } + +private: + QString varName; + QString access; +}; + +class SetVariablesCommand : public Command +{ +public: + SetVariablesCommand( const QString &name, FormWindow *fw, QValueList<MetaDataBase::Variable> lst ); + void execute(); + void unexecute(); + Type type() const { return SetVariables; } + +private: + QValueList<MetaDataBase::Variable> oldList, newList; +}; + +class RemoveVariableCommand : public Command +{ +public: + RemoveVariableCommand( const QString &name, FormWindow *fw, const QString &vn ); + void execute(); + void unexecute(); + Type type() const { return RemoveVariable; } + +private: + QString varName; + QString access; +}; + +class EditDefinitionsCommand : public Command +{ +public: + EditDefinitionsCommand( const QString &name, FormWindow *fw, LanguageInterface *lf, + const QString &n, const QStringList &l ); + void execute(); + void unexecute(); + Type type() const { return EditDefinitions; } + +private: + LanguageInterface *lIface; + QString defName; + QStringList newList, oldList; +}; + +class LowerCommand : public Command +{ +public: + LowerCommand( const QString &name, FormWindow *fw, const QWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Lower; } + +private: + QWidgetList widgets; + +}; + +class RaiseCommand : public Command +{ +public: + RaiseCommand( const QString &name, FormWindow *fw, const QWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Raise; } + +private: + QWidgetList widgets; + +}; + +class PasteCommand : public Command +{ +public: + PasteCommand( const QString &n, FormWindow *fw, const QWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Paste; } + +private: + QWidgetList widgets; + +}; + +class TabOrderCommand : public Command +{ +public: + TabOrderCommand( const QString &n, FormWindow *fw, const QWidgetList &ol, const QWidgetList &nl ); + + void execute(); + void unexecute(); + Type type() const { return TabOrder; } + void merge( Command *c ); + bool canMerge( Command *c ); + +private: + QWidgetList oldOrder, newOrder; + +}; + +class PopulateListBoxCommand : public Command +{ +public: + struct Item + { + QString text; + QPixmap pix; + Q_DUMMY_COMPARISON_OPERATOR( Item ) + }; + + PopulateListBoxCommand( const QString &n, FormWindow *fw, + QListBox *lb, const QValueList<Item> &items ); + void execute(); + void unexecute(); + Type type() const { return PopulateListBox; } + + bool operator==( const PopulateListBoxCommand & ) const; + +private: + QValueList<Item> oldItems, newItems; + QListBox *listbox; + +}; + +class PopulateIconViewCommand : public Command +{ +public: + struct Item + { + QString text; + QPixmap pix; + Q_DUMMY_COMPARISON_OPERATOR( Item ) + }; + + PopulateIconViewCommand( const QString &n, FormWindow *fw, + QIconView *iv, const QValueList<Item> &items ); + void execute(); + void unexecute(); + Type type() const { return PopulateIconView; } + + bool operator==( const PopulateIconViewCommand & ) const; + +private: + QValueList<Item> oldItems, newItems; + QIconView *iconview; + +}; + +class PopulateListViewCommand : public Command +{ +public: + PopulateListViewCommand( const QString &n, FormWindow *fw, + QListView *lv, QListView *from ); + void execute(); + void unexecute(); + Type type() const { return PopulateListView; } + static void transferItems( QListView *from, QListView *to ); + + bool operator==( const PopulateListViewCommand & ) const; + +private: + QListView *oldItems, *newItems; + QListView *listview; + +}; + +class PopulateMultiLineEditCommand : public Command +{ +public: + PopulateMultiLineEditCommand( const QString &n, FormWindow *fw, + QTextEdit *mle, const QString &txt ); + void execute(); + void unexecute(); + Type type() const { return PopulateMultiLineEdit; } + +private: + QString newText, oldText; + QTextEdit *mlined; + bool wasChanged; + +}; + +class PopulateTableCommand : public Command +{ +public: + struct Row + { + QString text; + QPixmap pix; + Q_DUMMY_COMPARISON_OPERATOR( Row ) + }; + + struct Column + { + QString text; + QPixmap pix; + QString field; + Q_DUMMY_COMPARISON_OPERATOR( Column ) + }; + + PopulateTableCommand( const QString &n, FormWindow *fw, QTable *t, + const QValueList<Row> &rows, + const QValueList<Column> &columns ); + + void execute(); + void unexecute(); + Type type() const { return PopulateTable; } + +private: + QValueList<Row> oldRows, newRows; + QValueList<Column> oldColumns, newColumns; + QTable *table; + +}; + +class AddActionToToolBarCommand : public Command +{ +public: + AddActionToToolBarCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerToolBar *tb, int idx ); + + void execute(); + void unexecute(); + Type type() const { return AddActionToToolBar; } + +private: + QAction *action; + QDesignerToolBar *toolBar; + int index; + +}; + +class RemoveActionFromToolBarCommand : public AddActionToToolBarCommand +{ +public: + RemoveActionFromToolBarCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerToolBar *tb, int idx ) + : AddActionToToolBarCommand( n, fw, a, tb, idx ) {} + + void execute() { AddActionToToolBarCommand::unexecute(); } + void unexecute() { AddActionToToolBarCommand::execute(); } + Type type() const { return RemoveActionFromToolBar; } + +}; + +// MenuCommands + +class AddToolBarCommand : public Command +{ +public: + AddToolBarCommand( const QString &n, FormWindow *fw, QMainWindow *mw ); + + void execute(); + void unexecute(); + Type type() const { return AddToolBar; } + +protected: + QDesignerToolBar *toolBar; + QMainWindow *mainWindow; + +}; + +class RemoveToolBarCommand : public AddToolBarCommand +{ +public: + RemoveToolBarCommand( const QString &n, FormWindow *fw, QMainWindow *mw, QDesignerToolBar *tb ) + : AddToolBarCommand( n, fw, mw ) { toolBar = tb; } + + void execute() { AddToolBarCommand::unexecute(); } + void unexecute() { AddToolBarCommand::execute(); } + Type type() const { return RemoveToolBar; } + +}; + +struct QWidgetContainerInterfacePrivate; + +class AddContainerPageCommand : public Command +{ +public: + AddContainerPageCommand( const QString &n, FormWindow *fw, + QWidget *c, const QString &label ); + + ~AddContainerPageCommand(); + + void execute(); + void unexecute(); + Type type() const { return AddContainerPage; } + +private: + QString wClassName; + QWidget *container; + int index; + QString pageLabel; + QWidget *page; + QWidgetContainerInterfacePrivate *wiface; + +}; + +class DeleteContainerPageCommand : public Command +{ +public: + DeleteContainerPageCommand( const QString &n, FormWindow *fw, + QWidget *container, int index ); + ~DeleteContainerPageCommand(); + + void execute(); + void unexecute(); + Type type() const { return DeleteContainerPage; } + +private: + QString wClassName; + QWidget *container; + int index; + QString pageLabel; + QWidget *page; + QWidgetContainerInterfacePrivate *wiface; + +}; + +class RenameContainerPageCommand : public Command +{ +public: + RenameContainerPageCommand( const QString &n, FormWindow *fw, + QWidget *container, int index, + const QString &label ); + ~RenameContainerPageCommand(); + + void execute(); + void unexecute(); + Type type() const { return RenameContainerPage; } + +private: + QString wClassName; + QWidget *container; + int index; + QString oldLabel, newLabel; + QWidgetContainerInterfacePrivate *wiface; + +}; + +class AddActionToPopupCommand : public Command +{ +public: + AddActionToPopupCommand( const QString &n, + FormWindow *fw, + PopupMenuEditor *m, + PopupMenuEditorItem *i, + int idx = -1 ); + void execute(); + void unexecute(); + Type type() const { return AddActionToPopup; } +protected: + QString constructName() const; + PopupMenuEditor *menu; + PopupMenuEditorItem *item; + int index; +private: +}; + +class RemoveActionFromPopupCommand : public AddActionToPopupCommand +{ +public: + RemoveActionFromPopupCommand( const QString &n, + FormWindow *fw, + PopupMenuEditor *m, + int idx ); + void execute(); + void unexecute(); + Type type() const { return RemoveActionFromPopup; } +protected: +private: +}; + +class ExchangeActionInPopupCommand : public Command +{ +public: + ExchangeActionInPopupCommand( const QString &n, + FormWindow *fw, + PopupMenuEditor *m, + int a, + int b ); + void execute(); + void unexecute(); + Type type() const { return ExchangeActionInPopup; } +protected: +private: + PopupMenuEditor *menu; + int c; + int d; +}; +/* +class MoveActionInPopupCommand : public Command +{ +public: + MoveActionInPopupCommand( const QString &n, + FormWindow *fw, + PopupMenuEditor *m, + int a, + int b ); + void execute(); + void unexecute(); + Type type() const { return MoveActionInPopup; } +protected: +private: + PopupMenuEditor *menu; + int from; + int to; +}; +*/ +class ActionCommand : public Command +{ +public: + ActionCommand( const QString &n, + FormWindow *fw, + QAction *a ) + : Command( n, fw ), action( a ) { } + virtual Type type() const = 0; +protected: + ActionEditor *actionEditor(); + QAction *action; +}; + +class RenameActionCommand : public ActionCommand +{ +public: + RenameActionCommand( const QString &n, + FormWindow *fw, + QAction *a, + PopupMenuEditor *m, + QString nm ); + void execute(); + void unexecute(); + Type type() const { return RenameAction; } +private: + PopupMenuEditor *menu; + QString newName; + QString oldName; +}; + +class SetActionIconsCommand : public ActionCommand +{ +public: + SetActionIconsCommand( const QString &n, + FormWindow *fw, + QAction *a, + PopupMenuEditor *m, + QIconSet &icons ); + void execute(); + void unexecute(); + Type type() const { return SetActionIcons; } +protected: + void updateActionEditorItem(); +private: + PopupMenuEditor *menu; + QIconSet newIcons; + QIconSet oldIcons; +}; + +class AddMenuCommand : public Command +{ +public: + AddMenuCommand( const QString &n, + FormWindow *fw, + MenuBarEditor *b, + MenuBarEditorItem *i, + int idx = -1 ); + + AddMenuCommand( const QString &n, + FormWindow *fw, + QMainWindow *mw, + const QString &nm = "Menu" ); + + void execute(); + void unexecute(); + Type type() const { return AddMenu; } +protected: + MenuBarEditor *mb; + MenuBarEditorItem *item; + QString name; + int index; +private: +}; + +class RemoveMenuCommand : public AddMenuCommand +{ +public: + RemoveMenuCommand( const QString &n, + FormWindow *fw, + MenuBarEditor *b, + int idx ); + void execute(); + void unexecute(); + Type type() const { return RemoveMenu; } +protected: +private: +}; + +class ExchangeMenuCommand : public Command +{ +public: + ExchangeMenuCommand( const QString &n, + FormWindow *fw, + MenuBarEditor *b, + int i, + int j ); + void execute(); + void unexecute(); + Type type() const { return ExchangeMenu; } +protected: +private: + MenuBarEditor *bar; + int k; + int l; +}; + + +class MoveMenuCommand : public Command +{ +public: + MoveMenuCommand( const QString &n, + FormWindow *fw, + MenuBarEditor *b, + int i, + int j ); + void execute(); + void unexecute(); + Type type() const { return MoveMenu; } +protected: +private: + MenuBarEditor *bar; + int from; + int to; +}; + +class RenameMenuCommand : public Command +{ +public: + RenameMenuCommand( const QString &n, + FormWindow *fw, + MenuBarEditor *m, + QString nm, + MenuBarEditorItem *i ); + void execute(); + void unexecute(); + Type type() const { return RenameMenu; } + static QString makeLegal( const QString &str ); +private: + MenuBarEditor *bar; + MenuBarEditorItem *item; + QString newName; + QString oldName; +}; + +class AddToolBoxPageCommand : public Command +{ +public: + AddToolBoxPageCommand( const QString &n, FormWindow *fw, + QToolBox *tw, const QString &label ); + + void execute(); + void unexecute(); + Type type() const { return AddToolBoxPage; } + +private: + QToolBox *toolBox; + int index; + QWidget *toolBoxPage; + QString toolBoxLabel; + +}; + +class DeleteToolBoxPageCommand : public Command +{ +public: + DeleteToolBoxPageCommand( const QString &n, FormWindow *fw, + QToolBox *tw, QWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteToolBoxPage; } + +private: + QToolBox *toolBox; + int index; + QWidget *toolBoxPage; + QString toolBoxLabel; + +}; + +#endif |