languages/cpp/cppnewclassdlg.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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
This file is part of the documentation for KDevelop Version 3.0.4.