summaryrefslogtreecommitdiffstats
path: root/languages/cpp/cppnewclassdlg.h
diff options
context:
space:
mode:
Diffstat (limited to 'languages/cpp/cppnewclassdlg.h')
-rw-r--r--languages/cpp/cppnewclassdlg.h292
1 files changed, 292 insertions, 0 deletions
diff --git a/languages/cpp/cppnewclassdlg.h b/languages/cpp/cppnewclassdlg.h
new file mode 100644
index 00000000..fb680921
--- /dev/null
+++ b/languages/cpp/cppnewclassdlg.h
@@ -0,0 +1,292 @@
+/***************************************************************************
+* Copyright (C) 1998 by Sandy Meier *
+* Copyright (C) 2002 by Bernd Gehrmann *
+* Copyright (C) 2003 by Alexander Dymo *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+***************************************************************************/
+
+#ifndef _CPPNEWCLASSDLG_H_
+#define _CPPNEWCLASSDLG_H_
+
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qwidgetstack.h>
+
+#include "codemodel.h"
+#include "cppnewclassdlgbase.h"
+
+class CppSupportPart;
+class KDevProject;
+class QPopupMenu;
+class KCompletion;
+class CodeModel;
+
+
+template <class T>
+class PCheckListItem: public QCheckListItem
+{
+public:
+
+ PCheckListItem ( T item, QCheckListItem * parent, const QString & text, Type tt = Controller ) :
+ QCheckListItem ( parent, text, tt ), m_item( item )
+ {}
+
+ PCheckListItem ( T item, QCheckListItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
+ QCheckListItem ( parent, after, text, tt ), m_item( item )
+ {}
+
+ PCheckListItem ( T item, QListViewItem * parent, const QString & text, Type tt = Controller ) :
+ QCheckListItem ( parent, text, tt ), m_item( item )
+ {}
+
+ PCheckListItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
+ QCheckListItem ( parent, after, text, tt ), m_item( item )
+ {}
+
+ PCheckListItem ( T item, QListView * parent, const QString & text, Type tt = Controller ) :
+ QCheckListItem ( parent, text, tt ), m_item( item )
+ {}
+
+ PCheckListItem ( T item, QListView * parent, QListViewItem * after, const QString & text, Type tt = Controller ) :
+ QCheckListItem ( parent, after, text, tt ), m_item( item )
+ {}
+
+ PCheckListItem ( T item, QListViewItem * parent, const QString & text, const QPixmap & p ) :
+ QCheckListItem ( parent, text, p ), m_item( item )
+ {}
+
+ PCheckListItem ( T item, QListView * parent, const QString & text, const QPixmap & p ) :
+ QCheckListItem ( parent, text, p ), m_item( item )
+ {}
+
+ T item()
+ {
+ return m_item;
+ }
+
+ QString templateAddition;
+
+private:
+ T m_item;
+};
+
+template <class T>
+class PListViewItem: public QListViewItem
+{
+public:
+
+ PListViewItem ( T item, QListViewItem * parent, QListViewItem * after, const QString & text ) :
+ QListViewItem ( parent, after, text ), m_item( item )
+ {}
+
+ PListViewItem ( T item, QListViewItem * parent, const QString & text ) :
+ QListViewItem ( parent, text ), m_item( item )
+ {}
+
+ PListViewItem ( T item, QListView * parent, const QString & text ) :
+ QListViewItem ( parent, text ), m_item( item )
+ {}
+
+ PListViewItem ( T item, QListView * parent, QListViewItem * after, const QString & text ) :
+ QListViewItem ( parent, after, text ), m_item( item )
+ {}
+
+ T item()
+ {
+ return m_item;
+ }
+
+ QString templateAddition;
+private:
+ T m_item;
+};
+
+
+class CppNewClassDialog : public CppNewClassDialogBase
+{
+ Q_OBJECT
+
+public:
+ CppNewClassDialog( CppSupportPart *part, QWidget *parent = 0, const char *name = 0 );
+ ~CppNewClassDialog();
+
+protected:
+ virtual void accept();
+ virtual void classNameChanged( const QString &text );
+ virtual void classNamespaceChanged( const QString &text );
+ virtual void headerChanged();
+ virtual void implementationChanged();
+ virtual void nameHandlerChanged( const QString &text );
+ virtual void baseclassname_changed( const QString &text );
+ virtual void baseIncludeChanged( const QString &text );
+
+ virtual void addBaseClass();
+ virtual void remBaseClass();
+ virtual void remBaseClassOnly();
+ virtual void currBaseNameChanged( const QString &text );
+ virtual void currBasePrivateSet();
+ virtual void currBaseProtectedSet();
+ virtual void currBasePublicSet();
+ virtual void currBaseVirtualChanged( int val );
+ virtual void currBaseSelected( QListViewItem *it );
+ virtual void scopeboxActivated( int value );
+
+ virtual void checkObjCInheritance( int val );
+ virtual void checkQWidgetInheritance( int val );
+
+ virtual void upbaseclass_button_clicked();
+ virtual void downbaseclass_button_clicked();
+ virtual void baseclasses_view_selectionChanged();
+
+ virtual void newTabSelected( const QString &text );
+ virtual void newTabSelected( QWidget *w );
+ virtual void access_view_mouseButtonPressed( int button, QListViewItem * item, const QPoint &p, int c );
+ virtual void changeToPrivate();
+ virtual void changeToProtected();
+ virtual void changeToPublic();
+ virtual void changeToInherited();
+ virtual void methods_view_mouseButtonPressed( int button , QListViewItem * item, const QPoint&p , int c );
+ virtual void extendFunctionality();
+ virtual void replaceFunctionality();
+ virtual void to_constructors_list_clicked();
+ virtual void clear_selection_button_clicked();
+ virtual void selectall_button_clicked();
+ virtual void gtk_box_stateChanged( int val );
+ virtual void qobject_box_stateChanged( int val );
+ virtual void headeronly_box_stateChanged(int val);
+
+ void reloadAdvancedInheritance( bool clean = false );
+ void parseClass( QString clName, QString inheritance );
+ void parsePCSClass( QString clName, QString inheritance );
+ void addToConstructorsList( QCheckListItem *myClass, FunctionDom method );
+ void addToMethodsList( QListViewItem *parent, FunctionDom method );
+ void addToUpgradeList( QListViewItem *parent, FunctionDom method, QString modifier );
+ void addToUpgradeList( QListViewItem *parent, VariableDom attr, QString modifier );
+ void clearConstructorsList( bool clean = false );
+ void clearMethodsList( bool clean = false );
+ void clearUpgradeList( bool clean = false );
+ bool isConstructor( QString className, const FunctionDom &method );
+ bool isDestructor( QString className, const FunctionDom &method );
+
+private:
+
+ bool headerModified;
+ bool baseincludeModified;
+ bool implementationModified;
+ QString m_parse;
+ QPopupMenu *accessMenu;
+ QPopupMenu *overMenu;
+ CppSupportPart *m_part;
+ CodeModel *myModel;
+
+ // configuration variables
+ QString interface_url;
+ QString implementation_url;
+ QString interface_suffix;
+ QString implementation_suffix;
+ QStringList currNamespace;
+ bool lowercase_filenames;
+ QStringList currBaseClasses;
+ KCompletion * compBasename;
+ KCompletion * compNamespace;
+
+ void setCompletionBasename( CodeModel *model );
+ void addCompletionBasenameNamespacesRecursive( const NamespaceDom & namespaceDom, const QString & namespaceParent = "" );
+ void setCompletionNamespaceRecursive( const NamespaceDom & namespaceDom, const QString & namespaceParent = "" );
+ void setStateOfInheritanceEditors( bool state, bool hideList = true );
+ void setAccessForBase( QString baseclass, QString newAccess );
+ void setAccessForItem( QListViewItem *curr, QString newAccess, bool isPublic );
+ void remClassFromAdv( QString text );
+ void checkUpButtonState();
+ void checkDownButtonState();
+ void updateConstructorsOrder();
+
+ QString classNameFormatted();
+ QString templateStrFormatted();
+ QString templateParamsFormatted();
+ QString classNameFormatted( const QString & );
+ QString templateStrFormatted( const QString & );
+ QString templateParamsFormatted( const QString & );
+ QString templateActualParamsFormatted( const QString & );
+ void removeTemplateParams( QString & );
+
+ friend class ClassGenerator;
+
+ //! The class that translates UI input to a class
+ class ClassGenerator
+ {
+
+ public:
+ ClassGenerator( CppNewClassDialog& _dlg ) : dlg( _dlg )
+ {}
+ bool generate();
+
+ private:
+ bool validateInput();
+ void common_text();
+ void gen_implementation();
+ void gen_interface();
+ void genMethodDeclaration( FunctionDom method, QString className, QString templateStr,
+ QString *adv_h, QString *adv_cpp, bool extend, QString baseClassName );
+
+ void beautifyHeader( QString &templ, QString &headerGuard,
+ QString &includeBaseHeader, QString &author, QString &doc, QString &className, QString &templateStr,
+ QString &baseclass, QString &inheritance, QString &qobjectStr, QString &args,
+ QString &header, QString &namespaceBeg, QString &constructors, QString &advH_public,
+ QString &advH_public_slots,
+ QString &advH_protected, QString &advH_protected_slots, QString &advH_private, QString &advH_private_slots,
+ QString &namespaceEnd );
+ void beautifySource( QString &templ, QString &header, QString &className, QString &namespaceBeg,
+ QString &constructors, QString &advCpp, QString &namespaceEnd, QString &implementation );
+
+ QString className;
+ QString templateStr;
+ QString templateParams;
+ QString header;
+ QString implementation;
+
+ QString advConstructorsHeader;
+ QString advConstructorsSource;
+
+ KDevProject *project;
+ QString subDir, headerPath, implementationPath;
+ QString doc;
+ QString namespaceStr;
+ bool childClass;
+ bool objc;
+ bool qobject;
+ bool gtk;
+ bool headeronly;
+ QStringList namespaces;
+ QString namespaceBeg, namespaceEnd;
+ QString argsH;
+ QString argsCpp;
+
+ QString advH_public;
+ QString advH_public_slots;
+ QString advH_protected;
+ QString advH_protected_slots;
+ QString advH_private;
+ QString advH_private_slots;
+ QString advCpp;
+
+
+ CppNewClassDialog& dlg;
+ };
+
+
+ //! workaround to make gcc 2.95.x happy
+ friend class CppNewClassDialog::ClassGenerator;
+};
+
+#endif
+// kate: indent-mode csands; tab-width 4;
+