#ifndef _ACTIONEDITOR_H_ #define _ACTIONEDITOR_H_ //============================================================================= // // File : ActionEditor.h // Creation date : Tue Dec 29 2004 02:40:55 CEST by Szymon Stefanek // // This file is part of the KVIrc IRC client distribution // Copyright (C) 2004-2010 Szymon Stefanek (pragma at kvirc dot net) // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU 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 General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= #include "KviWindow.h" #include #include #include #include #include class QLineEdit; class QComboBox; class QSimpleRichText; class QPushButton; class QSplitter; class ActionEditorTreeWidgetItem; class KviScriptEditor; class ActionEditor; class ActionData { public: QString m_szName; QString m_szScriptCode; QString m_szVisibleName; QString m_szDescription; QString m_szCategory; QString m_szBigIcon; QString m_szSmallIcon; QString m_szKeySequence; unsigned int m_uFlags; ActionEditorTreeWidgetItem * m_pItem; // ummigarba tanto... public: ActionData(const QString & szName, const QString & szScriptCode, const QString & szVisibleName, const QString & szDescription, const QString & szCategory, const QString & szBigIcon, const QString & szSmallIcon, unsigned int uFlags, const QString & szKeySequence, ActionEditorTreeWidgetItem * pItem) : m_szName(szName), m_szScriptCode(szScriptCode), m_szVisibleName(szVisibleName), m_szDescription(szDescription), m_szCategory(szCategory), m_szBigIcon(szBigIcon), m_szSmallIcon(szSmallIcon), m_szKeySequence(szKeySequence), m_uFlags(uFlags), m_pItem(pItem){}; }; class ActionEditorTreeWidgetItem : public QTreeWidgetItem { public: ActionEditorTreeWidgetItem(QTreeWidget * v, ActionData * a); ~ActionEditorTreeWidgetItem(); protected: ActionData * m_pActionData; QTreeWidget * m_pTreeWidget; QString m_szKey; public: ActionData * actionData() { return m_pActionData; }; //void setupForActionData(); public: //virtual void paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align); //virtual void setup(); virtual QString key(int, bool) const; }; class ActionEditorTreeView : public QTreeWidget { Q_OBJECT public: ActionEditorTreeView(QWidget * pParent); ~ActionEditorTreeView(); protected: void resizeEvent(QResizeEvent * e) override; }; class SingleActionEditor : public QWidget { Q_OBJECT public: SingleActionEditor(QWidget * par, ActionEditor * ed); ~SingleActionEditor(); protected: ActionEditor * m_pActionEditor; ActionData * m_pActionData; QLineEdit * m_pNameEdit; QLineEdit * m_pVisibleNameEdit; QComboBox * m_pCategoryCombo; KviScriptEditor * m_pScriptEditor; QLineEdit * m_pKeySequenceEdit; QLineEdit * m_pDescriptionEdit; QLineEdit * m_pSmallIconEdit; QLineEdit * m_pBigIconEdit; QToolButton * m_pSmallIconButton; QToolButton * m_pBigIconButton; QCheckBox * m_pNeedsContextCheck; QCheckBox * m_pNeedsConnectionCheck; QCheckBox * m_pEnableAtLoginCheck; QCheckBox * m_pSpecificWindowsCheck; QCheckBox * m_pWindowConsoleCheck; QCheckBox * m_pWindowChannelCheck; QCheckBox * m_pWindowQueryCheck; QCheckBox * m_pWindowDccChatCheck; QCheckBox * m_pConsoleOnlyIfUsersSelectedCheck; QCheckBox * m_pChannelOnlyIfUsersSelectedCheck; QCheckBox * m_pQueryOnlyIfUsersSelectedCheck; public: ActionData * actionData() { return m_pActionData; }; void setActionData(ActionData * d); void commit(); protected slots: void chooseSmallIcon(); void chooseBigIcon(); void displaySmallIcon(const QString & szIconId); void displayBigIcon(const QString & szIconId); void needsContextCheckToggled(bool); void needsConnectionCheckToggled(bool); void specificWindowsCheckToggled(bool); void channelWindowsCheckToggled(bool); void consoleWindowsCheckToggled(bool); void queryWindowsCheckToggled(bool); }; class ActionEditor : public QWidget { friend class ActionEditorWindow; Q_OBJECT public: ActionEditor(QWidget * par); ~ActionEditor(); protected: ActionEditorTreeView * m_pTreeWidget; SingleActionEditor * m_pSingleActionEditor; QSplitter * m_pSplitter; QPushButton * m_pNewActionButton; QPushButton * m_pDeleteActionsButton; QPushButton * m_pExportActionsButton; public: void commit(); bool actionExists(const QString & szName); protected: int selectedCount(); QString nameForAutomaticAction(const QString & szTemplate); protected slots: void currentItemChanged(QTreeWidgetItem * it, QTreeWidgetItem * prev); void newAction(); void deleteActions(); void exportActions(); }; class ActionEditorWindow : public KviWindow { Q_OBJECT public: ActionEditorWindow(); ~ActionEditorWindow(); protected: ActionEditor * m_pEditor; protected: QPixmap * myIconPtr() override; void getConfigGroupName(QString & szName) override; void saveProperties(KviConfigurationFile *) override; void loadProperties(KviConfigurationFile *) override; protected slots: void cancelClicked(); void okClicked(); void applyClicked(); }; #endif //_ACTIONEDITOR_H_