summaryrefslogtreecommitdiffstats
path: root/languages/lib/designer_integration/implementationwidget.h
blob: 0b7d784f89725b2de61a14c4794124b871b39370 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/***************************************************************************
 *   Copyright (C) 2004 by Alexander Dymo                                  *
 *   adymo@kdevelop.org                                                    *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU Library General Public License as       *
 *   published by the Free Software Foundation; either version 2 of the    *
 *   License, or (at your option) any later version.                       *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU Library General Public     *
 *   License along with this program; if not, write to the                 *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.             *
 ***************************************************************************/

#ifndef IMPLEMENTATIONWIDGET_H
#define IMPLEMENTATIONWIDGET_H

#include "implementationwidgetbase.h"

#include <codemodel.h>

class KListViewItem;
class KDevLanguageSupport;

/**
Base class for implementation creation widgets.
Contains language-independent implementation widget that can be used
to create or select an implementation of a form in designer.

Implementations could be subclasses or simple files with callbacks, etc.

Subclasses of this class should reimplement only pure virtual functions in the common case.
*/
class ImplementationWidget : public CreateImplemenationWidgetBase
{
Q_OBJECT
public:
    ImplementationWidget(KDevLanguageSupport *part, QWidget* parent = 0, const char* name = 0, bool modal = false);
    virtual ~ImplementationWidget();
    /*$PUBLIC_FUNCTIONS$*/

    /**@returns The %DOM of selected (or created) class.*/    
    ClassDom selectedClass();
    
    /**Executes implementation widget for a form @p formName.*/
    int exec(const QString &formName);

public slots:
    /*$PUBLIC_SLOTS$*/

protected:    
    /*$PROTECTED_FUNCTIONS$*/
    /**Sets up the dialog. No need to reimplement unless you want to restrict
    the number of classes being displayed as possible implementation classes.*/
    void init(const QString &formName);
    
    void processNamespaces(NamespaceDom dom, KListViewItem *parent);
    void processClasses(ClassDom dom, KListViewItem *parent);
    
    /**Creates a class and adds it to a project. No need to reimplement.*/
    bool createClass();
    
    /**Reimplement to create actual files with the form implementation.
    @return The list of absolute paths to a files created.*/
    virtual QStringList createClassFiles() = 0;

protected slots:
    /*$PROTECTED_SLOTS$*/
    virtual void classNameChanged(const QString &text);
    virtual void accept();
    
protected:
    KDevLanguageSupport *m_part;
    ClassDom m_selectedClass;
    QString m_formName;
    QString m_baseClassName;
};

#endif