You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qt3/tools/designer/designer/command.h

1267 lines
27 KiB

/**********************************************************************
** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved.
**
** This file is part of Qt Designer.
**
** This file may be used under the terms of the GNU General
** Public License versions 2.0 or 3.0 as published by the Free
** Software Foundation and appearing in the files LICENSE.GPL2
** and LICENSE.GPL3 included in the packaging of this file.
** Alternatively you may (at your option) use any later version
** of the GNU General Public License if such license has been
** publicly approved by Trolltech ASA (or its successors, if any)
** and the KDE Free Qt Foundation.
**
** Please review the following information to ensure GNU General
** Public Licensing requirements will be met:
** http://trolltech.com/products/qt/licenses/licensing/opensource/.
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
** or contact the sales department at sales@trolltech.com.
**
** Licensees holding valid Qt Commercial 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 WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
** herein.
**
**********************************************************************/
#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 &currentItemText, 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