KDevelop API Documentation

cppnewclassdlg.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 1998 by Sandy Meier                                     *
00003  *   smeier@rz.uni-potsdam.de                                              *
00004  *   Copyright (C) 2002 by Bernd Gehrmann                                  *
00005  *   bernd@kdevelop.org                                                    *
00006  *   Copyright (C) 2003 by Alexander Dymo                                  *
00007  *   cloudtemple@mksat.net                                                 *
00008  *                                                                         *
00009  *   This program is free software; you can redistribute it and/or modify  *
00010  *   it under the terms of the GNU General Public License as published by  *
00011  *   the Free Software Foundation; either version 2 of the License, or     *
00012  *   (at your option) any later version.                                   *
00013  *                                                                         *
00014  ***************************************************************************/
00015 
00016 #ifndef _CPPNEWCLASSDLG_H_
00017 #define _CPPNEWCLASSDLG_H_
00018 
00019 #include <qlineedit.h>
00020 #include <qlistview.h>
00021 #include <qwidgetstack.h>
00022 
00023 #include "codemodel.h"
00024 #include "cppnewclassdlgbase.h"
00025 
00026 class KDevLanguageSupport;
00027 class KDevProject;
00028 class QPopupMenu;
00029 class KCompletion;
00030 
00031 
00032 template<class T>
00033 class PCheckListItem: public QCheckListItem{
00034 public:
00035 
00036     PCheckListItem ( T item, QCheckListItem * parent, const QString & text, Type tt = Controller ):
00037     QCheckListItem ( parent, text, tt ), m_item(item) {}
00038 
00039     PCheckListItem ( T item, QCheckListItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ):
00040     QCheckListItem ( parent, after, text, tt ), m_item(item) {}
00041 
00042     PCheckListItem ( T item,  QListViewItem * parent, const QString & text, Type tt = Controller ):
00043     QCheckListItem ( parent, text, tt ), m_item(item) {}
00044 
00045     PCheckListItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ):
00046     QCheckListItem ( parent, after, text, tt ), m_item(item) {}
00047 
00048     PCheckListItem ( T item, QListView * parent, const QString & text, Type tt = Controller ):
00049     QCheckListItem ( parent, text, tt ), m_item(item) {}
00050 
00051     PCheckListItem ( T item, QListView * parent, QListViewItem * after, const QString & text, Type tt = Controller ):
00052     QCheckListItem ( parent, after, text, tt ), m_item(item) {}
00053 
00054     PCheckListItem ( T item, QListViewItem * parent, const QString & text, const QPixmap & p ):
00055     QCheckListItem ( parent, text, p ), m_item(item) {}
00056 
00057     PCheckListItem ( T item, QListView * parent, const QString & text, const QPixmap & p ):
00058     QCheckListItem ( parent, text, p ), m_item(item) {}
00059 
00060     T item()
00061     {
00062     return m_item;
00063     }
00064 
00065     QString templateAddition;
00066 
00067 private:
00068     T m_item;
00069 };
00070 
00071 template<class T>
00072 class PListViewItem: public QListViewItem{
00073 public:
00074 
00075     PListViewItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text ):
00076     QListViewItem ( parent, after, text ), m_item(item) {}
00077 
00078     PListViewItem ( T item,  QListViewItem * parent, const QString & text ):
00079     QListViewItem ( parent, text ), m_item(item) {}
00080 
00081     PListViewItem ( T item, QListView * parent, const QString & text ):
00082     QListViewItem ( parent, text ), m_item(item) {}
00083 
00084     PListViewItem ( T item, QListView * parent, QListViewItem * after, const QString & text ):
00085     QListViewItem ( parent, after, text ), m_item(item) {}
00086 
00087     T item()
00088     {
00089     return m_item;
00090     }
00091 
00092     QString templateAddition;
00093 private:
00094     T m_item;
00095 };
00096 
00097 
00098 class CppNewClassDialog : public CppNewClassDialogBase
00099 {
00100     Q_OBJECT
00101 
00102 public:
00103     CppNewClassDialog(KDevLanguageSupport *part, QWidget *parent=0, const char *name=0);
00104     ~CppNewClassDialog();
00105 
00106 protected:
00107     virtual void accept();
00108     virtual void classNameChanged(const QString &text);
00109     virtual void classNamespaceChanged(const QString &text);
00110     virtual void headerChanged();
00111     virtual void implementationChanged();
00112     virtual void nameHandlerChanged(const QString &text);
00113     virtual void baseclassname_changed(const QString &text);
00114     virtual void baseIncludeChanged(const QString &text);
00115     
00116     virtual void addBaseClass();
00117     virtual void remBaseClass();
00118     virtual void remBaseClassOnly();
00119     virtual void currBaseNameChanged(const QString &text);
00120     virtual void currBasePrivateSet();
00121     virtual void currBaseProtectedSet();
00122     virtual void currBasePublicSet();
00123     virtual void currBaseVirtualChanged(int val);
00124     virtual void currBaseSelected(QListViewItem *it);
00125     virtual void scopeboxActivated(int value);
00126 
00127     virtual void checkObjCInheritance(int val);
00128     virtual void checkQWidgetInheritance(int val);
00129 
00130     virtual void upbaseclass_button_clicked();
00131     virtual void downbaseclass_button_clicked();
00132     virtual void baseclasses_view_selectionChanged();
00133 
00134     virtual void newTabSelected(const QString &text);
00135     virtual void newTabSelected(QWidget *w);
00136     virtual void access_view_mouseButtonPressed( int button, QListViewItem * item, const QPoint &p, int c );
00137     virtual void changeToPrivate();
00138     virtual void changeToProtected();
00139     virtual void changeToPublic();
00140     virtual void changeToInherited();
00141     virtual void methods_view_mouseButtonPressed(int button ,QListViewItem * item, const QPoint&p ,int c);
00142     virtual void extendFunctionality();
00143     virtual void replaceFunctionality();
00144     virtual void to_constructors_list_clicked();
00145     virtual void clear_selection_button_clicked();
00146     virtual void selectall_button_clicked();
00147     virtual void gtk_box_stateChanged(int val);
00148     virtual void qobject_box_stateChanged(int val);
00149 
00150     void reloadAdvancedInheritance(bool clean = false);
00151     void parseClass(QString clName, QString inheritance);
00152     void addToConstructorsList(QCheckListItem *myClass, FunctionDom method);
00153     void addToMethodsList(QListViewItem *parent, FunctionDom method);
00154     void addToUpgradeList(QListViewItem *parent, FunctionDom method, QString modifier);
00155     void addToUpgradeList(QListViewItem *parent, VariableDom attr, QString modifier);
00156     void clearConstructorsList(bool clean = false);
00157     void clearMethodsList(bool clean = false);
00158     void clearUpgradeList(bool clean = false);
00159     bool isConstructor(QString className, const FunctionDom &method);
00160     bool isDestructor(QString className, const FunctionDom &method);
00161 
00162 private:
00163 
00164     bool headerModified;
00165     bool baseincludeModified;
00166     bool implementationModified;
00167     QString m_parse;
00168     QPopupMenu *accessMenu;
00169     QPopupMenu *overMenu;
00170     KDevLanguageSupport *m_part;
00171 
00172     // configuration variables
00173     QString interface_url;
00174     QString implementation_url;
00175     QString interface_suffix;
00176     QString implementation_suffix;
00177     QStringList currNamespace;
00178     bool lowercase_filenames;
00179     QStringList currBaseClasses;
00180     KCompletion * compBasename;
00181     KCompletion * compNamespace;
00182 
00183     void setCompletionBasename(CodeModel *model);
00184     void addCompletionBasenameNamespacesRecursive(const NamespaceDom & namespaceDom, const QString & namespaceParent = "");
00185     void setCompletionNamespaceRecursive(const NamespaceDom & namespaceDom, const QString & namespaceParent = "");
00186     void setStateOfInheritanceEditors(bool state, bool hideList = true);
00187     void setAccessForBase(QString baseclass, QString newAccess);
00188     void setAccessForItem(QListViewItem *curr, QString newAccess, bool isPublic);
00189     void remClassFromAdv(QString text);
00190     void checkUpButtonState();
00191     void checkDownButtonState();
00192     void updateConstructorsOrder();
00193 
00194     QString classNameFormatted();
00195     QString templateStrFormatted();
00196     QString templateParamsFormatted();
00197     QString classNameFormatted(const QString &);
00198     QString templateStrFormatted(const QString &);
00199     QString templateParamsFormatted(const QString &);
00200     QString templateActualParamsFormatted(const QString &);
00201     void removeTemplateParams(QString &);
00202 
00203     friend class ClassGenerator;
00204 
00206     class ClassGenerator {
00207 
00208     public:
00209       ClassGenerator(CppNewClassDialog& _dlg) : dlg(_dlg) {}
00210       bool generate();
00211 
00212     private:
00213       bool validateInput();
00214       void common_text();
00215       void gen_implementation();
00216       void gen_interface();
00217       void genMethodDeclaration(FunctionDom method, QString className, QString templateStr,
00218         QString *adv_h, QString *adv_cpp, bool extend, QString baseClassName );
00219 
00220       void beautifyHeader(QString &templ, QString &headerGuard,
00221         QString &includeBaseHeader, QString &author, QString &doc, QString &className, QString &templateStr,
00222         QString &baseclass, QString &inheritance, QString &qobjectStr, QString &args,
00223         QString &header, QString &namespaceBeg, QString &constructors, QString &advH_public, QString &advH_public_slots,
00224         QString &advH_protected, QString &advH_protected_slots, QString &advH_private, QString &advH_private_slots,
00225         QString &namespaceEnd);
00226       void beautifySource(QString &templ, QString &header, QString &className, QString &namespaceBeg,
00227         QString &constructors, QString &advCpp, QString &namespaceEnd, QString &implementation);
00228 
00229       QString className;
00230       QString templateStr;
00231       QString templateParams;
00232       QString header;
00233       QString implementation;
00234 
00235       QString advConstructorsHeader;
00236       QString advConstructorsSource;
00237 
00238       KDevProject *project;
00239       QString subDir, headerPath, implementationPath;
00240       QString doc;
00241       QString namespaceStr;
00242       bool childClass;
00243       bool objc;
00244       bool qobject;
00245       bool gtk;
00246       QStringList namespaces;
00247       QString namespaceBeg, namespaceEnd;
00248       QString argsH;
00249       QString argsCpp;
00250 
00251       QString advH_public;
00252       QString advH_public_slots;
00253       QString advH_protected;
00254       QString advH_protected_slots;
00255       QString advH_private;
00256       QString advH_private_slots;
00257       QString advCpp;
00258 
00259 
00260       CppNewClassDialog& dlg;
00261     };
00262 
00263 
00265     friend class CppNewClassDialog::ClassGenerator;
00266 };
00267 
00268 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 00:03:45 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003