// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef NLQT_UNDO_REDO_BINDERS_H #define NLQT_UNDO_REDO_BINDERS_H #include <nel/misc/types_nl.h> // STL includes // Qt includes #include <QtCore/QObject> #include <QtCore/QString> #include <QtGui/QColor> #include <QtGui/QUndoCommand> // NeL includes // Project includes class QUndoStack; class QAbstractButton; class QLineEdit; class QComboBox; class QtColorPicker; namespace NLQT { /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoBinderButton * \brief CUndoRedoBinderButton * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoBinderButton : public QObject { Q_OBJECT public: CUndoRedoBinderButton(QAbstractButton *abstractButton, QUndoStack *undoStack); virtual ~CUndoRedoBinderButton(); inline void enable(bool enabled) { m_Enabled = enabled; } private slots: void abstractButtonToggled(bool checked); private: bool m_Enabled; // binder enabled bool m_Checked; QAbstractButton *m_AbstractButton; QUndoStack *m_UndoStack; private: CUndoRedoBinderButton(const CUndoRedoBinderButton &); CUndoRedoBinderButton &operator=(const CUndoRedoBinderButton &); }; /* class CUndoRedoBinderButton */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoCommandButton * \brief CUndoRedoCommandButton * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoCommandButton : public QUndoCommand { public: CUndoRedoCommandButton(CUndoRedoBinderButton *binder, QAbstractButton *abstractButton, bool undo/*, bool redo*/); virtual ~CUndoRedoCommandButton(); virtual void undo(); virtual void redo(); private: bool m_Undo; /*bool m_Redo;*/ CUndoRedoBinderButton *m_Binder; QAbstractButton *m_AbstractButton; QUndoStack *m_UndoStack; private: CUndoRedoCommandButton(const CUndoRedoCommandButton &); CUndoRedoCommandButton &operator=(const CUndoRedoCommandButton &); }; /* class CUndoRedoCommandButton */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoBinderLineEdit * \brief CUndoRedoBinderLineEdit * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoBinderLineEdit : public QObject { Q_OBJECT public: CUndoRedoBinderLineEdit(QLineEdit *lineEdit, QUndoStack *undoStack); virtual ~CUndoRedoBinderLineEdit(); inline void enable(bool enabled) { m_Enabled = enabled; } private slots: void lineEditTextChanged(const QString &text); private: bool m_Enabled; // binder enabled QString m_LastValue; QLineEdit *m_LineEdit; QUndoStack *m_UndoStack; int m_Id; private: CUndoRedoBinderLineEdit(const CUndoRedoBinderLineEdit &); CUndoRedoBinderLineEdit &operator=(const CUndoRedoBinderLineEdit &); }; /* class CUndoRedoBinderLineEdit */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoCommandLineEdit * \brief CUndoRedoCommandLineEdit * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoCommandLineEdit : public QUndoCommand { public: CUndoRedoCommandLineEdit(CUndoRedoBinderLineEdit *binder, QLineEdit *abtractLineEdit, const QString &undo, const QString &redo, int id); virtual ~CUndoRedoCommandLineEdit(); virtual void undo(); virtual void redo(); virtual int id() const { return m_Id; }; virtual bool mergeWith(const QUndoCommand *other); private: QString m_Undo; QString m_Redo; CUndoRedoBinderLineEdit *m_Binder; QLineEdit *m_LineEdit; QUndoStack *m_UndoStack; int m_Id; private: CUndoRedoCommandLineEdit(const CUndoRedoCommandLineEdit &); CUndoRedoCommandLineEdit &operator=(const CUndoRedoCommandLineEdit &); }; /* class CUndoRedoCommandLineEdit */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoBinderComboBox * \brief CUndoRedoBinderComboBox * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoBinderComboBox : public QObject { Q_OBJECT public: CUndoRedoBinderComboBox(QComboBox *comboBox, QUndoStack *undoStack); virtual ~CUndoRedoBinderComboBox(); inline void enable(bool enabled) { m_Enabled = enabled; } private slots: void comboBoxCurrentIndexChanged(int index); private: bool m_Enabled; // binder enabled int m_LastValue; QComboBox *m_ComboBox; QUndoStack *m_UndoStack; private: CUndoRedoBinderComboBox(const CUndoRedoBinderComboBox &); CUndoRedoBinderComboBox &operator=(const CUndoRedoBinderComboBox &); }; /* class CUndoRedoBinderComboBox */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoCommandComboBox * \brief CUndoRedoCommandComboBox * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoCommandComboBox : public QUndoCommand { public: CUndoRedoCommandComboBox(CUndoRedoBinderComboBox *binder, QComboBox *abtractComboBox, int undo, int redo); virtual ~CUndoRedoCommandComboBox(); virtual void undo(); virtual void redo(); private: int m_Undo; int m_Redo; CUndoRedoBinderComboBox *m_Binder; QComboBox *m_ComboBox; QUndoStack *m_UndoStack; private: CUndoRedoCommandComboBox(const CUndoRedoCommandComboBox &); CUndoRedoCommandComboBox &operator=(const CUndoRedoCommandComboBox &); }; /* class CUndoRedoCommandComboBox */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoBinderColorPicker * \brief CUndoRedoBinderColorPicker * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoBinderColorPicker : public QObject { Q_OBJECT public: CUndoRedoBinderColorPicker(QtColorPicker *colorPicker, QUndoStack *undoStack); virtual ~CUndoRedoBinderColorPicker(); inline void enable(bool enabled) { m_Enabled = enabled; } private slots: void colorPickerColorChanged(const QColor &col); private: bool m_Enabled; // binder enabled QColor m_LastValue; QtColorPicker *m_ColorPicker; QUndoStack *m_UndoStack; private: CUndoRedoBinderColorPicker(const CUndoRedoBinderColorPicker &); CUndoRedoBinderColorPicker &operator=(const CUndoRedoBinderColorPicker &); }; /* class CUndoRedoBinderColorPicker */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /** * CUndoRedoCommandColorPicker * \brief CUndoRedoCommandColorPicker * \date 2010-02-13 14:02GMT * \author Jan Boon (Kaetemi) */ class CUndoRedoCommandColorPicker : public QUndoCommand { public: CUndoRedoCommandColorPicker(CUndoRedoBinderColorPicker *binder, QtColorPicker *abtractColorPicker, const QColor &undo, const QColor &redo); virtual ~CUndoRedoCommandColorPicker(); virtual void undo(); virtual void redo(); private: QColor m_Undo; QColor m_Redo; CUndoRedoBinderColorPicker *m_Binder; QtColorPicker *m_ColorPicker; QUndoStack *m_UndoStack; private: CUndoRedoCommandColorPicker(const CUndoRedoCommandColorPicker &); CUndoRedoCommandColorPicker &operator=(const CUndoRedoCommandColorPicker &); }; /* class CUndoRedoCommandColorPicker */ /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// } /* namespace NLQT */ #endif /* #ifndef NLQT_UNDO_REDO_BINDERS_H */ /* end of file */