~ubuntu-branches/debian/sid/kdevelop/sid

« back to all changes in this revision

Viewing changes to languages/cpp/cppnewclassdlg.h

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Lainé
  • Date: 2006-05-23 18:39:42 UTC
  • Revision ID: james.westby@ubuntu.com-20060523183942-hucifbvh68k2bwz7
Tags: upstream-3.3.2
Import upstream version 3.3.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
*   Copyright (C) 1998 by Sandy Meier                                     *
 
3
*   smeier@rz.uni-potsdam.de                                              *
 
4
*   Copyright (C) 2002 by Bernd Gehrmann                                  *
 
5
*   bernd@kdevelop.org                                                    *
 
6
*   Copyright (C) 2003 by Alexander Dymo                                  *
 
7
*   cloudtemple@mksat.net                                                 *
 
8
*                                                                         *
 
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.                                   *
 
13
*                                                                         *
 
14
***************************************************************************/
 
15
 
 
16
#ifndef _CPPNEWCLASSDLG_H_
 
17
#define _CPPNEWCLASSDLG_H_
 
18
 
 
19
#include <qlineedit.h>
 
20
#include <qlistview.h>
 
21
#include <qwidgetstack.h>
 
22
 
 
23
#include "codemodel.h"
 
24
#include "cppnewclassdlgbase.h"
 
25
 
 
26
class CppSupportPart;
 
27
class KDevProject;
 
28
class QPopupMenu;
 
29
class KCompletion;
 
30
 
 
31
 
 
32
template <class T>
 
33
class PCheckListItem: public QCheckListItem
 
34
{
 
35
public:
 
36
 
 
37
        PCheckListItem ( T item, QCheckListItem * parent, const QString & text, Type tt = Controller ) :
 
38
                        QCheckListItem ( parent, text, tt ), m_item( item )
 
39
        {}
 
40
 
 
41
        PCheckListItem ( T item, QCheckListItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
 
42
                        QCheckListItem ( parent, after, text, tt ), m_item( item )
 
43
        {}
 
44
 
 
45
        PCheckListItem ( T item, QListViewItem * parent, const QString & text, Type tt = Controller ) :
 
46
                        QCheckListItem ( parent, text, tt ), m_item( item )
 
47
        {}
 
48
 
 
49
        PCheckListItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
 
50
                        QCheckListItem ( parent, after, text, tt ), m_item( item )
 
51
        {}
 
52
 
 
53
        PCheckListItem ( T item, QListView * parent, const QString & text, Type tt = Controller ) :
 
54
                        QCheckListItem ( parent, text, tt ), m_item( item )
 
55
        {}
 
56
 
 
57
        PCheckListItem ( T item, QListView * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
 
58
                        QCheckListItem ( parent, after, text, tt ), m_item( item )
 
59
        {}
 
60
 
 
61
        PCheckListItem ( T item, QListViewItem * parent, const QString & text, const QPixmap & p ) :
 
62
                        QCheckListItem ( parent, text, p ), m_item( item )
 
63
        {}
 
64
 
 
65
        PCheckListItem ( T item, QListView * parent, const QString & text, const QPixmap & p ) :
 
66
                        QCheckListItem ( parent, text, p ), m_item( item )
 
67
        {}
 
68
 
 
69
        T item()
 
70
        {
 
71
                return m_item;
 
72
        }
 
73
 
 
74
        QString templateAddition;
 
75
 
 
76
private:
 
77
        T m_item;
 
78
};
 
79
 
 
80
template <class T>
 
81
class PListViewItem: public QListViewItem
 
82
{
 
83
public:
 
84
 
 
85
        PListViewItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text ) :
 
86
                        QListViewItem ( parent, after, text ), m_item( item )
 
87
        {}
 
88
 
 
89
        PListViewItem ( T item, QListViewItem * parent, const QString & text ) :
 
90
                        QListViewItem ( parent, text ), m_item( item )
 
91
        {}
 
92
 
 
93
        PListViewItem ( T item, QListView * parent, const QString & text ) :
 
94
                        QListViewItem ( parent, text ), m_item( item )
 
95
        {}
 
96
 
 
97
        PListViewItem ( T item, QListView * parent, QListViewItem * after, const QString & text ) :
 
98
                        QListViewItem ( parent, after, text ), m_item( item )
 
99
        {}
 
100
 
 
101
        T item()
 
102
        {
 
103
                return m_item;
 
104
        }
 
105
 
 
106
        QString templateAddition;
 
107
private:
 
108
        T m_item;
 
109
};
 
110
 
 
111
 
 
112
class CppNewClassDialog : public CppNewClassDialogBase
 
113
{
 
114
        Q_OBJECT
 
115
 
 
116
public:
 
117
        CppNewClassDialog( CppSupportPart *part, QWidget *parent = 0, const char *name = 0 );
 
118
        ~CppNewClassDialog();
 
119
 
 
120
protected:
 
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 );
 
129
 
 
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 );
 
140
 
 
141
        virtual void checkObjCInheritance( int val );
 
142
        virtual void checkQWidgetInheritance( int val );
 
143
 
 
144
        virtual void upbaseclass_button_clicked();
 
145
        virtual void downbaseclass_button_clicked();
 
146
        virtual void baseclasses_view_selectionChanged();
 
147
 
 
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 );
 
163
 
 
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 );
 
176
 
 
177
private:
 
178
 
 
179
        bool headerModified;
 
180
        bool baseincludeModified;
 
181
        bool implementationModified;
 
182
        QString m_parse;
 
183
        QPopupMenu *accessMenu;
 
184
        QPopupMenu *overMenu;
 
185
        CppSupportPart *m_part;
 
186
        CodeModel *myModel;
 
187
 
 
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;
 
198
 
 
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();
 
209
 
 
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 & );
 
218
 
 
219
        friend class ClassGenerator;
 
220
 
 
221
        //! The class that translates UI input to a class
 
222
        class ClassGenerator
 
223
        {
 
224
 
 
225
        public:
 
226
                ClassGenerator( CppNewClassDialog& _dlg ) : dlg( _dlg )
 
227
                {}
 
228
                bool generate();
 
229
 
 
230
        private:
 
231
                bool validateInput();
 
232
                void common_text();
 
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 );
 
237
 
 
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 );
 
247
 
 
248
                QString className;
 
249
                QString templateStr;
 
250
                QString templateParams;
 
251
                QString header;
 
252
                QString implementation;
 
253
 
 
254
                QString advConstructorsHeader;
 
255
                QString advConstructorsSource;
 
256
 
 
257
                KDevProject *project;
 
258
                QString subDir, headerPath, implementationPath;
 
259
                QString doc;
 
260
                QString namespaceStr;
 
261
                bool childClass;
 
262
                bool objc;
 
263
                bool qobject;
 
264
                bool gtk;
 
265
                QStringList namespaces;
 
266
                QString namespaceBeg, namespaceEnd;
 
267
                QString argsH;
 
268
                QString argsCpp;
 
269
 
 
270
                QString advH_public;
 
271
                QString advH_public_slots;
 
272
                QString advH_protected;
 
273
                QString advH_protected_slots;
 
274
                QString advH_private;
 
275
                QString advH_private_slots;
 
276
                QString advCpp;
 
277
 
 
278
 
 
279
                CppNewClassDialog& dlg;
 
280
        };
 
281
 
 
282
 
 
283
        //! workaround to make gcc 2.95.x happy
 
284
        friend class CppNewClassDialog::ClassGenerator;
 
285
};
 
286
 
 
287
#endif 
 
288
// kate: indent-mode csands; tab-width 4;
 
289