KVIrc 5.2.6
Developer APIs
ClassEditorWindow.h
Go to the documentation of this file.
1#ifndef _CLASSEDITOR_H_
2#define _CLASSEDITOR_H_
3//=============================================================================
4//
5// File : ClassEditorWindow.h
6// Creation date : Mon Feb 15 2010 14:35:55 CEST by Carbone Alessandro
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2010 Alessandro Carbone (elfonol at gmail dot com)
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
32
33#include "KviWindow.h"
34#include "KviCString.h"
35#include "KviPointerList.h"
36#include "KviHeapObject.h"
37#include "KviKvsObjectClass.h"
38
39#include <QWidget>
40#include <QComboBox>
41#include <QDialog>
42#include <QLineEdit>
43#include <QCheckBox>
44#include <QTreeWidget>
45#include <QMenu>
46
47class QLineEdit;
48#include <QStringList>
49class QPushButton;
50class QCheckBox;
51class QLabel;
52class QSplitter;
53class KviScriptEditor;
54
59class ClassEditorTreeWidget : public QTreeWidget
60{
61 Q_OBJECT
62public:
68 ClassEditorTreeWidget(QWidget * pParent);
69
74
75protected:
76 void mousePressEvent(QMouseEvent * e) override;
77signals:
84 void rightButtonPressed(QTreeWidgetItem * pItem, QPoint pos);
85};
86
91class ClassEditorTreeWidgetItem : public QTreeWidgetItem, public KviHeapObject
92{
93public:
104
105public:
113 ClassEditorTreeWidgetItem(QTreeWidget * pTreeWidget, Type eType, const QString & szName);
114
122 ClassEditorTreeWidgetItem(ClassEditorTreeWidgetItem * pParentItem, Type eType, const QString & szName);
123
128
129protected:
131 QString m_szName;
132 QString m_szBuffer;
138
139public:
145 void setInheritsClass(QString szInheritsClassName) { m_szInheritsClassName = szInheritsClassName; };
146
152
157 const QString & name() { return m_szName; };
158
164 void setName(const QString & szName);
165
171 void setReminder(const QString & szRem) { m_szReminder = szRem; };
172
177 QString reminder() { return m_szReminder; };
178
184 void setClassNotBuilt(bool bModified);
185
190 bool classNotBuilt() { return m_bClassModified; };
191
197 void setInternalFunction(bool bInternal) { m_bInternal = bInternal; };
198
203 bool isInternalFunction() { return m_bInternal; };
204
209 Type type() { return m_eType; };
210
216 void setType(Type eType);
217
222 bool isClass() { return m_eType == Class; };
223
228 bool isNamespace() { return m_eType == Namespace; };
229
234 bool isMethod() { return m_eType == Method; };
235
241 void setBuffer(const QString & szBuffer) { m_szBuffer = szBuffer; };
242
247 const QString & buffer() { return m_szBuffer; };
248
253 const int & cursorPosition() { return m_iPos; };
254
260 void setCursorPosition(const int & iPos) { m_iPos = iPos; };
261};
262
267class ClassEditorWidget : public QWidget
268{
269 Q_OBJECT
270public:
276 ClassEditorWidget(QWidget * pParent);
277
282
283public:
291
295 QSplitter * m_pSplitter;
296 QString m_szDir;
298
299protected:
301
302public:
309
316
321 void build();
322
327 void saveNotBuiltClasses();
328
333 void loadNotBuiltClasses();
334
341 ClassEditorTreeWidgetItem * findFunction(const QString & szFunctionName, ClassEditorTreeWidgetItem * pClass);
342
349 void exportClasses(bool bSelectedOnly, bool bSingleFiles = false);
350
357
364
365protected:
366 //void recursiveSearchReplace(const QString &szSearch,ClassEditorTreeWidgetItem * it,bool bReplace=false,const QString &szReplace="n");
367
369
370 void oneTimeSetup();
371 void createFullClass(KviKvsObjectClass * pClass, ClassEditorTreeWidgetItem * pItem, const QString & szClassName);
372
373 void saveLastEditedItem();
375 void appendSelectedClassItemsRecursive(KviPointerList<ClassEditorTreeWidgetItem> * pList, QTreeWidgetItem * pStartFrom);
376
379
380 void openParentItems(QTreeWidgetItem * pItem);
381 void activateItem(QTreeWidgetItem * pItem);
382 bool hasSelectedItems();
383 bool askForClassName(QString & szClassName, QString & szInheritsClassName, bool bEdit);
384 bool askForNamespaceName(const QString & szAction, const QString & szText, const QString & szInitialText, QString & szNameBuffer);
385 bool askForFunction(QString & szFunctionName, QString & szReminder, bool * pbInternal, const QString & szClassName, bool bRenameMode);
386 void searchInheritedClasses(const QString szClass, KviPointerList<ClassEditorTreeWidgetItem> & lInheritsedClasses);
387
393 bool classExists(QString & szName);
394
401
408
409 bool removeItem(ClassEditorTreeWidgetItem * pItem, KviPointerList<ClassEditorTreeWidgetItem> & lRemovedItems, bool * pbYesToAll);
411
415 ClassEditorTreeWidgetItem * createFullItem(const QString & szFullName);
416 ClassEditorTreeWidgetItem * createFullNamespace(const QString & szFullName);
417
423 ClassEditorTreeWidgetItem * findItem(const QString & szName);
424
425 ClassEditorTreeWidgetItem * findTopLevelItem(const QString & szName);
426 ClassEditorTreeWidgetItem * createFullItemRecursive(QTreeWidgetItem * pCurrent, QStringList & lNameSpaces, int & iLevel, bool bCreateNameSpace = 0);
427protected slots:
428 void currentItemChanged(QTreeWidgetItem * pItem, QTreeWidgetItem *);
429 void customContextMenuRequested(QPoint);
430 void newClass();
431 void newNamespace();
432 void newMemberFunction();
433 void renameFunction();
435
436 void renameItem();
437
438 void exportAll();
440 void exportSelected();
441 void slotFind();
442 void slotFindWord(const QString &);
443 void searchReplace(const QString & szSearch, bool bReplace = false, const QString & szReplace = "n");
444
449 void slotCollapseItems();
450
457
462 void removeSelectedItems();
463
470 void slotReplaceAll(const QString & szBefore, const QString & szAfter);
471};
472
478{
479 Q_OBJECT
480public:
486
491
492protected:
494
495protected:
500 QPixmap * myIconPtr() override;
501
507 virtual void configGroupName(QString & szName);
508
514 void saveProperties(KviConfigurationFile * pCfg) override;
515
521 void loadProperties(KviConfigurationFile * pCfg) override;
522protected slots:
527 void cancelClicked();
528
533 void buildClicked();
534
539 void saveClicked();
540};
541
546class KviClassEditorDialog : public QDialog
547{
548 Q_OBJECT
549public:
560 KviClassEditorDialog(QWidget * pParent, const QString & szName, KviPointerHashTable<QString, ClassEditorTreeWidgetItem> * pClasses, const QString & szClassName, const QString & szInheritsClassName, bool bRenameMode = false);
561
566
567protected:
568 QPushButton * m_pNewClassButton;
571
572public:
577 QString className() { return m_pClassNameLineEdit->text(); };
578
583 QString inheritsClassName() { return m_pInheritsClassComboBox->currentText(); };
584protected slots:
589 void textChanged(const QString &);
590};
591
596class KviClassEditorFunctionDialog : public QDialog
597{
598 Q_OBJECT
599public:
611 KviClassEditorFunctionDialog(QWidget * pParent, const QString & szName, const QString & szClassName, const QString & szFunctionName, const QString & szReminder, bool bIsInternal, bool bRenameMode = false);
612
617
618protected:
619 QPushButton * m_pNewFunctionButton;
623
624public:
629 QString functionName() { return m_pFunctionNameLineEdit->text(); };
630
635 QString reminder() { return m_pReminderLineEdit->text(); };
636
641 bool isInternalFunction() { return m_pInternalCheckBox->isChecked(); };
642protected slots:
647 void textChanged(const QString &);
648};
649#endif //_CLASSEDITOR_H_
Heap Object.
C++ Template based double linked pointer list class.
Contains the KviWindow class.
Describes an item inside the class editor tree widget.
Definition ClassEditorWindow.h:92
bool m_bInternal
Definition ClassEditorWindow.h:136
void setClassNotBuilt(bool bModified)
Sets the state of the class as non-built.
Definition ClassEditorWindow.cpp:132
QString reminder()
Returns the parameters list.
Definition ClassEditorWindow.h:177
bool isClass()
Returns true if the item is a class, false otherwise.
Definition ClassEditorWindow.h:222
void setBuffer(const QString &szBuffer)
Saves the code of the item in a buffer.
Definition ClassEditorWindow.h:241
bool isNamespace()
Returns true if the item is a namespace, false otherwise.
Definition ClassEditorWindow.h:228
int m_iPos
Definition ClassEditorWindow.h:137
QString inheritsClass()
Returns the class name of the classes we inherit from.
Definition ClassEditorWindow.h:151
void setInternalFunction(bool bInternal)
Sets the function as internal.
Definition ClassEditorWindow.h:197
const int & cursorPosition()
Returns the cursor's position.
Definition ClassEditorWindow.h:253
void setName(const QString &szName)
Sets the name of the item.
Definition ClassEditorWindow.cpp:145
Type type()
Returns the type of the item.
Definition ClassEditorWindow.h:209
const QString & buffer()
Returns the buffer containing the code of the item.
Definition ClassEditorWindow.h:247
void setInheritsClass(QString szInheritsClassName)
Sets the class name on which the class inherits from.
Definition ClassEditorWindow.h:145
bool isInternalFunction()
Returns true if the function is set as internal, false otherwise.
Definition ClassEditorWindow.h:203
bool classNotBuilt()
Returns true if we class is not built yet, false otherwise.
Definition ClassEditorWindow.h:190
~ClassEditorTreeWidgetItem()
Destroys the class editor tree widget item.
Definition ClassEditorWindow.h:127
void setType(Type eType)
Sets the type of the item.
Definition ClassEditorWindow.cpp:151
void setReminder(const QString &szRem)
Sets the list of parameters the function accept.
Definition ClassEditorWindow.h:171
bool m_bClassModified
Definition ClassEditorWindow.h:135
QString m_szName
Definition ClassEditorWindow.h:131
ClassEditorTreeWidgetItem(QTreeWidget *pTreeWidget, Type eType, const QString &szName)
Constructs the class editor tree widget item.
Definition ClassEditorWindow.cpp:93
void setCursorPosition(const int &iPos)
Sets the cursor position.
Definition ClassEditorWindow.h:260
const QString & name()
Returns the name of the item.
Definition ClassEditorWindow.h:157
bool isMethod()
Returns true if the item is a member function, false otherwise.
Definition ClassEditorWindow.h:234
QString m_szBuffer
Definition ClassEditorWindow.h:132
QString m_szReminder
Definition ClassEditorWindow.h:134
Type m_eType
Definition ClassEditorWindow.h:130
QString m_szInheritsClassName
Definition ClassEditorWindow.h:133
Type
Contains the type of the class item.
Definition ClassEditorWindow.h:99
@ Namespace
Definition ClassEditorWindow.h:101
@ Method
Definition ClassEditorWindow.h:102
@ Class
Definition ClassEditorWindow.h:100
Describes the tree widget hierarchy.
Definition ClassEditorWindow.h:60
void mousePressEvent(QMouseEvent *e) override
Definition ClassEditorWindow.cpp:82
void rightButtonPressed(QTreeWidgetItem *pItem, QPoint pos)
Emitted when we press the mouse right button.
~ClassEditorTreeWidget()
Destroys the tree widget.
Definition ClassEditorWindow.cpp:76
ClassEditorTreeWidget(QWidget *pParent)
Construct the tree widget.
Definition ClassEditorWindow.cpp:66
The Class Editor module.
Definition ClassEditorWindow.h:268
ClassEditorTreeWidgetItem * createFullItemRecursive(QTreeWidgetItem *pCurrent, QStringList &lNameSpaces, int &iLevel, bool bCreateNameSpace=0)
void renameFunction()
Definition ClassEditorWindow.cpp:475
ClassEditorTreeWidgetItem * m_pLastEditedItem
Definition ClassEditorWindow.h:292
QLabel * m_pClassNameLabel
Definition ClassEditorWindow.h:286
void newMemberFunction()
Definition ClassEditorWindow.cpp:1616
void saveNotBuiltClasses()
Saves non-built classes to a file.
Definition ClassEditorWindow.cpp:1802
void renameNamespace(ClassEditorTreeWidgetItem *pNamespace)
Renames a namespace.
Definition ClassEditorWindow.cpp:650
QString buildFullClassName(ClassEditorTreeWidgetItem *pItem)
Definition ClassEditorWindow.cpp:252
void loadProperties(KviConfigurationFile *pCfg)
Called to load the window properties.
Definition ClassEditorWindow.cpp:1260
void newNamespace()
Definition ClassEditorWindow.cpp:1605
void newClass()
Definition ClassEditorWindow.cpp:1584
void updateClassHierarchy(ClassEditorTreeWidgetItem *pClass)
Definition ClassEditorWindow.cpp:1437
void cutItem(ClassEditorTreeWidgetItem *pItem)
Removes the item from the tree.
Definition ClassEditorWindow.cpp:638
void exportClassBuffer(QString &szBuffer, ClassEditorTreeWidgetItem *pItem)
Definition ClassEditorWindow.cpp:1033
ClassEditorTreeWidgetItem * createFullNamespace(const QString &szFullName)
Definition ClassEditorWindow.cpp:346
void slotFind()
Definition ClassEditorWindow.cpp:975
void saveLastEditedItem()
Definition ClassEditorWindow.cpp:732
void currentItemChanged(QTreeWidgetItem *pItem, QTreeWidgetItem *)
Definition ClassEditorWindow.cpp:745
bool askForFunction(QString &szFunctionName, QString &szReminder, bool *pbInternal, const QString &szClassName, bool bRenameMode)
Definition ClassEditorWindow.cpp:1484
void appendSelectedClassItems(KviPointerList< ClassEditorTreeWidgetItem > *pList)
Definition ClassEditorWindow.cpp:1272
QPushButton * m_pClassNameRenameButton
Definition ClassEditorWindow.h:287
ClassEditorTreeWidgetItem * createFullItem(const QString &szFullName)
Definition ClassEditorWindow.cpp:309
ClassEditorWidget(QWidget *pParent)
Constructs the class editor object.
Definition ClassEditorWindow.cpp:166
ClassEditorTreeWidgetItem * findItem(const QString &szName)
Searches an item.
Definition ClassEditorWindow.cpp:281
bool askForNamespaceName(const QString &szAction, const QString &szText, const QString &szInitialText, QString &szNameBuffer)
Definition ClassEditorWindow.cpp:1503
ClassEditorTreeWidgetItem * findTopLevelItem(const QString &szName)
Definition ClassEditorWindow.cpp:271
QSplitter * m_pSplitter
Definition ClassEditorWindow.h:295
ClassEditorTreeWidgetItem * m_pLastClickedItem
Definition ClassEditorWindow.h:293
void removeItemChildren(ClassEditorTreeWidgetItem *pItem, KviPointerList< ClassEditorTreeWidgetItem > &lRemovedItems)
Definition ClassEditorWindow.cpp:1320
void appendSelectedClassItemsRecursive(KviPointerList< ClassEditorTreeWidgetItem > *pList, QTreeWidgetItem *pStartFrom)
Definition ClassEditorWindow.cpp:1284
void slotFindWord(const QString &)
Definition ClassEditorWindow.cpp:996
void exportClasses(bool bSelectedOnly, bool bSingleFiles=false)
Exports class to a file.
Definition ClassEditorWindow.cpp:1149
void oneTimeSetup()
Definition ClassEditorWindow.cpp:378
void appendAllClassItemsRecursive(KviPointerList< ClassEditorTreeWidgetItem > *l, QTreeWidgetItem *pStartFrom)
Definition ClassEditorWindow.cpp:1305
void slotReplaceAll(const QString &szBefore, const QString &szAfter)
Called when we replace text everywhere.
Definition ClassEditorWindow.cpp:1027
void exportSelected()
Definition ClassEditorWindow.cpp:1078
KviPointerHashTable< QString, ClassEditorTreeWidgetItem > * m_pClasses
Definition ClassEditorWindow.h:300
bool removeItem(ClassEditorTreeWidgetItem *pItem, KviPointerList< ClassEditorTreeWidgetItem > &lRemovedItems, bool *pbYesToAll)
Definition ClassEditorWindow.cpp:1354
void searchInheritedClasses(const QString szClass, KviPointerList< ClassEditorTreeWidgetItem > &lInheritsedClasses)
Definition ClassEditorWindow.cpp:1838
void renameItem()
Definition ClassEditorWindow.cpp:547
void slotCollapseItems()
Called when we collapse an item.
Definition ClassEditorWindow.cpp:1015
QLabel * m_pReminderLabel
Definition ClassEditorWindow.h:290
void exportSelectionInSinglesFiles(KviPointerList< ClassEditorTreeWidgetItem > *pList)
Exports the current selection to single files.
Definition ClassEditorWindow.cpp:1083
void openParentItems(QTreeWidgetItem *pItem)
Definition ClassEditorWindow.cpp:1567
~ClassEditorWidget()
Destroys the class editor object.
Definition ClassEditorWindow.cpp:228
QString m_szDir
Definition ClassEditorWindow.h:296
ClassEditorTreeWidgetItem * newItem(QString &szName, ClassEditorTreeWidgetItem::Type eType)
Definition ClassEditorWindow.cpp:1639
void createFullClass(KviKvsObjectClass *pClass, ClassEditorTreeWidgetItem *pItem, const QString &szClassName)
Definition ClassEditorWindow.cpp:430
ClassEditorTreeWidgetItem * findFunction(const QString &szFunctionName, ClassEditorTreeWidgetItem *pClass)
Searches a function.
Definition ClassEditorWindow.cpp:537
void buildFullItemPath(ClassEditorTreeWidgetItem *pItem, QString &szBuffer)
Definition ClassEditorWindow.cpp:234
void build()
Builds the class!
Definition ClassEditorWindow.cpp:1662
bool m_bSaving
Definition ClassEditorWindow.h:297
void customContextMenuRequested(QPoint)
Definition ClassEditorWindow.cpp:860
void appendAllClassItems(KviPointerList< ClassEditorTreeWidgetItem > *pList)
Definition ClassEditorWindow.cpp:1295
void saveProperties(KviConfigurationFile *pCfg)
Called to save the window properties.
Definition ClassEditorWindow.cpp:1251
KviScriptEditor * m_pEditor
Definition ClassEditorWindow.h:284
bool askForClassName(QString &szClassName, QString &szInheritsClassName, bool bEdit)
Definition ClassEditorWindow.cpp:1466
void recursiveCollapseItems(ClassEditorTreeWidgetItem *pItem)
Called when we collapse an item recursively.
Definition ClassEditorWindow.cpp:1001
void exportSelectedSepFiles()
Definition ClassEditorWindow.cpp:1073
QPushButton * m_pFunctionNameRenameButton
Definition ClassEditorWindow.h:289
QMenu * m_pContextPopup
Definition ClassEditorWindow.h:294
bool hasSelectedItems()
Definition ClassEditorWindow.cpp:462
void loadNotBuiltClasses()
Loads non-built classes to a file.
Definition ClassEditorWindow.cpp:1745
void searchReplace(const QString &szSearch, bool bReplace=false, const QString &szReplace="n")
Definition ClassEditorWindow.cpp:942
void renameClass(ClassEditorTreeWidgetItem *pClass)
Renames a class.
Definition ClassEditorWindow.cpp:564
ClassEditorTreeWidget * m_pTreeWidget
Definition ClassEditorWindow.h:285
void activateItem(QTreeWidgetItem *pItem)
Definition ClassEditorWindow.cpp:1576
void exportAll()
Definition ClassEditorWindow.cpp:1068
bool classExists(QString &szName)
Returns true if the class exists, false otherwise.
Definition ClassEditorWindow.cpp:467
QLabel * m_pFunctionNameLabel
Definition ClassEditorWindow.h:288
void removeSelectedItems()
Called when we want to remove all selected items.
Definition ClassEditorWindow.cpp:1451
void loadProperties(KviConfigurationFile *pCfg) override
Called to load the window properties.
Definition ClassEditorWindow.cpp:1916
void cancelClicked()
Called when we click the cancel button.
Definition ClassEditorWindow.cpp:1896
void buildClicked()
Called when we want to build the class.
Definition ClassEditorWindow.cpp:1886
ClassEditorWidget * m_pEditor
Definition ClassEditorWindow.h:493
virtual void configGroupName(QString &szName)
Sets the configuration group name as classeditor.
Definition ClassEditorWindow.cpp:1906
~ClassEditorWindow()
Destroys the class editor window.
Definition ClassEditorWindow.cpp:1881
ClassEditorWindow()
Constructs the class editor window.
Definition ClassEditorWindow.cpp:1849
void saveProperties(KviConfigurationFile *pCfg) override
Called to save the window properties.
Definition ClassEditorWindow.cpp:1911
void saveClicked()
Called when we want to save the class.
Definition ClassEditorWindow.cpp:1891
QPixmap * myIconPtr() override
Returns the class editor small icon.
Definition ClassEditorWindow.cpp:1901
KviClassEditorDialog(QWidget *pParent, const QString &szName, KviPointerHashTable< QString, ClassEditorTreeWidgetItem > *pClasses, const QString &szClassName, const QString &szInheritsClassName, bool bRenameMode=false)
Constructs the class dialog.
Definition ClassEditorWindow.cpp:1921
~KviClassEditorDialog()
Destroys the class dialog.
QString className()
Returns the class name.
Definition ClassEditorWindow.h:577
void textChanged(const QString &)
Triggered when the name of the class change.
Definition ClassEditorWindow.cpp:2030
QComboBox * m_pInheritsClassComboBox
Definition ClassEditorWindow.h:570
QString inheritsClassName()
Returns the class name of the parent classes.
Definition ClassEditorWindow.h:583
QLineEdit * m_pClassNameLineEdit
Definition ClassEditorWindow.h:569
QPushButton * m_pNewClassButton
Definition ClassEditorWindow.h:568
KviClassEditorFunctionDialog(QWidget *pParent, const QString &szName, const QString &szClassName, const QString &szFunctionName, const QString &szReminder, bool bIsInternal, bool bRenameMode=false)
Constructs the function dialog.
Definition ClassEditorWindow.cpp:2035
QPushButton * m_pNewFunctionButton
Definition ClassEditorWindow.h:619
QCheckBox * m_pInternalCheckBox
Definition ClassEditorWindow.h:622
~KviClassEditorFunctionDialog()
Destroys the function dialog.
QString reminder()
Returns the parameters of the function.
Definition ClassEditorWindow.h:635
QLineEdit * m_pReminderLineEdit
Definition ClassEditorWindow.h:621
QString functionName()
Returns the function name.
Definition ClassEditorWindow.h:629
QLineEdit * m_pFunctionNameLineEdit
Definition ClassEditorWindow.h:620
void textChanged(const QString &)
Triggered when the name of the function change.
Definition ClassEditorWindow.cpp:2131
bool isInternalFunction()
Returns true if the function is set as internal, false otherwise.
Definition ClassEditorWindow.h:641
Definition KviConfigurationFile.h:50
Definition KviHeapObject.h:119
Definition KviKvsObjectClass.h:50
A fast pointer hash table implementation.
Definition KviPointerHashTable.h:450
A template double linked list of pointers.
Definition KviPointerList.h:371
Definition KviScriptEditor.h:45
KviWindow(Type eType, const QString &szName, KviConsoleWindow *pConsole=nullptr)
Constructs the window object.
Definition KviWindow.cpp:106
#define e
Definition detector.cpp:70
#define l
Definition detector.cpp:77
char szBuffer[4096]
Definition winamp.cpp:77