OSDN Git Service

Update license.
[qt-creator-jp/qt-creator-jp.git] / src / plugins / cppeditor / cppplugin.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (info@qt.nokia.com)
8 **
9 **
10 ** GNU Lesser General Public License Usage
11 **
12 ** This file may be used under the terms of the GNU Lesser General Public
13 ** License version 2.1 as published by the Free Software Foundation and
14 ** appearing in the file LICENSE.LGPL included in the packaging of this file.
15 ** Please review the following information to ensure the GNU Lesser General
16 ** Public License version 2.1 requirements will be met:
17 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 **
19 ** In addition, as a special exception, Nokia gives you certain additional
20 ** rights. These rights are described in the Nokia Qt LGPL Exception
21 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 **
23 ** Other Usage
24 **
25 ** Alternatively, this file may be used in accordance with the terms and
26 ** conditions contained in a signed written agreement between you and Nokia.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **************************************************************************/
32
33 #ifndef CPPPLUGIN_H
34 #define CPPPLUGIN_H
35
36 #include <extensionsystem/iplugin.h>
37 #include <coreplugin/editormanager/ieditorfactory.h>
38
39 #include <QtCore/QtPlugin>
40 #include <QtCore/QStringList>
41 #include <QtGui/QAction>
42
43 namespace TextEditor {
44 class TextEditorActionHandler;
45 class ITextEditor;
46 } // namespace TextEditor
47
48 namespace CppEditor {
49 namespace Internal {
50
51 class CPPEditorWidget;
52 class CppQuickFixCollector;
53
54 class CppPlugin : public ExtensionSystem::IPlugin
55 {
56     Q_OBJECT
57
58 public:
59     CppPlugin();
60     ~CppPlugin();
61
62     static CppPlugin *instance();
63
64     bool initialize(const QStringList &arguments, QString *error_message = 0);
65     void extensionsInitialized();
66     ShutdownFlag aboutToShutdown();
67
68     // Connect editor to settings changed signals.
69     void initializeEditor(CPPEditorWidget *editor);
70
71     bool sortedOutline() const;
72
73     CppQuickFixCollector *quickFixCollector() const;
74
75 signals:
76     void outlineSortingChanged(bool sort);
77     void typeHierarchyRequested();
78
79 public slots:
80     void setSortedOutline(bool sorted);
81
82 private slots:
83     void switchDeclarationDefinition();
84     void jumpToDefinition();
85     void renameSymbolUnderCursor();
86     void onTaskStarted(const QString &type);
87     void onAllTasksFinished(const QString &type);
88     void findUsages();
89     void quickFix(TextEditor::ITextEditor *editable);
90     void quickFixNow();
91     void currentEditorChanged(Core::IEditor *editor);
92     void openTypeHierarchy();
93
94 private:
95     Core::IEditor *createEditor(QWidget *parent);
96     void writeSettings();
97     void readSettings();
98
99     static CppPlugin *m_instance;
100
101     TextEditor::TextEditorActionHandler *m_actionHandler;
102     bool m_sortedOutline;
103     QAction *m_renameSymbolUnderCursorAction;
104     QAction *m_findUsagesAction;
105     QAction *m_updateCodeModelAction;
106     QAction *m_openTypeHierarchyAction;
107
108     CppQuickFixCollector *m_quickFixCollector;
109
110     QTimer *m_quickFixTimer;
111     QPointer<TextEditor::ITextEditor> m_currentEditor;
112 };
113
114 class CppEditorFactory : public Core::IEditorFactory
115 {
116     Q_OBJECT
117
118 public:
119     CppEditorFactory(CppPlugin *owner);
120
121     virtual QStringList mimeTypes() const;
122
123     Core::IEditor *createEditor(QWidget *parent);
124
125     virtual QString id() const;
126     virtual QString displayName() const;
127     Core::IFile *open(const QString &fileName);
128
129 private:
130     CppPlugin *m_owner;
131     QStringList m_mimeTypes;
132 };
133
134 } // namespace Internal
135 } // namespace CppEditor
136
137 #endif // CPPPLUGIN_H