diff options
Diffstat (limited to 'kdevdesigner/designer/command.h')
-rw-r--r-- | kdevdesigner/designer/command.h | 1260 |
1 files changed, 1260 insertions, 0 deletions
diff --git a/kdevdesigner/designer/command.h b/kdevdesigner/designer/command.h new file mode 100644 index 00000000..b1c7a2a5 --- /dev/null +++ b/kdevdesigner/designer/command.h @@ -0,0 +1,1260 @@ +/********************************************************************** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of TQt 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 TQt Enterprise Edition or TQt Professional Edition +** licenses may use this file in accordance with the TQt 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 TQt 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 <tqstring.h> +#include <tqrect.h> +#include <tqvaluelist.h> +#include <tqvariant.h> +#include <tqobject.h> +#include <tqlistview.h> +#include <tqptrlist.h> +#include <tqmap.h> +#include <tqiconset.h> + +class TQWizard; +class TQTabWidget; +class Command; +class TQWidget; +class FormWindow; +class PropertyEditor; +class TQListBox; +class TQIconView; +class TQTable; +class TQAction; +class QDesignerToolBar; +class TQMainWindow; +class TQTextEdit; +struct LanguageInterface; +class TQToolBox; + +class MenuBarEditor; +class MenuBarEditorItem; +class PopupMenuEditor; +class PopupMenuEditorItem; +class ActionEditor; + +class Command : public TQt +{ +public: + Command( const TQString &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 + }; + + TQString 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: + TQString cmdName; + FormWindow *formWin; + +}; + +class CommandHistory : public TQObject +{ + 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 TQString &undoCmd, const TQString &redoCmd ); + void modificationChanged( bool m ); + +private: + TQPtrList<Command> history; + int current, steps; + bool modified; + int savedAt; + Command *compressedCommand; + +}; + +class ResizeCommand : public Command +{ +public: + ResizeCommand( const TQString &n, FormWindow *fw, + TQWidget *w, const TQRect &oldr, const TQRect &nr ); + + void execute(); + void unexecute(); + Type type() const { return Resize; } + +private: + TQWidget *widget; + TQRect oldRect, newRect; + +}; + +class InsertCommand : public Command +{ +public: + InsertCommand( const TQString &n, FormWindow *fw, TQWidget *w, const TQRect &g ); + + void execute(); + void unexecute(); + Type type() const { return Insert; } + +private: + TQWidget *widget; + TQRect geometry; + +}; + +class MoveCommand : public Command +{ +public: + MoveCommand( const TQString &n, FormWindow *fw, + const TQWidgetList &w, + const TQValueList<TQPoint> op, + const TQValueList<TQPoint> np, + TQWidget *opr, TQWidget *npr ); + void execute(); + void unexecute(); + Type type() const { return Move; } + void merge( Command *c ); + bool canMerge( Command *c ); + +private: + TQWidgetList widgets; + TQValueList<TQPoint> oldPos, newPos; + TQWidget *oldParent, *newParent; + +}; + +class DeleteCommand : public Command +{ +public: + DeleteCommand( const TQString &n, FormWindow *fw, + const TQWidgetList &w ); + void execute(); + void unexecute(); + Type type() const { return Delete; } + +private: + TQWidgetList widgets; + TQMap< TQWidget*, TQValueList<MetaDataBase::Connection> > connections; + +}; + +class SetPropertyCommand : public Command +{ +public: + SetPropertyCommand( const TQString &n, FormWindow *fw, + TQObject *w, PropertyEditor *e, + const TQString &pn, const TQVariant &ov, + const TQVariant &nv, const TQString &ncut, + const TQString &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 TQVariant &v, const TQString ¤tItemText, bool select = TRUE ); + + TQGuardedPtr<TQObject> widget; + PropertyEditor *editor; + TQString propName; + TQVariant oldValue, newValue; + TQString oldCurrentItemText, newCurrentItemText; + bool wasChanged; + bool isResetCommand; + +}; + +class LayoutHorizontalCommand : public Command +{ +public: + LayoutHorizontalCommand( const TQString &n, FormWindow *fw, + TQWidget *parent, TQWidget *layoutBase, + const TQWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutHorizontal; } + +private: + HorizontalLayout layout; + +}; + +class LayoutHorizontalSplitCommand : public Command +{ +public: + LayoutHorizontalSplitCommand( const TQString &n, FormWindow *fw, + TQWidget *parent, TQWidget *layoutBase, + const TQWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutHorizontalSplitter; } + +private: + HorizontalLayout layout; + +}; + +class LayoutVerticalCommand : public Command +{ +public: + LayoutVerticalCommand( const TQString &n, FormWindow *fw, + TQWidget *parent, TQWidget *layoutBase, + const TQWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutVertical; } + +private: + VerticalLayout layout; + +}; + +class LayoutVerticalSplitCommand : public Command +{ +public: + LayoutVerticalSplitCommand( const TQString &n, FormWindow *fw, + TQWidget *parent, TQWidget *layoutBase, + const TQWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutVerticalSplitter; } + +private: + VerticalLayout layout; + +}; + +class LayoutGridCommand : public Command +{ +public: + LayoutGridCommand( const TQString &n, FormWindow *fw, + TQWidget *parent, TQWidget *layoutBase, + const TQWidgetList &wl, int xres, int yres ); + + void execute(); + void unexecute(); + Type type() const { return LayoutGrid; } + +private: + GridLayout layout; + +}; + +class BreakLayoutCommand : public Command +{ +public: + BreakLayoutCommand( const TQString &n, FormWindow *fw, + TQWidget *layoutBase, const TQWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return BreakLayout; } + +private: + Layout *layout; + int spacing; + int margin; + TQWidget *lb; + TQWidgetList widgets; + +}; + +class MacroCommand : public Command +{ +public: + MacroCommand( const TQString &n, FormWindow *fw, + const TQPtrList<Command> &cmds ); + + void execute(); + void unexecute(); + Type type() const { return Macro; } + +private: + TQPtrList<Command> commands; + +}; + +class AddTabPageCommand : public Command +{ +public: + AddTabPageCommand( const TQString &n, FormWindow *fw, + TQTabWidget *tw, const TQString &label ); + + void execute(); + void unexecute(); + Type type() const { return AddTabPage; } + +private: + TQTabWidget *tabWidget; + int index; + TQWidget *tabPage; + TQString tabLabel; + +}; + +class DeleteTabPageCommand : public Command +{ +public: + DeleteTabPageCommand( const TQString &n, FormWindow *fw, + TQTabWidget *tw, TQWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteTabPage; } + +private: + TQTabWidget *tabWidget; + int index; + TQWidget *tabPage; + TQString tabLabel; + +}; + +class MoveTabPageCommand : public Command +{ +public: + MoveTabPageCommand(const TQString &n, FormWindow *fw, + TQTabWidget *tw, TQWidget *page, const TQString& label, int nIndex, int oIndex ); + + void execute(); + void unexecute(); + Type type() const { return MoveTabPage; } + +private: + TQTabWidget *tabWidget; + int newIndex, oldIndex; + TQWidget *tabPage; + TQString tabLabel; + +}; +class QDesignerWidgetStack; +class AddWidgetStackPageCommand : public Command +{ +public: + AddWidgetStackPageCommand( const TQString &n, FormWindow *fw, + QDesignerWidgetStack *ws ); + + void execute(); + void unexecute(); + Type type() const { return AddWidgetStackPage; } + +private: + QDesignerWidgetStack *widgetStack; + int index; + TQWidget *stackPage; +}; + +class DeleteWidgetStackPageCommand : public Command +{ +public: + DeleteWidgetStackPageCommand( const TQString &n, FormWindow *fw, + QDesignerWidgetStack *ws, TQWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteWidgetStackPage; } + +private: + QDesignerWidgetStack *widgetStack; + int index; + TQWidget *stackPage; +}; + + + +class AddWizardPageCommand : public Command +{ +public: + AddWizardPageCommand( const TQString &n, FormWindow *fw, + TQWizard *w, const TQString &label, int index = -1, bool show = TRUE ); + + void execute(); + void unexecute(); + Type type() const { return AddWizardPage; } + +private: + TQWizard *wizard; + int index; + bool show; + TQWidget *page; + TQString pageLabel; + +}; + +class DeleteWizardPageCommand : public Command +{ +public: + DeleteWizardPageCommand( const TQString &n, FormWindow *fw, + TQWizard *w, int index, bool show = TRUE ); + + void execute(); + void unexecute(); + Type type() const { return DeleteWizardPage; } + +private: + TQWizard *wizard; + int index; + bool show; + TQWidget *page; + TQString pageLabel; + +}; + +class RenameWizardPageCommand : public Command +{ +public: + RenameWizardPageCommand( const TQString &n, FormWindow *fw, + TQWizard *w, int index, const TQString& name ); + + void execute(); + void unexecute(); + Type type() const { return RenameWizardPage; } + +private: + TQWizard *wizard; + int index; + TQWidget *page; + TQString label; + +}; + +class SwapWizardPagesCommand : public Command +{ +public: + SwapWizardPagesCommand( const TQString &n, FormWindow *fw, + TQWizard *w, int index1, int index2 ); + + void execute(); + void unexecute(); + Type type() const { return SwapWizardPages; } + +private: + TQWizard *wizard; + int index1, index2; + +}; + +class MoveWizardPageCommand : public Command +{ +public: + MoveWizardPageCommand( const TQString &n, FormWindow *fw, + TQWizard *w, int index1, int index2 ); + + void execute(); + void unexecute(); + Type type() const { return MoveWizardPage; } + +private: + TQWizard *wizard; + int index1, index2; + +}; + +class AddConnectionCommand : public Command +{ +public: + AddConnectionCommand( const TQString &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 TQString &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 TQString &name, FormWindow *fw, const TQCString &f, const TQString& spec, + const TQString &a, const TQString &t, const TQString &l, const TQString &rt ); + + void execute(); + void unexecute(); + Type type() const { return AddFunction; } + +private: + TQCString function; + TQString specifier; + TQString access; + TQString functionType; + TQString language; + TQString returnType; +}; + +class ChangeFunctionAttribCommand : public Command +{ +public: + ChangeFunctionAttribCommand( const TQString &name, FormWindow *fw, MetaDataBase::Function f, + const TQString &on, const TQString &os, const TQString &oa, + const TQString &ot, const TQString &ol, const TQString &ort ); + + void execute(); + void unexecute(); + Type type() const { return ChangeFunctionAttrib; } + +private: + TQString oldName, newName; + TQString oldSpec, newSpec; + TQString oldAccess, newAccess; + TQString oldType, newType; + TQString oldLang, newLang; + TQString oldReturnType, newReturnType; +}; + +class RemoveFunctionCommand : public Command +{ +public: + RemoveFunctionCommand( const TQString &name, FormWindow *fw, const TQCString &f, const TQString& spec, + const TQString &a, const TQString &t, const TQString &l, const TQString &rt ); + + void execute(); + void unexecute(); + Type type() const { return RemoveFunction; } + +private: + TQCString function; + TQString specifier; + TQString access; + TQString functionType; + TQString language; + TQString returnType; +}; + +class AddVariableCommand : public Command +{ +public: + AddVariableCommand( const TQString &name, FormWindow *fw, const TQString &vn, const TQString &a ); + void execute(); + void unexecute(); + Type type() const { return AddVariable; } + +private: + TQString varName; + TQString access; +}; + +class SetVariablesCommand : public Command +{ +public: + SetVariablesCommand( const TQString &name, FormWindow *fw, TQValueList<MetaDataBase::Variable> lst ); + void execute(); + void unexecute(); + Type type() const { return SetVariables; } + +private: + TQValueList<MetaDataBase::Variable> oldList, newList; +}; + +class RemoveVariableCommand : public Command +{ +public: + RemoveVariableCommand( const TQString &name, FormWindow *fw, const TQString &vn ); + void execute(); + void unexecute(); + Type type() const { return RemoveVariable; } + +private: + TQString varName; + TQString access; +}; + +class EditDefinitionsCommand : public Command +{ +public: + EditDefinitionsCommand( const TQString &name, FormWindow *fw, LanguageInterface *lf, + const TQString &n, const TQStringList &l ); + void execute(); + void unexecute(); + Type type() const { return EditDefinitions; } + +private: + LanguageInterface *lIface; + TQString defName; + TQStringList newList, oldList; +}; + +class LowerCommand : public Command +{ +public: + LowerCommand( const TQString &name, FormWindow *fw, const TQWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Lower; } + +private: + TQWidgetList widgets; + +}; + +class RaiseCommand : public Command +{ +public: + RaiseCommand( const TQString &name, FormWindow *fw, const TQWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Raise; } + +private: + TQWidgetList widgets; + +}; + +class PasteCommand : public Command +{ +public: + PasteCommand( const TQString &n, FormWindow *fw, const TQWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Paste; } + +private: + TQWidgetList widgets; + +}; + +class TabOrderCommand : public Command +{ +public: + TabOrderCommand( const TQString &n, FormWindow *fw, const TQWidgetList &ol, const TQWidgetList &nl ); + + void execute(); + void unexecute(); + Type type() const { return TabOrder; } + void merge( Command *c ); + bool canMerge( Command *c ); + +private: + TQWidgetList oldOrder, newOrder; + +}; + +class PopulateListBoxCommand : public Command +{ +public: + struct Item + { + TQString text; + TQPixmap pix; + TQ_DUMMY_COMPARISON_OPERATOR( Item ) + }; + + PopulateListBoxCommand( const TQString &n, FormWindow *fw, + TQListBox *lb, const TQValueList<Item> &items ); + void execute(); + void unexecute(); + Type type() const { return PopulateListBox; } + + bool operator==( const PopulateListBoxCommand & ) const; + +private: + TQValueList<Item> oldItems, newItems; + TQListBox *listbox; + +}; + +class PopulateIconViewCommand : public Command +{ +public: + struct Item + { + TQString text; + TQPixmap pix; + TQ_DUMMY_COMPARISON_OPERATOR( Item ) + }; + + PopulateIconViewCommand( const TQString &n, FormWindow *fw, + TQIconView *iv, const TQValueList<Item> &items ); + void execute(); + void unexecute(); + Type type() const { return PopulateIconView; } + + bool operator==( const PopulateIconViewCommand & ) const; + +private: + TQValueList<Item> oldItems, newItems; + TQIconView *iconview; + +}; + +class PopulateListViewCommand : public Command +{ +public: + PopulateListViewCommand( const TQString &n, FormWindow *fw, + TQListView *lv, TQListView *from ); + void execute(); + void unexecute(); + Type type() const { return PopulateListView; } + static void transferItems( TQListView *from, TQListView *to ); + + bool operator==( const PopulateListViewCommand & ) const; + +private: + TQListView *oldItems, *newItems; + TQListView *listview; + +}; + +class PopulateMultiLineEditCommand : public Command +{ +public: + PopulateMultiLineEditCommand( const TQString &n, FormWindow *fw, + TQTextEdit *mle, const TQString &txt ); + void execute(); + void unexecute(); + Type type() const { return PopulateMultiLineEdit; } + +private: + TQString newText, oldText; + TQTextEdit *mlined; + bool wasChanged; + +}; + +class PopulateTableCommand : public Command +{ +public: + struct Row + { + TQString text; + TQPixmap pix; + TQ_DUMMY_COMPARISON_OPERATOR( Row ) + }; + + struct Column + { + TQString text; + TQPixmap pix; + TQString field; + TQ_DUMMY_COMPARISON_OPERATOR( Column ) + }; + + PopulateTableCommand( const TQString &n, FormWindow *fw, TQTable *t, + const TQValueList<Row> &rows, + const TQValueList<Column> &columns ); + + void execute(); + void unexecute(); + Type type() const { return PopulateTable; } + +private: + TQValueList<Row> oldRows, newRows; + TQValueList<Column> oldColumns, newColumns; + TQTable *table; + +}; + +class AddActionToToolBarCommand : public Command +{ +public: + AddActionToToolBarCommand( const TQString &n, FormWindow *fw, + TQAction *a, QDesignerToolBar *tb, int idx ); + + void execute(); + void unexecute(); + Type type() const { return AddActionToToolBar; } + +private: + TQAction *action; + QDesignerToolBar *toolBar; + int index; + +}; + +class RemoveActionFromToolBarCommand : public AddActionToToolBarCommand +{ +public: + RemoveActionFromToolBarCommand( const TQString &n, FormWindow *fw, + TQAction *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 TQString &n, FormWindow *fw, TQMainWindow *mw ); + + void execute(); + void unexecute(); + Type type() const { return AddToolBar; } + +protected: + QDesignerToolBar *toolBar; + TQMainWindow *mainWindow; + +}; + +class RemoveToolBarCommand : public AddToolBarCommand +{ +public: + RemoveToolBarCommand( const TQString &n, FormWindow *fw, TQMainWindow *mw, QDesignerToolBar *tb ) + : AddToolBarCommand( n, fw, mw ) { toolBar = tb; } + + void execute() { AddToolBarCommand::unexecute(); } + void unexecute() { AddToolBarCommand::execute(); } + Type type() const { return RemoveToolBar; } + +}; + +struct TQWidgetContainerInterfacePrivate; + +class AddContainerPageCommand : public Command +{ +public: + AddContainerPageCommand( const TQString &n, FormWindow *fw, + TQWidget *c, const TQString &label ); + + ~AddContainerPageCommand(); + + void execute(); + void unexecute(); + Type type() const { return AddContainerPage; } + +private: + TQString wClassName; + TQWidget *container; + int index; + TQString pageLabel; + TQWidget *page; + TQWidgetContainerInterfacePrivate *wiface; + +}; + +class DeleteContainerPageCommand : public Command +{ +public: + DeleteContainerPageCommand( const TQString &n, FormWindow *fw, + TQWidget *container, int index ); + ~DeleteContainerPageCommand(); + + void execute(); + void unexecute(); + Type type() const { return DeleteContainerPage; } + +private: + TQString wClassName; + TQWidget *container; + int index; + TQString pageLabel; + TQWidget *page; + TQWidgetContainerInterfacePrivate *wiface; + +}; + +class RenameContainerPageCommand : public Command +{ +public: + RenameContainerPageCommand( const TQString &n, FormWindow *fw, + TQWidget *container, int index, + const TQString &label ); + ~RenameContainerPageCommand(); + + void execute(); + void unexecute(); + Type type() const { return RenameContainerPage; } + +private: + TQString wClassName; + TQWidget *container; + int index; + TQString oldLabel, newLabel; + TQWidgetContainerInterfacePrivate *wiface; + +}; + +class AddActionToPopupCommand : public Command +{ +public: + AddActionToPopupCommand( const TQString &n, + FormWindow *fw, + PopupMenuEditor *m, + PopupMenuEditorItem *i, + int idx = -1 ); + void execute(); + void unexecute(); + Type type() const { return AddActionToPopup; } +protected: + TQString constructName() const; + PopupMenuEditor *menu; + PopupMenuEditorItem *item; + int index; +private: +}; + +class RemoveActionFromPopupCommand : public AddActionToPopupCommand +{ +public: + RemoveActionFromPopupCommand( const TQString &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 TQString &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 TQString &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 TQString &n, + FormWindow *fw, + TQAction *a ) + : Command( n, fw ), action( a ) { } + virtual Type type() const = 0; +protected: + ActionEditor *actionEditor(); + TQAction *action; +}; + +class RenameActionCommand : public ActionCommand +{ +public: + RenameActionCommand( const TQString &n, + FormWindow *fw, + TQAction *a, + PopupMenuEditor *m, + TQString nm ); + void execute(); + void unexecute(); + Type type() const { return RenameAction; } +private: + PopupMenuEditor *menu; + TQString newName; + TQString oldName; +}; + +class SetActionIconsCommand : public ActionCommand +{ +public: + SetActionIconsCommand( const TQString &n, + FormWindow *fw, + TQAction *a, + PopupMenuEditor *m, + TQIconSet &icons ); + void execute(); + void unexecute(); + Type type() const { return SetActionIcons; } +protected: + void updateActionEditorItem(); +private: + PopupMenuEditor *menu; + TQIconSet newIcons; + TQIconSet oldIcons; +}; + +class AddMenuCommand : public Command +{ +public: + AddMenuCommand( const TQString &n, + FormWindow *fw, + MenuBarEditor *b, + MenuBarEditorItem *i, + int idx = -1 ); + + AddMenuCommand( const TQString &n, + FormWindow *fw, + TQMainWindow *mw, + const TQString &nm = "Menu" ); + + void execute(); + void unexecute(); + Type type() const { return AddMenu; } +protected: + MenuBarEditor *mb; + MenuBarEditorItem *item; + TQString name; + int index; +private: +}; + +class RemoveMenuCommand : public AddMenuCommand +{ +public: + RemoveMenuCommand( const TQString &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 TQString &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 TQString &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 TQString &n, + FormWindow *fw, + MenuBarEditor *m, + TQString nm, + MenuBarEditorItem *i ); + void execute(); + void unexecute(); + Type type() const { return RenameMenu; } + static TQString makeLegal( const TQString &str ); +private: + MenuBarEditor *bar; + MenuBarEditorItem *item; + TQString newName; + TQString oldName; +}; + +class AddToolBoxPageCommand : public Command +{ +public: + AddToolBoxPageCommand( const TQString &n, FormWindow *fw, + TQToolBox *tw, const TQString &label ); + + void execute(); + void unexecute(); + Type type() const { return AddToolBoxPage; } + +private: + TQToolBox *toolBox; + int index; + TQWidget *toolBoxPage; + TQString toolBoxLabel; + +}; + +class DeleteToolBoxPageCommand : public Command +{ +public: + DeleteToolBoxPageCommand( const TQString &n, FormWindow *fw, + TQToolBox *tw, TQWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteToolBoxPage; } + +private: + TQToolBox *toolBox; + int index; + TQWidget *toolBoxPage; + TQString toolBoxLabel; + +}; + +#endif |