1
/***************************************************************************
2
* Copyright (C) 1998 by Sandy Meier *
3
* smeier@rz.uni-potsdam.de *
4
* Copyright (C) 2002 by Bernd Gehrmann *
6
* Copyright (C) 2003 by Alexander Dymo *
7
* cloudtemple@mksat.net *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
14
***************************************************************************/
16
#ifndef _CPPNEWCLASSDLG_H_
17
#define _CPPNEWCLASSDLG_H_
19
#include <qlineedit.h>
20
#include <qlistview.h>
21
#include <qwidgetstack.h>
23
#include "codemodel.h"
24
#include "cppnewclassdlgbase.h"
33
class PCheckListItem: public QCheckListItem
37
PCheckListItem ( T item, QCheckListItem * parent, const QString & text, Type tt = Controller ) :
38
QCheckListItem ( parent, text, tt ), m_item( item )
41
PCheckListItem ( T item, QCheckListItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
42
QCheckListItem ( parent, after, text, tt ), m_item( item )
45
PCheckListItem ( T item, QListViewItem * parent, const QString & text, Type tt = Controller ) :
46
QCheckListItem ( parent, text, tt ), m_item( item )
49
PCheckListItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
50
QCheckListItem ( parent, after, text, tt ), m_item( item )
53
PCheckListItem ( T item, QListView * parent, const QString & text, Type tt = Controller ) :
54
QCheckListItem ( parent, text, tt ), m_item( item )
57
PCheckListItem ( T item, QListView * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
58
QCheckListItem ( parent, after, text, tt ), m_item( item )
61
PCheckListItem ( T item, QListViewItem * parent, const QString & text, const QPixmap & p ) :
62
QCheckListItem ( parent, text, p ), m_item( item )
65
PCheckListItem ( T item, QListView * parent, const QString & text, const QPixmap & p ) :
66
QCheckListItem ( parent, text, p ), m_item( item )
74
QString templateAddition;
81
class PListViewItem: public QListViewItem
85
PListViewItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text ) :
86
QListViewItem ( parent, after, text ), m_item( item )
89
PListViewItem ( T item, QListViewItem * parent, const QString & text ) :
90
QListViewItem ( parent, text ), m_item( item )
93
PListViewItem ( T item, QListView * parent, const QString & text ) :
94
QListViewItem ( parent, text ), m_item( item )
97
PListViewItem ( T item, QListView * parent, QListViewItem * after, const QString & text ) :
98
QListViewItem ( parent, after, text ), m_item( item )
106
QString templateAddition;
112
class CppNewClassDialog : public CppNewClassDialogBase
117
CppNewClassDialog( CppSupportPart *part, QWidget *parent = 0, const char *name = 0 );
118
~CppNewClassDialog();
121
virtual void accept();
122
virtual void classNameChanged( const QString &text );
123
virtual void classNamespaceChanged( const QString &text );
124
virtual void headerChanged();
125
virtual void implementationChanged();
126
virtual void nameHandlerChanged( const QString &text );
127
virtual void baseclassname_changed( const QString &text );
128
virtual void baseIncludeChanged( const QString &text );
130
virtual void addBaseClass();
131
virtual void remBaseClass();
132
virtual void remBaseClassOnly();
133
virtual void currBaseNameChanged( const QString &text );
134
virtual void currBasePrivateSet();
135
virtual void currBaseProtectedSet();
136
virtual void currBasePublicSet();
137
virtual void currBaseVirtualChanged( int val );
138
virtual void currBaseSelected( QListViewItem *it );
139
virtual void scopeboxActivated( int value );
141
virtual void checkObjCInheritance( int val );
142
virtual void checkQWidgetInheritance( int val );
144
virtual void upbaseclass_button_clicked();
145
virtual void downbaseclass_button_clicked();
146
virtual void baseclasses_view_selectionChanged();
148
virtual void newTabSelected( const QString &text );
149
virtual void newTabSelected( QWidget *w );
150
virtual void access_view_mouseButtonPressed( int button, QListViewItem * item, const QPoint &p, int c );
151
virtual void changeToPrivate();
152
virtual void changeToProtected();
153
virtual void changeToPublic();
154
virtual void changeToInherited();
155
virtual void methods_view_mouseButtonPressed( int button , QListViewItem * item, const QPoint&p , int c );
156
virtual void extendFunctionality();
157
virtual void replaceFunctionality();
158
virtual void to_constructors_list_clicked();
159
virtual void clear_selection_button_clicked();
160
virtual void selectall_button_clicked();
161
virtual void gtk_box_stateChanged( int val );
162
virtual void qobject_box_stateChanged( int val );
164
void reloadAdvancedInheritance( bool clean = false );
165
void parseClass( QString clName, QString inheritance );
166
void parsePCSClass( QString clName, QString inheritance );
167
void addToConstructorsList( QCheckListItem *myClass, FunctionDom method );
168
void addToMethodsList( QListViewItem *parent, FunctionDom method );
169
void addToUpgradeList( QListViewItem *parent, FunctionDom method, QString modifier );
170
void addToUpgradeList( QListViewItem *parent, VariableDom attr, QString modifier );
171
void clearConstructorsList( bool clean = false );
172
void clearMethodsList( bool clean = false );
173
void clearUpgradeList( bool clean = false );
174
bool isConstructor( QString className, const FunctionDom &method );
175
bool isDestructor( QString className, const FunctionDom &method );
180
bool baseincludeModified;
181
bool implementationModified;
183
QPopupMenu *accessMenu;
184
QPopupMenu *overMenu;
185
CppSupportPart *m_part;
188
// configuration variables
189
QString interface_url;
190
QString implementation_url;
191
QString interface_suffix;
192
QString implementation_suffix;
193
QStringList currNamespace;
194
bool lowercase_filenames;
195
QStringList currBaseClasses;
196
KCompletion * compBasename;
197
KCompletion * compNamespace;
199
void setCompletionBasename( CodeModel *model );
200
void addCompletionBasenameNamespacesRecursive( const NamespaceDom & namespaceDom, const QString & namespaceParent = "" );
201
void setCompletionNamespaceRecursive( const NamespaceDom & namespaceDom, const QString & namespaceParent = "" );
202
void setStateOfInheritanceEditors( bool state, bool hideList = true );
203
void setAccessForBase( QString baseclass, QString newAccess );
204
void setAccessForItem( QListViewItem *curr, QString newAccess, bool isPublic );
205
void remClassFromAdv( QString text );
206
void checkUpButtonState();
207
void checkDownButtonState();
208
void updateConstructorsOrder();
210
QString classNameFormatted();
211
QString templateStrFormatted();
212
QString templateParamsFormatted();
213
QString classNameFormatted( const QString & );
214
QString templateStrFormatted( const QString & );
215
QString templateParamsFormatted( const QString & );
216
QString templateActualParamsFormatted( const QString & );
217
void removeTemplateParams( QString & );
219
friend class ClassGenerator;
221
//! The class that translates UI input to a class
226
ClassGenerator( CppNewClassDialog& _dlg ) : dlg( _dlg )
231
bool validateInput();
233
void gen_implementation();
234
void gen_interface();
235
void genMethodDeclaration( FunctionDom method, QString className, QString templateStr,
236
QString *adv_h, QString *adv_cpp, bool extend, QString baseClassName );
238
void beautifyHeader( QString &templ, QString &headerGuard,
239
QString &includeBaseHeader, QString &author, QString &doc, QString &className, QString &templateStr,
240
QString &baseclass, QString &inheritance, QString &qobjectStr, QString &args,
241
QString &header, QString &namespaceBeg, QString &constructors, QString &advH_public,
242
QString &advH_public_slots,
243
QString &advH_protected, QString &advH_protected_slots, QString &advH_private, QString &advH_private_slots,
244
QString &namespaceEnd );
245
void beautifySource( QString &templ, QString &header, QString &className, QString &namespaceBeg,
246
QString &constructors, QString &advCpp, QString &namespaceEnd, QString &implementation );
250
QString templateParams;
252
QString implementation;
254
QString advConstructorsHeader;
255
QString advConstructorsSource;
257
KDevProject *project;
258
QString subDir, headerPath, implementationPath;
260
QString namespaceStr;
265
QStringList namespaces;
266
QString namespaceBeg, namespaceEnd;
271
QString advH_public_slots;
272
QString advH_protected;
273
QString advH_protected_slots;
274
QString advH_private;
275
QString advH_private_slots;
279
CppNewClassDialog& dlg;
283
//! workaround to make gcc 2.95.x happy
284
friend class CppNewClassDialog::ClassGenerator;
288
// kate: indent-mode csands; tab-width 4;