From 3d3ff54ddfe108a5438457d9d414d703b84c07f0 Mon Sep 17 00:00:00 2001 From: Fred Emmott Date: Tue, 13 Jan 2009 23:12:54 +0000 Subject: [PATCH 01/81] Make ":w" work in fakevim without needing a filename to be specified when file is not new. Unfortunately, the "this file has been edited outside of Qt Creator" dialog pops up. --- src/plugins/fakevim/fakevimhandler.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 3f6bb103c59..5093303ceae 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -35,6 +35,8 @@ #include "fakevimconstants.h" +#include + #include #include #include @@ -1485,6 +1487,9 @@ void FakeVimHandler::Private::setWidget(QWidget *ob) { m_textedit = qobject_cast(ob); m_plaintextedit = qobject_cast(ob); + TextEditor::BaseTextEditor* editor = qobject_cast(ob); + if (editor) + m_currentFileName = editor->file()->fileName(); } /////////////////////////////////////////////////////////////////////// From ed61e0b5bd0254a38563b52450d6b2e8edd676c9 Mon Sep 17 00:00:00 2001 From: Fred Emmott Date: Tue, 13 Jan 2009 23:31:08 +0000 Subject: [PATCH 02/81] Block the "this file has been changed outside of qt creator" popup in the fakevim ":w" command. --- src/plugins/fakevim/fakevimhandler.cpp | 30 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 5093303ceae..379b7eb42b5 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -35,6 +35,8 @@ #include "fakevimconstants.h" +#include +#include #include #include @@ -206,6 +208,7 @@ public: bool m_wasReadOnly; // saves read-only state of document FakeVimHandler *q; + Core::ICore *m_core; Mode m_mode; SubMode m_submode; SubSubMode m_subsubmode; @@ -225,6 +228,7 @@ public: QString m_commandBuffer; QString m_currentFileName; + Core::IFile* m_currentFile; QString m_currentMessage; bool m_lastSearchForward; @@ -282,6 +286,8 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent) m_plaintextedit = 0; m_visualMode = NoVisualMode; + m_core = ExtensionSystem::PluginManager::instance()->getObject(); + m_config[ConfigStartOfLine] = ConfigOn; m_config[ConfigTabStop] = "8"; m_config[ConfigSmartTab] = ConfigOff; @@ -1050,12 +1056,18 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) bool exists = file.exists(); if (exists && !forced && !noArgs) { showRedMessage(tr("File '%1' exists (add ! to override)").arg(fileName)); - } else if (file.open(QIODevice::ReadWrite)) { - QTextCursor tc = selectRange(beginLine, endLine); - qDebug() << "ANCHOR: " << tc.position() << tc.anchor() - << tc.selection().toPlainText(); - { QTextStream ts(&file); ts << tc.selection().toPlainText(); } - file.close(); + } else if (m_currentFile || file.open(QIODevice::ReadWrite)) { + if(m_currentFile) { + m_core->fileManager()->blockFileChange(m_currentFile); + m_currentFile->save(fileName); + m_core->fileManager()->unblockFileChange(m_currentFile); + } else { + QTextCursor tc = selectRange(beginLine, endLine); + qDebug() << "ANCHOR: " << tc.position() << tc.anchor() + << tc.selection().toPlainText(); + { QTextStream ts(&file); ts << tc.selection().toPlainText(); } + file.close(); + } file.open(QIODevice::ReadOnly); QByteArray ba = file.readAll(); showBlackMessage(tr("\"%1\" %2 %3L, %4C written") @@ -1488,8 +1500,10 @@ void FakeVimHandler::Private::setWidget(QWidget *ob) m_textedit = qobject_cast(ob); m_plaintextedit = qobject_cast(ob); TextEditor::BaseTextEditor* editor = qobject_cast(ob); - if (editor) - m_currentFileName = editor->file()->fileName(); + if (editor) { + m_currentFile = editor->file(); + m_currentFileName = m_currentFile->fileName(); + } } /////////////////////////////////////////////////////////////////////// From 2dda23dabe6a590e8fe9b4deb6dac9734d48feae Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 14 Jan 2009 13:09:09 +0100 Subject: [PATCH 03/81] Fixes: Bug in the detection wheter the executable on windows is. Task: Found on irc by ferret_svk Details: Even if CONFIG is debug_and_release we are interested wheter debug or release is the default. --- .../qt4projectmanager/qt4runconfiguration.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 99c19e3a7e9..64961844996 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -306,14 +306,10 @@ QString Qt4RunConfiguration::qmakeBuildConfigFromBuildConfiguration(const QStrin QVariant qmakeBuildConfiguration = qs->value(buildConfigurationName, "buildConfiguration"); if (qmakeBuildConfiguration.isValid()) { QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(qmakeBuildConfiguration.toInt()); - if (projectBuildConfiguration & QtVersion::BuildAll) { - if (projectBuildConfiguration & QtVersion::DebugBuild) - return "debug"; - else - return "release"; - } else { - return ""; - } + if (projectBuildConfiguration & QtVersion::DebugBuild) + return "debug"; + else + return "release"; } else { // Old sytle always CONFIG+=debug_and_release if (qobject_cast(project())->qtVersion(buildConfigurationName)->defaultBuildConfig() & QtVersion::DebugBuild) From 266ee2a4683c034eef11b6ba26cd06cd4553f5d7 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 14 Jan 2009 15:08:46 +0100 Subject: [PATCH 04/81] remove ProjectExplorerInterface and ExtensionSystemInterfaces files --- shared/scriptwrapper/interface_wrap_helpers.h | 1 - .../extensionsystem/ExtensionSystemInterfaces | 39 ----- src/plugins/bookmarks/bookmarkmanager.cpp | 3 +- src/plugins/coreplugin/baseview.cpp | 2 +- src/plugins/coreplugin/coreconstants.h | 2 - src/plugins/coreplugin/navigationwidget.cpp | 1 - .../scriptmanager/scriptmanager.cpp | 1 - src/plugins/coreplugin/viewmanager.cpp | 1 - src/plugins/cpaster/cpasterplugin.h | 2 +- src/plugins/cpptools/cpptoolsplugin.h | 2 +- src/plugins/designer/formeditorfactory.h | 1 - src/plugins/designer/formeditorw.h | 4 +- src/plugins/git/gitplugin.h | 144 +++++++++--------- src/plugins/perforce/perforceplugin.h | 2 +- .../projectexplorer/ProjectExplorerInterfaces | 44 ------ .../applicationlauncher_x11.cpp | 3 - .../qt4projectmanager/buildparserfactory.h | 7 +- src/plugins/qt4projectmanager/cesdkhandler.h | 12 +- src/plugins/qt4projectmanager/deployhelper.h | 2 +- src/plugins/qt4projectmanager/gccparser.h | 2 +- src/plugins/qt4projectmanager/makestep.cpp | 2 +- src/plugins/qt4projectmanager/makestep.h | 5 +- .../qt4projectmanager/msvcenvironment.cpp | 13 +- .../qt4projectmanager/msvcenvironment.h | 6 +- src/plugins/qt4projectmanager/msvcparser.h | 4 +- src/plugins/qt4projectmanager/qmakestep.h | 10 +- .../qt4projectmanager/qt4projectmanager.cpp | 2 + .../qt4projectmanagerplugin.cpp | 3 + .../qt4projectmanager/qtversionmanager.h | 2 +- .../qtscripteditor/qtscripteditorfactory.h | 1 - .../resourceeditor/resourceeditorfactory.h | 5 +- src/plugins/subversion/subversionplugin.cpp | 2 +- src/plugins/subversion/subversionplugin.h | 2 +- 33 files changed, 120 insertions(+), 212 deletions(-) delete mode 100644 src/libs/extensionsystem/ExtensionSystemInterfaces delete mode 100644 src/plugins/projectexplorer/ProjectExplorerInterfaces diff --git a/shared/scriptwrapper/interface_wrap_helpers.h b/shared/scriptwrapper/interface_wrap_helpers.h index 0ead88f90fc..8ec308fe7e1 100644 --- a/shared/scriptwrapper/interface_wrap_helpers.h +++ b/shared/scriptwrapper/interface_wrap_helpers.h @@ -34,7 +34,6 @@ #ifndef INTERFACE_WRAP_HELPERS_H #define INTERFACE_WRAP_HELPERS_H -#include #include namespace SharedTools { diff --git a/src/libs/extensionsystem/ExtensionSystemInterfaces b/src/libs/extensionsystem/ExtensionSystemInterfaces deleted file mode 100644 index 7f42b55e89a..00000000000 --- a/src/libs/extensionsystem/ExtensionSystemInterfaces +++ /dev/null @@ -1,39 +0,0 @@ -/*************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** -** Non-Open Source Usage -** -** Licensees may use this file in accordance with the Qt Beta Version -** License Agreement, Agreement version 2.2 provided with the Software or, -** alternatively, in accordance with the terms contained in a written -** agreement between you and Nokia. -** -** GNU General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the packaging -** of this file. Please review the following information to ensure GNU -** General Public Licensing requirements will be met: -** -** http://www.fsf.org/licensing/licenses/info/GPLv2.html and -** http://www.gnu.org/copyleft/gpl.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt GPL Exception -** version 1.3, included in the file GPL_EXCEPTION.txt in this package. -** -***************************************************************************/ - -#include "extensionsystem/pluginmanager.h" -#include "extensionsystem/pluginspec.h" -#include "extensionsystem/iplugin.h" -#include "extensionsystem/pluginview.h" -#include "extensionsystem/pluginerrorview.h" -#include "extensionsystem/plugindetailsview.h" diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index 88857a81fb7..735afc37989 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -37,10 +37,10 @@ #include "bookmarksplugin.h" #include "bookmarks_global.h" -#include #include #include #include +#include #include #include @@ -49,6 +49,7 @@ #include #include +#include #include Q_DECLARE_METATYPE(Bookmarks::Internal::Bookmark*) diff --git a/src/plugins/coreplugin/baseview.cpp b/src/plugins/coreplugin/baseview.cpp index f3dd93f5155..ae93c281fa5 100644 --- a/src/plugins/coreplugin/baseview.cpp +++ b/src/plugins/coreplugin/baseview.cpp @@ -33,7 +33,7 @@ #include "baseview.h" -#include +#include using namespace Core; diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 8dd7d9c588d..cdada0a1ccb 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -34,8 +34,6 @@ #ifndef CORECONSTANTS_H #define CORECONSTANTS_H -#include - namespace Core { namespace Constants { diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index f6b586f7603..41b5116ba54 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -39,7 +39,6 @@ #include #include #include -#include #include #include diff --git a/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp b/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp index 1ac21ca743c..937af4f66a3 100644 --- a/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp +++ b/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp @@ -35,7 +35,6 @@ #include "qworkbench_wrapper.h" #include "metatypedeclarations.h" -#include #include #include #include diff --git a/src/plugins/coreplugin/viewmanager.cpp b/src/plugins/coreplugin/viewmanager.cpp index 0db47634729..a7a2bf9a45e 100644 --- a/src/plugins/coreplugin/viewmanager.cpp +++ b/src/plugins/coreplugin/viewmanager.cpp @@ -40,7 +40,6 @@ #include #include -#include #include #include diff --git a/src/plugins/cpaster/cpasterplugin.h b/src/plugins/cpaster/cpasterplugin.h index b6694be562c..56c41144a96 100644 --- a/src/plugins/cpaster/cpasterplugin.h +++ b/src/plugins/cpaster/cpasterplugin.h @@ -40,8 +40,8 @@ #include #include -#include #include +#include #include diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h index a55630e6c04..092de535b3e 100644 --- a/src/plugins/cpptools/cpptoolsplugin.h +++ b/src/plugins/cpptools/cpptoolsplugin.h @@ -35,7 +35,7 @@ #define CPPTOOLS_H #include -#include +#include QT_BEGIN_NAMESPACE class QFileInfo; diff --git a/src/plugins/designer/formeditorfactory.h b/src/plugins/designer/formeditorfactory.h index 02ad78fdb2d..5d13e45080a 100644 --- a/src/plugins/designer/formeditorfactory.h +++ b/src/plugins/designer/formeditorfactory.h @@ -34,7 +34,6 @@ #ifndef FORMEDITORFACTORY_H #define FORMEDITORFACTORY_H -#include #include #include diff --git a/src/plugins/designer/formeditorw.h b/src/plugins/designer/formeditorw.h index 6aaca2c5924..f41d3554e25 100644 --- a/src/plugins/designer/formeditorw.h +++ b/src/plugins/designer/formeditorw.h @@ -34,12 +34,12 @@ #ifndef FORMEDITORW_H #define FORMEDITORW_H -#include #include -#include #include +#include #include +#include #include "designerconstants.h" diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h index 22fcea7c011..19c61db291a 100644 --- a/src/plugins/git/gitplugin.h +++ b/src/plugins/git/gitplugin.h @@ -39,8 +39,8 @@ #include #include -#include #include +#include #include #include @@ -53,20 +53,20 @@ class QTemporaryFile; QT_END_NAMESPACE namespace Core { - class IEditorFactory; - class ICore; - class IVersionControl; -} +class IEditorFactory; +class ICore; +class IVersionControl; +} // namespace Core namespace Git { namespace Internal { - class GitPlugin; - class GitClient; - class ChangeSelectionDialog; - class GitSubmitEditor; - struct CommitData; - struct GitSettings; +class GitPlugin; +class GitClient; +class ChangeSelectionDialog; +class GitSubmitEditor; +struct CommitData; +struct GitSettings; // Just a proxy for GitPlugin class CoreListener : public Core::ICoreListener @@ -85,83 +85,83 @@ class GitPlugin : public ExtensionSystem::IPlugin Q_OBJECT public: - GitPlugin(); - ~GitPlugin(); + GitPlugin(); + ~GitPlugin(); + static GitPlugin *instance(); - bool initialize(const QStringList &arguments - , QString *error_message); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *error_message); + void extensionsInitialized(); - QString getWorkingDirectory(); + QString getWorkingDirectory(); - GitOutputWindow *outputWindow() const; + GitOutputWindow *outputWindow() const; - GitSettings settings() const; + GitSettings settings() const; void setSettings(const GitSettings &s); public slots: - void updateActions(); - bool editorAboutToClose(Core::IEditor *editor); + void updateActions(); + bool editorAboutToClose(Core::IEditor *editor); private slots: - void diffCurrentFile(); - void diffCurrentProject(); - void submitEditorDiff(const QStringList &unstaged, const QStringList &staged); - void submitCurrentLog(); - void statusFile(); - void statusProject(); - void logFile(); - void blameFile(); - void logProject(); - void undoFileChanges(); - void undoProjectChanges(); - void stageFile(); - void unstageFile(); - void revertFile(); + void diffCurrentFile(); + void diffCurrentProject(); + void submitEditorDiff(const QStringList &unstaged, const QStringList &staged); + void submitCurrentLog(); + void statusFile(); + void statusProject(); + void logFile(); + void blameFile(); + void logProject(); + void undoFileChanges(); + void undoProjectChanges(); + void stageFile(); + void unstageFile(); + void revertFile(); - void showCommit(); - void startCommit(); - void stash(); - void stashPop(); - void branchList(); - void stashList(); - void pull(); - void push(); + void showCommit(); + void startCommit(); + void stash(); + void stashPop(); + void branchList(); + void stashList(); + void pull(); + void push(); private: - QFileInfo currentFile() const; - Core::IEditor *openSubmitEditor(const QString &fileName, const CommitData &cd); - void cleanChangeTmpFile(); + QFileInfo currentFile() const; + Core::IEditor *openSubmitEditor(const QString &fileName, const CommitData &cd); + void cleanChangeTmpFile(); - static GitPlugin *m_instance; - Core::ICore *m_core; - QAction *m_diffAction; - QAction *m_diffProjectAction; - QAction *m_statusAction; - QAction *m_statusProjectAction; - QAction *m_logAction; - QAction *m_blameAction; - QAction *m_logProjectAction; - QAction *m_undoFileAction; - QAction *m_undoProjectAction; - QAction *m_showAction; - QAction *m_stageAction; - QAction *m_unstageAction; - QAction *m_revertAction; - QAction *m_commitAction; - QAction *m_pullAction; - QAction *m_pushAction; + static GitPlugin *m_instance; + Core::ICore *m_core; + QAction *m_diffAction; + QAction *m_diffProjectAction; + QAction *m_statusAction; + QAction *m_statusProjectAction; + QAction *m_logAction; + QAction *m_blameAction; + QAction *m_logProjectAction; + QAction *m_undoFileAction; + QAction *m_undoProjectAction; + QAction *m_showAction; + QAction *m_stageAction; + QAction *m_unstageAction; + QAction *m_revertAction; + QAction *m_commitAction; + QAction *m_pullAction; + QAction *m_pushAction; - QAction *m_submitCurrentAction; - QAction *m_diffSelectedFilesAction; - QAction *m_undoAction; - QAction *m_redoAction; - QAction *m_stashAction; - QAction *m_stashPopAction; - QAction *m_stashListAction; - QAction *m_branchListAction; + QAction *m_submitCurrentAction; + QAction *m_diffSelectedFilesAction; + QAction *m_undoAction; + QAction *m_redoAction; + QAction *m_stashAction; + QAction *m_stashPopAction; + QAction *m_stashListAction; + QAction *m_branchListAction; ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer; GitClient *m_gitClient; diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index a5e52ba6b03..8069154a25c 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -39,8 +39,8 @@ #include #include #include -#include #include +#include #ifdef USE_P4_API #include "workbenchclientuser.h" diff --git a/src/plugins/projectexplorer/ProjectExplorerInterfaces b/src/plugins/projectexplorer/ProjectExplorerInterfaces deleted file mode 100644 index b6eb45c7ac5..00000000000 --- a/src/plugins/projectexplorer/ProjectExplorerInterfaces +++ /dev/null @@ -1,44 +0,0 @@ -/*************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** -** Non-Open Source Usage -** -** Licensees may use this file in accordance with the Qt Beta Version -** License Agreement, Agreement version 2.2 provided with the Software or, -** alternatively, in accordance with the terms contained in a written -** agreement between you and Nokia. -** -** GNU General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the packaging -** of this file. Please review the following information to ensure GNU -** General Public Licensing requirements will be met: -** -** http://www.fsf.org/licensing/licenses/info/GPLv2.html and -** http://www.gnu.org/copyleft/gpl.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt GPL Exception -** version 1.3, included in the file GPL_EXCEPTION.txt in this package. -** -***************************************************************************/ - -#include "projectexplorer/buildparserinterface.h" -#include "projectexplorer/projectexplorerconstants.h" -#include "projectexplorer/project.h" -#include "projectexplorer/buildstep.h" -#include "projectexplorer/buildconfiguration.h" -#include "projectexplorer/buildmanager.h" -#include "projectexplorer/projectexplorer.h" -#include "projectexplorer/persistentsettings.h" -#include "projectexplorer/environment.h" -#include "projectexplorer/environmenteditmodel.h" -#include "projectexplorer/abstractprocessstep.h" diff --git a/src/plugins/projectexplorer/applicationlauncher_x11.cpp b/src/plugins/projectexplorer/applicationlauncher_x11.cpp index 9a1c4c3d737..79933d4518b 100644 --- a/src/plugins/projectexplorer/applicationlauncher_x11.cpp +++ b/src/plugins/projectexplorer/applicationlauncher_x11.cpp @@ -34,10 +34,7 @@ #include "applicationlauncher.h" #include "consoleprocess.h" -#include - #include -#include using namespace ProjectExplorer::Internal; diff --git a/src/plugins/qt4projectmanager/buildparserfactory.h b/src/plugins/qt4projectmanager/buildparserfactory.h index 0e8495d5fb0..a52c33f7193 100644 --- a/src/plugins/qt4projectmanager/buildparserfactory.h +++ b/src/plugins/qt4projectmanager/buildparserfactory.h @@ -34,12 +34,8 @@ #ifndef BUILDPARSERFACTORY_H #define BUILDPARSERFACTORY_H -#include +#include - -namespace ProjectExplorer { -class BuildParserInterface; -} namespace Qt4ProjectManager { namespace Internal { @@ -66,5 +62,4 @@ public: } // namespace Internal } // namespace Qt4ProjectManager - #endif // BUILDPARSERFACTORY_H diff --git a/src/plugins/qt4projectmanager/cesdkhandler.h b/src/plugins/qt4projectmanager/cesdkhandler.h index dd9c1d9b5e0..d46a65c2ab9 100644 --- a/src/plugins/qt4projectmanager/cesdkhandler.h +++ b/src/plugins/qt4projectmanager/cesdkhandler.h @@ -31,13 +31,13 @@ ** ***************************************************************************/ -#ifndef CE_SDK_HANDLER_INCL -#define CE_SDK_HANDLER_INCL +#ifndef CE_SDK_HANDLER_H +#define CE_SDK_HANDLER_H -#include +#include -#include -#include +#include +#include #define VCINSTALL_MACRO "$(VCInstallDir)" #define VSINSTALL_MACRO "$(VSInstallDir)" @@ -105,4 +105,4 @@ inline QString CeSdkHandler::fixPaths(QString path) const } // namespace Internal } // namespace Qt4ProjectManager -#endif // CE_SDK_HANDLER_INCL +#endif // CE_SDK_HANDLER_H diff --git a/src/plugins/qt4projectmanager/deployhelper.h b/src/plugins/qt4projectmanager/deployhelper.h index 8462f05b05c..b633ae34392 100644 --- a/src/plugins/qt4projectmanager/deployhelper.h +++ b/src/plugins/qt4projectmanager/deployhelper.h @@ -34,7 +34,7 @@ #ifndef DEPLOYHELPER_H #define DEPLOYHELPER_H -#include +#include #include #include diff --git a/src/plugins/qt4projectmanager/gccparser.h b/src/plugins/qt4projectmanager/gccparser.h index 1b556dd6755..24b21cde6f3 100644 --- a/src/plugins/qt4projectmanager/gccparser.h +++ b/src/plugins/qt4projectmanager/gccparser.h @@ -34,7 +34,7 @@ #ifndef GCCPARSER_H #define GCCPARSER_H -#include +#include #include diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 2a032e63fd7..34d4a7e881f 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -36,7 +36,7 @@ #include "qt4project.h" #include "qt4projectmanagerconstants.h" -#include +#include #include #include diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h index 6312f08a1e1..0f0f189bfda 100644 --- a/src/plugins/qt4projectmanager/makestep.h +++ b/src/plugins/qt4projectmanager/makestep.h @@ -37,14 +37,13 @@ #include "qtversionmanager.h" #include "ui_makestep.h" -#include -#include +#include +#include namespace Qt4ProjectManager { class Qt4Project; - // NBS move this class to an own plugin? So that there can be a make project at a future time class MakeStep : public ProjectExplorer::AbstractProcessStep { diff --git a/src/plugins/qt4projectmanager/msvcenvironment.cpp b/src/plugins/qt4projectmanager/msvcenvironment.cpp index 2ae9bbebdf7..ebe54104f8d 100644 --- a/src/plugins/qt4projectmanager/msvcenvironment.cpp +++ b/src/plugins/qt4projectmanager/msvcenvironment.cpp @@ -33,12 +33,13 @@ #include "msvcenvironment.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include using namespace Qt4ProjectManager::Internal; using ProjectExplorer::Environment; diff --git a/src/plugins/qt4projectmanager/msvcenvironment.h b/src/plugins/qt4projectmanager/msvcenvironment.h index b3b50718256..c7d7729a99c 100644 --- a/src/plugins/qt4projectmanager/msvcenvironment.h +++ b/src/plugins/qt4projectmanager/msvcenvironment.h @@ -34,10 +34,10 @@ #ifndef MSVCENVIRONMENT_H #define MSVCENVIRONMENT_H -#include -#include +#include +#include -#include +#include namespace Qt4ProjectManager { namespace Internal { diff --git a/src/plugins/qt4projectmanager/msvcparser.h b/src/plugins/qt4projectmanager/msvcparser.h index 6eaee5c97e9..06e0c3e6d61 100644 --- a/src/plugins/qt4projectmanager/msvcparser.h +++ b/src/plugins/qt4projectmanager/msvcparser.h @@ -34,7 +34,7 @@ #ifndef MSVCPARSER_H #define MSVCPARSER_H -#include +#include #include @@ -58,4 +58,4 @@ private: } // namespace ProjectExplorer -#endif // MsvcParser +#endif // MSVCPARSER_H diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h index 228aca7c2a3..d2d7980df04 100644 --- a/src/plugins/qt4projectmanager/qmakestep.h +++ b/src/plugins/qt4projectmanager/qmakestep.h @@ -34,10 +34,12 @@ #ifndef QMAKESTEP_H #define QMAKESTEP_H -#include +#include "ui_qmakestep.h" + +#include + #include -#include "ui_qmakestep.h" namespace Qt4ProjectManager { @@ -46,10 +48,11 @@ class Qt4Project; class QMakeStep : public ProjectExplorer::AbstractProcessStep { Q_OBJECT + public: QMakeStep(Qt4Project * project); ~QMakeStep(); - virtual bool init(const QString & name); + virtual bool init(const QString &name); virtual void run(QFutureInterface &); virtual QString name(); virtual QString displayName(); @@ -58,6 +61,7 @@ public: QStringList arguments(const QString &buildConfiguration); void setForced(bool b); bool forced(); + protected: virtual void processStartupFailed(); virtual bool processFinished(int exitCode, QProcess::ExitStatus status); diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index dd8413aec14..792ae2aed45 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -48,7 +48,9 @@ #include #include #include +#include #include +#include #include #include diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index 01a0b91aae6..a8dfb4cb89d 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -48,7 +48,10 @@ #include "profilereader.h" #include "gdbmacrosbuildstep.h" +#include #include +#include +#include #include #include #include diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index a9a76066a33..872b44b2178 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -38,7 +38,7 @@ #include #include -#include +#include #include #include diff --git a/src/plugins/qtscripteditor/qtscripteditorfactory.h b/src/plugins/qtscripteditor/qtscripteditorfactory.h index f97cdab1eed..08654aa0350 100644 --- a/src/plugins/qtscripteditor/qtscripteditorfactory.h +++ b/src/plugins/qtscripteditor/qtscripteditorfactory.h @@ -34,7 +34,6 @@ #ifndef RQTSCRIPTEDITORFACTORY_H #define RQTSCRIPTEDITORFACTORY_H -#include #include #include diff --git a/src/plugins/resourceeditor/resourceeditorfactory.h b/src/plugins/resourceeditor/resourceeditorfactory.h index 0bcafd3ca56..4097fdecacc 100644 --- a/src/plugins/resourceeditor/resourceeditorfactory.h +++ b/src/plugins/resourceeditor/resourceeditorfactory.h @@ -34,16 +34,13 @@ #ifndef RRESOURCEEDITORFACTORY_H #define RRESOURCEEDITORFACTORY_H -#include #include #include namespace Core { class ICore; -class IEditor; -class IFile; -} +} // namespace Core namespace ResourceEditor { namespace Internal { diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index a98848a8b37..811e4651415 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -55,7 +55,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index fb6bd17b7a9..729bbc909fd 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -39,8 +39,8 @@ #include #include #include -#include #include +#include #include #include From 653b81427c46d7569b6434705494f47ec19bc70f Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Wed, 14 Jan 2009 15:16:02 +0100 Subject: [PATCH 05/81] Accept gcc attributes in cv-qualifiers. --- shared/cplusplus/Parser.cpp | 3 +++ tests/auto/cplusplus/ast/ast.pro | 1 - tests/auto/cplusplus/ast/tst_ast.cpp | 10 ++++++++++ tests/manual/cplusplus/conf.c++ | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/shared/cplusplus/Parser.cpp b/shared/cplusplus/Parser.cpp index ae9f39469a0..eefa3d5b9fe 100644 --- a/shared/cplusplus/Parser.cpp +++ b/shared/cplusplus/Parser.cpp @@ -751,6 +751,9 @@ bool Parser::parseCvQualifiers(SpecifierAST *&node) spec->specifier_token = consumeToken(); *ast = spec; ast = &(*ast)->next; + } else if(LA() == T___ATTRIBUTE__) { + parseAttributeSpecifier(*ast); + ast = &(*ast)->next; } else { break; } diff --git a/tests/auto/cplusplus/ast/ast.pro b/tests/auto/cplusplus/ast/ast.pro index 6974c6bbb4c..39fd14105de 100644 --- a/tests/auto/cplusplus/ast/ast.pro +++ b/tests/auto/cplusplus/ast/ast.pro @@ -1,5 +1,4 @@ load(qttest_p4) include(../shared/shared.pri) QT = core - SOURCES += tst_ast.cpp diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 5756d2dd224..689da076ea1 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -36,6 +36,9 @@ public: { return parse(source, TranslationUnit::ParseStatement); } private slots: + // declarations + void gcc_attributes_1(); + // expressions void simple_name(); void template_id(); @@ -54,6 +57,13 @@ private slots: void objc_protocol_definition_1(); }; +void tst_AST::gcc_attributes_1() +{ + QSharedPointer unit(parseDeclaration("\n" +"static inline void *__attribute__((__always_inline__)) _mm_malloc(size_t size, size_t align);" + )); +} + void tst_AST::simple_name() { QSharedPointer unit(parseExpression("a")); diff --git a/tests/manual/cplusplus/conf.c++ b/tests/manual/cplusplus/conf.c++ index fbfad57a4bc..c179f979272 100644 --- a/tests/manual/cplusplus/conf.c++ +++ b/tests/manual/cplusplus/conf.c++ @@ -5,3 +5,4 @@ #define __asm__(a...) #define restrict #define __restrict +#define __weak From 7b42be965735ce9df5d5afa722dd0734ebdcc979 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Wed, 14 Jan 2009 16:02:50 +0100 Subject: [PATCH 06/81] Fixes: Documentation - some extra content and adding the Code Editor page as a placeholder for future content --- doc/qtcreator.qdoc | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 3c50c9d4280..6f6e51f42df 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -49,7 +49,9 @@ \list \o \l{A Quick Tour of Qt Creator} \o \l{Creating a Project in Qt Creator} + \o \l{The Code Editor} \o \l{Build Settings} + \o \l{Qt Version Management} \o \l{Writing a Simple Program with Qt Creator} \o \l{Navigating Quickly Around Your Code with Locator} \o \l{Debugging with Qt Creator} @@ -206,10 +208,25 @@ are available to help speed up the process of developing your application. */ +/*! \contentspage index.html + \previouspage creator-quick-tour.html + \page creator-code-editor.html + \nextpage creator-build-settings.html + + \title The Code Editor + + ### SCREENSHOT of the editor in action + + To switch to an external editor, select \gui{Open in external editor} from + the \gui{Edit -> Advanced} menu. + +*/ + + /*! \contentspage index.html - \previouspage creator-quick-tour.html + \previouspage creator-editor-settings.html \page creator-build-settings.html \nextpage creator-creating-project.html @@ -266,8 +283,15 @@ remove the build step. You will still be able to debug applications, but the contents of Qt and STL data types will not be displayed properly. +*/ - \section1 Qt Version Management +/*! + \contentspage index.html + \previouspage creator-build-settings.html + \page creator-version-management.html + \nextpage creator-creating-project.html + + \title Qt Version Management Qt Creator allows you to use multiple versions of Qt installed on your hard disk and switch between them easily. From 3d3d01c4a3fdf1d7763b66d33d5e76ca729da852 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Wed, 14 Jan 2009 16:53:03 +0100 Subject: [PATCH 07/81] Fixes: Documentation - more documentation for selection features RevBy: Discussed with Thorbjorn --- doc/qtcreator.qdoc | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 6f6e51f42df..4918da9f61a 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -217,6 +217,48 @@ ### SCREENSHOT of the editor in action + + \table + \row + \i Block navigation + \i To navigate between blocks, e.g., from one \c{\{} to another + \c{\c}}, use \key{Ctrl+[} and \key{Ctrl+]}. + \row + \i Block selection + \i To select a current block, use \key{Ctrl+U}. Pressing + \key{Ctrl+U} again extends the selection to the parent block. + To deselect, use \key{Ctrl+Shift+U}. + \row + \i Moving lines up and down + \i + + \row + \i Completion + \i + + \row + \i Indenting + \i + \row + \i Commenting or Uncommenting + \i + \endtable + + + More: + + Collapse + + Up/Down/Page Up/Page Down - hold ctrl to prevent the cursor from moving + + F2 and Shift F2 - follows symbols under the cursor (works for namespaces, classes, methods, variables, includes, macros). + + F4 - switch header and source + + Ctrl + Scroll wheel -- used to quickly change the font size (handy for presentatiaons) + + + To switch to an external editor, select \gui{Open in external editor} from the \gui{Edit -> Advanced} menu. From 6b86542ae48b1e0449ffa94e496d85e28b365f3c Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 14 Jan 2009 17:04:23 +0100 Subject: [PATCH 08/81] Fixes: Dont override windowsstyle on windows Task: Reported on #qt RevBy: dt Details: This code was only intended for X11, hence we ifdef it for now. Obviously windows users might want to use windows style. --- src/plugins/coreplugin/mainwindow.cpp | 2 ++ .../projectexplorer/images/filtericon.png | Bin 194 -> 194 bytes 2 files changed, 2 insertions(+) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index f4633fcd735..9dc93c0133d 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -186,6 +186,7 @@ MainWindow::MainWindow() : QCoreApplication::setOrganizationName(QLatin1String("Nokia")); QSettings::setDefaultFormat(QSettings::IniFormat); QString baseName = qApp->style()->objectName(); +#ifdef Q_WS_X11 if (baseName == "windows") { // Sometimes we get the standard windows 95 style as a fallback // e.g. if we are running on a KDE4 desktop @@ -195,6 +196,7 @@ MainWindow::MainWindow() : else baseName = "cleanlooks"; } +#endif qApp->setStyle(new ManhattanStyle(baseName)); statusBar()->setProperty("p_styled", true); } diff --git a/src/plugins/projectexplorer/images/filtericon.png b/src/plugins/projectexplorer/images/filtericon.png index 7e46d2267581c60330a6b948a86d47ed8f9711a0..0915b5e5f6167dfb71799f637ac2ba67f3be7deb 100644 GIT binary patch delta 33 qcmX@ac!+U=Ip=?d{|x^Z>|H*2qJtdQO-6QJ1)j4zc&ALvhynobB@K4~ delta 33 ncmX@ac!+U=IVS@M{B+)3KhZ&s>jpOqzpl>ZrH`jh%!mR2s{;#I From 0cf9ffc03183f9d460618f928e945448d8ed4f02 Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 14 Jan 2009 17:13:17 +0100 Subject: [PATCH 09/81] Fixes: Updating the completion for ui files Details: That is we update all generated headers (which are new or modfied) in the C++ Engine. Big if, this only works if we find the correct path for the ui header files. Which is known to sometimes not work, I'll fix that next. --- .../qt4projectmanager/directorywatcher.cpp | 161 ------------------ .../qt4projectmanager/directorywatcher.h | 40 ----- src/plugins/qt4projectmanager/qt4nodes.cpp | 119 +++++++------ src/plugins/qt4projectmanager/qt4nodes.h | 9 +- 4 files changed, 74 insertions(+), 255 deletions(-) diff --git a/src/plugins/qt4projectmanager/directorywatcher.cpp b/src/plugins/qt4projectmanager/directorywatcher.cpp index d20444098e0..b054f1ff291 100644 --- a/src/plugins/qt4projectmanager/directorywatcher.cpp +++ b/src/plugins/qt4projectmanager/directorywatcher.cpp @@ -44,165 +44,6 @@ enum { debugWatcher = 0 }; namespace Qt4ProjectManager { namespace Internal { -int DirectoryWatcher::m_objectCount = 0; -QHash DirectoryWatcher::m_directoryCount; -QFileSystemWatcher *DirectoryWatcher::m_watcher = 0; - -/* - \class DirectoryWatcher - - A wrapper for QFileSystemWatcher that collects - consecutive changes to a registered directory and emits directoryChanged() and fileChanged(). - - Note that files added are only monitored if the parent directory is added, too. - - All instances of DirectoryWatcher share one QFileSystemWatcher object. - That's because every QFileSystemWatcher object consumes a file descriptor, - even if no files are watched. -*/ -DirectoryWatcher::DirectoryWatcher(QObject *parent) : - QObject(parent), - m_timer(0) -{ - if (!m_watcher) - m_watcher = new QFileSystemWatcher(); - ++m_objectCount; - connect(m_watcher, SIGNAL(directoryChanged(QString)), - this, SLOT(slotDirectoryChanged(QString))); -} - -DirectoryWatcher::~DirectoryWatcher() -{ - foreach (const QString &dir, m_directories) - removeDirectory(dir); - if (--m_objectCount == 0) { - delete m_watcher; - m_watcher = 0; - } -} - -QStringList DirectoryWatcher::directories() const -{ - if (debugWatcher) - qDebug() << Q_FUNC_INFO << m_directories; - return m_directories; -} - -void DirectoryWatcher::addDirectory(const QString &dir) -{ - if (debugWatcher) - qDebug() << Q_FUNC_INFO << dir; - if (m_directories.contains(dir)) - return; - m_directories += dir; - if (m_directoryCount[dir] == 0) - m_watcher->addPath(dir); - m_directoryCount[dir] += 1; -} - -void DirectoryWatcher::removeDirectory(const QString &dir) -{ - if (debugWatcher) - qDebug() << Q_FUNC_INFO << dir; - m_directories.removeOne(dir); - m_directoryCount[dir] -= 1; - if (m_directoryCount[dir] == 0) - m_watcher->removePath(dir); -} - -QStringList DirectoryWatcher::files() const -{ - if (debugWatcher) - qDebug() << Q_FUNC_INFO << m_files.keys(); - return m_files.keys(); -} - -void DirectoryWatcher::addFile(const QString &filePath) -{ - addFiles(QStringList() << filePath); -} - -void DirectoryWatcher::addFiles(const QStringList &filePaths) -{ - foreach (const QString filePath, filePaths) { - QFileInfo file(filePath); - m_files.insert(file.absoluteFilePath(),file.lastModified()); - } -} - -void DirectoryWatcher::removeFile(const QString &filePath) -{ - m_files.remove(filePath); -} - -void DirectoryWatcher::slotDirectoryChanged(const QString &path) -{ - if (debugWatcher) - qDebug() << Q_FUNC_INFO << path; - if (!m_directories.contains(path) - || m_pendingDirectories.contains(path)) - return; - - if (!m_timer) { - m_timer = new QTimer(this); - m_timer->setSingleShot(true); - m_timer->setInterval(500); // delay for 0.5 sec - connect(m_timer, SIGNAL(timeout()), this, SLOT(slotDelayedDirectoriesChanged())); - } - if (!m_timer->isActive()) - m_timer->start(); - m_pendingDirectories.push_back(path); -} - -void DirectoryWatcher::slotDelayedDirectoriesChanged() -{ - if (debugWatcher) - qDebug() << Q_FUNC_INFO << " emitting " << m_pendingDirectories; - const QStringList::const_iterator cend = m_pendingDirectories.constEnd(); - for (QStringList::const_iterator it = m_pendingDirectories.constBegin(); it != cend; ++it) { - const QString dir = *it; - if (!QFileInfo(dir).exists()) - removeDirectory(*it); - emit directoryChanged(*it); - updateFileList(*it); - } - m_pendingDirectories.clear(); -} - -void DirectoryWatcher::updateFileList(const QString &dir) -{ - const QStringList monitoredFiles = m_files.keys(); - QStringList removedFiles = monitoredFiles; - if (QFileInfo(dir).exists()) { - // Compare directory contents and emit signals - QFileInfoList entryInfoList - = QDir(dir).entryInfoList(QDir::Files|QDir::CaseSensitive); - // Loop over directory creating the new map of file->time, removing - // the existing entries from the old map - const QFileInfoList::const_iterator cend = entryInfoList.constEnd(); - for (QFileInfoList::const_iterator filIt = entryInfoList.constBegin(); - filIt != cend; ++filIt) { - const QString path = filIt->absoluteFilePath(); - FileModificationTimeMap::iterator mapIt = m_files.find(path); - if (mapIt != m_files.end()) { - const QDateTime lastModified = filIt->lastModified(); - if (lastModified > mapIt.value()) { - if (debugWatcher) - qDebug() << Q_FUNC_INFO << "emitting file changed" << path; - emit fileChanged(path); - m_files[path] = lastModified; - } - removedFiles.removeOne(path); - } - } - } - - if (!removedFiles.isEmpty()) { - foreach (const QString &file, removedFiles) - removeFile(file); - } -} - int FileWatcher::m_objectCount = 0; QHash FileWatcher::m_fileCount; QFileSystemWatcher *FileWatcher::m_watcher = 0; @@ -256,7 +97,5 @@ void FileWatcher::removeFile(const QString &file) m_watcher->removePath(file); } - - } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/directorywatcher.h b/src/plugins/qt4projectmanager/directorywatcher.h index 57f015330a1..35ceaed91e1 100644 --- a/src/plugins/qt4projectmanager/directorywatcher.h +++ b/src/plugins/qt4projectmanager/directorywatcher.h @@ -47,46 +47,6 @@ QT_END_NAMESPACE namespace Qt4ProjectManager { namespace Internal { -class DirectoryWatcher : public QObject -{ - Q_DISABLE_COPY(DirectoryWatcher) - Q_OBJECT -public: - explicit DirectoryWatcher(QObject *parent = 0); - virtual ~DirectoryWatcher(); - - QStringList directories() const; - void addDirectory(const QString &dir); - void removeDirectory(const QString &dir); - - QStringList files() const; - void addFile(const QString &filePath); - void addFiles(const QStringList &filePaths); - void removeFile(const QString &filePath); - -signals: - void directoryChanged(const QString &path); - void fileChanged(const QString &path); - -private slots: - void slotDirectoryChanged(const QString &); - void slotDelayedDirectoriesChanged(); - -private: - void updateFileList(const QString &dir); - - static int m_objectCount; - static QHash m_directoryCount; - static QFileSystemWatcher *m_watcher; - - QTimer *m_timer; - QStringList m_directories; - QStringList m_pendingDirectories; - - typedef QHash FileModificationTimeMap; - FileModificationTimeMap m_files; -}; - class FileWatcher : public QObject { Q_DISABLE_COPY(FileWatcher) diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 8f836f64982..b32a47ac512 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -49,6 +49,7 @@ #include #include +#include #include @@ -488,6 +489,9 @@ QStringList Qt4PriFileNode::varNames(FileType type) return vars; } +#include +#include + /*! \class Qt4ProFileNode Implements abstract ProjectNode class @@ -498,8 +502,7 @@ Qt4ProFileNode::Qt4ProFileNode(Qt4Project *project, : Qt4PriFileNode(project, this, filePath), // own stuff m_projectType(InvalidProject), - m_isQBuildProject(false), - m_dirWatcher(new DirectoryWatcher(this)) + m_isQBuildProject(false) { if (parent) setParent(parent); @@ -507,14 +510,13 @@ Qt4ProFileNode::Qt4ProFileNode(Qt4Project *project, m_updateTimer.setInterval(100); m_updateTimer.setSingleShot(true); - connect(m_dirWatcher, SIGNAL(directoryChanged(const QString&)), - this, SLOT(updateGeneratedFiles())); - connect(m_dirWatcher, SIGNAL(fileChanged(const QString&)), - this, SLOT(fileChanged(const QString&))); connect(m_project, SIGNAL(activeBuildConfigurationChanged()), this, SLOT(update())); connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(update())); + + connect(ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)), + this, SLOT(buildStateChanged(ProjectExplorer::Project*))); } Qt4ProFileNode::~Qt4ProFileNode() @@ -522,6 +524,12 @@ Qt4ProFileNode::~Qt4ProFileNode() } +void Qt4ProFileNode::buildStateChanged(ProjectExplorer::Project *project) +{ + if (project == m_project && !ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager()->isBuilding(m_project)) + updateUiFiles(); +} + bool Qt4ProFileNode::hasTargets() const { return (projectType() == ApplicationTemplate) || (projectType() == LibraryTemplate); @@ -689,7 +697,7 @@ void Qt4ProFileNode::update() emit qt4Watcher->variablesChanged(this, m_varValues, newVarValues); } - updateGeneratedFiles(); + updateUiFiles(); foreach (NodesWatcher *watcher, watchers()) if (Qt4NodesWatcher *qt4Watcher = qobject_cast(watcher)) @@ -698,15 +706,6 @@ void Qt4ProFileNode::update() delete reader; } -void Qt4ProFileNode::fileChanged(const QString &filePath) -{ - CppTools::CppModelManagerInterface *modelManager = - ExtensionSystem::PluginManager::instance()->getObject(); - - // TODO compress - modelManager->updateSourceFiles(QStringList() << filePath); -} - namespace { // find all ui files in project class FindUiFileNodesVisitor : public ProjectExplorer::NodesVisitor { @@ -726,53 +725,54 @@ namespace { }; } -/* - Adds ui_xxx.h files to tree and monitors them / the UI_DIR directory for changes - */ -void Qt4ProFileNode::updateGeneratedFiles() +// This function is triggered after a build, and updates the state ui files +// That is it adds files that didn't exist yet to the project tree, and calls +// updateSourceFiles() for files that changed +// It does so by storing a modification time for each ui file we know about. + +// TODO this function should also be called if the build configuration changes +// since the build directory could change, and thus the generated files that are present +// TODO check that it works +void Qt4ProFileNode::updateUiFiles() { + // Only those two project types can have ui files for us if (m_projectType != ApplicationTemplate && m_projectType != LibraryTemplate) return; + // Find all ui files FindUiFileNodesVisitor uiFilesVisitor; this->accept(&uiFilesVisitor); const QList uiFiles = uiFilesVisitor.uiFileNodes; - // monitor uic dir (only if there are .ui files) + // Find the UiDir, there can only ever be one + QString uiDir; // We should default to the build directory + QStringList tmp = m_varValues[UiDirVar]; + if (tmp.size() != 0) + uiDir = tmp.first(); - QSet oldUiDirs = m_dirWatcher->directories().toSet(); - QSet newUiDirs = - (!uiFiles.isEmpty()) ? m_varValues[UiDirVar].toSet() : QSet(); - foreach (const QString &uiDir, oldUiDirs - newUiDirs) - m_dirWatcher->removeDirectory(uiDir); - foreach (const QString &uiDir, newUiDirs - oldUiDirs) - m_dirWatcher->addDirectory(uiDir); - - // update generated files - - // Already existing FileNodes + // Collect all existing generated files QList existingFileNodes; foreach (FileNode *file, fileNodes()) { if (file->isGenerated()) existingFileNodes << file; } - // Convert uiFile to uiHeaderFilePath, find all headers that correspond - // and try to find them in uicDirs + // and try to find them in uiDir QStringList newFilePaths; - foreach (const QString &uicDir, m_varValues[UiDirVar]) { - foreach (FileNode *uiFile, uiFiles) { - const QString uiHeaderFilePath - = QString("%1/ui_%2.h").arg(uicDir, QFileInfo(uiFile->path()).baseName()); - if (QFileInfo(uiHeaderFilePath).exists()) - newFilePaths << uiHeaderFilePath; - } + foreach (FileNode *uiFile, uiFiles) { + const QString uiHeaderFilePath + = QString("%1/ui_%2.h").arg(uiDir, QFileInfo(uiFile->path()).baseName()); + if (QFileInfo(uiHeaderFilePath).exists()) + newFilePaths << uiHeaderFilePath; } + // Create a diff between those lists QList toRemove; QList toAdd; + // The list of files for which we call updateSourceFile + QStringList toUpdate; qSort(newFilePaths); qSort(existingFileNodes.begin(), existingFileNodes.end(), ProjectNode::sortNodesByPath); @@ -788,6 +788,13 @@ void Qt4ProFileNode::updateGeneratedFiles() toAdd << new FileNode(*newPathIter, ProjectExplorer::HeaderType, true); ++newPathIter; } else { // *existingNodeIter->path() == *newPathIter + QString fileName = (*existingNodeIter)->path(); + QMap::const_iterator it = m_uitimestamps.find(fileName); + QDateTime lastModified = QFileInfo(fileName).lastModified(); + if (it == m_uitimestamps.constEnd() || it.value() < lastModified) { + toUpdate << fileName; + m_uitimestamps[fileName] = lastModified; + } ++existingNodeIter; ++newPathIter; } @@ -801,16 +808,33 @@ void Qt4ProFileNode::updateGeneratedFiles() ++newPathIter; } + // Update project tree if (!toRemove.isEmpty()) { foreach (FileNode *file, toRemove) - m_dirWatcher->removeFile(file->path()); + m_uitimestamps.remove(file->path()); removeFileNodes(toRemove, this); } + + CppTools::CppModelManagerInterface *modelManager = + ExtensionSystem::PluginManager::instance()->getObject(); + if (!toAdd.isEmpty()) { - foreach (FileNode *file, toAdd) - m_dirWatcher->addFile(file->path()); + foreach (FileNode *file, toAdd) { + m_uitimestamps.insert(file->path(), QFileInfo(file->path()).lastModified()); + toUpdate << file->path(); + + // Also adding files depending on that. + QString fileName = QFileInfo(file->path()).fileName(); + foreach (CPlusPlus::Document::Ptr doc, modelManager->snapshot()) { + if (doc->includedFiles().contains(fileName)) { + if (!toUpdate.contains(doc->fileName())) + toUpdate << doc->fileName(); + } + } + } addFileNodes(toAdd, this); } + modelManager->updateSourceFiles(toUpdate); } ProFileReader *Qt4PriFileNode::createProFileReader() const @@ -957,13 +981,6 @@ void Qt4ProFileNode::invalidate() clear(); - // remove monitored files/directories - foreach (const QString &file, m_dirWatcher->files()) - m_dirWatcher->removeFile(file); - foreach (const QString &dir, m_dirWatcher->directories()) - m_dirWatcher->removeDirectory(dir); - - // change project type Qt4ProjectType oldType = m_projectType; m_projectType = InvalidProject; diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 9ea6b07c71c..5d428cc6720 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -35,10 +35,13 @@ #define QT4NODES_H #include +#include #include #include #include +#include +#include // defined in proitems.h QT_BEGIN_NAMESPACE @@ -184,8 +187,8 @@ public slots: void scheduleUpdate(); void update(); private slots: - void fileChanged(const QString &filePath); - void updateGeneratedFiles(); + void updateUiFiles(); + void buildStateChanged(ProjectExplorer::Project*); private: Qt4ProFileNode *createSubProFileNode(const QString &path); @@ -205,7 +208,7 @@ private: bool m_isQBuildProject; QTimer m_updateTimer; - DirectoryWatcher *m_dirWatcher; + QMap m_uitimestamps; friend class Qt4NodeHierarchy; }; From bd43ebbad22c2e6c7e13d022778c7443d03d5302 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 14 Jan 2009 17:35:26 +0100 Subject: [PATCH 10/81] Fix Windows build: Remove leftover from class removals --- src/plugins/projectexplorer/applicationlauncher_win.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/projectexplorer/applicationlauncher_win.cpp b/src/plugins/projectexplorer/applicationlauncher_win.cpp index 09e0ee73c6c..c6279b4c3cf 100644 --- a/src/plugins/projectexplorer/applicationlauncher_win.cpp +++ b/src/plugins/projectexplorer/applicationlauncher_win.cpp @@ -34,7 +34,6 @@ #include "applicationlauncher.h" #include "consoleprocess.h" #include "winguiprocess.h" -#include #include From b847ceab467867bb7c9b413e58de1acf2b418722 Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 14 Jan 2009 17:46:44 +0100 Subject: [PATCH 11/81] Fixes: Set correct OUT_PWD variable, so that we find the ui files. Details: Now it even works for qtc's source. --- src/plugins/qt4projectmanager/qt4nodes.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index b32a47ac512..14fb56a38e9 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -848,9 +848,7 @@ ProFileReader *Qt4PriFileNode::createProFileReader() const reader->setQtVersion(version); } - QHash variables; - variables.insert(QLatin1String("OUT_PWD"), QStringList(m_qt4ProFileNode->buildDir())); - reader->addVariables(variables); + reader->setOutputDir(m_qt4ProFileNode->buildDir()); return reader; } From 3908528fe49803b3ff65a1a7b8054eb8e48fbc1f Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 14 Jan 2009 17:57:19 +0100 Subject: [PATCH 12/81] fix doc target. this does still not solve the problem that qdoc has to be build in release mode if you use windows. --- doc/doc.pri | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/doc.pri b/doc/doc.pri index e9e34fe733b..2e8d7e5e906 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -2,7 +2,8 @@ unix { QDOC = SRCDIR=$$PWD OUTDIR=$$OUT_PWD/doc/html $$(QTDIR)/tools/qdoc3/qdoc3 HELPGENERATOR = $$(QTDIR)/bin/qhelpgenerator } else { - QDOC = set SRCDIR=$$PWD&& set OUTDIR=$$OUT_PWD/doc/html&& $$(QTDIR)\tools\qdoc3\release\qdoc3.exe + QDOC = set SRCDIR=$$PWD&& set OUTDIR=$$OUT_PWD/doc/html&& cmd /k $$(QTDIR)\tools\qdoc3\release\qdoc3.exe + QDOC = $$replace(QDOC, "/", "\\\\") HELPGENERATOR = $$(QTDIR)\bin\qhelpgenerator.exe } From 7f8473f4698be74f686d5fa8674b4125ca7b2492 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 14 Jan 2009 18:09:02 +0100 Subject: [PATCH 13/81] move debugger options to configuration dialog --- src/plugins/debugger/debugger.pro | 2 - src/plugins/debugger/debuggermanager.cpp | 97 ++--------- src/plugins/debugger/debuggermanager.h | 45 +++-- src/plugins/debugger/debuggerplugin.cpp | 210 ++++++++++++++++++----- src/plugins/debugger/debuggerplugin.h | 2 +- src/plugins/debugger/gdbengine.cpp | 39 ++--- src/plugins/debugger/gdbengine.h | 17 -- src/plugins/debugger/gdboptionpage.cpp | 145 ---------------- src/plugins/debugger/gdboptionpage.h | 109 ------------ src/plugins/debugger/gdboptionpage.ui | 56 +++++- 10 files changed, 281 insertions(+), 441 deletions(-) delete mode 100644 src/plugins/debugger/gdboptionpage.cpp delete mode 100644 src/plugins/debugger/gdboptionpage.h diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index c9256caaa5f..5a21d6a42d7 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -26,7 +26,6 @@ HEADERS += attachexternaldialog.h \ disassemblerwindow.h \ gdbengine.h \ gdbmi.h \ - gdboptionpage.h \ idebuggerengine.h \ imports.h \ moduleshandler.h \ @@ -55,7 +54,6 @@ SOURCES += attachexternaldialog.cpp \ disassemblerwindow.cpp \ gdbengine.cpp \ gdbmi.cpp \ - gdboptionpage.cpp \ gdbengine.h \ moduleshandler.cpp \ moduleswindow.cpp \ diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index f268fbb3dda..ea0e6623b06 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -86,6 +86,18 @@ using namespace Debugger::Constants; static const QString tooltipIName = "tooltip"; + +DebuggerSettings::DebuggerSettings() +{ + m_autoRun = false; + m_autoQuit = false; + m_skipKnownFrames = false; + m_debugDumpers = false; + m_useToolTips = false; + m_useToolTips = false; + m_useCustomDumpers = true; +} + /////////////////////////////////////////////////////////////////////// // // BreakByFunctionDialog @@ -322,56 +334,6 @@ void DebuggerManager::init() m_breakAtMainAction = new QAction(this); m_breakAtMainAction->setText(tr("Set Breakpoint at Function 'main'")); - m_debugDumpersAction = new QAction(this); - m_debugDumpersAction->setText(tr("Debug Custom Dumpers")); - m_debugDumpersAction->setToolTip(tr("This is an internal tool to " - "make debugging the Custom Data Dumper code easier. " - "Using this action is in general not needed unless you " - "want do debug Qt Creator itself.")); - m_debugDumpersAction->setCheckable(true); - - m_skipKnownFramesAction = new QAction(this); - m_skipKnownFramesAction->setText(tr("Skip Known Frames When Stepping")); - m_skipKnownFramesAction->setToolTip(tr("After checking this option" - "'Step Into' combines in certain situations several steps, " - "leading to 'less noisy' debugging. So will, e.g., the atomic " - "reference counting code be skipped, and a single 'Step Into' " - "for a signal emission will end up directly in the slot connected " - "to it")); - m_skipKnownFramesAction->setCheckable(true); - - m_useCustomDumpersAction = new QAction(this); - m_useCustomDumpersAction->setText(tr("Use Custom Display for Qt Objects")); - m_useCustomDumpersAction->setToolTip(tr("Checking this will make the debugger " - "try to use code to format certain data (QObject, QString, ...) nicely. ")); - m_useCustomDumpersAction->setCheckable(true); - m_useCustomDumpersAction->setChecked(true); - - m_useFastStartAction = new QAction(this); - m_useFastStartAction->setText(tr("Fast Debugger Start")); - m_useFastStartAction->setToolTip(tr("Checking this will make the debugger " - "start fast by loading only very few debug symbols on start up. This " - "might lead to situations where breakpoints can not be set properly. " - "So uncheck this option if you experience breakpoint related problems.")); - m_useFastStartAction->setCheckable(true); - m_useFastStartAction->setChecked(true); - - m_useToolTipsAction = new QAction(this); - m_useToolTipsAction->setText(tr("Use Tooltips While Debugging")); - m_useToolTipsAction->setToolTip(tr("Checking this will make enable " - "tooltips for variable values during debugging. Since this can slow " - "down debugging and does not provide reliable information as it does " - "not use scope information, it is switched off by default.")); - m_useToolTipsAction->setCheckable(true); - m_useToolTipsAction->setChecked(false); - - // FIXME - m_useFastStartAction->setChecked(false); - m_useFastStartAction->setEnabled(false); - - m_dumpLogAction = new QAction(this); - m_dumpLogAction->setText(tr("Dump Log File for Debugging Purposes")); - m_watchAction = new QAction(this); m_watchAction->setText(tr("Add to Watch Window")); @@ -416,14 +378,6 @@ void DebuggerManager::init() connect(m_breakAtMainAction, SIGNAL(triggered()), this, SLOT(breakAtMain())); - connect(m_useFastStartAction, SIGNAL(triggered()), - this, SLOT(saveSessionData())); - connect(m_useCustomDumpersAction, SIGNAL(triggered()), - this, SLOT(saveSessionData())); - connect(m_skipKnownFramesAction, SIGNAL(triggered()), - this, SLOT(saveSessionData())); - connect(m_dumpLogAction, SIGNAL(triggered()), - this, SLOT(dumpLog())); connect(m_statusTimer, SIGNAL(timeout()), this, SLOT(clearStatusMessage())); @@ -947,16 +901,6 @@ void DebuggerManager::loadSessionData() { m_breakHandler->loadSessionData(); m_watchHandler->loadSessionData(); - - QVariant value; - querySessionValue(QLatin1String("UseFastStart"), &value); - m_useFastStartAction->setChecked(value.toBool()); - querySessionValue(QLatin1String("UseToolTips"), &value); - m_useToolTipsAction->setChecked(value.toBool()); - querySessionValue(QLatin1String("UseCustomDumpers"), &value); - m_useCustomDumpersAction->setChecked(!value.isValid() || value.toBool()); - querySessionValue(QLatin1String("SkipKnownFrames"), &value); - m_skipKnownFramesAction->setChecked(value.toBool()); engine()->loadSessionData(); } @@ -964,15 +908,6 @@ void DebuggerManager::saveSessionData() { m_breakHandler->saveSessionData(); m_watchHandler->saveSessionData(); - - setSessionValue(QLatin1String("UseFastStart"), - m_useFastStartAction->isChecked()); - setSessionValue(QLatin1String("UseToolTips"), - m_useToolTipsAction->isChecked()); - setSessionValue(QLatin1String("UseCustomDumpers"), - m_useCustomDumpersAction->isChecked()); - setSessionValue(QLatin1String("SkipKnownFrames"), - m_skipKnownFramesAction->isChecked()); engine()->saveSessionData(); } @@ -1139,22 +1074,22 @@ void DebuggerManager::setBusyCursor(bool busy) bool DebuggerManager::skipKnownFrames() const { - return m_skipKnownFramesAction->isChecked(); + return m_settings.m_skipKnownFrames; } bool DebuggerManager::debugDumpers() const { - return m_debugDumpersAction->isChecked(); + return m_settings.m_debugDumpers; } bool DebuggerManager::useCustomDumpers() const { - return m_useCustomDumpersAction->isChecked(); + return m_settings.m_useCustomDumpers; } bool DebuggerManager::useFastStart() const { - return 0; // && m_useFastStartAction->isChecked(); + return 0; // && m_settings.m_useFastStart; } void DebuggerManager::queryCurrentTextEditor(QString *fileName, int *lineNumber, diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index bde8ce449b1..9a5b5da37d3 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -167,8 +167,8 @@ private: virtual WatchHandler *watchHandler() = 0; virtual void showApplicationOutput(const QString &prefix, const QString &data) = 0; - virtual QAction *useCustomDumpersAction() const = 0; - virtual QAction *debugDumpersAction() const = 0; + //virtual QAction *useCustomDumpersAction() const = 0; + //virtual QAction *debugDumpersAction() const = 0; virtual bool skipKnownFrames() const = 0; virtual bool debugDumpers() const = 0; virtual bool useCustomDumpers() const = 0; @@ -180,6 +180,30 @@ private: }; +// +// DebuggerSettings +// + +class DebuggerSettings +{ +public: + DebuggerSettings(); + +public: + QString m_gdbCmd; + QString m_gdbEnv; + bool m_autoRun; + bool m_autoQuit; + + bool m_useCustomDumpers; + bool m_skipKnownFrames; + bool m_debugDumpers; + bool m_useFastStart; + bool m_useToolTips; + + QString m_scriptFile; +}; + // // DebuggerManager // @@ -196,6 +220,7 @@ public: IDebuggerManagerAccessForEngines *engineInterface(); QMainWindow *mainWindow() const { return m_mainWindow; } QLabel *statusLabel() const { return m_statusLabel; } + DebuggerSettings *settings() { return &m_settings; } enum StartMode { startInternal, startExternal, attachExternal }; enum DebuggerType { GdbDebugger, ScriptDebugger, WinDebugger }; @@ -286,9 +311,9 @@ private: StackHandler *stackHandler() { return m_stackHandler; } ThreadsHandler *threadsHandler() { return m_threadsHandler; } WatchHandler *watchHandler() { return m_watchHandler; } - QAction *useCustomDumpersAction() const { return m_useCustomDumpersAction; } - QAction *useToolTipsAction() const { return m_useToolTipsAction; } - QAction *debugDumpersAction() const { return m_debugDumpersAction; } + //QAction *useCustomDumpersAction() const { return m_useCustomDumpersAction; } + //QAction *useToolTipsAction() const { return m_useToolTipsAction; } + //QAction *debugDumpersAction() const { return m_debugDumpersAction; } bool skipKnownFrames() const; bool debugDumpers() const; bool useCustomDumpers() const; @@ -342,7 +367,6 @@ signals: void setConfigValueRequested(const QString &name, const QVariant &value); void applicationOutputAvailable(const QString &prefix, const QString &msg); - public: // FIXME: make private QString m_executable; @@ -406,13 +430,6 @@ private: QAction *m_sepAction; QAction *m_stepIAction; QAction *m_nextIAction; - QAction *m_skipKnownFramesAction; - - QAction *m_debugDumpersAction; - QAction *m_useCustomDumpersAction; - QAction *m_useFastStartAction; - QAction *m_useToolTipsAction; - QAction *m_dumpLogAction; QWidget *m_breakWindow; QWidget *m_disassemblerWindow; @@ -432,9 +449,9 @@ private: IDebuggerEngine *engine(); IDebuggerEngine *m_engine; + DebuggerSettings m_settings; }; - } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 80acb59b92f..bf8edf404e2 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -36,12 +36,14 @@ #include "debuggerconstants.h" #include "debuggermanager.h" #include "debuggerrunner.h" -#include "gdboptionpage.h" #include "gdbengine.h" +#include "ui_gdboptionpage.h" + #include #include #include +#include #include #include #include @@ -53,6 +55,8 @@ #include #include +#include + #include #include @@ -73,6 +77,7 @@ #include #include +#include #include #include #include @@ -80,6 +85,8 @@ #include +namespace ExtensionSystem { class PluginManager; } + using namespace Core; using namespace Debugger::Constants; using namespace Debugger::Internal; @@ -143,6 +150,12 @@ const char * const ADD_TO_WATCH_KEY = "Ctrl+Alt+Q"; } // namespace Debugger +/////////////////////////////////////////////////////////////////////// +// +// DebugMode +// +/////////////////////////////////////////////////////////////////////// + namespace Debugger { namespace Internal { @@ -159,9 +172,6 @@ public: void shutdown() {} }; -} // namespace Internal -} // namespace Debugger - DebugMode::DebugMode(QObject *parent) : BaseMode(parent) { @@ -177,6 +187,9 @@ DebugMode::~DebugMode() EditorManager::instance()->setParent(0); } +} // namespace Internal +} // namespace Debugger + /////////////////////////////////////////////////////////////////////// // @@ -184,8 +197,10 @@ DebugMode::~DebugMode() // /////////////////////////////////////////////////////////////////////// -class Debugger::Internal::LocationMark - : public TextEditor::BaseTextMark +namespace Debugger { +namespace Internal { + +class LocationMark : public TextEditor::BaseTextMark { Q_OBJECT @@ -212,6 +227,112 @@ QIcon LocationMark::icon() const return icon; } +} // namespace Internal +} // namespace Debugger + + +/////////////////////////////////////////////////////////////////////// +// +// GdbOptionPage +// +/////////////////////////////////////////////////////////////////////// + +namespace Debugger { +namespace Internal { + +class GdbOptionPage : public Core::IOptionsPage +{ + Q_OBJECT + +public: + GdbOptionPage(DebuggerPlugin *plugin) : m_plugin(plugin) {} + + // IOptionsPage + QString name() const { return tr("Gdb"); } + QString category() const { return "Debugger"; } + QString trCategory() const { return tr("Debugger"); } + + QWidget *createPage(QWidget *parent); + void apply(); + void finish() {} // automatically calls "apply" + +private: + Ui::GdbOptionPage m_ui; + + DebuggerSettings m_settings; + DebuggerPlugin *m_plugin; +}; + +QWidget *GdbOptionPage::createPage(QWidget *parent) +{ + QWidget *w = new QWidget(parent); + m_settings = *m_plugin->m_manager->settings(); + m_ui.setupUi(w); + m_ui.gdbLocationChooser->setExpectedKind(Core::Utils::PathChooser::Command); + m_ui.gdbLocationChooser->setPromptDialogTitle(tr("Choose Gdb Location")); + m_ui.gdbLocationChooser->setPath(m_settings.m_gdbCmd); + m_ui.scriptFileChooser->setExpectedKind(Core::Utils::PathChooser::File); + m_ui.scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File")); + m_ui.scriptFileChooser->setPath(m_settings.m_scriptFile); + m_ui.environmentEdit->setText(m_settings.m_gdbEnv); + m_ui.autoStartBox->setChecked(m_settings.m_autoRun); + m_ui.autoQuitBox->setChecked(m_settings.m_autoQuit); + + m_ui.checkBoxSkipKnownFrames->setChecked(m_settings.m_skipKnownFrames); + m_ui.checkBoxDebugDumpers->setChecked(m_settings.m_debugDumpers); + m_ui.checkBoxUseCustomDumpers->setChecked(m_settings.m_useCustomDumpers); + m_ui.checkBoxFastStart->setChecked(m_settings.m_useFastStart); + m_ui.checkBoxUseToolTips->setChecked(m_settings.m_useToolTips); + +#ifndef QT_DEBUG +#if 0 + cmd = am->registerAction(m_manager->m_dumpLogAction, + Constants::DUMP_LOG, globalcontext); + //cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+D,Ctrl+L"))); + cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F11"))); + mdebug->addAction(cmd); + + cmd = am->registerAction(m_manager->m_debugDumpersAction, + Constants::DEBUG_DUMPERS, debuggercontext); + mdebug->addAction(cmd); +#endif +#endif + + // FIXME + m_ui.autoStartBox->hide(); + m_ui.autoQuitBox->hide(); + m_ui.environmentEdit->hide(); + m_ui.labelEnvironment->hide(); + + m_ui.checkBoxFastStart->setChecked(false); + m_ui.checkBoxFastStart->hide(); + + //m_dumpLogAction = new QAction(this); + //m_dumpLogAction->setText(tr("Dump Log File for Debugging Purposes")); + return w; +} + +void GdbOptionPage::apply() +{ + m_settings.m_gdbCmd = m_ui.gdbLocationChooser->path(); + m_settings.m_gdbEnv = m_ui.environmentEdit->text(); + m_settings.m_autoRun = m_ui.autoStartBox->isChecked(); + m_settings.m_autoQuit = m_ui.autoQuitBox->isChecked(); + m_settings.m_scriptFile = m_ui.scriptFileChooser->path(); + + m_settings.m_skipKnownFrames = m_ui.checkBoxSkipKnownFrames->isChecked(); + m_settings.m_debugDumpers = m_ui.checkBoxDebugDumpers->isChecked(); + m_settings.m_useCustomDumpers = m_ui.checkBoxUseCustomDumpers->isChecked(); + m_settings.m_useFastStart = m_ui.checkBoxFastStart->isChecked(); + m_settings.m_useToolTips = m_ui.checkBoxUseToolTips->isChecked(); + + *m_plugin->m_manager->settings() = m_settings; + m_plugin->writeSettings(); +} + +} // namespace Internal +} // namespace Debugger + /////////////////////////////////////////////////////////////////////// // @@ -409,34 +530,6 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes cmd = am->registerAction(sep, QLatin1String("Debugger.Sep2"), globalcontext); mdebug->addAction(cmd); - cmd = am->registerAction(m_manager->m_skipKnownFramesAction, - Constants::SKIP_KNOWN_FRAMES, globalcontext); - mdebug->addAction(cmd); - - cmd = am->registerAction(m_manager->m_useCustomDumpersAction, - Constants::USE_CUSTOM_DUMPERS, globalcontext); - mdebug->addAction(cmd); - - cmd = am->registerAction(m_manager->m_useFastStartAction, - Constants::USE_FAST_START, globalcontext); - mdebug->addAction(cmd); - - cmd = am->registerAction(m_manager->m_useToolTipsAction, - Constants::USE_TOOL_TIPS, globalcontext); - mdebug->addAction(cmd); - -#ifdef QT_DEBUG - cmd = am->registerAction(m_manager->m_dumpLogAction, - Constants::DUMP_LOG, globalcontext); - //cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+D,Ctrl+L"))); - cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F11"))); - mdebug->addAction(cmd); - - cmd = am->registerAction(m_manager->m_debugDumpersAction, - Constants::DEBUG_DUMPERS, debuggercontext); - mdebug->addAction(cmd); -#endif - sep = new QAction(this); sep->setSeparator(true); cmd = am->registerAction(sep, QLatin1String("Debugger.Sep4"), globalcontext); @@ -479,7 +572,7 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes m_generalOptionPage = 0; // FIXME: - m_generalOptionPage = new GdbOptionPage(&theGdbSettings()); + m_generalOptionPage = new GdbOptionPage(this); addObject(m_generalOptionPage); m_locationMark = 0; @@ -711,7 +804,7 @@ void DebuggerPlugin::requestMark(TextEditor::ITextEditor *editor, int lineNumber void DebuggerPlugin::showToolTip(TextEditor::ITextEditor *editor, const QPoint &point, int pos) { - if (!m_manager->useToolTipsAction()->isChecked()) + if (!m_manager->settings()->m_useToolTips) return; QPlainTextEdit *plaintext = qobject_cast(editor->widget()); @@ -799,22 +892,57 @@ void DebuggerPlugin::changeStatus(int status) void DebuggerPlugin::writeSettings() const { - QSettings *s = settings(); QTC_ASSERT(m_manager, return); QTC_ASSERT(m_manager->mainWindow(), return); + + QSettings *s = settings(); + DebuggerSettings *m = m_manager->settings(); s->beginGroup(QLatin1String("DebugMode")); - s->setValue(QLatin1String("State"), m_manager->mainWindow()->saveState()); - s->setValue(QLatin1String("Locked"), m_toggleLockedAction->isChecked()); + s->setValue("State", m_manager->mainWindow()->saveState()); + s->setValue("Locked", m_toggleLockedAction->isChecked()); + s->setValue("Location", m->m_gdbCmd); + s->setValue("Environment", m->m_gdbEnv); + s->setValue("AutoRun", m->m_autoRun); + s->setValue("AutoQuit", m->m_autoQuit); + + s->setValue("UseFastStart", m->m_useFastStart); + s->setValue("UseToolTips", m->m_useToolTips); + s->setValue("UseCustomDumpers", m->m_useCustomDumpers); + s->setValue("SkipKnowFrames", m->m_skipKnownFrames); + s->setValue("DebugDumpers", m->m_debugDumpers); s->endGroup(); } void DebuggerPlugin::readSettings() { QSettings *s = settings(); + DebuggerSettings *m = &m_manager->m_settings; + + QString defaultCommand("gdb"); +#if defined(Q_OS_WIN32) + defaultCommand.append(".exe"); +#endif + Core::ICore *coreIFace = m_pm->getObject(); + QString defaultScript = coreIFace->resourcePath() + + QLatin1String("/gdb/qt4macros"); + s->beginGroup(QLatin1String("DebugMode")); - m_manager->mainWindow()->restoreState(s->value(QLatin1String("State"), QByteArray()).toByteArray()); - m_toggleLockedAction->setChecked(s->value(QLatin1String("Locked"), true).toBool()); + QByteArray ba = s->value("State", QByteArray()).toByteArray(); + m_toggleLockedAction->setChecked(s->value("Locked", true).toBool()); + m->m_gdbCmd = s->value("Location", defaultCommand).toString(); + m->m_scriptFile= s->value("ScriptFile", defaultScript).toString(); + m->m_gdbEnv = s->value("Environment", "").toString(); + m->m_autoRun = s->value("AutoRun", true).toBool(); + m->m_autoQuit = s->value("AutoQuit", true).toBool(); + + m->m_skipKnownFrames = s->value("SkipKnownFrames", false).toBool(); + m->m_debugDumpers = s->value("DebugDumpers", false).toBool(); + m->m_useCustomDumpers = s->value("UseCustomDupers", false).toBool(); + m->m_useFastStart = s->value("UseFastStart", false).toBool(); + m->m_useToolTips = s->value("UseToolTips", false).toBool(); s->endGroup(); + + m_manager->mainWindow()->restoreState(ba); } void DebuggerPlugin::focusCurrentEditor(IMode *mode) diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h index 53f8490cfc3..4ab9c5b89f8 100644 --- a/src/plugins/debugger/debuggerplugin.h +++ b/src/plugins/debugger/debuggerplugin.h @@ -78,7 +78,6 @@ private slots: void changeStatus(int status); void requestMark(TextEditor::ITextEditor *editor, int lineNumber); void showToolTip(TextEditor::ITextEditor *editor, const QPoint &pnt, int pos); - void querySessionValue(const QString &name, QVariant *value); void setSessionValue(const QString &name, const QVariant &value); void queryConfigValue(const QString &name, QVariant *value); @@ -97,6 +96,7 @@ private: void writeSettings() const; friend class DebuggerManager; + friend class GdbOptionPage; friend class DebugMode; // FIXME: Just a hack now so that it can access the views ProjectExplorer::ProjectExplorerPlugin *projectExplorer() const; diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index 3190d1612a3..2370a55eed2 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -84,19 +84,6 @@ Q_DECLARE_METATYPE(Debugger::Internal::GdbMi); static const QString tooltipIName = "tooltip"; -/////////////////////////////////////////////////////////////////////// -// -// GdbSettings -// -/////////////////////////////////////////////////////////////////////// - -GdbSettings &Debugger::Internal::theGdbSettings() -{ - static GdbSettings settings; - return settings; -} - - /////////////////////////////////////////////////////////////////////// // // GdbCommandType @@ -265,7 +252,6 @@ void GdbEngine::init() m_pendingRequests = 0; m_gdbVersion = 100; m_shared = 0; - qq->debugDumpersAction()->setChecked(false); m_oldestAcceptableToken = -1; @@ -279,11 +265,6 @@ void GdbEngine::init() connect(&m_gdbProc, SIGNAL(finished(int, QProcess::ExitStatus)), q, SLOT(exitDebugger())); - connect(qq->debugDumpersAction(), SIGNAL(toggled(bool)), - this, SLOT(setDebugDumpers(bool))); - connect(qq->useCustomDumpersAction(), SIGNAL(toggled(bool)), - this, SLOT(setCustomDumpersWanted(bool))); - // Output connect(this, SIGNAL(gdbResponseAvailable()), this, SLOT(handleResponse()), Qt::QueuedConnection); @@ -306,7 +287,7 @@ void GdbEngine::gdbProcError(QProcess::ProcessError error) case QProcess::FailedToStart: msg = QString(tr("The Gdb process failed to start. Either the " "invoked program '%1' is missing, or you may have insufficient " - "permissions to invoke the program.")).arg(theGdbSettings().m_gdbCmd); + "permissions to invoke the program.")).arg(q->settings()->m_gdbCmd); break; case QProcess::Crashed: msg = tr("The Gdb process crashed some time after starting " @@ -1503,7 +1484,7 @@ void GdbEngine::exitDebugger() m_varToType.clear(); m_dataDumperState = DataDumperUninitialized; m_shared = 0; - qq->debugDumpersAction()->setChecked(false); + //q->settings()->m_debugDumpers = false; } @@ -1535,7 +1516,7 @@ bool GdbEngine::startDebugger() m_gdbProc.setEnvironment(q->m_environment); #if 0 - qDebug() << "Command: " << theGdbSettings().m_gdbCmd; + qDebug() << "Command: " << q->settings()->m_gdbCmd; qDebug() << "WorkingDirectory: " << m_gdbProc.workingDirectory(); qDebug() << "Environment: " << m_gdbProc.environment(); qDebug() << "Arguments: " << gdbArgs; @@ -1544,9 +1525,9 @@ bool GdbEngine::startDebugger() #endif q->showStatusMessage(tr("Starting Debugger")); - emit gdbInputAvailable(QString(), theGdbSettings().m_gdbCmd + ' ' + gdbArgs.join(" ")); + emit gdbInputAvailable(QString(), q->settings()->m_gdbCmd + ' ' + gdbArgs.join(" ")); - m_gdbProc.start(theGdbSettings().m_gdbCmd, gdbArgs); + m_gdbProc.start(q->settings()->m_gdbCmd, gdbArgs); m_gdbProc.waitForStarted(); if (m_gdbProc.state() != QProcess::Running) @@ -2589,7 +2570,7 @@ void GdbEngine::setToolTipExpression(const QPoint &pos, const QString &exp0) return; } - if (qq->debugDumpersAction()->isChecked()) { + if (q->settings()->m_debugDumpers) { // minimize interference return; } @@ -2909,10 +2890,10 @@ void GdbEngine::setCustomDumpersWanted(bool on) bool GdbEngine::isCustomValueDumperAvailable(const QString &type) const { - if (!qq->useCustomDumpers()) + DebuggerSettings *s = q->settings(); + if (!s->m_useCustomDumpers) return false; - if (qq->debugDumpersAction()->isChecked() - && qq->stackHandler()->isDebuggingDumpers()) + if (s->m_debugDumpers && qq->stackHandler()->isDebuggingDumpers()) return false; if (m_dataDumperState != DataDumperAvailable) return false; @@ -3470,7 +3451,7 @@ void GdbEngine::handleDumpCustomValue1(const GdbResultRecord &record, //qDebug() << "CUSTOM DUMPER ERROR MESSAGE: " << msg; #ifdef QT_DEBUG // Make debugging of dumers easier - if (qq->debugDumpersAction()->isChecked() + if (q->settings()->m_debugDumpers && msg.startsWith("The program being debugged stopped while") && msg.contains("qDumpObjectData440")) { // Fake full stop diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h index f5a7c658b76..e07e6a228c3 100644 --- a/src/plugins/debugger/gdbengine.h +++ b/src/plugins/debugger/gdbengine.h @@ -81,23 +81,6 @@ enum DataDumperState }; -class GdbSettings -{ -public: - GdbSettings() { m_autoRun = m_autoQuit = false; } - -public: - QString m_gdbCmd; - QString m_gdbEnv; - bool m_autoRun; - bool m_autoQuit; - - QString m_scriptFile; - QMap m_typeMacros; -}; - -GdbSettings &theGdbSettings(); - class GdbEngine : public IDebuggerEngine { Q_OBJECT diff --git a/src/plugins/debugger/gdboptionpage.cpp b/src/plugins/debugger/gdboptionpage.cpp deleted file mode 100644 index 7c7a2700b6a..00000000000 --- a/src/plugins/debugger/gdboptionpage.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/*************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** -** Non-Open Source Usage -** -** Licensees may use this file in accordance with the Qt Beta Version -** License Agreement, Agreement version 2.2 provided with the Software or, -** alternatively, in accordance with the terms contained in a written -** agreement between you and Nokia. -** -** GNU General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the packaging -** of this file. Please review the following information to ensure GNU -** General Public Licensing requirements will be met: -** -** http://www.fsf.org/licensing/licenses/info/GPLv2.html and -** http://www.gnu.org/copyleft/gpl.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt GPL Exception -** version 1.3, included in the file GPL_EXCEPTION.txt in this package. -** -***************************************************************************/ - -#include "gdboptionpage.h" - -#include "gdbengine.h" - -#include -#include - -#include -#include -#include - -using namespace Debugger::Internal; - -GdbOptionPage::GdbOptionPage(GdbSettings *settings) -{ - m_pm = ExtensionSystem::PluginManager::instance(); - m_settings = settings; - - Core::ICore *coreIFace = m_pm->getObject(); - if (!coreIFace || !coreIFace->settings()) - return; - QSettings *s = coreIFace->settings(); - s->beginGroup("GdbOptions"); - QString defaultCommand("gdb"); -#if defined(Q_OS_WIN32) - defaultCommand.append(".exe"); -#endif - QString defaultScript = coreIFace->resourcePath() + - QLatin1String("/gdb/qt4macros"); - - m_settings->m_gdbCmd = s->value("Location", defaultCommand).toString(); - m_settings->m_scriptFile= s->value("ScriptFile", defaultScript).toString(); - m_settings->m_gdbEnv = s->value("Environment", "").toString(); - m_settings->m_autoRun = s->value("AutoRun", true).toBool(); - m_settings->m_autoQuit = s->value("AutoQuit", true).toBool(); - s->endGroup(); -} - -QString GdbOptionPage::name() const -{ - return tr("Gdb"); -} - -QString GdbOptionPage::category() const -{ - return "Debugger"; -} - -QString GdbOptionPage::trCategory() const -{ - return tr("Debugger"); -} - -QWidget *GdbOptionPage::createPage(QWidget *parent) -{ - QWidget *w = new QWidget(parent); - m_ui.setupUi(w); - m_ui.gdbLocationChooser->setExpectedKind(Core::Utils::PathChooser::Command); - m_ui.gdbLocationChooser->setPromptDialogTitle(tr("Choose Gdb Location")); - m_ui.gdbLocationChooser->setPath(m_settings->m_gdbCmd); - m_ui.scriptFileChooser->setExpectedKind(Core::Utils::PathChooser::File); - m_ui.scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File")); - m_ui.scriptFileChooser->setPath(m_settings->m_scriptFile); - m_ui.environmentEdit->setText(m_settings->m_gdbEnv); - m_ui.autoStartBox->setChecked(m_settings->m_autoRun); - m_ui.autoQuitBox->setChecked(m_settings->m_autoQuit); - - // FIXME - m_ui.autoStartBox->hide(); - m_ui.autoQuitBox->hide(); - m_ui.environmentEdit->hide(); - m_ui.labelEnvironment->hide(); - - connect(m_ui.gdbLocationChooser, SIGNAL(changed()), - this, SLOT(onGdbLocationChanged())); - connect(m_ui.scriptFileChooser, SIGNAL(changed()), - this, SLOT(onScriptFileChanged())); - - return w; -} - -void GdbOptionPage::onGdbLocationChanged() -{ - m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path(); -} - -void GdbOptionPage::onScriptFileChanged() -{ - m_settings->m_scriptFile = m_ui.scriptFileChooser->path(); -} - -void GdbOptionPage::apply() -{ - m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path(); - m_settings->m_gdbEnv = m_ui.environmentEdit->text(); - m_settings->m_autoRun = m_ui.autoStartBox->isChecked(); - m_settings->m_autoQuit = m_ui.autoQuitBox->isChecked(); - m_settings->m_scriptFile = m_ui.scriptFileChooser->path(); - - Core::ICore *coreIFace = m_pm->getObject(); - if (!coreIFace || !coreIFace->settings()) - return; - - QSettings *s = coreIFace->settings(); - - s->beginGroup("GdbOptions"); - s->setValue("Location", m_settings->m_gdbCmd); - s->setValue("Environment", m_settings->m_gdbEnv); - s->setValue("AutoRun", m_settings->m_autoRun); - s->setValue("AutoQuit", m_settings->m_autoQuit); - s->endGroup(); -} diff --git a/src/plugins/debugger/gdboptionpage.h b/src/plugins/debugger/gdboptionpage.h deleted file mode 100644 index c4c3ade9e31..00000000000 --- a/src/plugins/debugger/gdboptionpage.h +++ /dev/null @@ -1,109 +0,0 @@ -/*************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** -** Non-Open Source Usage -** -** Licensees may use this file in accordance with the Qt Beta Version -** License Agreement, Agreement version 2.2 provided with the Software or, -** alternatively, in accordance with the terms contained in a written -** agreement between you and Nokia. -** -** GNU General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the packaging -** of this file. Please review the following information to ensure GNU -** General Public Licensing requirements will be met: -** -** http://www.fsf.org/licensing/licenses/info/GPLv2.html and -** http://www.gnu.org/copyleft/gpl.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt GPL Exception -** version 1.3, included in the file GPL_EXCEPTION.txt in this package. -** -***************************************************************************/ - -#ifndef GDBOPTIONPAGE_H -#define GDBOPTIONPAGE_H - -#include "ui_gdboptionpage.h" - -#include - -#include - -namespace ExtensionSystem { class PluginManager; } - -namespace Debugger { -namespace Internal { - -class GdbSettings; - -class GdbOptionPage : public Core::IOptionsPage -{ - Q_OBJECT - -public: - GdbOptionPage(GdbSettings *settings); - - QString name() const; - QString category() const; - QString trCategory() const; - - QWidget *createPage(QWidget *parent); - void apply(); - void finish() { } - -public slots: - void onGdbLocationChanged(); - void onScriptFileChanged(); - -private: - ExtensionSystem::PluginManager *m_pm; - Ui::GdbOptionPage m_ui; - - GdbSettings *m_settings; -}; - -#if 0 -class TypeMacroPage : public Core::IOptionsPage -{ - Q_OBJECT - -public: - TypeMacroPage(GdbSettings *settings); - - QString name() const; - QString category() const; - QString trCategory() const; - - QWidget *createPage(QWidget *parent); - void finished(bool accepted); - -private slots: - void onAddButton(); - void onDelButton(); - void currentItemChanged(QTreeWidgetItem *item); - void updateButtonState(); - -private: - ExtensionSystem::PluginManager *m_pm; - Ui::TypeMacroPage m_ui; - - GdbSettings *m_settings; - QWidget *m_widget; -}; -#endif - -} // namespace Internal -} // namespace Debugger - -#endif // GDBOPTIONPAGE_H diff --git a/src/plugins/debugger/gdboptionpage.ui b/src/plugins/debugger/gdboptionpage.ui index 580f13c0d66..354eb64233f 100644 --- a/src/plugins/debugger/gdboptionpage.ui +++ b/src/plugins/debugger/gdboptionpage.ui @@ -6,8 +6,8 @@ 0 0 - 433 - 233 + 465 + 372 @@ -74,6 +74,58 @@ + + + + Checking this will make the debugger try to use code to format certain data (QObject, QString, std::string etc.) nicely. + + + Use custom display for Qt and Standard Library objects + + + + + + + Checking this will make the debugger start fast by loading only very few debug symbols on start up. This might lead to situations where breakpoints can not be set properly. So uncheck this option if you experience breakpoint related problems. + + + Fast debugger start + + + + + + + fter checking this option 'Step Into' combines in certain situations several steps, leading to 'less noisy' debugging. So will, e.g., the atomic +reference counting code be skipped, and a single 'Step Into' for a signal emission will end up directly in the slot connected to it. + + + + Skip known frames when stepping + + + + + + + Checking this will make enable tooltips for variable values during debugging. Since this can slow down debugging and does not provide reliable information as it does not use scope information, it is switched off by default. + + + Use tooltips while debugging + + + + + + + This is an internal tool to make debugging the Custom Data Dumper code easier. Using this action is in general not needed unless you want do debug Qt Creator itself. + + + Debug Custom Dumpers + + + From 8ba0eb21481edbfaf521fd07c8266a84b80153b4 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 14 Jan 2009 18:10:59 +0100 Subject: [PATCH 14/81] Revert improper commit --- doc/doc.pri | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/doc.pri b/doc/doc.pri index 2e8d7e5e906..e9e34fe733b 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -2,8 +2,7 @@ unix { QDOC = SRCDIR=$$PWD OUTDIR=$$OUT_PWD/doc/html $$(QTDIR)/tools/qdoc3/qdoc3 HELPGENERATOR = $$(QTDIR)/bin/qhelpgenerator } else { - QDOC = set SRCDIR=$$PWD&& set OUTDIR=$$OUT_PWD/doc/html&& cmd /k $$(QTDIR)\tools\qdoc3\release\qdoc3.exe - QDOC = $$replace(QDOC, "/", "\\\\") + QDOC = set SRCDIR=$$PWD&& set OUTDIR=$$OUT_PWD/doc/html&& $$(QTDIR)\tools\qdoc3\release\qdoc3.exe HELPGENERATOR = $$(QTDIR)\bin\qhelpgenerator.exe } From f60b69eb6ec48e28d8399f82ac29a908b1939442 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 14 Jan 2009 19:21:23 +0100 Subject: [PATCH 15/81] Fixes: make docs target with nmake --- doc/doc.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc.pri b/doc/doc.pri index e9e34fe733b..e51280c4236 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -9,7 +9,7 @@ unix { QHP_FILE = $$OUT_PWD/doc/html/qtcreator.qhp QCH_FILE = $$OUT_PWD/doc/qtcreator.qch -html_docs.commands =$$QDOC $$PWD/qtcreator.qdocconf +html_docs.commands = "$$QDOC $$PWD/qtcreator.qdocconf" html_docs.depends += $$PWD/qtcreator.qdoc $$PWD/qtcreator.qdocconf html_docs.files = $$QHP_FILE From 86b70b6a988efd037658753422323d709ba7b2a2 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 14 Jan 2009 19:39:11 +0100 Subject: [PATCH 16/81] Fixes: Refine fix for nmake doc issue --- doc/doc.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc.pri b/doc/doc.pri index e51280c4236..a41b68ec873 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -9,7 +9,7 @@ unix { QHP_FILE = $$OUT_PWD/doc/html/qtcreator.qhp QCH_FILE = $$OUT_PWD/doc/qtcreator.qch -html_docs.commands = "$$QDOC $$PWD/qtcreator.qdocconf" +html_docs.commands = \"$$QDOC $$PWD/qtcreator.qdocconf\" html_docs.depends += $$PWD/qtcreator.qdoc $$PWD/qtcreator.qdocconf html_docs.files = $$QHP_FILE From dc9ad66d36af8e220bce3f21fca1ab3bc465f163 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 14 Jan 2009 20:08:39 +0100 Subject: [PATCH 17/81] Fixes: Regression for make docs on unix --- doc/doc.pri | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/doc.pri b/doc/doc.pri index a41b68ec873..4207e364c76 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -9,7 +9,11 @@ unix { QHP_FILE = $$OUT_PWD/doc/html/qtcreator.qhp QCH_FILE = $$OUT_PWD/doc/qtcreator.qch +unix { +html_docs.commands = $$QDOC $$PWD/qtcreator.qdocconf +} else { html_docs.commands = \"$$QDOC $$PWD/qtcreator.qdocconf\" +} html_docs.depends += $$PWD/qtcreator.qdoc $$PWD/qtcreator.qdocconf html_docs.files = $$QHP_FILE From 6d17ee565bedc621580464c8c8254cddba2d3db2 Mon Sep 17 00:00:00 2001 From: dt Date: Thu, 15 Jan 2009 12:45:53 +0100 Subject: [PATCH 18/81] Fixes: This does already work. Details: Adjust comments to actual situation --- src/plugins/qt4projectmanager/qt4nodes.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 14fb56a38e9..c7bf1e58035 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -730,9 +730,7 @@ namespace { // updateSourceFiles() for files that changed // It does so by storing a modification time for each ui file we know about. -// TODO this function should also be called if the build configuration changes -// since the build directory could change, and thus the generated files that are present -// TODO check that it works +// TODO this function should also be called if the build directory is changed void Qt4ProFileNode::updateUiFiles() { // Only those two project types can have ui files for us From 5fcc57e531bc8838edfeb392485ade240c0abf81 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 12:54:33 +0100 Subject: [PATCH 19/81] fix typo in ui file --- src/plugins/debugger/debuggerplugin.cpp | 10 ---------- src/plugins/debugger/gdboptionpage.ui | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index bf8edf404e2..3f12a029106 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -106,13 +106,7 @@ const char * const JUMP_TO_LINE = "Debugger.JumpToLine"; const char * const TOGGLE_BREAK = "Debugger.ToggleBreak"; const char * const BREAK_BY_FUNCTION = "Debugger.BreakByFunction"; const char * const BREAK_AT_MAIN = "Debugger.BreakAtMain"; -const char * const DEBUG_DUMPERS = "Debugger.DebugDumpers"; const char * const ADD_TO_WATCH = "Debugger.AddToWatch"; -const char * const USE_CUSTOM_DUMPERS = "Debugger.UseCustomDumpers"; -const char * const USE_FAST_START = "Debugger.UseFastStart"; -const char * const USE_TOOL_TIPS = "Debugger.UseToolTips"; -const char * const SKIP_KNOWN_FRAMES = "Debugger.SkipKnownFrames"; -const char * const DUMP_LOG = "Debugger.DumpLog"; #ifdef Q_OS_MAC const char * const INTERRUPT_KEY = "Shift+F5"; @@ -291,10 +285,6 @@ QWidget *GdbOptionPage::createPage(QWidget *parent) //cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+D,Ctrl+L"))); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F11"))); mdebug->addAction(cmd); - - cmd = am->registerAction(m_manager->m_debugDumpersAction, - Constants::DEBUG_DUMPERS, debuggercontext); - mdebug->addAction(cmd); #endif #endif diff --git a/src/plugins/debugger/gdboptionpage.ui b/src/plugins/debugger/gdboptionpage.ui index 354eb64233f..757ed1d7023 100644 --- a/src/plugins/debugger/gdboptionpage.ui +++ b/src/plugins/debugger/gdboptionpage.ui @@ -36,7 +36,7 @@ - + This is either a full abolute path leading to the gdb binary you intend to use or the name of a gdb binary that wiull be searched in your PATH. From 8ddd2647665b06c4df5aeeccdcbfc6de6ea592c3 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Thu, 15 Jan 2009 13:07:25 +0100 Subject: [PATCH 20/81] Fixes: Documentation - some documentation on Qt Creator's support for version control systems RevBy: Provided by fkleint --- doc/qtcreator.qdoc | 48 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 4918da9f61a..0d2fa7b6216 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -237,10 +237,14 @@ \i \row - \i Indenting + \i Indenting Blocks \i \row - \i Commenting or Uncommenting + \i Commenting or Uncommenting Blocks + \i + + \row + \i Switch between Header and Source \i \endtable @@ -265,6 +269,11 @@ */ +/*! + +*/ + + /*! \contentspage index.html @@ -756,6 +765,41 @@ \note By default, if you press \key{Ctrl+K} and do not use a prefix to specify a filter, three filters will be enabled: \c{o}, \c{l}, and \c{a}. +*/ + +/*! + \contentspage index.html + \previouspage creator-navigation.html + \page creator-version-control.html + \nextpage creator-debugging.html + + \title Qt Creator and Version Control Systems + + \table + \caption Version control systems supported by Qt Creator + \row + \i \bold{git} + \i \l{http://git-scm.com/} + \row + \i \bold{Subversion} + \i \l{http://subversion.tigris.org/} + \row + \i \bold{Perforce} + \i \l{http://www.perforce.com} + \endtable + + + \section1 Setup + + Qt Creator uses the version control system's command line clients to + access your repositories. To set it up, you must ensure that these command + line clients can be located via the \c{PATH} environment variable. You can + specify the path to the command line client's executable in the settings + pages that can be found under \gui{Options...} in the \gui{Tools} menu. + + + + */ From 68b28bb3b67d9409ab7338ec8cd46cf8f3aca790 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 13:32:36 +0100 Subject: [PATCH 21/81] fakevim: add a comment regarding unwanted dependencies --- src/plugins/fakevim/fakevimhandler.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 72c68c1654d..a56fad81d51 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -35,10 +35,17 @@ #include "fakevimconstants.h" +// Please do not add any direct dependencies to other Qt Creator code here. +// Instead emit signals and let the FakeVimPlugin channel the information to +// Qt Creator. The idea is to keep this file here in a "clean" state that +// allows easy reuse with any QTextEdit or QPlainTextEdit derived class. + #include #include #include +//#include + #include #include #include @@ -57,11 +64,6 @@ #include #include -//#include -//#include -//#include - -//#include using namespace FakeVim::Internal; using namespace FakeVim::Constants; From 334b1c4b2e07afffcb0b695f12c5350ed497acec Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Thu, 15 Jan 2009 13:50:22 +0100 Subject: [PATCH 22/81] Fixes: Documentation - more on the VCS integration --- doc/qtcreator.qdoc | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 0d2fa7b6216..cf84bb151dd 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -797,9 +797,51 @@ specify the path to the command line client's executable in the settings pages that can be found under \gui{Options...} in the \gui{Tools} menu. - - + \section1 Usage + + You can find the version control menu entires in a sub-menu of the + \gui{Tools} menu. The version control system displayed here is the system + that manages the current project. + + Each version control system adds a pane to the \gui{Application Output} + panes within which it will log the commands it executes, prepended by a + timestamp and the relevant output. + + \image qtcreator-vcs-pane.png + + + \section2 Addings Files + + When you create a new file or a new project, the wizards will display page + requesting whether the files should be added to a version control system. + This depends on whether the parent directory or the project is already + under version control and the system supports the concept of adding files, + e.g., \bold{Perforce} and \bold{Subversion}. Alternatively, you can also + add files later on using the version control tool menus. + + With \bold{git}, there is no concept of adding files. Instead, all modified + files must be \e{staged} for a commit. + + + \section2 Viewing Diff Output + + All version control systems provide menu options to \e{diff} the current + file or project - comparing with the latest version stored in the + repository and displaying the differences. In Qt Creator, a diff is + displayed in a read-only editor. If the file is accessible, you can double + -click on a selected diff chunk and Qt Creator will open an editor + displaying the file, scrolled to the line in question. + + \image qtcreator-vcs-diff.png + + + \section2 Viewing Versioning History and Change Details + + The versioning history of a file can be displayed by selecting the + \gui{Log} (for \bold{git}) or \gui{Filelog (for \bold{Perforce} and + \bold{Subversion})} option. Typically, + */ From f5ab36c15690c2b4bbdb73f00c2e6201faacdc54 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Thu, 15 Jan 2009 14:30:18 +0100 Subject: [PATCH 23/81] Fixes: Documentation - even more on VCS --- doc/qtcreator.qdoc | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index cf84bb151dd..c8125fabd85 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -840,7 +840,50 @@ The versioning history of a file can be displayed by selecting the \gui{Log} (for \bold{git}) or \gui{Filelog (for \bold{Perforce} and - \bold{Subversion})} option. Typically, + \bold{Subversion})} option. Typically, the log output will contain the + date, the commit message, and a change or revision identifier. If you + click on the identifier, a description of the change including the diff + will be displayed. + + \image qtcreator-vcs-log.png + \image qtcreaotr-vcs-describe.png + + + \section2 Annotating Files + + Annotation views are obtained by selecting \gui{Annotate} or \gui{Blame}. + This will display the lines of the file prepended by the change identifier + they originate from. Clicking on the change identifier shows a detailed + description of the file. + + + \section2 Committing Changes + + Once you have finished making changes, you can submit them to the version + control system by choosing \gui{Commit} or \gui{Submit}. Qt Creator will + display a commit page containing a text editor, where you can enter your + commit message, and a checkable list of modified files to be included. + When you are done, click \gui{Commit} to start committing. In addition, + there is a \gui{Diff selected} button that brings up a diff view of the + files selected in the file list. Since the commit page is just another + editor, you can go back to it by closing the diff view. Alternatively, you + can view it from the editor combo box showing the \gui{Opened files}. + + \image qtcreator-vcs-commit.png + + + \section2 Menu Entries Specific to git + + The git sub-menu contains additional entries: + + \table + \row + \i \gui{Stash} + \i Stash local changes prior to executing a \bold{pull}. + \row + \i + \i + \endtable */ From 6027ef37dfd1f33dc21fc47a14595f07518ea7a8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 15 Jan 2009 14:48:54 +0100 Subject: [PATCH 24/81] Fixes: rename qtestlib -> testlib module RevBy: Marco --- src/plugins/qt4projectmanager/speinfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qt4projectmanager/speinfo.cpp b/src/plugins/qt4projectmanager/speinfo.cpp index 04df918bb51..16fa5874127 100644 --- a/src/plugins/qt4projectmanager/speinfo.cpp +++ b/src/plugins/qt4projectmanager/speinfo.cpp @@ -491,7 +491,7 @@ public: class InfoItemModulesTest : public SPEInfoItem { public: - InfoItemModulesTest(): SPEInfoItem("qtestlib", QtModule) + InfoItemModulesTest(): SPEInfoItem("testlib", QtModule) { m_data.insert(keyIncludedByDefault, false); } From 399f8d63ebc9ee245fc0c320dc64bf2a9a6070c3 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 15 Jan 2009 14:19:13 +0100 Subject: [PATCH 25/81] cleanup --- src/plugins/debugger/debugger.pro | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index 5a21d6a42d7..80521765fe3 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -40,7 +40,7 @@ HEADERS += attachexternaldialog.h \ threadswindow.h \ watchhandler.h \ watchwindow.h - + SOURCES += attachexternaldialog.cpp \ attachremotedialog.cpp \ breakhandler.cpp \ @@ -54,7 +54,6 @@ SOURCES += attachexternaldialog.cpp \ disassemblerwindow.cpp \ gdbengine.cpp \ gdbmi.cpp \ - gdbengine.h \ moduleshandler.cpp \ moduleswindow.cpp \ procinterrupt.cpp \ From a5f6281f1af6ceb39149661c57e0716235788ed1 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 14 Jan 2009 21:12:58 +0100 Subject: [PATCH 26/81] improve messages --- src/plugins/projectexplorer/applicationrunconfiguration.cpp | 2 +- tests/manual/gdbdebugger/simple/plugin.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.cpp b/src/plugins/projectexplorer/applicationrunconfiguration.cpp index fc936d2c431..2e4789170a7 100644 --- a/src/plugins/projectexplorer/applicationrunconfiguration.cpp +++ b/src/plugins/projectexplorer/applicationrunconfiguration.cpp @@ -141,7 +141,7 @@ void ApplicationRunControl::start() m_executable, rc->commandLineArguments()); emit started(); - emit addToOutputWindow(this, tr("Starting %1").arg(m_executable)); + emit addToOutputWindow(this, tr("Starting %1...").arg(m_executable)); } void ApplicationRunControl::stop() diff --git a/tests/manual/gdbdebugger/simple/plugin.cpp b/tests/manual/gdbdebugger/simple/plugin.cpp index 4e02c7f9f7e..5e140d5811e 100644 --- a/tests/manual/gdbdebugger/simple/plugin.cpp +++ b/tests/manual/gdbdebugger/simple/plugin.cpp @@ -39,6 +39,6 @@ extern "C" Q_DECL_EXPORT int pluginTest() int s = 0; for (int i = 1; i != 2000; ++i) s += i; - fprintf(stderr, "in plugin test"); + fprintf(stderr, "in plugin test\n"); return s; } From edefcfe4aa8fee0848cdca2eb376669a9c3fc135 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 15 Jan 2009 14:38:28 +0100 Subject: [PATCH 27/81] error messagebox upon failure to start up dbg --- src/plugins/debugger/gdbengine.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index 2370a55eed2..b3cee40aaf4 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -1530,8 +1530,11 @@ bool GdbEngine::startDebugger() m_gdbProc.start(q->settings()->m_gdbCmd, gdbArgs); m_gdbProc.waitForStarted(); - if (m_gdbProc.state() != QProcess::Running) + if (m_gdbProc.state() != QProcess::Running) { + QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"), + tr("Cannot start debugger: %1").arg(m_gdbProc.errorString())); return false; + } q->showStatusMessage(tr("Gdb Running")); From 72b6a105b7b01f29bdce06709e5029ed6748364a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 15 Jan 2009 14:30:49 +0100 Subject: [PATCH 28/81] app output window reorga - drop prefix magic - avoid inserting stray newlines this also fixes the overquoting of app output. --- src/plugins/debugger/debuggermanager.cpp | 4 ++-- src/plugins/debugger/debuggermanager.h | 6 +++--- src/plugins/debugger/debuggerrunner.cpp | 11 ++++------- src/plugins/debugger/debuggerrunner.h | 2 +- src/plugins/debugger/gdbengine.cpp | 10 +++++----- src/plugins/debugger/gdbengine.h | 2 +- .../projectexplorer/applicationlauncher.h | 8 ++++++++ .../projectexplorer/applicationlauncher_win.cpp | 5 +---- .../projectexplorer/applicationlauncher_x11.cpp | 11 ++++------- .../applicationrunconfiguration.cpp | 2 +- src/plugins/projectexplorer/outputwindow.cpp | 17 ++++++++++++++++- src/plugins/projectexplorer/outputwindow.h | 2 ++ src/plugins/projectexplorer/projectexplorer.cpp | 7 +++++++ src/plugins/projectexplorer/projectexplorer.h | 1 + src/plugins/projectexplorer/runconfiguration.h | 1 + 15 files changed, 57 insertions(+), 32 deletions(-) diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index ea0e6623b06..e2840fb7180 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -590,9 +590,9 @@ void DebuggerManager::notifyInferiorPidChanged(int pid) emit inferiorPidChanged(pid); } -void DebuggerManager::showApplicationOutput(const QString &prefix, const QString &str) +void DebuggerManager::showApplicationOutput(const QString &str) { - emit applicationOutputAvailable(prefix, str); + emit applicationOutputAvailable(str); } void DebuggerManager::shutdown() diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 9a5b5da37d3..f3d76bb531e 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -166,7 +166,7 @@ private: virtual ThreadsHandler *threadsHandler() = 0; virtual WatchHandler *watchHandler() = 0; - virtual void showApplicationOutput(const QString &prefix, const QString &data) = 0; + virtual void showApplicationOutput(const QString &data) = 0; //virtual QAction *useCustomDumpersAction() const = 0; //virtual QAction *debugDumpersAction() const = 0; virtual bool skipKnownFrames() const = 0; @@ -285,7 +285,7 @@ public slots: private slots: void showDebuggerOutput(const QString &prefix, const QString &msg); void showDebuggerInput(const QString &prefix, const QString &msg); - void showApplicationOutput(const QString &prefix, const QString &msg); + void showApplicationOutput(const QString &data); void reloadDisassembler(); void disassemblerDockToggled(bool on); @@ -365,7 +365,7 @@ signals: void setSessionValueRequested(const QString &name, const QVariant &value); void configValueRequested(const QString &name, QVariant *value); void setConfigValueRequested(const QString &name, const QVariant &value); - void applicationOutputAvailable(const QString &prefix, const QString &msg); + void applicationOutputAvailable(const QString &output); public: // FIXME: make private diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 45eecd6514e..7f3e42f47fa 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -108,8 +108,8 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, { connect(m_manager, SIGNAL(debuggingFinished()), this, SLOT(debuggingFinished())); - connect(m_manager, SIGNAL(applicationOutputAvailable(QString, QString)), - this, SLOT(slotAddToOutputWindow(QString, QString))); + connect(m_manager, SIGNAL(applicationOutputAvailable(QString)), + this, SLOT(slotAddToOutputWindowInline(QString))); connect(m_manager, SIGNAL(inferiorPidChanged(qint64)), this, SLOT(bringApplicationToForeground(qint64))); } @@ -138,12 +138,9 @@ void DebuggerRunControl::start() debuggingFinished(); } -void DebuggerRunControl::slotAddToOutputWindow(const QString &prefix, const QString &line) +void DebuggerRunControl::slotAddToOutputWindowInline(const QString &data) { - Q_UNUSED(prefix); - foreach (const QString &l, line.split('\n')) - emit addToOutputWindow(this, prefix + Qt::escape(l)); - //emit addToOutputWindow(this, prefix + Qt::escape(line)); + emit addToOutputWindowInline(this, data); } void DebuggerRunControl::stop() diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h index c10a84e4795..0c6d979c010 100644 --- a/src/plugins/debugger/debuggerrunner.h +++ b/src/plugins/debugger/debuggerrunner.h @@ -84,7 +84,7 @@ public: private slots: void debuggingFinished(); - void slotAddToOutputWindow(const QString &prefix, const QString &line); + void slotAddToOutputWindowInline(const QString &output); private: DebuggerManager *m_manager; diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index b3cee40aaf4..b9792717348 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -275,8 +275,8 @@ void GdbEngine::init() connect(this, SIGNAL(gdbInputAvailable(QString,QString)), q, SLOT(showDebuggerInput(QString,QString)), Qt::QueuedConnection); - connect(this, SIGNAL(applicationOutputAvailable(QString,QString)), - q, SLOT(showApplicationOutput(QString,QString)), + connect(this, SIGNAL(applicationOutputAvailable(QString)), + q, SLOT(showApplicationOutput(QString)), Qt::QueuedConnection); } @@ -419,7 +419,7 @@ void GdbEngine::handleResponse() //s += '\n'; m_inbuffer = QByteArray(from, to - from); - emit applicationOutputAvailable("app-stdout: ", s); + emit applicationOutputAvailable(s); continue; } @@ -591,7 +591,7 @@ static void fixMac(QByteArray &out) void GdbEngine::readGdbStandardError() { QByteArray err = m_gdbProc.readAllStandardError(); - emit applicationOutputAvailable("app-stderr:", err); + emit applicationOutputAvailable(err); } void GdbEngine::readGdbStandardOutput() @@ -1078,7 +1078,7 @@ void GdbEngine::handleStreamOutput(const QString &data, char code) // On Windows, the contents seem to depend on the debugger // version and/or OS version used. if (data.startsWith("warning:")) - qq->showApplicationOutput(QString(), data); + qq->showApplicationOutput(data); break; } diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h index e07e6a228c3..abf920c91e9 100644 --- a/src/plugins/debugger/gdbengine.h +++ b/src/plugins/debugger/gdbengine.h @@ -93,7 +93,7 @@ signals: void gdbResponseAvailable(); void gdbInputAvailable(const QString &prefix, const QString &msg); void gdbOutputAvailable(const QString &prefix, const QString &msg); - void applicationOutputAvailable(const QString &prefix, const QString &msg); + void applicationOutputAvailable(const QString &output); private: // diff --git a/src/plugins/projectexplorer/applicationlauncher.h b/src/plugins/projectexplorer/applicationlauncher.h index ead2799453e..82876e61f76 100644 --- a/src/plugins/projectexplorer/applicationlauncher.h +++ b/src/plugins/projectexplorer/applicationlauncher.h @@ -37,6 +37,9 @@ #include #include #include +#ifndef Q_OS_WIN +#include +#endif namespace ProjectExplorer { namespace Internal { @@ -88,7 +91,12 @@ private: ConsoleProcess *m_consoleProcess; Mode m_currentMode; +#ifdef Q_OS_WIN WinGuiProcess *m_winGuiProcess; +#else + QTextCodec *m_outputCodec; + QTextCodec::ConverterState m_outputCodecState; +#endif }; } // namespace Internal diff --git a/src/plugins/projectexplorer/applicationlauncher_win.cpp b/src/plugins/projectexplorer/applicationlauncher_win.cpp index c6279b4c3cf..374d26c97b1 100644 --- a/src/plugins/projectexplorer/applicationlauncher_win.cpp +++ b/src/plugins/projectexplorer/applicationlauncher_win.cpp @@ -116,10 +116,7 @@ qint64 ApplicationLauncher::applicationPID() const void ApplicationLauncher::readWinDebugOutput(const QString &output) { - QString s = output; - if (s.endsWith(QLatin1Char('\n'))) - s.chop(1); - emit appendOutput(s); + emit appendOutput(output); } void ApplicationLauncher::processStopped() diff --git a/src/plugins/projectexplorer/applicationlauncher_x11.cpp b/src/plugins/projectexplorer/applicationlauncher_x11.cpp index 79933d4518b..78214746a2e 100644 --- a/src/plugins/projectexplorer/applicationlauncher_x11.cpp +++ b/src/plugins/projectexplorer/applicationlauncher_x11.cpp @@ -41,6 +41,7 @@ using namespace ProjectExplorer::Internal; ApplicationLauncher::ApplicationLauncher(QObject *parent) : QObject(parent) { + m_outputCodec = QTextCodec::codecForLocale(); m_currentMode = Gui; m_guiProcess = new QProcess(this); m_guiProcess->setReadChannelMode(QProcess::MergedChannels); @@ -132,13 +133,9 @@ void ApplicationLauncher::guiProcessError() void ApplicationLauncher::readStandardOutput() { - m_guiProcess->setReadChannel(QProcess::StandardOutput); - while (m_guiProcess->canReadLine()) { - QString line = QString::fromLocal8Bit(m_guiProcess->readLine()); - if (line.endsWith(QLatin1Char('\n'))) - line.chop(1); - emit appendOutput(line); - } + QByteArray data = m_guiProcess->readAllStandardOutput(); + emit appendOutput(m_outputCodec->toUnicode( + data.constData(), data.length(), &m_outputCodecState)); } void ApplicationLauncher::processStopped() diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.cpp b/src/plugins/projectexplorer/applicationrunconfiguration.cpp index 2e4789170a7..0eeae6e8eef 100644 --- a/src/plugins/projectexplorer/applicationrunconfiguration.cpp +++ b/src/plugins/projectexplorer/applicationrunconfiguration.cpp @@ -162,7 +162,7 @@ void ApplicationRunControl::slotError(const QString & err) void ApplicationRunControl::slotAddToOutputWindow(const QString &line) { - emit addToOutputWindow(this, Qt::escape(line)); + emit addToOutputWindowInline(this, line); } void ApplicationRunControl::processExited(int exitCode) diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp index c02f21ff34b..d34c3f2bb0e 100644 --- a/src/plugins/projectexplorer/outputwindow.cpp +++ b/src/plugins/projectexplorer/outputwindow.cpp @@ -215,6 +215,12 @@ void OutputPane::appendOutput(RunControl *rc, const QString &out) ow->appendOutput(out); } +void OutputPane::appendOutputInline(RunControl *rc, const QString &out) +{ + OutputWindow *ow = m_outputWindows.value(rc); + ow->appendOutputInline(out); +} + void OutputPane::showTabFor(RunControl *rc) { OutputWindow *ow = m_outputWindows.value(rc); @@ -318,7 +324,16 @@ OutputWindow::~OutputWindow() void OutputWindow::appendOutput(const QString &out) { - appendPlainText(out); + if (out.endsWith('\n')) + appendPlainText(out); + else + appendPlainText(out + '\n'); +} + +void OutputWindow::appendOutputInline(const QString &out) +{ + moveCursor(QTextCursor::End); + insertPlainText(out); } void OutputWindow::insertLine() diff --git a/src/plugins/projectexplorer/outputwindow.h b/src/plugins/projectexplorer/outputwindow.h index 6bda6121af6..674f25cd51d 100644 --- a/src/plugins/projectexplorer/outputwindow.h +++ b/src/plugins/projectexplorer/outputwindow.h @@ -83,6 +83,7 @@ public: // ApplicationOutputspecifics void createNewOutputWindow(RunControl *rc); void appendOutput(RunControl *rc, const QString &out); + void appendOutputInline(RunControl *rc, const QString &out); void showTabFor(RunControl *rc); public slots: @@ -119,6 +120,7 @@ public: ~OutputWindow(); void appendOutput(const QString &out); + void appendOutputInline(const QString &out); void insertLine(); }; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 2d6224bbdda..c6cb624fb86 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1084,6 +1084,8 @@ void ProjectExplorerPlugin::buildQueueFinished(bool success) connect(control, SIGNAL(addToOutputWindow(RunControl *, const QString &)), this, SLOT(addToApplicationOutputWindow(RunControl *, const QString &))); + connect(control, SIGNAL(addToOutputWindowInline(RunControl *, const QString &)), + this, SLOT(addToApplicationOutputWindowInline(RunControl *, const QString &))); connect(control, SIGNAL(error(RunControl *, const QString &)), this, SLOT(addErrorToApplicationOutputWindow(RunControl *, const QString &))); connect(control, SIGNAL(finished()), @@ -1379,6 +1381,11 @@ void ProjectExplorerPlugin::addToApplicationOutputWindow(RunControl *rc, const Q m_outputPane->appendOutput(rc, line); } +void ProjectExplorerPlugin::addToApplicationOutputWindowInline(RunControl *rc, const QString &line) +{ + m_outputPane->appendOutputInline(rc, line); +} + void ProjectExplorerPlugin::addErrorToApplicationOutputWindow(RunControl *rc, const QString &error) { m_outputPane->appendOutput(rc, error); diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 2c1127ff5c6..1d270226d1a 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -180,6 +180,7 @@ private slots: void updateRunAction(); void addToApplicationOutputWindow(RunControl *, const QString &line); + void addToApplicationOutputWindowInline(RunControl *, const QString &line); void addErrorToApplicationOutputWindow(RunControl *, const QString &error); void updateTaskActions(); diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index acc11cd932a..0bd593c20e2 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -143,6 +143,7 @@ public: QSharedPointer runConfiguration(); signals: void addToOutputWindow(RunControl *, const QString &line); + void addToOutputWindowInline(RunControl *, const QString &line); void error(RunControl *, const QString &error); void started(); void finished(); From 20eb6a1b82f2a5b88d15cf438420789d81d1704b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 15 Jan 2009 14:47:14 +0100 Subject: [PATCH 29/81] user gdb's --tty option for collecting app output --- src/plugins/debugger/debugger.pro | 2 + src/plugins/debugger/gdbengine.cpp | 39 ++--- src/plugins/debugger/gdbengine.h | 7 + src/plugins/debugger/outputcollector.cpp | 179 +++++++++++++++++++++++ src/plugins/debugger/outputcollector.h | 91 ++++++++++++ 5 files changed, 300 insertions(+), 18 deletions(-) create mode 100644 src/plugins/debugger/outputcollector.cpp create mode 100644 src/plugins/debugger/outputcollector.h diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index 80521765fe3..469ea346011 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -30,6 +30,7 @@ HEADERS += attachexternaldialog.h \ imports.h \ moduleshandler.h \ moduleswindow.h \ + outputcollector.h \ procinterrupt.h \ registerhandler.h \ registerwindow.h \ @@ -56,6 +57,7 @@ SOURCES += attachexternaldialog.cpp \ gdbmi.cpp \ moduleshandler.cpp \ moduleswindow.cpp \ + outputcollector.cpp \ procinterrupt.cpp \ registerhandler.cpp \ registerwindow.cpp \ diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index b9792717348..78d2522639b 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -252,6 +252,7 @@ void GdbEngine::init() m_pendingRequests = 0; m_gdbVersion = 100; m_shared = 0; + m_outputCodec = QTextCodec::codecForLocale(); m_oldestAcceptableToken = -1; @@ -266,6 +267,8 @@ void GdbEngine::init() SLOT(exitDebugger())); // Output + connect(&m_outputCollector, SIGNAL(byteDelivery(QByteArray)), + SLOT(readDebugeeOutput(QByteArray))); connect(this, SIGNAL(gdbResponseAvailable()), this, SLOT(handleResponse()), Qt::QueuedConnection); @@ -355,6 +358,12 @@ static void skipTerminator(const char *&from, const char *to) skipSpaces(from, to); } +void GdbEngine::readDebugeeOutput(const QByteArray &data) +{ + emit applicationOutputAvailable(m_outputCodec->toUnicode( + data.constData(), data.length(), &m_outputCodecState)); +} + // called asyncronously as response to Gdb stdout output in // gdbResponseAvailable() void GdbEngine::handleResponse() @@ -407,22 +416,6 @@ void GdbEngine::handleResponse() break; } - if (token == -1 && *from != '&' && *from != '~' && *from != '*') { - // FIXME: On Linux the application's std::out is merged in here. - // High risk of falsely interpreting this as MI output. - // We assume that we _always_ use tokens, so not finding a token - // is a positive indication for the presence of application output. - QString s; - while (from != to && *from != '\n') - s += *from++; - //qDebug() << "UNREQUESTED DATA " << s << " TAKEN AS APPLICATION OUTPUT"; - //s += '\n'; - - m_inbuffer = QByteArray(from, to - from); - emit applicationOutputAvailable(s); - continue; - } - // next char decides kind of record const char c = *from++; //qDebug() << "CODE:" << c; @@ -590,8 +583,7 @@ static void fixMac(QByteArray &out) void GdbEngine::readGdbStandardError() { - QByteArray err = m_gdbProc.readAllStandardError(); - emit applicationOutputAvailable(err); + qWarning() << "Unexpected gdb stderr:" << m_gdbProc.readAllStandardError(); } void GdbEngine::readGdbStandardOutput() @@ -1484,6 +1476,7 @@ void GdbEngine::exitDebugger() m_varToType.clear(); m_dataDumperState = DataDumperUninitialized; m_shared = 0; + m_outputCollector.shutdown(); //q->settings()->m_debugDumpers = false; } @@ -1506,6 +1499,15 @@ bool GdbEngine::startDebugger() return false; } + if (!m_outputCollector.listen()) { + QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"), + tr("Cannot set up communication with child process: %1") + .arg(m_outputCollector.errorString())); + return false; + } + + gdbArgs.prepend(QLatin1String("--tty=") + m_outputCollector.serverName()); + //gdbArgs.prepend(QLatin1String("--quiet")); gdbArgs.prepend(QLatin1String("mi")); gdbArgs.prepend(QLatin1String("-i")); @@ -1533,6 +1535,7 @@ bool GdbEngine::startDebugger() if (m_gdbProc.state() != QProcess::Running) { QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"), tr("Cannot start debugger: %1").arg(m_gdbProc.errorString())); + m_outputCollector.shutdown(); return false; } diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h index abf920c91e9..60493a53e58 100644 --- a/src/plugins/debugger/gdbengine.h +++ b/src/plugins/debugger/gdbengine.h @@ -36,6 +36,7 @@ #include "idebuggerengine.h" #include "gdbmi.h" +#include "outputcollector.h" #include #include @@ -43,6 +44,7 @@ #include #include #include +#include #include QT_BEGIN_NAMESPACE @@ -173,6 +175,7 @@ private slots: void gdbProcError(QProcess::ProcessError error); void readGdbStandardOutput(); void readGdbStandardError(); + void readDebugeeOutput(const QByteArray &data); private: int terminationIndex(const QByteArray &buffer, int &length); @@ -190,6 +193,10 @@ private: void handleQueryPwd(const GdbResultRecord &response); void handleQuerySources(const GdbResultRecord &response); + OutputCollector m_outputCollector; + QTextCodec *m_outputCodec; + QTextCodec::ConverterState m_outputCodecState; + QByteArray m_inbuffer; QProcess m_gdbProc; diff --git a/src/plugins/debugger/outputcollector.cpp b/src/plugins/debugger/outputcollector.cpp new file mode 100644 index 00000000000..9efb18c95a3 --- /dev/null +++ b/src/plugins/debugger/outputcollector.cpp @@ -0,0 +1,179 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#include "outputcollector.h" + +#ifdef Q_OS_WIN + +#include +#include + +#else + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#endif + +namespace Debugger { +namespace Internal { + +OutputCollector::OutputCollector(QObject *parent) + : QObject(parent) +{ +#ifdef Q_OS_WIN + m_server = 0; + m_socket = 0; +#endif +} + +OutputCollector::~OutputCollector() +{ + shutdown(); +} + +bool OutputCollector::listen() +{ +#ifdef Q_OS_WIN + if (m_server) + return m_server->isListening(); + m_server = new QLocalServer(this); + connect(m_server, SIGNAL(newConnection()), SLOT(newConnectionAvailable())); + return m_server->listen(QLatin1String("creator-") + QCoreApplication::applicationPid()); // XXX how to make that secure? +#else + if (!m_serverPath.isEmpty()) + return true; + QByteArray codedServerPath; + forever { + { + QTemporaryFile tf; + if (!tf.open()) { + m_errorString = tr("Cannot create temporary file: %2").arg(tf.errorString()); + m_serverPath.clear(); + return false; + } + m_serverPath = tf.fileName(); + } + // By now the temp file was deleted again + codedServerPath = QFile::encodeName(m_serverPath); + if (!::mkfifo(codedServerPath.constData(), 0600)) + break; + if (errno != EEXIST) { + m_errorString = tr("Cannot create FiFo %1: %2").arg(m_serverPath, strerror(errno)); + m_serverPath.clear(); + return false; + } + } + if ((m_serverFd = ::open(codedServerPath.constData(), O_RDONLY|O_NONBLOCK)) < 0) { + m_errorString = tr("Cannot open FiFo %1: %2").arg(m_serverPath, strerror(errno)); + m_serverPath.clear(); + return false; + } + m_serverNotifier = new QSocketNotifier(m_serverFd, QSocketNotifier::Read, this); + connect(m_serverNotifier, SIGNAL(activated(int)), SLOT(bytesAvailable())); + return true; +#endif +} + +void OutputCollector::shutdown() +{ +#ifdef Q_OS_WIN + delete m_server; // Deletes socket as well (QObject parent) + m_server = 0; + m_socket = 0; +#else + if (!m_serverPath.isEmpty()) { + ::close(m_serverFd); + ::unlink(QFile::encodeName(m_serverPath).constData()); + delete m_serverNotifier; + m_serverPath.clear(); + } +#endif +} + +QString OutputCollector::errorString() const +{ +#ifdef Q_OS_WIN + return m_socket ? m_socket->errorString() : m_server->errorString(); +#else + return m_errorString; +#endif +} + +QString OutputCollector::serverName() const +{ +#ifdef Q_OS_WIN + return m_server->fullServerPath(); +#else + return m_serverPath; +#endif +} + +#ifdef Q_OS_WIN +void OutputCollector::newConnectionAvailable() +{ + if (m_socket) + return; + m_socket = m_server->nextPendingConnection(); + connect(m_socket, SIGNAL(bytesAvailable()), SLOT(bytesAvailable())); +} +#endif + +void OutputCollector::bytesAvailable() +{ +#ifdef Q_OS_WIN + emit byteDelivery(m_socket->readAll()); +#else + size_t nbytes = 0; + if (::ioctl(m_serverFd, FIONREAD, (char *) &nbytes) < 0) + return; + QVarLengthArray buff(nbytes); + if (::read(m_serverFd, buff.data(), nbytes) != (int)nbytes) + return; + if (nbytes) // Skip EOF notifications + emit byteDelivery(QByteArray::fromRawData(buff.data(), nbytes)); +#endif +} + +} // namespace Internal +} // namespace Debugger diff --git a/src/plugins/debugger/outputcollector.h b/src/plugins/debugger/outputcollector.h new file mode 100644 index 00000000000..b84a1b36100 --- /dev/null +++ b/src/plugins/debugger/outputcollector.h @@ -0,0 +1,91 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#ifndef OUTPUT_COLLECTOR_H +#define OUTPUT_COLLECTOR_H + +#include +#include + +QT_BEGIN_NAMESPACE +class QLocalServer; +class QLocalSocket; +class QSocketNotifier; +QT_END_NAMESPACE + +namespace Debugger { +namespace Internal { + +/////////////////////////////////////////////////////////////////////// +// +// OutputCollector +// +/////////////////////////////////////////////////////////////////////// + +class OutputCollector : public QObject +{ + Q_OBJECT + +public: + OutputCollector(QObject *parent = 0); + ~OutputCollector(); + bool listen(); + void shutdown(); + QString serverName() const; + QString errorString() const; + +signals: + void byteDelivery(const QByteArray &data); + +private slots: + void bytesAvailable(); +#ifdef Q_OS_WIN + void newConnectionAvailable(); +#endif + +private: +#ifdef Q_OS_WIN + QLocalServer *m_server; + QLocalSocket *m_socket; +#else + QString m_serverPath; + int m_serverFd; + QSocketNotifier *m_serverNotifier; + QString m_errorString; +#endif +}; + +} // namespace Internal +} // namespace Debugger + +#endif // OUTPUT_COLLECTOR_H From f08c67b465ef3da20f1e804aa6a28686ec892757 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 15:27:14 +0100 Subject: [PATCH 30/81] fakevim: remove core dependencies from fakevimhandler.cpp. breaks writing of partial files for now. --- src/plugins/fakevim/fakevimhandler.cpp | 31 +++++++++----------------- src/plugins/fakevim/fakevimhandler.h | 2 ++ src/plugins/fakevim/fakevimplugin.cpp | 29 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 21 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index a56fad81d51..c438a9ac265 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -40,10 +40,6 @@ // Qt Creator. The idea is to keep this file here in a "clean" state that // allows easy reuse with any QTextEdit or QPlainTextEdit derived class. -#include -#include -#include - //#include #include @@ -1200,18 +1196,11 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) bool exists = file.exists(); if (exists && !forced && !noArgs) { showRedMessage(tr("File '%1' exists (add ! to override)").arg(fileName)); - } else if (m_currentFile || file.open(QIODevice::ReadWrite)) { - if(m_currentFile) { - m_core->fileManager()->blockFileChange(m_currentFile); - m_currentFile->save(fileName); - m_core->fileManager()->unblockFileChange(m_currentFile); - } else { - QTextCursor tc = selectRange(beginLine, endLine); - qDebug() << "ANCHOR: " << tc.position() << tc.anchor() - << tc.selection().toPlainText(); - { QTextStream ts(&file); ts << tc.selection().toPlainText(); } - file.close(); - } + } else if (file.open(QIODevice::ReadWrite)) { + QTextCursor tc = selectRange(beginLine, endLine); + QString contents = tc.selection().toPlainText(); + emit q->writeFile(fileName, contents); + // check by reading back file.open(QIODevice::ReadOnly); QByteArray ba = file.readAll(); showBlackMessage(tr("\"%1\" %2 %3L, %4C written") @@ -1741,11 +1730,6 @@ void FakeVimHandler::Private::setWidget(QWidget *ob) { m_textedit = qobject_cast(ob); m_plaintextedit = qobject_cast(ob); - TextEditor::BaseTextEditor* editor = qobject_cast(ob); - if (editor) { - m_currentFile = editor->file(); - m_currentFileName = m_currentFile->fileName(); - } } /////////////////////////////////////////////////////////////////////// @@ -1834,3 +1818,8 @@ void FakeVimHandler::quit() { d->quit(); } + +void FakeVimHandler::setCurrentFileName(const QString &fileName) +{ + d->m_currentFileName = fileName; +} diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h index 08df6d21b12..aeba5ace870 100644 --- a/src/plugins/fakevim/fakevimhandler.h +++ b/src/plugins/fakevim/fakevimhandler.h @@ -58,6 +58,7 @@ public slots: // FIXME: good idea? void addWidget(QWidget *widget); void removeWidget(QWidget *widget); + void setCurrentFileName(const QString &fileName); // This executes an "ex" style command taking context // information from \p widget; @@ -72,6 +73,7 @@ signals: void quitRequested(QWidget *); void selectionChanged(QWidget *widget, const QList &selection); + void writeFile(const QString &fileName, const QString &contents); private: bool eventFilter(QObject *ob, QEvent *ev); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 0a06fe7c112..e809eaae481 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -39,7 +39,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -117,12 +119,14 @@ private slots: void editorAboutToClose(Core::IEditor *); void changeSelection(QWidget *widget, const QList &selections); + void writeFile(const QString &fileName, const QString &contents); private: FakeVimPlugin *q; FakeVimHandler *m_handler; QAction *m_installHandlerAction; Core::ICore *m_core; + Core::IFile *m_currentFile; }; } // namespace Internal @@ -134,6 +138,7 @@ FakeVimPluginPrivate::FakeVimPluginPrivate(FakeVimPlugin *plugin) m_handler = 0; m_installHandlerAction = 0; m_core = 0; + m_currentFile = 0; } FakeVimPluginPrivate::~FakeVimPluginPrivate() @@ -206,6 +211,12 @@ void FakeVimPluginPrivate::installHandler(QWidget *widget) this, SLOT(changeSelection(QWidget*,QList))); m_handler->addWidget(widget); + TextEditor::BaseTextEditor* editor = + qobject_cast(widget); + if (editor) { + m_currentFile = editor->file(); + m_handler->setCurrentFileName(editor->file()->fileName()); + } BaseTextEditor *bt = qobject_cast(widget); if (bt) { @@ -225,12 +236,30 @@ void FakeVimPluginPrivate::installHandler(QWidget *widget) } } +void FakeVimPluginPrivate::writeFile(const QString &fileName, + const QString &contents) +{ + if (m_currentFile && fileName == m_currentFile->fileName()) { + // handle that as a special case for nicer interation with + // Creator core + m_core->fileManager()->blockFileChange(m_currentFile); + m_currentFile->save(fileName); + m_core->fileManager()->unblockFileChange(m_currentFile); + } else { + QFile file(fileName); + file.open(QIODevice::ReadWrite); + { QTextStream ts(&file); ts << contents; } + file.close(); + } +} + void FakeVimPluginPrivate::removeHandler(QWidget *widget) { Q_UNUSED(widget); m_handler->removeWidget(widget); Core::EditorManager::instance()->hideEditorInfoBar( QLatin1String(Constants::MINI_BUFFER)); + m_currentFile = 0; } void FakeVimPluginPrivate::editorOpened(Core::IEditor *editor) From 50d06fe7c141c5bcad59df547d3df1eab7e76553 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 15:34:35 +0100 Subject: [PATCH 31/81] fakevim: compile fix --- src/plugins/fakevim/fakevimhandler.cpp | 4 ---- src/plugins/fakevim/fakevimplugin.cpp | 3 +-- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index c438a9ac265..75fdef9168d 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -222,7 +222,6 @@ public: bool m_wasReadOnly; // saves read-only state of document FakeVimHandler *q; - Core::ICore *m_core; Mode m_mode; SubMode m_submode; SubSubMode m_subsubmode; @@ -242,7 +241,6 @@ public: QString m_commandBuffer; QString m_currentFileName; - Core::IFile* m_currentFile; QString m_currentMessage; bool m_lastSearchForward; @@ -305,8 +303,6 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent) m_visualMode = NoVisualMode; m_desiredColumn = 0; - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - m_config[ConfigStartOfLine] = ConfigOn; m_config[ConfigTabStop] = "8"; m_config[ConfigSmartTab] = ConfigOff; diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index e809eaae481..a27e988f4b4 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -240,8 +240,7 @@ void FakeVimPluginPrivate::writeFile(const QString &fileName, const QString &contents) { if (m_currentFile && fileName == m_currentFile->fileName()) { - // handle that as a special case for nicer interation with - // Creator core + // Handle that as a special case for nicer interaction with core m_core->fileManager()->blockFileChange(m_currentFile); m_currentFile->save(fileName); m_core->fileManager()->unblockFileChange(m_currentFile); From f6712bd67f2575c8cf6437c9d18987cf6b9f64c6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 15 Jan 2009 15:36:20 +0100 Subject: [PATCH 32/81] fix build on windows --- src/plugins/debugger/outputcollector.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/outputcollector.cpp b/src/plugins/debugger/outputcollector.cpp index 9efb18c95a3..f091ca92084 100644 --- a/src/plugins/debugger/outputcollector.cpp +++ b/src/plugins/debugger/outputcollector.cpp @@ -37,6 +37,7 @@ #include #include +#include #else @@ -143,7 +144,7 @@ QString OutputCollector::errorString() const QString OutputCollector::serverName() const { #ifdef Q_OS_WIN - return m_server->fullServerPath(); + return m_server->fullServerName(); #else return m_serverPath; #endif From a4624993b96972ffd04bb1614667861867c9cc6f Mon Sep 17 00:00:00 2001 From: Fred Emmott Date: Thu, 15 Jan 2009 14:48:28 +0000 Subject: [PATCH 33/81] fill in project name for CMake projects --- .../cmakeprojectmanager/cmakeproject.cpp | 19 +++++++++++++++++-- .../cmakeprojectmanager/cmakeproject.h | 4 ++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index d98539969af..ac65d225b52 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -87,6 +87,7 @@ void CMakeProject::parseCMakeLists(const QDir &directory) CMakeCbpParser cbpparser; qDebug()<<"Parsing file "< fileList(); QStringList includeFiles(); QList targets(); + QString projectName() const; private: void parseCodeBlocks_project_file(); void parseProject(); void parseBuild(); + void parseOption(); void parseTarget(); void parseTargetOption(); void parseMakeCommand(); @@ -157,6 +160,7 @@ private: CMakeTarget m_target; bool m_targetType; QList m_targets; + QString m_projectName; }; class CMakeFile : public Core::IFile From f5cd469d18714f9fe3670eb8038c39f84ae38a81 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 15:52:14 +0100 Subject: [PATCH 34/81] fakevim: fix access to ConfigStartOfLine --- src/plugins/fakevim/fakevimhandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 75fdef9168d..29f8c323d1f 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -726,7 +726,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text) } else if (key == 'G') { int n = m_mvcount.isEmpty() ? linesInDocument() : count(); m_tc.setPosition(positionForLine(n), KeepAnchor); - if (m_config.contains(ConfigStartOfLine)) + if (m_config[ConfigStartOfLine] == ConfigOn) moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == 'h' || key == Key_Left) { From 7bd00510c1ee418ed61b80c08064d8e558ab7ac7 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Thu, 15 Jan 2009 15:57:07 +0100 Subject: [PATCH 35/81] Fixes: Documentation - screenshtos and last bits for VCS Details: Screenshots are not scaled yet. --- doc/qtcreator-vcs-annotate.png | Bin 0 -> 263380 bytes doc/qtcreator-vcs-commit.png | Bin 0 -> 136675 bytes doc/qtcreator-vcs-describe.png | Bin 0 -> 200614 bytes doc/qtcreator-vcs-diff.png | Bin 0 -> 194103 bytes doc/qtcreator-vcs-gitbranch.png | Bin 0 -> 38666 bytes doc/qtcreator-vcs-log.png | Bin 0 -> 173623 bytes doc/qtcreator-vcs-pane.png | Bin 0 -> 26015 bytes doc/qtcreator.qdoc | 14 ++++++++++++-- 8 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 doc/qtcreator-vcs-annotate.png create mode 100644 doc/qtcreator-vcs-commit.png create mode 100644 doc/qtcreator-vcs-describe.png create mode 100644 doc/qtcreator-vcs-diff.png create mode 100644 doc/qtcreator-vcs-gitbranch.png create mode 100644 doc/qtcreator-vcs-log.png create mode 100644 doc/qtcreator-vcs-pane.png diff --git a/doc/qtcreator-vcs-annotate.png b/doc/qtcreator-vcs-annotate.png new file mode 100644 index 0000000000000000000000000000000000000000..87b7ed117352fe8b04cf6ce032560a5e93a3eb93 GIT binary patch literal 263380 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

I2DI<7>FlX8IA1@y^m3^yT<5Q|80vcI$P$)Rb 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

Gk*%w= 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%0Dx3#@_i)#vwXEv;oMIhO6yd3$o5%!F92 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator-vcs-describe.png b/doc/qtcreator-vcs-describe.png new file mode 100644 index 0000000000000000000000000000000000000000..d0949b1e59e657fa34f1f9c926eae082533973af GIT binary patch literal 200614 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

o>c1YL`NubZyrAXccjDlrtI~z}H!Syfw;PHj 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 ~1e@rub+} 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%0AdHoXiKR?_HvNLDpKD=tP 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

H6B+o4oo;;>gVuiRo^VV`Ty*C>#WWl z$XKFsW~zVv^Wz^e7OwO$K$m zZ~XKBPE_xK`|Beck8oezVUnbyl)A*UHF{&t;oW(;Gcb3t!Glhraee!N>zgACZgiO5 z-j;ZK+jGOf)|0_Z*)N(;2q|8T`XeN^_Gb5oA0hQ-V^8kf;YpYVbz{?zVIWD+b!}fIPQ;Td?rp2X7 z%lI~b-(p+4iU%=+~Q%Hu96=Dks<`Fd6I29vVjk5k((8WnIXV(SlE{VQ>G4Xfn;FMN;M z<{p3fj6Ezh5TWAaVzZTXSLGbG8@561cgysJ7Jt2d zb&I7WN~VM+vBuTT545x=Gji~CJ9Jbmy*1a9SwLx#+lpsPwdz*=5^!;0eemXHw}gcO zm*c9M69MkE+hXkq6NQ=F=|GW@yWf>5Cyew;6qC)T8M@od_%|I=by zi>Ilxrss+;oszUl+yu*7dj&?J4+;fSkB0QG{%Ntbo#Dfp9EWp{)DtfAw<)^lCoU|qef)?I!1ij{rm_N-o-a_98j*MFz3{`c?I+_E{x&%M=Ow9|9yt+y8a z@7~&;-V=L%@0q=Och7BPW?!YHCZy0P-PmBqb!>?W=i?g5v+3C%m%ilDvi~VD{rx`v z#cVrUnRf_A6!anNgV+it?h|62->JE!=N9jl^_Mr=p>zAHcc8h_>xzwfwZ5uLPAJUW{?lrX^>XluFz7a1FlYJY zdgjW$nOti@3A{la)S}WFn($zq#ig(0uyjW!T^xyB=b7@|$YBxma?5MC5IH=ex zaAbdnUF1fLS_0HQWmr&hU^(cDrDLiBE1XX#FgxYNFwL<9jT(a-id=R&@N<;xRQKl3 z*@$^^4U)Q;?JVoM(z6m06r7x#1Vlty7@66=Xztmz%`9eLP2}${D-%Jd=|b}(l22eF z_AI|*d_tYFe0+E=UAk28d~Ugtj?S6$PpjjuUb)iZZ}*dhm6bIkw=`G#a9v;;#dC+_=rO!~*4&*uwYUQ%7(9PoBe?UkUqtH-mp9!lGs`RHW}r|^fx z@_#ulUc5N#`s?}s|D<=Vj9a-0^GGIm|6sv-&M!aNLb7JoXJo8Uo3QWSuh$keKMK?p zuWHV-N}g}k?`0EuDAU`UTQ6ou!?R~;F?%WkwS(Qa?)ks}-|PJ*w_izt60^z$Tc)rp zq2Y_)#XP^DaIJWGK-~rwb}z4hs5%~Tz4G&mzK5C3@cOiI`lQZYUOW!{<%9~`KC!#X_xOUe_YO8rgQqp zCfQKg?)ASUE6cby-fVgMS}fDvYMtIiIkuPAI{r)#SJKwzJ{^|tI`x~)*QcL9`PvHS zx#Xy=iQd9foh`$^D>`)l`B~l*^t5w~#Me4^uC%U~{PnlT!U3hA-jT@hW#^1lCoGR% z(%=7Q6SGI?JH0ttAFuo@6b}s52`POi5}}Z`2N<+kC_>iH*1+mdJ4r{Q_s=iZ{%y7C$xYGJ*_q;(4nHy|erT9;E3&6jSZPVOe2b*?W#$WdOy#D@q4~%9u1W{0{I6ChKYM#a zRA18TQ@tx*T;mtGyYc??+?q4z4H)&s-W_R4=AI}c-gfn;Y<d8*D>wWQC>A@ro?hF$V=zn*#>qWipjUbXeE=__r(jiVCJ166GD;?tE4bc7VI zvE4XQd~d4W{KE@B8FTc==s!wd6DA}7e%0GjwTzw;-Pq=)O`??vD_PKI%^NHJ{D4)+&H)XyRu3T-!}1Y%k$TN=60(&Rbn$e z`zZ5j`APE8X$f9$m(P&8JD=^`Mzj*FLixcmor=}(VrL3j-?jI9AAEkXP~g>~y83x5 zPDx+={CLaV-4{2Cb51zG>+B%k`NTSSg4N41m##@K-<4!#+w^|saQU;gOmXY_87!7O zdpCVvFm3hi|8i#8mhGD~Pp>b}jcHSfd?YO}q2HIcR`putwZSU*E4Rb1MQc|yGoGBesBf#;;$NHjx2}FNRmL%QZ%}@l@}_Vz zQ{zvm$KoQ@)=g7lXK6`@V-$F{BFpgU>4>+FIXFCypRV=|3T~e+UoR6qwR(Z?vDx!9 zKL@RA>aB>JmNfl@NT^l(#!%`1i{84wWzD;P@70OR=I2+v-G87+V&m_vWs0E>*Zg@< z`ZKQ4ed>f&K}SS%>ex=)jA?4QXQw|)@&0+2 zSG}WS+A*suS7hAR-mt6wwBw1d!AzfwH>VDVi1#nQ_Wb0T+m~0(-EY0=M-~Hv0)wZE zW5`ivr6t=!-cBgb*t$pCHR5H3n{oKNg6jD-d+L)`CA~J%xgFQm75iG|eL90!?%ECU zM~=%p_{4%RSjxBQE`jn8T=j{%h^~?Uu>LAY=>#S;5 z^}lwH{(R)l_Is0Q#q>9Mhf-}E`y*U}(-DJA?BfF@) zu?El5o$nvr?LRYPf62ZbE4%KV_c1uv@9dGEd+O@v@O$l7Do-2M-jtY+RHnLdk_ZnsYcpKLnG5YV8YsWe4GS7EQ=DAgCQrh8rf}zj!VbJ>d;`ZlV zmOoDwZF~AOak`k;p`Nv$9~tOZ^L&$8>sEL#Il?GeX4~wX6*Yg=J9dtKFF&DNhHpFT}HvD-+}eOdnD zbGqIWx7#qEF4sJG|NL+Dtzn-NQ_h7r}T>aXgU?t9Mgqt1M{{r-y) zTdG+%q)GRcsj8gL0Id!MmFuuda$h8qZAAF>zl~PYziD3#?p*LH=ILDTKUXK!J?(v^ zQ*8h1ly$Df>)rNJ+f+cOxSV5|HQROBX0wHVif!Fg)eKeg%qY^(AY zc_$4MuAWNYxIRJcQ`w#FKXXiSZkfq`PJ8F{dZPWU>G9L+I&?&t9FENW?Xuyb(!^Jb zCMvC(k$Xh_0Mq;KdB)eol)h(*GB042?%@usKG?Qn_vOZ~?FBD_9~^wM|KQ9wS1Z)l z%LSI(v&HJ?-da^;=qs`=v~_F5oJCW1iK#5@+@P|v%RJ6O?%CrPpNkhRQc_7-J2hgi z<&5u#>S}fz>bP@CSi?T|`y|~HciAr=4t!K>E}JaVx6?3q`a_?u{en`DW2Wf2$(+oV zt^D;M^Vsc2x;D>`-I@mjGI>)j{5oE;(Pq9Xp#2;d1)OEvk)a) zb^giE)--%w?!C~M<#0?|zI}bLq1m~)D(d$Sw%t!pu6>!g<%sByy8kiLJrAFIRpTR{ zc=+2FlL)t#Uvm#9+ixoW@-5Hr&A~rB%1K887|%sMy|Aunx7$%3v`Xv0VnL{F@Lk)$ z&^XS8S(*Dkd4$ee{_ftgdGl8MJ2zGKYa(dZa^pQA4p|$I*HV^sLXX;A6>O?_)OxrM zK5g54VUJ>UX2e%s`C|Tg0^#RcC6!j3`)PP7FWjlKqHLa(()~?;qJ)D&JA?eJ)V!Z7 zt#uT>w4r35P*CV3H=zS1ztz=`><$w z>c?^|&QAZ|JkI^4UzcwwOzk$$@`#W)q$E61SM~AJje94F$S8I#))TDc<^6GvV=l+a zxBfGHaz0_4UPo%SV4N-?8?Dm||$@g@+rTfByIFI^zFy;wzD$znx3}y_&N~=javfyGntDqp0_V^ zT$uH9|BqLlCoWxoDWf#eEW0)B+svE%N@4la)6a*>PTRy5DUsu!wRi#RQl)*b_G)$a zh2^pHFAVLR-8QlO#5L+?!o$_RHEmN=a+g zZm(P^GUHBCz^xBI+bb9CC2&D@n)8fVs*baU!E)Bc2xDG?Jt3=de=jYzwK4~uJKpwPRY{q-P_X-Su*LD{tDQA zV(0E{XSZ6pt~I%7QNC#N^w>9Vt_m+|R#ZB)T6y{FwRx6(cR#)HlN0Rw<@Nvl{3_8N z$9418eJoAqo43DvMfv5KZ;V#{FTZn3$7$W3#JTI=Z8@ZjmWJyUAFR~>a&pInoREOp#0~;f=c; z$`*VwY>CRbYkEnm@;>aiktwr&rK9iMipF1_Usw61Pmk}J?B2a%$>Fu%&t9x@X{|bC zba(s8@O#~xEbQO=s~SvwdmuUMctvVxm+=1IEh(Emc2Dn4n704pvc39=%XA*c8NPSq zk+pQJVNyN2UwrXV@zSDYwK^}4OlKI!?*`ED42X#<% zfxO_3RY|LaZ0E);%c|UetK?MWy~&GrD|ny3QupOcfriS3`yGHe738;ZQn`mwuN_g33A%*^tFqq zoZY^-$JxK%%N{_0mVUwyF)6%U%X@?7!x#g{){xqWf3&(o{NH4l8V^psLz6x#8T z<3*EzoZP>yoGZCDC@%WXy)w2hINf1O#l3Gn9-(2WlUL6Eo8$0wv)|XR^YT*WUDWhn zys*Z6+Puh)Cp#ok#7(z3PpY0W>8p}i$`ge^`GzH5j&EG-rTgc7?Wbe6KE0GW%Uo7@ zPJUzMY`s&JRytL z@kif#w&3gAPpi8vf4tVWzg9A1{!WhXM|*@7ujZ^I>(^f9tzo&ZdckRtnpyf)Q4wE3~%L={iyr<6!wVND? zJrE+ZXyVlDgWJ3AxqDVJyWRR8`#RX6?Fp;K8R^z?Zo8w$lPrr*=jGIy$SSWp_5aWZ z`!5p$GjD8qDb}->>+_fTr*hY%CVfl{7Up3)|NE-5bq;tq7?CeNY!%+2_5VuXqUBy* z2BC2)*REZwmmgHV@k($&skryt%Jazy2@BMA)V*C&;Rqd4d2yVjsg|qwpohmyz4@z6 zDq>B79n;XO! zQ~#k^J|iisuyCXHwUt6HbLCe0tq(q5oW66`f>YL$Z$&&?xqRNGU)xvo>dk<<0@e{g z;XcS#0*&r<^+yE;HZEDB!Xs(K(k-U@>hnsC#;>2x+h1q7WoPc!j0iuZfkCL?gI0(6 z`k%v-R(*2O)z-dj6EZh$S#4=Z-1<}B8kyOxD%Mubll!XpZWr>L|jVDBF{Tg4-36{dApne~p*mzUMo)&DlD8qv6kFpLr7-msU%CxHAPj zMEA{Pt76o;>&CP1y_+Vw{NB04w+~N$Y?*)6R%7$bvWE+INNPB+nZ4CHc34=c>ca2W zSy{)9eKDBx+m~6)zesw1B2%2sozCf-(iJT86vN)GJND>{V0dl7zjyKV4>B#cF<)M$ zJMsDMvma|_PnT zL`|WO@Ah~`?0NNkN5-v|p0B16FUId$Xin$%vQg!w*J+(k{Moa zLgZGhU0bGapju_s>i<0O<`rxc)+HVVB6f^eOgdLtWzMH zIj1r2+>c)wcdGyY%`?!k_);hMYH|BL1}CixK_91atOSp>Ej_XgG1RuiuxV)tFW0HC zgm*51M$ujyb9J}^W4XWFEuz_&YbbsFH?}8Cs9`@@JX7q>zazirIh!+7m~cL_e&%?j zGOB%!yQ_!kI)|^z&)>SgerNH=HH)i$ePOwwWydU5QnzWY*spg#&hF8!HLr^T^%G&8 zn;lUscc!%N+uh=~{P2T=&4QAWoeQ1Yzr9q~(&B1n<1OmkTx*^M(y`+m2V@d2Nd0b~ z$3+*tpEDDZuPRHOm>NYVSlP%C9`zGF{cC@vr+4l{NRCas)q^y!=iZbl5M#0x|3-Q0CbF<>+je zb$YI^ime}XEKAs*#=n2-&gJ^eZCK-ho9Ec>SpRm8S?%gqY$%EId$5Ch-~EldHp!kS z+WY>~z4YADy|e$ldeip%U2GxG6n1D8rvMuA$)4jdzkB5?`I>_V4@y`RED*c=<e`?zL!^*LH>#pRlKbAV$=2L~Q9Fb-R?hzDy7@%mu7@+eeir|5gooK|f9zw$ z3#N|??iH!@dmr2PB=^ST?P9FiX^;7}?qvi>copA2x?6sxVg1XR!eG(e^JgZ^k#C=H z@79#n&)4taU-@}j@~>^S8oKv5FLo`wXegc-cE{w2dal#XBWLgKO|*Ho^jKo@OkUsF z=E?QFlG_%`E9_R_e|>-LlsNT|e`YyZc3JF>yHgpyr=f)3-!J>K=98zo6My<1oA~nf zhT_vfPjt^8_!R54@mSe%=su`+w`xHQ^^h z;&gA9KfAg!{a)p|J}(DT37#mKYYyL^?pieoyaJ-i`M|Y~=J{dH_HWGYNWJ|c{v=P0J@qu`7L;QPH-xM(j6Nno|Dpy(i9l9$uDv*)ac^ z-WIu^i*0QjUbdeIQe<$^*yDd>e{t5YT^UO{PGv}c>^z^kLo%Ct;_oe8j2D`CkF~DY zo8Wxs?#lzeoGrd+en|Ls|AEi9tUZ&%`&aCiZ(cXuEH`xL47IFBs}4o!_yr#F;huEK zWyzG7qtf~c{GSWI{M^|w{d3EjtwO&|*gwbJ=;sfYm>6Bj^mO^#xJ|4(eOV7 zp4@Y=XZz9JrRVx7{nd`Zpw2 zS4rt8J0%*6CVWfdEZgu|^NwtCgK5#Sib;CMf5kqnc;o&p?p}r8nNzOO(p=#|E|8gPvPF$z4w2oAM4bssG2?h?3U~7(}hob ztNwrI*wx8v?pxmA{aO8g&$W-TpMUioW-H!@m=S@PMhn~#x>yB|~V8El5Lcvoftg`W*`eCKnqN4vRjJ^gc zGXAOkQnh#W{7*inv(L_|oth4+J{q-E18R5hJQwV=7OLe=39ss1zkENRp|V>-fqA{s z=51XCv&5bV1_pCVikqIl^1<-?1J1&yF*6jKUd@qLep{xxt26!iO65<%@(;#?%)`gGzPN_aU^(b++8Rs|2mEJ7Mk!Jgx9u~G7>2`m2?(L8H_rsGf zzq3gZ+0z#5s_Id##>h6CmG@HBm4f&tf2nyhmbQdUUGwe6ZlU7M3zu=Hy^31{8Xf$4 z89q9AWquIr39O{Vdt=GT%hRk(4 zlKcM%Ozh1(7V(04(uSh!&Odt=P1b$Qu$VU_G2;>0G_)dGMZ5UcR<@(BC zldm?rxL3zMox0%FAC32+<-g5O^**xkY+zZ}({SCsY+F^$%>v29j~^vUQlG8gc`vZg z^U;JKimPH5wMzbuJI#FQc&7LN^PLCgm}R$`txr$0?}*r2>wK^{w0-FsN3of=C*L}e z<+zf=`PaKuJNo+inuW}HmESjb%v35k=debRExGsGsTRYxMa%adIljGp-s+rPlMcsT zN~@Az-x0C;(z_rRI1Y&!fPLTr9bW| zeid`+z2=g*mpg@Wt{#^Zd*F5a^gqyoMQzY>7|;Uuh?MUuy*Hh_$avbh+-? zirqI=JqsU|&!6C9R`;<;@XV%D2e*7zJu~I$7wu=Z9SfD!J7y?n{@W|0da>c;%x@c) zNV|J2WGwd)Uzz@J^@lrwE)OTFY`Hht8+vSrHx$k3+T-ZK@if40u* zu)VkLcGg$Z-CD`@hm{&viICWwmbF{CVh~8ug<4SeJdK^t9Avz2#uWz{yJvL8ukmueXQLda7xXb$)hW-H)l17}e(dqu6`5CV{ir>DCN*Mvm9|#as|Ed@ z2g?6l`&o0!`^|d4&2RpE`nS#^yApZ!V8=#|7*WHo$DB^w1kJEUGd-%Tf()HDTP%3= z>1Ohc_$~5B-QP~SytF%O;c_`?}Hoj3@ zqbroc)zJ0pHSOXozzO;_xNj!CXA*m$@0(#-(tT@_jBY=06i zt4S26DVwRVOe}oV8Gh&D;%i%!qq}W)WxnNiRm=0A_E~-FWYhii;$KZ>)3x(h2NQF zfP7MG0ka@S#e+unTUTo4#x1$`X?@=wY1mo-Ke>OmEcUwC-mcjEe06U5sk?72Z||PI z^SSNuN3ZW>rXOnIJaO{m!A55GDUzUth}jbk#FpPJZQgg->`Gl^_XW8lzE|_spY2&R zUGDf3*24jLcRO10xK2NF`zRv(@YI8K<=+lJKl@lb~ zvh(ZhK$Aky*sFv3Y;!4@WTWe$3m@?R@9SxuJyDUVDsP%`U+(U;e^MD|lvQx+?6kjf z3y+?PGE-??^F7^|o1eu|l&nbBmY!=}9Gu4+w>Q@_Dt(gSqARE}HEMpM95K%EaSzdxx@DK!5-npUjF@>CkE$%dIY3x$aArZK?hr z_ww3-#fH^4g=)U9fAjI1-j(o#-}QFwvZ>;`uFmcS4RJNFtZQk=DJtH)tvT>~&kG)p zlU0J!Wycf(=QAhYl37#p(bY!ieqhcAldKK_{d3t0KV_GnvEAj~G_&>)cs%z{*`HtW z%M?MQCL(4JBz2eN*s`6f?mc7gx#J(_mzgtu z?Tuf1@Jx%N#m?`pf1X#f>HIpX^XJ9=`Nxm0`B}02p7ja#|4&tIW>)a{pZ&|9+n(}% zZO!y$dNJ+tce4)J|9!LF;`MIHY)D}J5$bRYTgQ4|t4dz=DX)a&qwR*;tqv|uR`X8h z9xmE^M4wkM|Kc%|oSP-w$G(-9wWZYDxWdw0vFexC!j0b-f5;FH+9hzM_Un7!o$BZB z-AIrZdJ)WYw<7%4mnswFxsZah0xzTuO|69Mb)8ndJrZ4^RL$Ducmp}0T`|jt4?~a76v8d3lO9}a_{=j@w zE9tv= zJY%uCpR4}ggxZKVbsM|Wzwh3l${C}|6uVzL{N*7N#po^J)FEqK&P6Ohbt^PXNzLQm-CLB9-audo_~DyRH5Cc!a76G|FQP- zn(O#TsHI=7YtsGo2iuqDN*Mm!{i7^p_7UxX+BduM16J7H-|&0?gzAv5_FeJ+i_QGL z7GIE&L!G~6K;jboHSNJ!+h6-&+?e3|BH-VhH(bn#28$m5k~ix|i2=ACBien0&hE!?W4h2Fi&HUH^aN|G2wP z>y34Vl*CU3vA-5a->uEs?EmP;M&U=7toY9F`?bC!)OD53pY|23_gD3`WGX%mNrEjmwx}c z|NIp%`UNHQUab&SX80JjHT0kUzRelp$N22~gT>npD7@vW`yKqJa>JGRmW^pKhZ-CO zJ7jDGQfE(pxcfFw2WLPd3)9p8;8}_V%AhrIUQyynG{#*0=i?fk{28EbToEx)?9 zV^5|;PW)V_%8!vR-g#d%J5X%;DtFmajj;1Ee2;I8wEAzx)1Q_}d}>_DAwHZR5mo>nXu z_)=fFY`xC)dgI6W&ktHDgnV{;du2~>}7v<&@ zP0K#+@M20@R6W;oJ$K~~AzLd>uq&!9(r*dbC~d=b-=8_|_X43vPGReqnd;~+0O!8z zYK(VpZr)TpMcL9dAiilu_0G*}U%gttXLZ$b+2?_|{;7uBxi`Ii`c`h`yX(a~doN4O z`Fp4T+@9Yv?wn@hlX+osT$yvifl@~YeWz7I?rVh-Sfb86{g%m^^yP@lm7177|8INN zi}HKFS*-eR)>eUuX|AhnudkW=5p7>TWJ>G7E%gQ6U0s*b7P`1D-*97kW$K@-o1bOY zZ!gYIeV1G$e>->k-L^k}YI@m0F|)3oY1=fhiIKO1SI=?gR=X5;?eiR7(dzro57pl% z#5D>=U-N&llk*!q-5@hwOlOhE+!B9JjIWEu;`L}nT;Qe$C(h|s)IF5im~`Yw#9`6M-T2SBAt~$sPH`Dd&It!X zRUZ62e(qKTH#gJ7876F1mdEayabCQ%V&B4-T<(bnl+W+&^1m&$;o1(#Vza3+3vJ7g zhX6pvfs^_ReHNRqt^bVl`kFx#k-r)aq(ToqbE# zbJlZmhyN`~=IHTrd6lbdptgzaxKHYh-`4E7rCU5K?HgQ(w@1Y|8KV-!sd$6mlg+9}V7mw9O&bfTy{sX4~7s)~j7v zFHK&Zk-U+kmA8t|>fh0~hHho>a6m8`|G6}r{`33t-3JjK4J`Z0n0762vVMicT$8>g;{^ux@BrAkDJl%zo(!H(EeZ z2P#P*i5!*GSoTR0?kp^f#yo)qGj8#E~72NrKjzMcK!%$96PCZSyhke+39*w?Lw1p zZl3lW?gBXDZx1Ne%bYD_gcKV0sb0vkYi^dWZE>DDRl~k=+ua>&<=E}C+E$)xb8KdN z^k$`2O-u-9c6Ik_HF2pzZlh;Ml)p&dFS^jv`|_@U?rzU}MLF!te7%nec5iN$tUS4L z#-C$?>5PBQ-c7sJ`elQ~nV1Tm*=1tM_gXmI?c*QkxYfnk&H8Jj@^9U9sVUXR3{dw8 zn7-S329(mlwIqBo{1;=U`#0( zeN2or-M6Cu@Y=v%uREC*1wT_VUpn7sWnAy#{(qMj^NUAk7VM99%nTB`6Zfe4o#~0b z*^NzGwyro=FQshr@rOjZ$f64mo8}@_@RP3{?DIubXOCQggsa?J${`_@?-7~7Mev41A?78tb z%3bm5eT%o#xegzFCA8+;mh-l?7sIZs?9yBJeEQ6^2+-Ww29c#6wR!A!US5A2o6hg- zus-y+?gMj>U*XX;fq}E8nMGq+UGs;^Od*BF)xHk=&O0V~=s(<4!(Xub&ePLMYt2k| zPWu}D%FlVN*#2w(G@@qrE3aQ5@choSdDoxhA3K>g@o~vv!`ILCA9PBx<<#w7*6i@S zZBg*GpnZJDBy5es^IWG^I|Qv=Dw%)oq{F!%z7|o@y^o)^-uPCq=Wyg@5>|*mbo(*8 z8L|>wq4G|O%*=hf*4uSl?|tIYxu5#VX?vpoy(p12Gkfi)bokso`nATmSpI8<&aJ&n5u174V;@-r)F z*`J|rx^H0Fm&R1P<=UrgIa7V`K7nu#g`^`I4|+J|Yik%UHm5YNVyk}OtGX*LTGK;1 z@Asjy?H6A!`uKnIce8-N*vx(3tuH8U9r(eMbboeCd1v%vhOVSOXk#M zyu13P=T>F<(H&{JvU59EyB8n66lWVad3NCL->Rz@FS~rJ_F!N5#N@<|G2*S`$>_l7fc^{Cj@?Y zR3*OV>HNjd7R~4CURYs}&UNXz=%T`3b$h<*M@mdKU@s2OJ-T1FitDAP;oH{m`7K}n zJU%gNO6Qf5@43^rvJ`J)I9>kVSkBMv@Jxef8{P0nZ*7kU?%5z%U#d8xGO33Bb4QA$eqr}xxjQe< zi!U%M<`r@)ztMAGdOwyX*!FgZ{Nh8qY(pZrIVU*GR~Il%5s|B{5DF4LQXIOCdB&8P zofiuq9lmw#_me9J&KVul_1$*A^vCO^`)=#WRDBnZ_;iac=f(oN^(TMw#eAr6Io3a~ zFPuC7K;bG5QSIjmHAOl_*TlT@jOX3o>F;u>=1Ejg!Ygyh)!V0bui>zeI+wZhdAE61 zPK?YWp<~`!H~YEol#ULK(bU*^rfzi-96-wXFUZ@c@n;lzB2%Izf; zGahbwb8%NqV>xpaqjvNPxiwkeC3qv}Gj8s?+TJAEDyX#Nm*-8{%^&&D^X`NLxrz?w zuiS2$ITe(XZ?ic4EfO)+5L|q$Q)-!0G_zkE8(Y8Ji+%5O@1G0X7~mOVnn z`{niWta_e#b&Cc3UoXpc4E>n@aevYC(|Ys7*4+Fh_RQYY*E`p5Zr}Cp{DjI_QM)^z z_8V0Dv9&FUKi1TkrdyZ)x0mnq^SxI!R&G%J!5R{q(R}{%wx>Mby24*xnSSN;@;kZa zKb4wYBl6ce9$%5NTJ< zJoetJ5dH;4dfusPYov>Q9ZlN9vGRNF-FCO-Ofrdyh=liucW4YvpIJ zvO7>C7?qyd|26EnCEND9J?v>Ii<3U?Uh%2^^5pn+0cF2j+2?Hgy|gNy{c8GwGqVrZ zZh73Fufw(}J!#E-gEhA|OQ{9+OwU=(<#P_pZQ-~58j@b+x}W3nY+%WgW(;TMlecOK z67-Tz{aSbX=w*wLDvs3UF8_Ab2~KrC_2H)a{0EcI^DVq)DDhZsUek|z-$Hz<1fs6ebJlSFT)%nc~n+UNSmwB#l8?Bg5XMaz0JZ#i6{jG4)W1)nZJK3(+ ztXrIB6CS{D`kAFiXRoVM6r0)fx$IWC&a9t~sVgh0GN0Dl-&C7^O*wXt<6^h}%-`0| z@BVXB>}K8qd7)$H-M+258)0zLzw?S2>x&!T&dh(N%>Vj>&%b#LL3v76Wo-wRp6KiP z_Fb9x;H?Rf)eEo9{dsHNX4cp9r}r}6YJPmm{MON3@wF|>zTLLL>@xolkjs8c;} zMb+<<@{3+wzWaRpracMO&av&gp65^Q`o3)E|9`(fKAWBYs9S&E1&a^eEFKHK3s$^X z*uKlAJ$BQcJ)t%#sf?yZa2T#a6@Ir?hQ}&SW7+2+ITo``rM%8Gac^( zR&sw^ruI;Zxp>b`4{z5$2wH%B`?iZ`f@RB7vss`qrxQztEQ~2;G1@3i9>Yh8=lyx=jC5#+{`uA zsC=J(B6<&NrS#LMVcdJGH*K39xo44lQGagh;t!SoW!Y{Cf9OHafgTG^v)KLl;C$rB zk&O9{&1{*+BMN_Y_Vpc$Ex)^TEni6V+RDQy zEgO+Hwyl+xi>*bnr>6ef`SZZF$NqsHZynmrJy3fK9uK|=EtpYNUAfr|+(T(J;5gEE z=Ge8S-v#+O5;G5ZNX?(ue4RT#VQH+HeaBVd_QM(mca}WksVVzubmr00)#7Z+Y}%Ta z>nRs+>6^7?`o!;;t%hB58IE4bb3erdk=oVm5OPVy#y&r&Ty%M~Ur*zVm9tkyD;??H zK6%$!ShS@hM*vwLOdv#dew!LRC&W?w76;vFU1O*q&kPg*EOnK-2vF@jcc(vWq4W)%VsX=7#c&KsvE zDt|7yHi=hb`>*e9DaKvgI$NvPMXlP9a!u%P`hmA^+2>lVSMPZgXW>aJ>8$W-0{b|uR$AX*s3x0WMo-^C- z`FW1T-=p&j7j1Lw&d#;y*0;Cr@z&~kC?>ceIk<11$E!{69Q|UX()8_mo9?F0uvgsY zUB=V1pTDx$J^8`*e_pPSzm=|^%l9T~LhGG1I(xPyGRIZFH5JsV@BZAUr`Wtt_gLiUIWnsy87 znp#hsXu!5ve6Gu{EhinG*695IYiQwD-*V>;&l>G@pF>jI1Kq@y{rk6MebVjc(i2UM z#r6MgI#bRskQQ9beCela*79G;21RF3(tDA&q#_|9osn*C2!|C~wk z>2+4$`DNH%?$*{?GS}^~>ZKj;jAlHA#0-dZ;9$D{YyLdNoJYE#65)j$(=rvCPZ>gs z7TN5V?v?7QoiBU*skYyab+yc|MH7A;@#*pIa(n$CtR}8j@ai@1ii|50-mRR!v_$2? zg1pvW%a`;0%rp+1v{!EHQT=3><8yYEPcnMG&>-0S*EhEp+xTDPSuYlDeDhUQqpmXO zMy|=0qYHQw!&B^=N?$jG{+9aqs${!`-T7#bGb(!upLAICge6To*)*psXpfENG2!gP z&z64*NQ`W~rM!OE@xyy6D?*drPHo?6qFr3y`@isU=#o>RCEGT17*>AT6|k+ky)16i z*Weq|(v(gL3(q)Le7XEZ3Xj`~qZ78Se>blrsYxpO(|q+8g`EdqoRO^9d!h6F+S-_w zy)$Qo)w5hSz2R1PuSnVE)feYQn{HUMIEmEW{&g_pOm}Qm@`k0a`e*Ewybv=NheN-L zZqWD=yfb;-?7fTAmtU;tG*lN%pMUk9Sd7N~jZ%|SPp*xUyTAT^%9^{6 z;}+dc(mf{hk*)Op`GeNK*S{H|LtVbvbt^rvea zrsi|*ugKS}WW2rV&8!U@RMLxXoDNyL>B{a)1-3Q9-*TcJKD3my+#Gj+FLb_`QpS7^ z1-CM{EADdH3Wv=tBEGLV`sAd3!t(0g4MFl7mDJf+fA_dAedAK3JnQw#OS3OK9PvD~ zNq_&P?={61g^{Aqa>`eiM%o{J#FcP1x|^rv>(q$t!M)EFSkIPn{a24SN{?>nO8s%? z*1p_^Rc`t(`VRUX%e%TwG-Bgoq0nlxAI~04$_;H>bJuKz>fO~_mww7Rx9aJ&>{{>F zypMRE&0nXx%Bi`=$m35==g~hxm3~zYFAG1qoL1zr^yc0mBYL8$Ha);z`smi_7p87L zcRXEY-PN|Ld6MVtqo4Zee6dx28o8rj_U+<@reu$Cvh`F~x5uiREN=hf zy|q7-ao**7$3A-?hU^4|7R-=Rv`ABC6nYWM663qPaK)~@7ROh@)&dA#JglDdMB(cT z;mED^B5WsawmzP^Lnm&{%EK-*i?(GpW#?zbK3(?n#EiW{#a(=l&ddz9i1;Fuw9b?J z&C&`pUGbxnxeNAe6RS4wJNjphNzST}Lk~h_w4*wE3?(flY?S@ob!~CVU70=0-v(!i zq#xh*Gjqm#d#>MpR~M~$k*PD=lFiztY3e-PtNVYeFIf_?A;@IiADiwu%N2EXdEd(g z|BmUJ@Oj&gl(kjdmT}@vJ6AV-ekCa~RpyB5e)}J)qb;|9{tRn7-1g zFTX+cW=rJiRR2Q_yzHU9x|^<;F&c}%J>*{|?{f6uRS(TuP3uEzg_N@9Pn;|GePSA) z*D3x5do~F@eY#X*eUW~(|6D_Pd(S&fdkjwprfz>YS6t^r{)|Rf<0I{t4~RXsE4nWJ zZF|Lhz55p8uHBmxgg)-ua&CFoc5%@qt*bbWr(T_wQ}h1e0>*_(b2q);SYePKKe@fM z^7VozA@#mD>;44iOxsgkAKAbvwEge-FK^)$MbWuu7v$&fz#jK9xb|9 z(EY#a>V&PoE-tM2x_Hx)YSpxy`|VwuOeMlXT5NA!s#3#A?zRCCTO?%#Z=9R?tsfPCrr{9@4Uqt8RhhJ&k4?R53GyBE!P4a6te%&8C zHR%0J(HO4-TOSsm?3j7c!g$-}y>*K}3f09NzUdrwk^SGIohIAE4;v#&qaB<~3$I1p zb16LI1xk#z{SDr6WrYtqM3*huctYm6VEQj@$F25J`g4yJMoYV;^*A5;={(Ee^6I+O zEY0JqySF7A{1zPX>q!Q0UDm6N6`}7#-~aJ>(#mS_^_b0y8DCmor|MriJL7*CXWgcM za=N+qel=^yuRi;s&kS9;Ozn@~<~^?X zRc}?A%g9xjyiitJ?fAl_3k1FQ-V2{4T56#^ub}w9VN1cYi6@<26b{{DFM|4FTeoW%y^SHu3?UbK9|JP~ETo%>7m zx32xc!>ztDb&GCA$dQfSr~H_&9edlnZf@xQdhJ7YT~1qyWbf?Z_{`tc_(-&4W%S3J z%bq8S^}n9peX77jkNNTAYo2#vWO8C&#l6ZqkaNjtvE8I3C7zkw_m6(O;{Nf{8P^$F zO#hmint$B?Y~-Bx?ZMhZDM7uH7wpnM_O|!Wx6FiN-TM#tyPw?KW?}R3^3)S?YSqi% zRdDeyUvcDJLC*KvO566exV!luG!0};|Mx05r@~HFuHHU>(}KmZ}RZqp1_} zuYLC`*^s*FM$nq6%g!GSp7}mOZlca})pzoCw?rLv?`fP1cTiVv`+GsD+1crX@oLEE z)w@5RLnCX2u6^!T&JI!wx?EeXY}c7`CR=#dB2y0w(Zd!KUencdr!HI?Jdk56mDI^yOm zemF;LzW%)x8w(3Nye0Z;b{dBj^IqBRdV0xsRs9ITlg!HRzj0(#z1;G9)BNOsnir|7 z^x%VO6U0q&Zz$+zROPbkRqT28$ld?=>P`F$ABPBPg`GS2<4MGmHM(xecRe*@r`^hO zTD9s#d{6I&TDfZHo0Z13S60c~OgVo=dDHtB6P3*iT!e#cr_Ox()JXd7BKL2rSWoZ- z2|3?T)-!*>h!8${)AON{gNyGy(l_x(M)9WdwIR*YghbV z&5_>Be(#Quf9Q`~UcW0|wNKTrzU2-w$z)Qovl*Nn{%LiKLe zcQ@!bV~FD4=hIcbWcGAKwORzlbR2T}syXfR^@;CJ-)LI(sQiO}@)K2erL46#ck#d9 zKc}_rRdP_w;+&=je6N-otlFojmRj8M_VX0cPX&`}r$~5N2Z-MM_BdXwbNBkAO_QcZ z-nh_N@iKq*?h^~_KKTp0+*xtd?q?R`HIIL5=hwXr?>f2He)+K*wYP0vIldH?-1jND zT}UH%xy`!DykDu8Qr>y~FW$OsO8jp9w%u#kkN8LBPMy`=a>F9!%>6~{K74$>N+zG< z;qx35HrtzDcC5%u>f{Stw%uy+V)fale{t3+-+e09Vk_x%MDo1-_Am0Mrk(qgY1+1e zKlZ_++A4< zlN--Ief4}<9tT^p-HtCuwwyG2VDG#(zpz1;{oeHFrGB%%HAfay-QSuhU;6LNr>T$Y zFP$v*?4SA2!g$N&{Y8?;Z}n?F>{s1eqc@#DE5UUSqVwO#!5QGwD*bx%9i=Ijogd6c;qdW97^7PT-&oT zVP(#x9hKjLZ*1AmR#q*Xb*eisCa(Qs{r^QX=J)@vST0ibGx^f4|JP^e-nz8v=l$!V z%D4aSu-X=L^ym_MwYu33?~JnpRrC9^CjNp9iZ-b+NAFp>a{tBYxxbWOMMYgm(LMgp z>#0%3F=pdUfg69shOquUn=Mzl|A_d*$IPLda_ZUZ4AQnOUy-o!z0J8RR~MeUwv!`C z`@Wj~-_D~y?)=>0?{Wn`I=g7Xw-Y{^^|JTw2Wx)Kb$<54GOG64tz)w@<{wXaE0FR0 z?6*MAO377Os{%BCFAEC`^R!>>^=iYn>PU@K+6|9AB)d{p{(iLb{DK|L zPqf~acRuTFs@^T`X?rAl`gFtI+zjTLoi@WeE@rcMwCdl>m)}i&FLotz>G^Y4vVIrO zv#(_{d+D4jef!7DifrF)Z#u2qj%~eVe^t}IyoF@Iw{Ij)+)4?Wl)&0$r_ml7 z*YKs}me0q-Qx&%NKH_;kzme1JXU{9+S+g6j-u!snT&z3&sZUSo|9g+bWv%qyYJ=&HG8HS<`%HCI{QZrgf0AT+&M(^A&{*T(NZFa1;Cy6tz^@clM}D-u3)|E*ag zdZTIjzs(WSt4*t~IsTQ~^s)7g-?X37J$LnNCf^mS+;PP;b9&o(RpvCe$8W;=RLiBm z9G`hI#cBHd$ajZ+fR9mz3`w=IxHu(%dU1{WJRek@HeH)2zDoP!Q$ba;o%Zo_C)!Ia zZhzQVc=%%3Mz-H}KUq>udpl(9raWEo{p!C=kD+P{br%R;Z}#v73LpSb*%VUw`)!1CHsWe z+Cleyy04hC7e7%AVJ%KgZ<*{ht#eQ9yKm)NKBxWCh}vnGH?RL=^098_RjzjW4`(>< znPR@DB~`RI@Y_2Z!Ly4$JUQ>5ICZHD%Lm?D{oGaCcD#T6ePUO6%uhG(ZSTV659;pT zQT(#rJmK+~l^%V@ogCRtn^Mh$;x!NWFFX0Etg`U(9g~-vKjtY0?wz3%`Rl`7uJV(Y zr|;`udwO$f%yN%=7QPXmt}eb4W~=yDep;5kkJFdXnqRY(D$TF*U)*QCNb;tB*Q`BH z%PrKhw=WJ>nY<@s?cABH)~oI^?Rh70<<-UKmwpN_PTqffiGBCo)tjCk4VCoR{6sPN zcifuu!J;#tuyg;l@HqYD`TX;Z(VHzkc-zMx|5f%oCool_xbS+?-I?oiw+3v8dwWw_ z;>)8$^4_ar{?>7{)f%$8~h!n5C4Qo@@t+fy2Zco(aOBY4T6=^zSSBY+I~6V zO!vfH$p&`9(N8L4mEx{${QE2M%$cb(w9mh84QA?Gl_~%B`O&qv*4}rYYr8ol&tA{? z{?%uoHvNQ||16BR1s~nje6J#Kh zkI(q#1@GFn;#BOTskfdugiM&b?GmrYyj>Cz8{|^8=QXREo(x~N*Yl26^5iA4cav+= zmzIRZtGqQ{^Lg5riHW_(CR)`lF%n(>qWw;C^h1rBxa)^47Zhlo4!hrRny%clDNFHdFnb_M^I{fAob z+0Jm)Ht+a+OZ;2Jr?fZA>N51t>BarMbvSt5MA_r%H_GlEnNfc8b;8=|&y#bEg4|iS zR>oC3%YOZJV)nHUGoSj3)R4B2Ckc<=*)ToqT3If) zaNgZV%T^_UXAAVBS=U+J=m>AVKj+Hkv+qA&i%gwaKda(QuI;-6pWjMf__ng_exG56 zer)fKmD(F?Y8l^kuRESEraL+H-|50rKdmO6{_@zZ{Cd8k;Fkz?Jz>A3qB|is*C_C_ zR@XOHS}wlry>%K7{p6t}Y})p~TO|j> ztI8c!wmy6BExWh)703IXfl^h=?yXZiUFGrMn&5&NRj+T{J2xr%&89C_*LdpLZ{Loz zf6e84AZ(|6Jbw+t%*DIk8H(>(GOzyov_8k_yi5O=i`!{gGHoq9bfo>ioWK3lX2DaM zmo(O~CuBcYy4PODe&$i)Jwu73JA=Q2o%iK^^EbOs`)_|fcl)i0l>WqHU)L30`&`v7 z23`B=a9`cQaB5Q4efg(3iku}A8IE4jYf3UgG&teeXNNQAot_z|!~^awY;HTN2F+4f z6ms-49KG_P!q5~J3aAT)K*O#FWW5@aUdi72m}7=pkwXQG#pvdzICf_?5fLA zdz~)nyDZ)8eRBU+m+eQ+nMr>O7hinp;is*umnN#Gy^ZNzb^Fv}&ZF(&$q(m?B^`Z! zJD~XV>urm_+)&e*_-mTT`U7prPcLwA^j})v9jG(^Z~C|7{Z`_3rgb$jeNt~UqID~$ zCwzVWe!-T5eA5?ueVXDNSN)9p+O5Ar&&}DKH%!~^y6{;Jd}<;aJT-AL;#Gim`Mr#T z=ls(XT|<2n79Na=Iz3UjxIXM7+Z6Mkh`EV5p%I(1J0BK5{r0W-+>G}nJhwLf|8Q%; z&XvdB{`&?V_6{swF5{b9$I<-zgud2~D|xru=GZ?;xVA2`;^Adk#?P7-xi_vWK8s&p zbB*=0iPZIp$69%(OTy>G4yigAn#Lsg_%o?osOGT9)vzvNdj9tM)1x1nA8d+u_&PCY zPHx%%r8l&$xBvf>F0*#sv5)zB-{zHljq-kbV@q(nN~!5v$8+aQ&TO0Kc91!B#(bIk zOQ-Sm?BuU}c2UA&f%nP$M5V{y?s8e@*5B+{b9iUP%YvEfWBr~>ifoQc&sOEo(7l{|gN z`X@wBYb=ewUfHv0@e2pBW%F!a8XJjZA83qa2TfBLRrq~5Uiu^^?`Q*O{1Gx=H2l+}j(L z>@q{41k>9&8C$sQIK>1IeSE@%{e}m>NZl${}kQaTe>z4U%j8OYEOS7Bj$gimp;Y*)&gu8@Vs!D7sQ|J7;)_R@w z!=TWeOxk^+i&j-N=f~-u-Tkb!v zyN}k~^mP3?o2x43&c;{PT$Y!)K(iUY-p_UXnw13j&16`-^JVR#lM9N@PgOYOR(mD#w~W>Q1+VO? zt!DBc`@Fu~=5x*!qaYL-3R$sQzsHz!~7fJ72PR0t4q4 zC#H4FE?b1$?RfD}*sy3q)t8wGazfh2U(Y%qb&;#^dE}aH`x^I4=`in=U7>aQneyWo zUT0>O2&C^T=VDji+amGxcuuzFyuTLWN1M3|{&YsY*;}sjOy2A8vd^#1zgTTiR;p^$ zWn7T(qU_D=Epn>7#UJKv^IsV_NA|Xz*Wo|E0&h$Y?%w3-pM3M7;f;rapT6X*wEO1o z@$*8{)THpbrLN~LPxw|Sb#HBWbx_xfqAX*BN4ifkqTEW!@qp1{%SfEdX|5_W%xvX zYr>z0PCC^U`qNG`uewpVb+X}mr;qdHr>fr7HcWnG7h@Oynr z>2uisNP(F9d3%&fOd4+|>|KKpeC>pZmo97rvEnhr`_;D*?XFs8)y z2VP#g6)6EOhuE0(c8jw2MI?Gjb)P9zY?ql7M-{v`2wCC4XF`XF|T;7-O zdanw8?0&i_f5EE{=UuoW8iFl9FG#v%d~NZAKWS&y>m2l#+wH#DO8=_@*Z;7kc?XXr zcL%=D`7dl8GG}$B{j-i~8~!xbA3NN9wt#O=@6)N;AHQ8c{&CCEmD$_@9nz9zIX|3b zqKu?BUU_|VMPy+6=0&Mzd%3Tg=Xq+M@DDiM`p@&k9&^uWQ|cs>JXdmGyLCSB@~icS zc#bxI_jCNk+?pY?Q$Anz%%K_l&l28sto^b5q`zWq0Z&xU{!;zO`Tr!vPVKAjI=%SQ z_ZO<6iy5;Ye{;NkZq?&_*E{aV{r2m2-S@6gDdbvr(qK;Iui%^+Q}pa=-%VesD-qr1 z%kLw2xW1)#`R9+{;?FN$6}f+3y4uUl^QJ7kUqAKvQZ7N|+wOf$OH(#yMDToC88Wf$ zOiy{C&AY&x+GT>v>UIcmACo)szfR$DLFC5FhU5A{zds&+`|!^;i*@HD{&N2*SrPH5 z>#%Ten9^_Qo7P`%1Xui6SN8f#M0HK!ZDF=KH%pIi6+Hh>+wCS7Yghw6^$_7D(CIKYUh=v%u7qzpPn&Tx6-BFFWu+UjLR3rraSJ7%v86! zVHBC8dClwc^G7SslpD;R{M6>lzx{57`6OK2r*FtspV(8m!f?H@dGCLQ7f$l6H|-Xu&;9)S*LiVQ_xyif=cUiR zxWBORZ@$U8!@b_~LmF-gW>1(PaqgI9y8&1^|9|)*sqR#b<}d*yvvV1AC)#OOP6_M zCjp+6uz7BhAODjtwY%#oZ!TYljiTIPxsBfD3%e%l6>omztgl)6@Iq&N!pU&y4G(wx z+N1W|y5QjAwa3)`j<4R7zCd|7hiGZBL0!2{k)6KV;@G_f9@ExjL#8CIrpu-Toj4s( z=627$^v8?YToF&$nc6S+J!#qbi1U}(zCDlDT1o5sg*dI^@-sKS`G51~Uw2;ay)PSC zo&2Z&+-s#drZKctgLfMeEBrB!( zmXK0=F8}8uk9#>^?sHjqY|`PCd(P|p*!{%esb5K%q%vD!TXB@p>l;a5bPQJUCl+$f zduzv1lqB+ezTT(L0p|}k`*tn0Zh6IiLip#;H?^Bw9qo#~FF&AiTX)Sm9r4WH&zxP7 z?I!Kayx~4^tNxz!e*4wup2h1|T$B9tC4aS*xzzQC$6OOzI99%0&DQk#5xkS^3zG?FsieG352DQKDTKUk9<9J_m|6|Maf>#sQ9y-wUwtvo{nR9|I zO#f>7-q^D@Va|%FT&Jb4g61WnU*%tI2`=y9R?l%gaNvE%lqZ~y(IOfTkAfy8-UVIK z-BA9F_s)#F|89Ocpt3VNp?lit-`tLGSz&7d(vudvY5RB5WBPu<^3LZe?F**GubwMr zJNL?^4~$}-yRH5|HgIEE;UrVJNubp}WPXxmz3fXn@#|tCwSW2kt&E8CP^sOaRx5w6 zUW1$0_xO^1ZZ}yD%3k4)38{5v)0nNCGk^J-3GE!ePh2f=_%?%8Yu`y%r$iZ}Roho+ z*Zk>?TJVl<-!iN73F{N)SXFdzBnw?%WvsUAz^%W_YZCse9`l`M1RCn!bE9xU*s+@z ze%E|f46$23*Su83|EzlI>}J!T6W8+hebYYm(H*la;vpAU)*tx>-tQ7q2+HjWXyX%ujQePP4UsI zUpVWO|GpDzv1M)PFrIh$*S3;r{;LgLYGWTh%3T-D(9gZo<(|g5+51LLjFS3;pZD*a;7;%Z zjT^jJ$#QGf>#gEiyxvkgyDNlEO?KE%-%@LI`$0zDwDYMN?-#vZ8-DRkhFfv=^ZJS- zJbtcKNm_2|%e(W_mEQTv^-)mzHH{E@{YVlhwJ++sHA8)f1bzfg} z>SB}F%JrM7q{~)`n@HYxr0eUs_;lZ2!P0YLCZ|-l$-zf{w%22wtR(yBfmwz@$}aLKXBFjcb_B+kZ|!uk@d-rubr;+SgBW`gJDsDr`u3lX2Ma<6ONBd{^sNE{=DZcjZG+ z=Ei5W;lX?Px>X(?HM-VdJC zIQ$+osbPB3Vn@X4T$6%-k0fuT#F(rs6t$MkzdKpCdQsoRor}KtmsUlbTveu6$kJ_~zkJvA^IBc1l&=hF5_*c)f>V(p=KO2iSYMe7Ryta1JPuKQ7 z?rNP%FP`P{R(8tFzZus~z476vSxD@*gDUyk|6i=VmmcB!UG|{)jCV1-7Bw#fy!b;G1-4Av*8Qnz)g@;Q>#HCAQ~!S3z4!hcN2UdJzoG?& zTO}`-FIF%V?B?rrymOAF$8th9?{jGZ(eEl*^7mHgHug=nUvY^~_fS(c|Ebf}Ow$>w z*9KJ`)rjPh)7o;p_rNFhZ;6fBlE>-=w7vfdCs^)byKbUyRU3ULb=Jq2G)5iq=L$;= z#5m=Ky)ur`o3mb=mZHOa@@K`S-Z zPDg&3!qOd|x2Mgw{ja&KFI4Fj?;b6stUdSlw>;bZpD|i^>Au5aEA#oDo$y}4b!OB1 zCEK=`fBLrb_Wg_JPW(F2>Hj~d<;@lOUwfzC>v?nWQpqzqt&8qYe0SW4&#sWW^Hpm4Nh7^` zw$H^%mibr9M^E0Ix^4+*!sE-=84El6?tT8!>Ah84E%898^R?qgT1}$fuGP}dmyWlQ zoAy`i?dHep^8(|`W3okG7IWHi@4dD%`S?bW$zOEJ`cF&~4^LIdt(P-Wdv~--@W#~Z zYXaxIQBN>f9-6mz!Tj~fwYzJ#t+>>)bI0q=VNbK8bw&QX{VcmjLJNw#_8%o{=` z=Fd;viJ76qZ@PcMp6QGK?%5GKB~QL|VJ+k1&yUNuR_6YAb1{eWDu2B6x&8OPthxMj z<<`4@mzu8&%~2_Q*l%o~TmfF31e%0P@K|tP*x#nmdFhMm>*s%a`R;Rc(@Oe3jlEae>TdWNbcMwv{z-S;Z0e-*>;O zc04)4x_hyw%2|mS$!BHv%qhtY4Bgrp{wkDxQPZ0(bMH1hX@1mcR$_Zfu8L30-ame~ zvrWX}NlRiU-jJ%BckWg9lG?VgJ56>)oaxuUY8?5|&$?ca?Q7|^vc3PBr$qjG%01)P zR|A>~d(tc+10B76*`;m4jqy>73)iX|KX?@GvwXSUP3!BalXhyv-8VRTVx!FF zl=$a!-1Q!--n59+f0sIcLz>Oy7J$K?W^_~oG#w}_y^Bzzm58r4Buz1ojg79r1AABJy&)( zC|=FZU$Hn&e&v?ATlGUKZ`n4d_gmY2+0Vc0si#YR<+Ya|!NahXm94ht_DI6cz-qK^ zIM6O%*D+&;#9QNx3kq)~q@}gjH+O*cSE%lvI9ote^yy{q_3``pmS0|3tFi1?=LwPE z_YF4>seP+tD&I8YmblgSlVLsc|Cj51O1*q3G+6rMs}p7U>-JsPx9>iiwAov)V@faW zy}!h)`S(u$V@i^{;>r2Vq0<&E>ok9T?YK;Z-ARkJ_51FX)L9?f`u9!N5!sl|rz=@^ z$oSQ`5FV3ymN?HXTdw0YkPPd#;d@433B zPi<~X?*A59c0`hU$+pkGKW=@=n4(s8H+kLmq+LrN?>gIdY4Yw5fp-O0^a`t~{k5Iv zcm5#9)3doE*O?Qx6$|QL4`V;`Xe*W}lIrF2+rO{*y!`69%Na55QqR||H19L6cY_@+ z*ck2GkhE%k#j1qg+{@z@Uim*SPO59=_No<|YJ_%tWzkr6uj<&EMp(zF0l}y;Zk#O` z{POeV+12y5fmZEcPKSU+?wB!&1m{a7%@-!||qv{Z3my6bTu)A{B^VT=6zeG#7(cDxY}s9hqGKKnMq;vKUM z4%$4loMTzcmb&|T^65=Bf7S)v^EwZ4HX3plk=Mj@oTV ze$U>stIYgduum_CGUyUiWQT#+4*p69!~?!Axwk+U6r(-|8W%5Be;{MU6)D`#&b88@ zYj>sbo2T!S0x!mdSlm0RqW5)w6(GDYo+Z1;S46u2?y3HUbq&+KU>6BC)41K zFK@xh?f#w}QWh-F%>M3B+<5nEh73n=x#&}~x%WYF4)GWgd0&a~-^~BIhtjXAI52IW zcHrx@>?l_8RoaCI*K1wg(D~zb%HJLD`}psKU)9f^?tgZ%TnlUW$El^Zm)tL#Zaw{A z#soxmgXf1T1CaZ66lX|rPB?H@&_K2CXmWq=RZW$X3V!O|)AM#enDjUBZLe?Ct6koF zmO(ymg{;)DB(6p|zlNkN{`U&A+?iA^?B=*}`o3Gtv83%6Z)Q(O?|dK2yI?C;FYRK{ zSoUgBA`56>q{aV0PGrNeU(X+ObvXv@vHZg{1AHI}+^tZ?g5#j%m%O{J4YYvEi%DtG zG4;a8`t@(DrI6Oyz^$7r@Z!Fw&0;)7fky*N3&YV6K4w_67Aem_a*hI{&B3JXy0;dwCw5qJ@oqJ>2&s}$+Gzwz$Qapff`bRsmxElLt>&H$EWcP7 zgN5WOO*jJs=iTph<2}0XeBa|wqUr`Y68nDNFo-w4EY$b-yt{N^pzF+p9c}37YR%996aP@9AK#S15?wFcn5OXV z5>)F3ElQcm5>uwlC$sU;6ce$Tk0;f*ecPXHFlo}{k8@iV2JBlU?kDR$c~4IlwruOs zz~ThjHQ2@V9+b#rQHJce{>WGTO%|SLl_helub$!lTr;_g=ej=yty;G4a@jVlC$TJu z=KS%R>u!_*H)!i@WB&XGW_NG@1C}LII948JZn?s@&GopVU*5L3-PaVm%%KS#xy)@~ z@o*4)FmI&{yNUx-?KFqzV%wZcyAnN{6Z5kgy!Y06IbAuRC~@Ul!)Ect21yY%ix%Iy zkg)dJrDZ)H1?rD5PPc%h4Hl3WSz4xpjBG#fRc!n8m#we7Vm@R~%e>)|a<7*4+N;f< zGW$I|=C*A7nDsq`4NHiFvW7=PQkJ{g9%m+%3+@~LI_Eoz*R{r8yLAJ2NW zQOfv)j@&9M&q^GJqO~wAWd>!xM(b$~|5s%27`fly_%{78);xPi`G9ypD`dd~_JC?& zc^AMW68!!`U;1XOMnJS3Qg$#jwTbh=R%k#oV?n#ngLx~IWxzLWn z$81-YuU)(L@NwzoH!9BW&3rktYI&c;HXPpdXkdAl!1T{)<^P@G385KRc6J3j%4#ml z()i)Zq;kQWbIZb=FJ-d)WR5=kR3x*`qVLwSYXZKxM_V^<&B)5-78F0HE57FG(HrrR z;uBUbT_<$(=+h1CcX(?P?`~%L`%Bj))%(Sd1H1J?-s-!BPTqC9<&y2IJ5TNO^;&)B zdU34xDW7-Xz1W)=LvHP|Yb^Kvg{?oa%lpUMus1h0xEu?yU!yy{F-hOOZ_fFsO^i>k zt?N0VclD49!n=?FxbT|e2ltY=k6(U$ea#rR>Q&Uz;E(q#x>oL8w>r~+bArQkPWVa* z!E8B}>3^A4^-p<}Q@kJ}%eqkFc=oEm@{2d0E^<~cS&&huw@Jso{p$1st^IX*j(P8D zWL`IwnHv1FdvaE`w=wos%hAUEO+_EwR`PCmd;H4Goj=Zo2X($SS@z7&b?V__uK4{7WUJ3bBmI> zCdSV7f9}+i73gXDg*M9`x#e*aLu9|&=}kYazNzfx`LFw!I^QZV3hg+|F=Nt)6N^1N zx<38MGs)8UR$C@BeSJrUl}1$a!z`=b#n11oN)Guy`+u!w)fAEFjeM$8R~zI{lFV3n z;9KdcRe=VXrc(8)spp&%mlaC=zp*3d!Gf;2CcUL?%;bG)Y`8nOjAs&UdMGZk}_$x25CMm9B~U z*5CGTj*1q#w?1Cy*>nzb|B&vj5jmx|FRqX0yLWT_pMu<2LJI@i;KQ;gf?ce9HRw#qxJArtj!riBMa9Nc+ss=bcYtZcjA5-83n+ ze!|j!dNun}XD*jmse} z(`r4BJG;7)U9~3~sxh-0ZA*^7ST$wM?B?%R*!J~3;*kny(n&aOA}_9$J857XT^{n5=WF(UqY2R`14dUMx8?DOVJ z8&+OwJsrL6LBL$ub;0wM_AlYcuMg3c+;>p=HQ%Z^Q9H7VyH~VlZ@si6#AE9hyfNjyR>Iw~Ij=6s?Oj;a_#INlBFF{b1q1xN;v7ROXKO9I z^1AYssPEN{OP9I|2g~xYuZ!EeYUx9x|M#xn-!g;6L&1khuafgTOZB+!v#~k3~##|G_@R{J)MO`__D8$bjx8oA9lG z@58r18C#|r`~UwBw*J}rW5Wu@PJVmcxSbQHzFej0^6nJZ8q0|Or8B$2xz)Ovb2iQi z{rgW>B$3f?uOa{9r&hHOt8Vre8$a7$$}xZKrUe^*>GaJnuRb|VM6Tg$d*`Fy7R-xn z`gWeY9R9%Rt$k8L(eFdWnr_^RkE32~NdCOOFeYpE*Dv>zFL8uUh>hD;$`GDv-fX&l z;?^ed6Sw+eA9>n*m*<@t(z~+|>(gLif&F?Nt(b=+#p1=@TYRI+XfPO0f>qxQRt>+${RO@cEIIkDqTb zn{WS-)ysZ;%cr6}0i_)C>*E@i&5roI=9Hw-E5SV)>*jQSb_tmKyZ^+#c+Rj#H!I&Q zsabz0c-Dkf?@DSOPF?(1cWS^Mr_CE{8q1ACJyoP0tz}@D+cC|*wl#X$<5joR4m9nbEueACb86DYiW_PEjk{e}eUV5xb4IxThH;0i zuH4Suo)or}TJ9ba?;o$MvA^rW1F^{47PR3KJH?0(YM@HJ|KAdWK z-@VH-dP1MK>G3Ci%ImTWAH9$K>aMd&!101eP~?{-pR8Fp*PhDyY|HPk#7EE~UFqnY zp6a8QLtDQDzAak*yYF0ihf%GjZS?6~Yvw;NSGtyUX-<|`=hb}waBn-TyCc4KltkFexag9U+(9#@`!J% zSKo;H_CIOE6Hu5fo-|Q!-jUt=tnyvLx{KpNZ|fc@efczFuGldajP`*yhsOEK4-dCz zCuJokD_?Q%TpqqI=3?I|?yu|X|7xF`Yu&zUm(|<2sHj=roL0@A!c)bmILnhsrNCV% zBYWNS>q?A=C$SyAccp=?(s1&xn4&F;broE0%X*HSm{{bqH~O}5X~3pka&0$e*BYIw z(|&g5X~vZJb)V8tT&nG_nl;5Tcui#c_wONxqW1C5eEdA)Z_?V(x|V+rZO)xIyz87= z+yXYopZ!Xw)>cFE<)W>R(>6CpNXP?jrls4Poz&Tz<9o z!zziLw*TJ8Pnlfv=eYIK4X2OYx%PMeu{XMp@~!{>{&CJ$_(*-&p{Dmrp*4Za&lTOC zl)TgZ?$xHMlT%!$`L4N8$rxI2=SwBG;nBy}Kxd~coy}Faq(XS!yic;_jVZECTP69= zoNzn(s66oLrw0DY4WN^YuC@Hw_;%f4#o$kBpuRDry$&J2s4``}taEZ=I@Yy#s!-t6 zj8%50n74-A<6p!QQo1E-?X7#O`0aiuOqzVx&)ZyE@{4L;4(QM?dF6t=PiI|Q#C>(@ zk53+|TH1H#uRmwPx@`+@-ukQCUN?SM-qCe!PR!IM(bgYJRC1-gwtr5S+4uPXXa|Rw z&g@LbsADo`CQc6!?YLL*VToFIRaUT5+CH63f5%hCxBu8UF!u(obaU-a$l4b@?c3>} zwVF{))pB(aeU&@RkJdAv`EaVovtDd>c&c)J8QUeD$`d#CNxwGz9xlAd&8G8Kt@Osq ze<4Rs&NIr4?B0;@*ik1u->S>^P{hi=Q{}a!8w_tosV!06rd=BT+HYadBRl@DOj^wr zYY!~Y-*hc~?$66LlC0p9j229vxz%~gyEDgS1P^gvvwy#x*SXr}JWBBhDk0Yky|}-B z|Fcx9x<3^@bFD->J3DXfTjAvs%Czci+T`yOToNxW@vQjs@p!6e_U_36`_<=FJZfWF zY!>k~Z_};0&+o==tFJuxt!)=yss0Y0{8_)>@0ZWt_fu`(k4M~7TN+tB7KjUhPByCg zBeTuCbN?ES{U-`pw`@fur+jtMJ2wZG(`^u!crwgmD$CfLqskvGIn$Q1JsP#Q; zEr5i9L$%^mFX40X2W;0pH0b~h6ICfQ7S}xJo?DeA&GWX$NLh2`-N##A=T4aJ^Y<*r z+$U~@R*_aab8ocyeY$rp!`WInW$u)po8A~#+t>YDzw?AgbWbR|^v72%lPgRrSLHmK zpsvqp4LW=%KixP|93w$2*xzq|oW*_iMLri+}a>^sBu>jeg4yvIYC_svXLP zHqu`xvs|&;yk7j?0k7R}_DgF&Di2|^oBZF>V79X0q2C-LW*7rTEe+v5q3&DX*z4)} z?Jobi>i1Fge@&}zC0~`^k-lm=OFy*Wy5P=vq@zM=@!uLLSH-RU-wbEFg0`|lWgVDQ z1mqa&H-`vtpBApN`meph0ghA#Z`I;+<~m^Yq;FDNm<<> zp@3V3(=cvnWeGc$uqg#_mAE&^_h8&o7XQ2^QwLJ@wkDN>4$^W+*-*K z5eWnA9SAp3;KO$_T`esqXJ==JciQ3W9{l}&|G2mQUXgo&x=epvJ#zB{ zKeuuRbpLqFw!M3K?z-%v<$rhCe)XMqwC9lV%>%#Zhb1TeS~6Rw=O)(ii(RuD!UJmG z?R@^>&*$@ppB5cV+pK71C8ajm)4J+%#p`dACHHKv0L@f1?sG>OO%s|Ql0I8)%`HEf zL+a`-e!ad9QNJpd@VwMZG!@I*+|cG7{#(vx8@K>KOU_6mDxeg(DY_7LzQgnVjjwxm&p)(ttsuMjs&Dl@&GB^|KUKwYYO9@&s2VC`OR)~; zl?sfz9M5NQu2lrheg&||JP(K}lVYB9Eb-P6k=*$q<(o8SJbo-FKfhy2;A6wLyB{B& zyoI;^r}qOn&4pbi`<@>-c{lpwu}7to&NO*yragYrgY_t{7p9=Onpx`>EmUz}dMI4* zAmb&cMSGu+V(E_g6QmZYTu$KODzyF+oo4g%*KUiV#e%POqYbt%u=%5eV>H@b=z-CH zxtqEsT`V38tU0!rUO%kH3RTR&lA~wE*0>Q?9^Y=Er@9}VZ!ytYxw7%7? z(|c$2ifPZD?O!A?z2fuI4J^V{LtrG_sZMoVHH)iMl6%@ASxOn%c%ar)7SxfIt6xTb!9R7B;RO^a&I`PYW_h221 zD|pROaQ;g4@oB1)892X`F#TODV11%T@mZc&Q0VTn!XHkpvU&2n_j=vgQ$NmMn&;R2 z4ZiUJxr8WjYN!jE%aCLON_{SF3T*!SqBxFg`)=6IV3_uF?kS{<49U(Q5@jl}%BE4G zcn`-)+j~AzNXPDg)Il^~U}X{s-p$bIiI#bgxxd63rOop)c&py;{l200ciD>9*RF-V zZ4G|4G}!*fLH-Yyy!Ba4W>qg^d+>l2JLPNLajf4`ZQt242cU*4mPtt zo|!(+aev)krgyF#W|-I&U4K$93~yUBimj_&;s8XErVgYXIU2@Xx2Gcp?4bR#&#wk!yhaaw)B zuXUxtTMi%B=!Jdt6SjFJYJILwT(<85zvJ`LhBB_j2Qm_M7HVA)OIn!xaJh@;6X#a@ zC9^nOIG#8aDT;quSNra+`R{jgHlMeBey@e)dSmtX<5B0MvhANgeztD+c{{^3Ci8zv zu-{vGAX;U;O##buy`vqw6O=p7a;qgCe0KQQ4QBT1i%Tjr)qH2QyyP}hO1QG`&!Jaq zxnDTvs;zpF7`Mle`3!^c0UiT1s?(t0AQNR&H2pl6f|EoO*p{NBWbKQD<)KU z)f}JD$j4U32Y6y4c}%V+p1=3KK&L=3@}{jIm&|eY>hi~jJ&tX8`GfJ#``hmq>P>09 zb1yQ(s#GXlzpRvN*2j<9sTEIONIrJh^sDc{WAC~icD0n`x7u4dB)66(GH81TZ`iUZ zPJB!BZufV*Gc49h*j6lkU-ozguQ8e<&oCH&$V_sWJ5%fU-?{H=j<52YZN__dcX_{B zaA@qmD6N~1CP^l+t+Qdf^r`Un+n*l3y?^pdHt?7I`N<%4&Wt(I@r`wX%-v7xj?b8+ zl>O%D(Qqc#%o7Vz=lQ`Fq1e z%P%!7nQaDRT7zT)8uci};f&SPlR<{YU#su`o@eSD`la*cYA3z;Ln`NedM8JK^fj(K z;jsOhi&ks>yB~!eo_{R&UJ_Vk-?q7gQ|Did#l%~p?$@P?8LY4CxUJm!%v&sN%4LbA z1|hwsCAatg5b*Gn>{}Y0oc}+6(Vk6jpEYn_yS{MSHw{057hl}nSH|_edX;tM^zHYu z1>5YD<{mse+i+zGBcGS_mKO((?YzA4pMtKPz?wsME#Izto%JTFgFc8^*b!{wkBFX8tANQ}vAAkL&Dm&hE)~-7boNw&=QPwkaqrhYHHx5td=~hfRb|Ilx zx#6oZTf(u)%o`sE@P3=(du$J9^M;ML-Y%<4zr()&r(Rc=*M<#36-7y$SJ@L7)~bH~ zQ&)I;zwtS);}6&F{HSs2RQbc6NjKKs-6tk*8Z>9+-w$i$|L-oeY?>^;FEg_4@%n2e zk?i_+&SE5TaLR9y+)?o{sbt$qk4dN2?%a9PYsM?%pwy(PlUGjC)SJne_Mj_GL1e`- z>FU)Jr`6lK)#}}s%1&0c?dZA|V*BA9=ND-snfM^8I$wP{W0%;B{Z9q&1Wo9D{eDK%&ny4mTw^|FIIG}rTHYf5 zIcz%mjMLs&ivImD(^l#Fc6)`xUFv7`R$Zy-(b~%#zxT6PgV2sLZf>4^`KDPKk$(>T zJ^V(eKpsoxJ;PuuaJXTXgDBHQG0tla3JF(TFPVsNMb>T-sdYO3t~#@)Fb|yJFD#YJ z_$9IXyNu)aKj$A_J0CARx9|SqaDS<5l}}>rnU0312il68$CWeX*H_G{THm?kyVd^_ zv!z^bZDA?DC*db_y5s1qmA>kSJ0GfNn!TDFV3kl?7gX2@H#f$+-HX7bCxbGf_dZgNp0ZoXgzedJcQe&9m)3cFe8h^|iB6UVc-Q zCTe-j%z2u!N_w+SI@^p!y>kx2-`>{opRHv}>Y3yr+I;GTqR@(vv|H!ex1_|r(lzP{ z`1-oSZ_P}r&Y(%Qo7O7kSYK?qbR%YUVaCS?hfbcmasTn7gEy`6mPH;)ntJ_&L{oeG zF`ZehyY7VD+!tJPVCk}B$CB5d+zU=0;DACZAm^8{9VtKI+|Kv#%F5u3tgNOTd*j#4 zoi%f2=a(-fOO`H;T)L+G{k^-hrfQW0zuWgaFFUc}!(q=L9lgns;%v81&)cy2*7oe% zUtdbBG%k4&VDtHmamDMk+jVyTImTna9NXVGJAdEK*Q{p+u@rV-S2#>hXjuNSr1S0( zM;$f(K*|IqWWxL+qEVq30;nn3MOK0l}hkba} zmhb;ge|hfq!r2wYhpQx~=be6X{oJ~~?U!Gksm=Rn{qbR&ac|^ttDgm%7CxT)<<{o= z-aNm4SaD@b?U!qoTP(iD^SjrSmv>$!n-somyP8{iY}<6h7cmtFXC2GiwD|Xxw=*{E zT6gc-#=LzhaYv7KPmBosb^J^6c;d$2gue+(>~~-4x3!nBzW?#d z*7o%-IaNoiu7+EBvaG)4xn!OPPu+$(gQA+wgr&S&eYV+N-4=Uywf*{EmzKxRIkH++ zJvh{C$2lGY=5Q9~($dmng)8b)Zfov}O}YD_%*=H@=ksU5+cP&UeXX|o?bYR0%Um{8 z{fW!9e0cRoiR|vOMRjj;e!c8A=c}#x_~=bi(cxG7-sGIHGmj3^znSX(v-I(ye3?9p z$?@iEq_1n;dvg42--OlMe17ekUr|_Qwl`t&%kW;;e#h^NU%e`oU48oY=C#LPnu`hh zeP7sryya@?*KN|*&TilGJk9;pR`-`jx7*3-M+Co7v)<)@x391Ca`;E9u&Jtx->FWk z_*=R4WoUfwVg76UZohn3v~yQ1m9MTdxU?J;So`aQj(YBiD{KAn_s9!&<(-}^+PNn# zt=HXe@$kC#wblD%X3NKGU0e4~eOlk46BT=ZJx*Db(&wGlAh{z+LZI8@_3WxbpD+Ez z>U&-}f7id|XJLK!+ne1og%w{jA6;6lJJ-9@{O1M3MY@G$oBH0sg5ubtwyU)_Z%(M) zrK=y2=zQFJ_uI&-k1x&S^tW9x-1*R_?(T+F^1F9+ng85)_*LyH-PmQ@O6@;B3X$IQ zj&-)r{!9BczDktXuUZ#(edDe@wzsS1)Fm4}ERp|J;S&)Xp1(WsZjEM3zG zuOEMGGChh&G10frPCv5R?(tENH5z{tRPKTN_~o(rxxR19kFCD`_sAo5<-ed5^8K~C z;GFpqe-l!AmR;(<+jr>1j=jG=uhRe9aS2B_`dIia^D5hs!ZxE(yN%Ir*|ziRLiW!& z^4Rh3gwI{3H_JCK{k3)Tg%Oz^zzSdlUsg2!pGunyPceH*!8Qo^CHaeUz#^tcI9=srQ-L0RqRRd z-8lQr3%gQlwKeNjZ!cXlTfZ~B@MDrn*pxa0q4%P%L*svalumd59sKy}>$;?m%@gbP zChdLo`|D(mbN)Sb26f4AJmQs(^?jM%p?`9DoLbUlP%!pvRW7Wn`FZe%th9QtYH^Ga z^O*yphZ)p^&+ZQTJ1Oy6&s4Qf4@I(1?oIvl)V%KQ>XYs3v~P9(`1){#U&A+b7f+|NZR~=j)T- zo_-m9?7`A2$ETn9@ztUvepk%4$&$`{>?S|Fy;}d}W$&AUc5@!>oU?CklGl>|MLo-v zYkz&b8Yr>z{vPD0{L=Mx)%)xIN*4BpzYhNB-Kbpqv)52?&is!*A-qlr>s#}m99{QC zxLdyG%UjXcq4(Fz3-?W4IY|~$V<$FDUimC`<{AC3Y5r@2*4z2YPl(Ii>L$3(bI-~4 zKEd41&67)0<_F72E>!rZ_%-xN&#T^c^O~l8=126(AGUO>mzl2-*Sni@RJdP$?&+uD z{a1DQ)b;Kb?2_NQHhFH%3W=@j9*0J{U)_6TLH~K~F!_GzucV)A7Y0e(I zrMj~EzaMLs#@FS}EZD_wt4C3!|N8uTH6$WW{Cx&V3e`0wCg;xo_>-WbAGa~?>r(ms zHf2lf_wTb3dVYMme9xWyxQ%msrk*K02`VXhn9ELv=rmD-nWGt!)BwfXky9j~s{*!=j*HAl8e z|5H@d6@i%7yW~X^o(E4=4>JF`b@OX;vGsK!_v31I{rs5Z-Ft9t-ly3<^VRJ047n=z zY{4$?fmFuli1lpUi)Ceyr_9389a< z;{CDnXZO1tU+}Bs^U_zpzDlp}ulRap#vf?85O3f4;LkCQnqLQh9sD6XKR#Zz^Yi1= z{L2<7^Xue;>@;cG%@bAs9HF|okueSGF=JgC#4D3!>RaLm<_v1gS zX8#ilelOXZz1et?&7Ax{EW6|W@bB4U&pWyPga3>8&8+tI4}FiPG`v#Ia#?xfXXp{x zu)T<4Gy=I86)yaeW!HV@*ky}*s~M)R_F@vGg{X?nr8 zK~>Kx-pKDwzRTiY#!so@*(DzuzW#MY?7fL^E0QlB7uP?Rr;`_PcY4-g-qo+Rh1*_~ z*z=%NZ%@MCzWDDeZ+oWkHuNM5pLd`JN-yM`wNUHF|k|-5ZZN@$pJ|_7V0H zCnrLyor6C+FY-QCoBr|DQu!G7#FRC0e=Dy}uXB0H{+eC67Fq_!&ADE&=hbP8UteA} zUtaES{cis1b-TFc*L>;>>7Q2i&tj(3(su1L48{dZ4Hl?R{8G5GK85>c11JCE|1~>j zWIg}*ZCdXNo4I|AN6jBB6KoEgG27L1rNX66nx?DY3pXMDO0lBo8((lv2|&G{3BnxlAa9jIdj)2|Ngfuk3Dbi zKbBuMc1-encL+|u_qzAc$;Th+#c~hrzH8qf=-lq~XTgGg{fR&BZrG(SET6Z{=Y~tl z^waC*Hs80nQ?RV|LEF{jE4Q`oJ#jyNb8BdHS<%hqzdOa%KW4oI)p5%p72J2B{e8Y= z*7qX5d_3B{x!YWD&0O29{{6vISAKO#>bTzi%71P3$F;vdHHFr`DxEBQceyyYJl~&( z*(f@mKS!-zZRV@+wZ9K~?2%t1-xFV7SF0-g{Q5MB&G9+zkN*7l)STI$d>~(@uCVS~ zru(l?!t?Lw*KP1iE`B9$S5#bVn0iV?#;Szl_O{&Y;=VgIpU?hyB)-2RJg$<}yjo<7A~+`%&^n;lE%twvPTcwx1X0^*ECz-bV9`bRY!iy+o(lvoOXMg(7|n6 z#p3(J=P%=TTEFcJ$KOY#b2N{o{1ho`ng6GI`Nx~n9`9J`Zu+aHgzfG=BbF2PZMyD# zk2lBf;6MNGk?0=TJz}b=&NBU;wsp2{!MAyD2gb}uDw({q_h8HSrqaiUx^+#}%;%h3 zFCF$ZIow|)KmBs{{OJ-UdV3PS?hrb-YFmkQRS&eup?n+E;JCBHAo1?8cWtGgb>Hs3 zIkBoNRVl){I_}q_uWyez?Hj;)b z%-;OD`E{j4@Lm3EEruuOJj&qjk)N$(XKx{VOr`kI;d~iCi~WWcH;s?V@*m5#iTir> z$D9p*f3>cyd?%WH$^7J;Kizf0=TwYumTb;$Fa7lNihd4gS$k+`sDziWf73yQxZ1B* zUsUAnerwhvV|mGI(YxE*`4DvF<|Cd@Y&&*6bd*zBrO3K$QQo6c-KQza$J9L0Q{z$Ta{^1=r{U3aO^y=r%lRuv7 zt3P%*S{(7=P2Y>77C8&w?tZm>?Um^Mm(7RHPP%Wg=g}33y-9bEB}`gf_x8)5V~<3) zCmrRo{vLLJP2^^o)Uqb&tn$Q9o0PVEk?NfF`+pPn`-^YY-+y;||G%2^|DQX?74K`f z+Ahemz2EcMPeiZs#qI6->-K)T)sl9tO19dh!$QmGoJEN4)NegUHQCl1THWkie*fh4 zrxM#^_xOFh`SRA+qt<+&R+9Dnw>Os`fB9tf=40ceib>{cbzi=U2Wpn_@~iHAG7$npQ*1SWX*DBgmy))P?}iv`|b9}>+An&*L|LS|At!7+dqXy zSC5#Sp23*5z}x77>ddN_Nk0^A-S6G({xZe8q`Ks`JzG?i(}@>1Wi2J|uD$)|{=K-q z^;3LY<|kKwu&=jhF_wRyz1eQ5Y~eC})-v%7Yw1nrQ@meUOzljVo3rby`sL-bbrdZa^jqd{9_@F0s`NRNcP<+a zt?Mf9I{zeo>dI|b>h`Yt-6_8Ow&2@uM_v`)`kDV;VouFA_xe3Cul5}2-rT*@c4O6? zvVX4eN`@9Ud$!vP-v5|%x1!^E-`yEP2VZ@=^JvPiRp%=Vg|xkdkEsOb-nja9Ls@NE z#BMwL2;pNYn?LLS`jfCkSA9+J{v(!C^DNAF=3QUC@5t-|wV6j&FP*(_cFb1Q*L4OT z6aL;XP4qF6?2r3(&_f!ef93lytHim#?!MvN8NSBzzKZeDq(d`P)MlTQiMBEP^R9gV z=4me4nwpMvb#`1_TmiAMz2b2d2hAqF5|LLAzWYt<^i0OI1*Z)ksLs@quaNV4nHC!o z%|5&Jpz7bkXN#Lx*h;?J+adPa`OS}c_KyxfaQR}jmp?Un`=aRWCQHiv3;#9*|KE}S z_3?VK^X#pYQ}-8E99?Nxb=2yp-ml52-o59a_@DaoHN9*vGcE#YtP-__qXot%mTG|wMZK?SEo>w!1eonWzDfJ zKj*b1Zb!jEmRx1;ss5{i?AN%&ZcEji@bQbc?e3s&p0hVy`JEa)ZPmP6%fEH+ioLzg z|AxTqBP*;DIrkegpK%CJJMiw&s&6Zw|5^IwgU9CTWyjTmx!)g4w*O%r^8Z`>2mSxf zo!Z&i8%u(MsucD}Ik2e)9?cJ0WN&lWbkU2Q0gt=c*YqjM{Y`mM(Q7C;UoF0~&o*$6 z%ydn+mCC2s=Bb9foo8A78C}Tz+`R$@U6J&`s%-tQR}r9C(z>=X@6fE2 zvTt|3+9KzK{c7M{Jzcx zEr^KB{n{LNB{h1Qljgj-mFeN9>@tI=Rqf9?9dtGL_m#Rp(C8JXbkbyrmBtAN7^Y00 z-ro8LG$Io_jdAX&ooa5l`iV_tC9+um81b8UBOGK1qP^ZCnvuF(CG@`XcV z&Xh$n>#q3u`u6%Ba4VU^Rk^lsQuWL2yB8eq{x01fK1XVCc+Q?=PZ$4QeL3sS9!Hgs zzj;dM_SJ5BaWI&@QT)1M?fv$OX?CCM>g_}&%}pM^ckemaYc8^AL%d$q*E2o4EUWc8 zik~0$U7y@5)w%i6(K;oYu7W*3f)4v1SuegOx+X4XoYel{J)PfP?!a_kyifB# z;Ttje%(-o|_szbu`fSSW&7aqQ1Jy|38_P<~=gf}T{&LCtE9)P>y`{FsGcDcw%S;2c znUihJXU7%7qixQyH)8Fx@0?pFeGHsc*FSSLhy(C4G{{$98S4 z|NHCfk5}RQz4$-sZalYq()_;| zWN-g|pTNx$56#mWBwwuJxuF_-m3zS+y^fD_*H(y0fA2rGJ#P=E_y7I>+4a{(_M6*T zG&kwvA`xE?@sm zwJG#%#Y#l=_4reF@uufX?caVetoiVa(`G+s#ort)zAayz{LbgtZ2jY0vtcJY*ZOnE z4xE3YxV`+x!puWue`glo@IDz*$+P=t{-d+JuTynSZn+v*xA#cSqrfAtk503)+izh# zKhJPg-P;el?s!|@D|}&itb23!Qds>|eeA)L&9=WD%eJ5M-ea+Q#%-7L}9X#KX9ec{!4Gg5AEmY#g; z`IGZ2>RZoP`tj~ zeE1f))yVn!O8zF*RJAppY9F&+E_<&Qo_lf^XYwS^J#n)P)Mnh*msv&RxY`w?7qUr%?Ud@0xc1Gj1C+RZH9-hbBctlomzvi*Np2J7FHQi*VXPn7T|9be@cKc&X_w4&| z=J~qA*VpahdcXI(+_`!G1zu)qnka9zRt>s*!94tL;0LC2a{cx*R~^3-n5%EoHACp> zrSm)X9D8xxeUU_P&-7;FfZ!}HDM%rXlfqun1@fg2H`$>E^F@NG_) zo%Nj9`NDDU%MV$7eOUn>U4O)p|Ui9iKPb-g@>j2_GZt=uPKaj8CfETe;=% zt*@33zt({o9(~tu=UJFn?)m0Z_Ur3wao;8DVt1Q8OAMZEmb71T=aI(fDSPMM%%@w=9-KpQth~)fw8Dq2ki&V`^?)j=*O)J)~KYH<$vd7EW?LNDL z&i%hNmm}?&;(GU4Q_om_IMiSGJb%60$tNZ#Qt@xs& z<~xPf|B^X((dw0xzTAH`*_W4f&s99>yk&GW^V9r}c>Rd&Kla=RI{sLE`K<}1+a;FH z)0zCzIxf1Z=i{T4Gg&h^!nP)dUw^#ivS4lJkqI2vH0M?P{`xWYT*REDYsn#Bt(^BP z`*9^=?kibCw(SzuN^HwNuKt@>=oM>v4_m_y6r^)`x1Q&Ht`?r#xoh^m$#+)9Z(qOt zZb9Csino0L;(H~wXkM{@mwRO1t~Yuw zK1zLn)<$bGbxv+tdMy2udTQqnUl#4Zua|b%dz`%VMSpLLmQYwH|Lqz4cMP0fxb{ci z^-#|!e^U3sI%d7$FVOg`NOHAIeO(u45_H$-WT4|PY7t|$syJ9J*>bWIU zI(eVxvfF{T)#i9EyR~68sFU<&L)LuhXMexn55JoHis|>e-S3ZmnJINFCF@}9=8u>2 z`<=A@I|Ms75-KMPBi}z;l|F=Hk+gryU^LKuKcs_nkbL)Qt4*lACtvcm-FNAJ( z?fb-0_vh^ShabBAAH>&{yOb4!1}D!rT$0$}y=;~EwIBa1#5pyzSKm_8lYPHrIdkb8 zt?to*x$zn&J*?T)qG`B2nP*`iPv2EMrti@U}iJ+wm3W{uRCasL) zxfQDuy62bsu3PWJzIPXIejWPG%uc-;TxYmE_7KtkX?RqlG-amF{7dsRKrR2*OTSrO zecX9<$z{2Z)<<7m%kR3}@^*#cj-$`b`Sx1~tJkIEJucpS6WSQgdwlI_RnM-NTy?4X zMHQygDqjEkq36!?@yM#9O<9RHva<*|5d;9*<<%Yd&aM~Ne|}QKaic;DYy9JdHY%x=ij?_1RKVrg97h> zI&(OvuYzDV+-IjUXXjmv6nrYpBqJi7L{SHWtsqp{l+44J%s#KO=0*!wJXM$S#W_Q2Led71G%&Oyn4A*_S`!EOW$v3~2=t7F^>+_D>yt(!DDQ9okbT)iayVzvH~i`8N4WugQY@NZ4pZoS`puF%Q@eNXL=ygT@x zz5niA`>@7n@HD&1M8^H%o{~+{_ufx8-ftl}J!;p{6|Y{E?l1gt^yRzS8-SQ)YH-jOmtxF+abSlP5f zi=!+1*Ka=l+JtXwy!>RX*F2@$f9(2YS0FwAw%v=4kGqfF5H#HJ@q%2@@N}_E}wv0=GYYxVtUjZZ2!cq;#Gm_xtt< z_AX{utLDk+2Un^RZ1<{Oubp9L4qmN+zT^okIDseU))vmQXV0EEecCxVcyg$Cd2&ix znv$)pY-VO=nC9!dyUULs?H1RKou0C4M*ghM_5VJv{}8&0)jw?Eo2}nJguglT@i*J! zbME{4A6QQG*sGDeFvxdJ+v}(M@Ag%<)yY17ZXaK;w&RYo+yKb~J2GKfh?>#*10qDp_uBZYB%0Ca-*cZm#pGyXE)qDlHPa z8NO4_ujXsqi}(pm`>#zDWZrhQ%wI$_b>X&eQ{3%07H+-O{dRlz!Il2o6~7!YgD&8B z5Sc3``{x)>i6>j$zMpB+i!EAy?Gol#`b^Q@{Bl~4_bI|dBcT6R0>{dk zJ5QV~`&Fye;-Jv-CdaydWP54F-)ol05dv7_v>|9wmCiBk6a1WirVABU&=g4eH2I_vO3L5#=WInGg#>(eHK z+NbX%_z%8%J7eCY)~1e{OPAhq9LreIt6+A{$1%!J?xnbbzB;dQ_`9Bq{8vL0Ufy{r zF>g}aoZI1!Yb4(8U|nrs{ORzNKZ+WvOGS2PwoX00d+yPquI!6?$zR?|Bvt>+KlbjZ zvBAgw|JN1E%y%-MDK0lU{``8Fd+$|a%jujCrn~Ph_HH-hWHEz6rZ(S)!V7_)vs&}dNYo)&IjTr|l zuISusW1BR8)tv_A&&Lw~U5jczFstxu_^E;iF3f+cuJ)Yb?N7S8#;{`Vw$hc80}gX0 zJg~5_==J$>cEQwTzR|{glPl_O%3YDM?Q(ACyO^!pmOk6yts=L2=koRT5{C0SFXcvm zD4%~ei$A^aM#$gS8;>%Uhb&|%k6)k?yoNDv`_7YZ4eEYf`S|nTYKi^Ztg_Z*t(m*? z-E{ZehCjDnW&FLQW!h$c+@9<|uP`lf5R&Yj#=K@Y6 zg|tOozEhHHue7zXWv8t&(f+lxZ_n!36BaYIBp-o-a9s{tR{ZfRTMv9X{@zuw*QEMG z%A1Igrb_$&&J|{vA0*bY@&0+dce~>g{o;1tW5J&rQ@!JzD~eu3&gzV6nwh=ILu*^k z9mAh;JmvMB?)`he!XI^Ia6z-VTb1 z@mcQ_wN+}x`Uua>(dvn{Q|HJ=^?xL5@XYV*au9g`_v7{zR;rVZFn+R@ z%`SU)Y}U-fy0e!WhcB{vgj_&c%AU#mBb&%9oy<*7EJi zx#j6@$D^!jH5W~pn6+Wo)a9PV;)&6gPj`q4=M}k5U6rU8_U=yS^5yM2XKbm^)>RC2 z+&usA@1$Rs&Q82}V%d(U_DW8p}CFY?n-7K+T&RP^= z)A8!Y#$=1SKRc#|h+bS#WNYQO>{U;}Y{>++bslU?$L}pK>^&;JPW0sY57(9_C=@&q zjxgWV_5AI{YZoL|2K;SOoxp$E+x1@W;{c!2%r|m(&;K7DlBBe+COJ>K@N?xvwbJ`V z9!nqfUf)>#-S5p3mY~p5i<>j8AK9Im9oDu|b#tJr<-}KK?GIfEwXAq>FEK2s#P6cS z8`=G>(}GqWxiZUA!lXX?hGgx=|I3>u&e;B{Dre=And_>{65KeK^3RsuxO$V!d=obz z9pCf~tLNN0t0>Ytx6R!(tm0PDn~1L*Y?lhM04$E}%YlYT%#XLlVdpNwrwB(r~0(QAP@(X(gAywY6yAnDo+ z!-~(-j@}5{#*)gdenCh``JzcV_qMfl9e3;-x3B%PT~Tk-^HcBlmDHH+mf0M4Be`;Y zeLDBF(6FR)-uaPl5B$6SAtjYRCVs-JJnuK!+c$PSUY21Z#wO>I>dRY}E75H!+?Mb$ ze%DdicBjduJ-6iAmy|dbSmep@O`mr0;})g}QMCFMjyXtCsy7gwD0_}6-}QGC1+~3yzS>! zV~U6~VxL_mfAIUIe?BKq3cZQ2l|JlZSNUvm#NS6oHt7rJ?i7A>;9n8*HKT;RTYJ}r zimgk1Jn!b_l~RlNcZc{WY5m(g>6q0%dnWccMZIH5*UzUV8GJOW_*S&$#uhGpH=i9R zOZ~%U@0hWpihthzdX~Z}-AMMfe2bRlYQm=vD)r3W$dxa<(mgY8U2;tBn_HiL8;1E; zPMPypuGGKR{pz&R#2cH6uGp3G^X1QB*16S~^z_EGk2l|~ma8`_PLwrQz46uNt@k6Y z$?}JHb#fbieSUkxd&c*L9VzSI7J3{%UunfEuWQ}4{N2m^);%>x#ipG3Wt&xJCHFVe zChwDh;3@0(lMN*Ejt9EYIp1s62xsQ)(YhX#?f&BJhkFmp!EFOr z72D`{;J{Mv=?Zb|d@=|2)&5?yBl1r)4zS*?)RF2$Kch#jbUuFj`Ccd zY$3kHGXLg7?|6PgW6|fDU)8q7oT>RLpd0mzxkuWFBl-FI1FwFn&iLr%?2@Oswet4f zA}hD^QQcRo{T|faUVdnMqeWT3KBm*!(gwFrC1hsJJiH;{uycg!yMyz$N%c>4o98fJ zY+khG))WWrgj@D)*VDHOoe(xGYVcSxYx@fxUlU>FEpzkdE?lj2em;wu?+(>lQx)G& z-d^+7_56$FUAA^yA=-t>XE$DK;<&M=#7ym6wD&b{9e!c;lR0h{ntIVDw&A@Eukwm~ z=gw;CzBKW=J8RS7#`)SETMmCad}j8eu0w0Pg!li=-#7b-@Q3M#`4{~0OgKC*H^RC| z=H8-jdRhAG_h?=d*g7X?XP@aN`>36#j&yJeH>OJ$^!8gMSnwU)Sax=6<;5G9H?3dx zD^6x{a-5&n8Xz0K`v$|0j$ zj-q@0^M7C5x_ROEm$?t0->A&i}zQ+y; zZhxrb+seCL{?J0j5}g;DJ60aQHtlxA?Gw%w+ndf!-6uRjDqQB`io>F(=bbH-2t2(+ z^6JI6hYDBq9W70=n0VG#?`z7+zM0=UZOl}xH!eLDx@JkP_tn%m*$Uqew{A@b1QSoQ5qWVU64qI25^<`uWH zmv4v#&FZA^Jh|7TuEB5myz{C+|J#-8qmu6)+y7)@;Wg)ZE?Y{!bcf8HvD1s6>*n51 ziDy=_OtYz2EpSon(80G`(!8#AdVDshGfGpu`h4+@pA$^K?q9TsYwN2Zt%VG)UcU}V zcJy1YY#rZM#>D$|!p745wIw23w_d%rKKYUOrmE9&wnyvE39QkI>uf;|%$=2Os`oXlk^QS!0!B8=|elyzIT=W({44dSh1*GBK7OB zf=^$co8NPc&1HS|thez*b=&i_prZavSr8KB|ZH8+cl1A8yjENdfIc+yhLTX(mW$4_?KW!pCz<>;3Uzutr%xubsrR?*FU>uy zd~4j};uzI*maK_;>cq3K`~BW6e5?LWV=HX_JXzQ~AjE`$nXM&$|DE{$TWh-wQm;nj z{C=FH-Dy@?sVcWL)Xn{0fpSyH@Bf?Iwq!scYhwK5#;!E>D{3` zDL<2wULRMMTJ|+cnrt?x7MZu)LhkI%R?XmfhjpX3C2~If$Hw=ouNW)t>?CVW4 zvrMNce~;TXvxt^aawB7N7Ko!PLc$uZ)RiRfod zyN(-~#gn7GZbj>eXHGn_(I)OtXNutwiR-zrwE(}bi%d6Ic`NYsrMXA-P4oVIGGDtc z-*3l7t@Znh=Y-l>eB=((yce=3YC6}UX|E%S-5(yceSN_opQ-3YjHbrSrb(*NAB;DO z>EwPqQdm?kdFtC7Bl-42GiE%JxY0MMN#@Cg!@H;X#`G=j*VGo?eX^A|wOiKsz3|r? z9XHjFMCybm3O(JpEFdd1xpZc@dtC4Juvo<+83(yw$kUOs%4c5J%oRz?R#_Q` zs)eQ=3Oy5d_Wb$ndB6R4{(iSR+GWP0X_b|?_pIq=59l-vZr7C&lkL3HS?01~**4F# zbpIE(zrL=mihgh;_g~W4kdF*niqow&)g(F)cCwj^Y(jO_KJ}=z;*X7F=q4o zHJeXc%DC8`ZQ@>fNoIFUt?osEvnp%dh1Xu65j#PDde~bfmKK2pGgp4OEVb!n_?8>J zDUE7T-&MQo60?23u`++1^5)bs)@{+hRrEx77Ica^oCy1}^vpgHyAJcr)p^!IT*oZe zGfF2Pk-jD){q}y9RA`>rT4`;Ig@F-YH#j${YEAI2Et@_24xe!Re9Lt|a#X@k*RFBA zwY=oMk*xVgdG=)zUmpkPEOjhyzHXNIO<f9l>EbaYLKp>*h!N2+q~bmEkDY8AJM>&Lki7jOQW z^_zE>ty0SDGazjxQfx*OXRlY6PAynD<;=nC2CNyo^j>tQ8 z-e;GntloQKp?Smq6DJSb>~gG;vR$2#D|ziaUZmF8%BEkH--Rm~IT(r|*Gqrr z37I)pbZOLdzN`COUahjd+jq~bw>K3Wkzl7Grv^~$f(1XkOmR4?yvjHvHFk>9#;TW> zmcDos>izBIl5Tg@yojlLej1yL)75vX!mFC31H*;auiO5!eirA`jmDT8Tah&%n0may zXVIx6E2F$->KxVmweIU@$IlHN2p= z{b&5%eEBAq%dUohr=BXQ`nsU%>w|+A)stcabv`8!uUt)Aj8go&_%+IGUK7NBbY#^=Rf(Mgnd*AbQjxX!1(SDIRB+sbt-CT`(_hxqjO?u7pgwpqZm&3Q}+N#TkKmEEyl}T^W#(jM0=ghLD z?xcX`d2j?V*wO{bk{+kdTv^1-9^kV5lX;-hS0Pou-Iu-BO!g}O7OgL|u=SVTgg-ia z+0vMvK>%}bienWR}yF=WOoo#L=bMrQQ2|CKO z2G?e9gslaVk{({uCVg7`LQQC8NSEc3MY?7aZA42is>eC0hjOi~{ivk7Y*p^v;FsI} zPy1}4ziI8=L&iaujWtD2Z~v9;Q#ctkRRAenu%;HPNsUWXf{(6RK6A?VEom#XF180R ze8?9#y(($iDy?9JYgVf~JYA(UW0r)h@j1523e?BIV;X2V?qW#~FQd>i9&a5_o)@d? zZ1+8Ra=B8X*5rjr)3VB6ome#8V-MHNyJ9xiU5-^L87s3oM#(s+B+PcfH%$W0<_CCU z+}I{f@)6}cKW~bz@51QMvsda}bDhc=YG^jm!guNRkV}Fmujnk)W-+^cbaSc2Wo_oY z>;LgoO|mIjC%63QnR&?V`?Q)$4Y)y;9;`ov+Iw^Pi)4<;yM4vQBK8I_c4rs;e9Cq!CP>wGs=y zq&<5D8`B;8V)D8-{5bougS#W=s)OS{iv(T#dK~AQVpY2Wyd}Pw?WhflF$7sdA=|U?-TU*0~OqG=nA1YzuvtU8# zk7A417;tP>Oys=UY~uV?)@#pKSeZ^P%j?wYrHVQ#-HZ-JSI8Ug?50;1bed zMx(&1*I9w#{^DAw|`kqT=kwQ&zSj)L%X4XO$Y1Y%M-!_TAKFg_{8tDK32M+%6i%Il!XdP^S6}j zet5c4Ksx=>nm==FF6leO`AMa%yCb<+ev$qU@8^EUKTI)sa%UgcSHpW-+%|9-XHMI{ zqi@?juZ`9VUY1sT)|nRU(_JRHIRE$xz3uh;oxOwZ)b({=NVJ;PmR!8HSm@mQ6*7g> z4=+zPI4K^oc23KbOQsz2``$gbV`AU9!-UncBv(V@gmcuX5-+t=e;>B-CoDbi%ype^ zWJzvh@Iu~Ia?;{cl(g3~xIR&CFPRn=v#vOVd#&$g$=%>NnoH|ndET4V_m|Un*`Cg} z&Y5z*$e(v@fATW@dmX!0%+a=D&Rv(di)lNw6=0>y?CHC#E3iwY z!DH69S68{O$Ifk@Ge_pjySulmQq$9;Pln8!cq_A?ov%l7N0TH+(%o$bCk@#=oL*^-r&OHX#){#__&^TmD5q3Z?33oRa5wQY`=pLgcC zbnu?4ynmAv^BMdu<(gf4R`*W+-`)L*i9eNOaQYe^M|I_yIpT= zTlQgVs%&g@+8=?ef4RRO?LRn0ef{xuvo@UTbY?GjUn*O-v7^UbKj&LCr|$PDY5SO7 zh5gw&J207B(z}}hu1F76Bln` zI@ObXZ~ff5{I*paD=PTpZdNnL*(k2_E_s`6*DAU9bijm74DC? zdo`ADY-0C6*5|4^9sBA!Z{NGc{|`t9dKmxi?(TjW z+TrtR_4)`;V_P-QjMK9a#Eg^P*%V>>G~W6DO!&0F?~2-->=}NpY_8s;?P)KjCH+0< zvBqR|furWu)l3#U()gCGVY=og+cf2&v1X(2k?Q(Cx~u#;^PM1bPM6khHExeK^G;vq zQhH?mjGNkzXPA^5KJ(K$+SIG0xw_ar_SUnW+^_e|%+7L{<{sDn^|I{2(aVPomoJ&} z=;d0YNEx}yr{-FJEOD{R{22Cn+e6mFhv)dk@3J&neWQEb_8qtTmTYyG5&xUh*B#b- zoedmqp7qB}Iiity}bJQ+$5!xi;RAsgF-~ ztUB7>=)5cG=C4nsen&n$e`@pbbnuP#%gRQ;;YG@U1CCU7Dnvd=qL5IYP=@;}D zH~zc8U+A=T^4ki&cF7-G3?>I7QP;NJj+MDld45DEU&j*mT;AS^TvzoY z%9ozHnX&T3?n0Ta%u0scx!*tk@AC3FGCluHu5zB8{-wlsvw!T0|9I^6jlI?CWkF1< zS6TgWH7Y++JHvb}Pq25|;;y1uS7+C^tXy66;lSR*FJ>QhJfkVqy!Y|;155%O3_#6rHzC#yZTlsnO)l ztm)wo7jx)0KF&5wK9gZn{?_KrjZHF7SEoHZy7!A~qma%0r8D=QE}FJ@Qrfk1ay4A1 zPo3JhI_%6vqvG^q+kS2D*0s5CV)x|=*ZPYYIy^QVr)EjLxn&?$tj2Tj(TO!FhRY(8 zk3BdWEtVX8Q)r6r90za59+%5^bZ>0?rMPD9cb0p7HR7KZX;&8aTBix*NY4Qd?4&S(Rp6^4tk0<->g}`gnI2*Wai; z{ZU}rLY3trm(@idp3Hpx;mebxXz8+wU!e@UH6u6GJ!N{*8`t4_ds_006KgMt{YcoPGSF*QXt2a&>#HjV@n$Y^u_%xApU} zi>1o%t#6ecuE~o!e!qqD$BWt08y=^7ZMu@wv`*)zvO(n^gOum|ho4ltMcCVQeol@5 zdHTk_TJ3E@?Th{dvmW)IzVAbtgt%tM;}id+${D(sopHXnE7qcLi_q<~o{-PWF6{{I z(*C}ihh4p;qPHs%`Pu}2G>HEI>M2=Pa>UHN1zwCAt z`Eu&W$z|^@-sGJ-nX9i0G=rVNc4^H{2aoV|RlVtb7bYlgzn{*3#QZqZ=4HA^E{MxJ zp6{wZ-jb>^Pwd#mFGf?&RdOvgQ<1%6A-?$el;od%!V(u}t=@XECzjfF}_}#o3qv^klUiiJYeHQ3$26eo@<(ItXH#dD-{+`dUZbj;NtQ--jXE= zk6zhU{QD<(mrvReEgOx)9`hgbD3xc$ff;jZLpgTyBxHJkkn z=T2X| zgTD4T=WUmt&oBJj@!j~fn8knFCGwSi|0aF^&Qy8k%<&&H{TDvH-Jke*)%>J03v8zN zM7J#eS1ERk=UjQ@FU_j9f>ua>eZgd-3wp-Ezc2K3tuC&9tpD47)2Wy_+tQYIeJy@; z^HTArLf*U2qOSap`f}2*pZ$;(c)(zWWQJIAqu--BpRT-?OG?u^E68lk$IG!Q`)u^p>#M)N+j>o! zTRlj5$C<>44G$HyCw677{uq&YMEow7=C+lp%xl=wduO{xHcy)KLH=bJQ>Bs{-vuKJ z!O2;I+mxzi9p1d`-1c)9LcgAa&)N!$Oa|)#LkJM$qQxaBI z^H~yk@?ov^u@I|CLJSjq3k*LLvrY`FkeTGDzw6RG>E#C(r%E_+eo=I8bBR|~wLego zowns`sL<)}bGX(!y3b$S*BMe&@uQdb3-bXNo=J?i-}vh%3#6Ylz5dL#ebTgA)2rVf zMW~o5X1q53!|bAc|JTL`o8%YYGqJtA(QigdzqVAH^UIDNYEo6RTAPAt`buiNIH|I$w*8h5WhFTPUoxbCTii}ibNSDfSQ z-T&jf@O+z#FJvsYNdA2H|Cga#w~N-_2ch3CotF__xhGzE{%gTHZ|jS7wv}Im@0589 z-d(a`dY#1Fe#L9^)lapv#LE8a6FoggqEB=A`FzWJ6?Thb&$Z7ueEwv-(EqrOU#E4J z$g9mevQ0HP(DVA+Lg#(`vZsFi3bb7Z9j+1;Fi6o)N>*D%Lew32iQMW{j1A%Q(nVTBzezz-O^@d zyG8sh3#~a@rdDiM&}F}nwz;NrOJWN5+ylR-)O2Qhv#ho%kjYP3*_Lrkt)+bJ?Yd}r zu4R2EA05i;5sZ&3x%y$wtC`L3^Y4}y$#2WqlqSdR^XGTlyd{6$MA=wh<*wGdppitlsfuW1 z6k{d4T0C&8(WWIFp}iGnOCRROZ&M4Mm%*d1zA5wX9idB>_p7!k>dvyce&C9UY`j|J z-E;NFk5ro8C=0RiN#nnE@yxjw8(%z@TJ&yq#+2MX(a$?2kM0beb=9SBhn}ml`a9mo zT{pJ&PEBckU)dz5QO0E*X4AE`_}Esp9l4Jz@6Tx!jQ`E|_PeEo@8+*^w+!TNuJlsT zlR5VE^kYlK!y(7h4U>!adbg-QbpNXO_twuU3!R*K{q)&-3J=9hI&T+aEK`ik|1b@@vD1 zFkRS$Mu{!kq**>^J#rm?-R!@(KHuzuP~{7esf+GT&U^fF-lKhGSylWWdmkvBGc{TC zvV^&1YRK1pch(&@bU(vmz&y9H@lN!IBPI#wgjWZ8f4maDc4OY-_)jNxoLIYg%7Yc_ z+~%4Vn|9pQmOm!*OKHQCgVD+t+Y1VQyXCC463n~2Yl6Mx<_WJp2i~dS2n`Kgv0{bO zTC1-;^W0+MBpC}Tc43^3ROK_ zxN0e9Qq!xRN$qQwSEt{%n3nfy-H{pcYY!$?73ECG)3=K#y)lbXd>Ui$vp-CsTSdIz zI);Q?WsKZwIH%_C&))KY@aV>!mB|@l0Z$YSmBhSirpo{3_`2m@sm<&YlT+jEyRI?m z9DmWty`k{2l#jo3%H3&l^D>tfE|)Y-HcfTT@q2t$&Z28l;1-iZmmjttyb_vwDCv~9 z{g)5Z4|}Gcb=_^kTd00EKEZyTmi|F=H_>CWd=6}ncwKbvQs|0Ri`BEQhbBDb`Nf!Y zar&C}=t#eunzXO74vUIxwq|K(z2-~)+jM(vv8MaF8Hx=bk1csIv#&Jq(&;q0a0Y2{ zpF>NI&R%TndHDW%<;^$lo~yOmebCl|6UW1*T(3r}uIeXD)g=$8z;y{`%F+|2m1U-pGId-H*fm5-;BF{rJP3 zMIgOEI7_>(S@n^UppE#vmGfJ&Io?La^c7#W(Ca#xC%m!i?~dAP*0XC*AH855o&Nmx z%jnv(Q*?FzN&jjQh~`|@``TYy&80riD8Aiy->sK(HXI7MSMzzvjeyl+?OE+X{%7@$ zJvpwqvg(zYy>{;KC4Of-}-gl0L>b#_;Ms<n*&!#l27G;IY4J%?sJ!>lk!go;vYpY8-&9V`y9L`QgbCArVpD z0}YH1uj_xmewkTTEb-K;jW@m>zxl;<-m#5)giQ3gl)7@%pToBzlLG=w zgnGNhT+?=Sp4e3QT=>h^|0g?7c<<)kooSK9=d<>7ApP8Rz z@@{V8EpeAdSCGZm)EqMgXfj_S-NB=*Sssw zy0XPX{bb~xedqUb67Sy4%avzng0m5;W=WvKdDo-um^;h%MVGKEc|Ht7w8V z|I;Y5Ld!n8FsZM3&yBbKx4p4B>dc+l&~*`4t5!rdo0fVyBqwXt$E*BYy+&T;NWV~M zsHla<$@n->IG(NU*2)0}PpjoA4YOkI9$ zStmX3oNuSeRKMrkbB{g>a+zHiqtb8Nr^B%(;$=#NZJx@fj?a4(gAL36vHA48o4g_J zhpkNW4xOgDvKiG0;@jR#k~2JXKH*bYwIS@j@W0job#QTzWOtg$w z!ir}z(?48`&hJzM?J~N+D!Jq5v)Qrd9xA-boEF<5w{FsUd)~HZF;}l&U)=dl;H=(> z<hhowr-EoN@=H}?Eu zpl7vW_R+0@aj)l0eLTq`zI|@3>i;J*AAPO^kmIO ziz{DPy1v>wCV7#Lj7 z{a2q^^!~CWczxM+xes$@&5}Ahy=$rW?3a3?AG7|3%}vN~jZ6=ia=kxo>Lu~eS-n-S zAKVKw`g-kP?V)MWdJA6cs~80I^U~P-Ye$FnK#~Dm-!4Pd2#YDKj1m-uG!5=Gj*Tsyp_Ll=9HAJ;+9|7 zKFC{EmNd)jT03l4Sg*TyW{q(81Nj)?m51h-uc^-Y_IT;l+a2u71+96sJMX?LRDZOF zQ+(a*{+s2zn@k^FFQ1?mG+!*cblI~@l?#iXzcc3HT+qnZ{^{c>-E$&KdopkQ)xPMY zzufoL)>FR6t5#22nI;#`GIN%j`x(zYKQER>Y=0~8PW$U54^cCtiSaK)m1{4TcAY4; zS*p90<&FED9pVoy4plXMzp>is(>g`j+PqoEpPup7GI|-cYCh+=U+;v{`R3McJ#LvO zzcPN_o3&f(*Wa(0yYrj$=jFNk`)2%<`j%qf=4et}{b;ebL1S8O`2U~2Jhgu!?}&dc zZ@6t&^y|;JP3n7U+$?^+evv(C`p1oW;3>s34(SOBn#RH1pBm~k=O+Xd+Aq0~!?iQ+ z)w=IeYnH5%$nY{hb^DUA5TC4F+pEtzEw0XBoA~hUwO*t3PI7Z4XE)8MyS}JA%;LPX zRe1ld;Pk~-tJY1ATz+YvtlPJbXF|Hu>XO-ZnJ~XI4&MFcgH`E=##@JP)bEh``dn{; zx~^uy>ka=3|0hl7*cLqb($Z$`h2K6XHsoE^_sI~8<0ws8ZkW&TYrE%(IKHMyrt3}% zTK@*GkXZ29NPz1~()rm_E&Sr|Ry`F<_@JvCFyl)mPU}t-$uO?2U6$Hy!HE1 zp$MPIX8nwXKk|}RHst*{&A99Af7xAodv9&$TX=KjH7+Jak-BGDb8JJpg%{Sm4*S2Y zX1js|_Z0JG%O+11(7SYNrP0lsVbkGb@!ZTeTaQY(>f1*vMcDt75awrIsi7k$)4!tKB)y`{Qa{@F$bzpf@z?H1<@b(}3 z+44^B<@R1&Y`%82TH4aK>9I%GDsP%NX`ZL?WUfO~B42M@w!ppL=gZsM9p_7y&s5}H z$;TP`;L_2wmidmNh83-X=MUpwn=+$u-BE`_C$DTdCRKCkLXUrz{i55yqm$AmrUfu< zO}bv#J@LhxphD~V?;>B8%v^pqc-`BmoWd>OaTjQJ7Yp@aWvar%lvn@Sve&9dwmOw` z*QZSG4Bk4WbfMC#M^oq3aoS#1>4HqaL1!?qQdauRoa(`@K_(ZYeG`$ai%6;(6JA6G9IIk zuQW<-1YglT0es63CfSgr70)Du#~=w7#;%pk4M&tzAU9=TCk>~*$6*1)N}eW$qgNaq zk_7QtwP41na>&gkI7l|fhNM>t3L80aU$4Qy8Q}BO8oMKzAYN!za4;+tm=J;I>ZS%3 zjb)!?@q~&(qoY6p-=Z@eqMa^E7uN3Hef!N<3uWcQGS)JDH+r1B~P(&w$<5q)<99`QttM{&$hkU`t4iUmTlV(J^#FL=~CA4bukC8t`2|r{rAGk zxpU_p+qg<;^)-IB=Ct)m+QOi)MZ(UCwq{?yaP3-J%hfk;a(X0< z*^VAPI>V-N(@ifgFN3^07Ehi%n`NZ6?p0cAM6R&_$Bb?EvOg@igcKTYcQ^2}Zwov4 z@T7B~r(jnX*M#SV2RCMk|EZrMoq4#d@L9f{)ul^`99yHq7Ju5>f9cLtd22116WSUA zY_1vtY@xefU7FGxXSeZpbi}4-49jc-`Yzs7{PXQ6m&LX#$6mDr?yfQAtG{zGU;3ht zeVMNI!SecQ)!duf?cs|Syb7%mOMSP+{45VfdTzYkbfClkbNKU>Tr0Fzy!ul6TI=e{ zUzL@WX{XPhKfWdNvO(RSiWeKZmPbZLs!dzfwe(fQ-kP6Ac0Zp8&#^2%CbK#^^mL~6 ztz~L!lbzY_h;6a-5K?HgS88PV7Al%hY5L*N!N(Oj2YGf_{mHQTY}RLTqWrXcYD!*+ z%pLwaFDKqBt&zJ@^VK4*CMT@xv$W)bn)`jMr|!IbcdEI)u7ao6_`T!C>z!?T?>pb@ zdcWw^>vn_VvscYGu&de3mU{d3#%~*ME^BztQeaS$?w`2x&AC^WzU3uZ_sci#dKS55 zk5I09=+2wj@kb~3t*rQU(e2NIMHZogaiDwA(aN7jd#*;o(q*d}R_O)ZeVrD&;##9s z^|u_GKOYXSShMEH9LwS!>Cn$>G*%e~78e!uoQR5w>gwv^vibF5@sG{+zm0w7T3z+| zdfkAbQ)zAQ+F$MqkNbHxu;fWIH3t9BXt~n+TRJe*kUK8&&bhZ|kAJx-TJdLNWx?sW zEwi&WriSkP*;i-!!zkJYa{w)2~Sm)N=^lT(e3OuhZl?Q8jm z1BdsXUvBA_5POno&+ZC)De2c67Zu8;<=6<++C2=8FfV1?cD9D``1v_UW@UzNh%WlH zXy;0MRkp0Rjm$T8Ckt~uv+q62zCC$c)@se5lZUQGXkI@(FQz}e?g!7jn?HG`_1*8S zmEZbZS6Ak8uW`X6j#W=3Z453;uNAlGJA2xELCX2S7^~p^=GD)S$sTImEbcLLd0|gh zR{XI&m}S!kcVz>m%YQ=8Y}ptX%5!z)FRP{T%Rl(fu@HRa5tD#e)X$lc$%ad`(tWrMZvwCOxp{u@5F!K)5Cv5 znQ8sM6D9wXBoEHxKgzpX;@so?21-va%7-OR>#4nV>utrusabneo?c$|LG;hB`QILF zuMfB>n(^~T(-(`Q7A2EkS1hmL>|V0_SZ1+deqSH&iJwg|9tFp4Sq1iG9+Tv9>&{#v zrhKPOL^R4j*5$={dB>w7x4Yi#Rb4S9_OE+UduyP4wv!$|mV56W^gAWoNLs};S8LL$ z37M@SqBh(qiIX{n)e^3)iBvm(Eb!{?EstI}B(0jZ`D@Agr^owbvz=HnJQ#XcT4i0) zVD`JacGn6~a7DF5$>6QFXwgs6nD;+@mzNt(udDCrwN?&&JA1RslRfjd&1#*{6yDIa z)A(^|$h5g-<$-T(q>kT|vd&+Uv&XR|Vac(CExIc6cQ11K(6wo$ZD`oPr9PLgi~N1} zdSY6xw5{uJnVsnme_O{*Ijz6w<%O^*Ii+K9Ssk7KLL*`_i^qe_J_oF$mVcLb`)Yq>=|11rvwE~ACGH6iSN@e%=CeUWIcSsFaAeams9Jr{*~J=fZsxyIGVB)Lp2JR&py<3?t!7kp--^)D44 zZ`ph0p5YCxm#4oP`}yBHlCig?@LbgsO&6=E568IulfLhA{qeJN#@(y+oTf&r>}O`Z zGpMaU1G@DOy#k2#NQg*U#Wj1^OOYDUAX~ZqnQiNTPnsn3*dbK#3fH2r4_lm8&Qs5` zioHKC`s0;%xzgKgOZR7SG#)zSv}OBt>F=wrg*P^Kf*L)OI4zd{pI`BlGvWKJoe}$A zbIeke@jUSUaObVs8(T8x-|%_fSyC=Bd%itG6@<>{GEUCzaF7!A{O1w z?XOfq9PQryeZ_n+d*k_MZRSr_$O!jLdv$!DulL51)2ml1aerBLTo_xCK9i+Qb=j%| zD>Wr}qzr=}FIklx^4%{|^ETJQvig^|DouW!QxbU7(Y-7z!S{|j*Q#&3L<6__@6Oa< zyjxPWKQ34?^t3UkdFc?(l&5pMkW)WDt}}PF_yUi*FCU+XE-3j|RAaP^Vcwt0ikCO! zw&X=L*>FY&g=~{aJ^$`Fzp2`)CHEX%Vm7{5Z5w={RH$y7cHyPHE7jzibzdJ1pMQ(P zCb*O7`r#E{)#tXSJzlQPCgi+NMC$F1@Q;@YPJraYhYK9B#I_nzy$)qP86K9XNMOSacYAYXmwQw#a>UxiMe z%<|$puHOImKWR~hcA4I+Zl-=_)}`7T3Lc+cVUox;>*+7!h@GFMg^rreTDK>@c~-J6 zXCvDq=ZB1-Rx6}y0VnSmG4-vleVcvk)XW_mR}%ViZGv@gU%QsJ?7O(AsG_#^X`lV! z<*SaFUiEDay*r;z{%}jRO~zjh=6fGpdd|sp>!fch-1bT~J9^fcFQIb}&Ds#T@yf2m zw?A9C#S4CZN}Xe0ZzpGOs;+)~%gk4HIr3)b-)+5L{eG{w{m+yBprOW>n!=nD4&-_~ z`1kw0{D*uCoxUsHjT=tP@vBhP>D=uuJk^@-!29X)sWEaD)#-PHq#icNKl8pHLCm8L0JUc6L|CuZ2&&waV@}q#kZvPk6r?#xEC*I$^!f_{iSD{&A_hOdk zS?3atD{D^Ja5-9t^9gd`c!bfLF+8IO*^1p|I>T(jJ|Gx=znU3l9wK{bmVLD+hq;lCsHy48D^;RiS0`p!U&{RdN@Z)( zifNZWUEjSvspw}#iQma1H^18*Q}>-dL0YbR<6(?7yE5bsq z&i+=lcSqUVSvxiN2I?+OPJq^hbMDoMEWaxK)jIXa)T1GXJu1(>{PvAYdqPd$42C(Y zHcgY=qVcMv`^Bp0Rny!aMTM+*cRR>%Ue?Ov`=X@hU*+6h)Bat_F43~@x}B5aR(+c| z%!22KvarOY8LJj8>zcXh+^QL?xYq4*G`;!qZy3wgYSEbHSjHA*#U00Y7$o1bh}kW3 zVCVPqkN&XFPbm85(^KUBeBv#uTk~wUC9M(-{JKkSb;hd47bI4_3b>ja+7)^u732p- zp&uebC+7F2c3d~8oYx77>2HM8}U`y978?~-!*)veB? zRdUhO*L++1G0ODim%6T%Y^?TZnFyKd)^T9Mkr3^$RWoL4EO|9!O?1fjU73=iAzS?x z7%K$-b@e$Lkgj#%VyW!gMEgIA@>VJGJnT=aSYm_xuY^50KdWO=XXK8ON47B*#cav4 z1 z$|h>eeO7O)F}q`x))Y6TS9zkwtIQOeR&}k^TJoy0Pn&;dpJ7MLDW}gb{VdLu01AFH$_xoM&V0-w-Yd3l3a6esm`|*J#d&H*n z*>>yuvOb&QckIc@$%biXBp!#!PMVP=xO&B`9Sl?U&da;6+RRhdc2SOF(QfaSVC8vk z;tPWqL(Rk8%#J+}*GE49+)_fG8il|8u< zUMyfT=F2i^EqQh2->&lY59{SJ+?_vXMDEd)mYB=ypC`61RrJB#4a~mB{U1K|-hX_N zW!;_H?{_scG!ASy64EPq;pR=tj7eJ4+Kx=oVhf#lPXB6%k7-vH+nt$~8Yg7>&#d0L zBj$FS$7Jr!$90eF;1s^pCgkxhLh;3nHN|F@^Pgin1}-u`pGj+(nc3FI_5W6Lt*kt- zLq;(8uEf;otrzdY?;S-*|`}RUk(`RarfDX+bo_V@%XIUK?(CuZmHeJUbG#b+Ss!( z{>Vw;=LS#DNcPCv*HxSg5e+t#Tg8^XSI{t&H8i|UTG-vUakH(o@BXPT|K#qRG3hg_ zNRPHufmQt~^|i?tmT2c1g4%DmMhG3Wm{z6l`^&DdJ3(aMp9?BG+)vN)%@y2oGUwOD z%AK1&gy`*Ad}Qvd$E}wywrXEbTfFjR>6UHV_jz3WyQn=ZDN7LGNZaCKJq>iq4D;&W%jZeVzPjK9vRe!W|=`mR@DVPVq*OY>E} zIIP-M(FdrYQ=Gcjc*Z<|Rva)JZTc+jKemL>b+*J*gZ*Q53h>G$`+`htUe&LPV@tb8W z`c^4c|8siuHFrLI`R8PR;MJ79lCh!QtZ{mFQ++z{r6n(i3y@WAgZ+$p3|Qf!DB%v_Z>i*2WDyy zINUGjehfN%SFmMQqn{;z+it-LnSUL3%3boUncc|p{@I2jA*oB(h1?AZI4gSpbt|{{ znJvF(pABpc;r(S*_ow3W{;nNXY-+gUhfzqP!$IXz>pKtgT`B8VWtr$@xv2f^KA_dK zN-)?p#ndr0xtBNE=W1Dq&($9*Uxi$CT`+6btb)J4zD9^E?+!kAg=^)}qes&oYQ{Eb zN$~XLxaah;cswxnQs9X%7M@kxX!2crg2aWtPrt7d`}W)COvZfshv}>Cxjxb1*>4|P zU(5CR&;(AFf|C1sGMT@&Y<~B?R^r898KXJ=g-02(p6=Wmb^VW~oN~JxYOVVrQssfb z!Y$rYE_)nN^t-}S@^WWRQb4a<_pw!nvZlYul@c^GHOyPpwMuILmp?y0tIf*{Ps-nR zUGd%3&Z?iEQa2Zcd3tufbYK3hxaz+^<0dK2ntL29ehI-lxmjIRHMBk?Tc9-5w^*_!g!}#tm7=C&oQJe75w)t~$|EvU*QymrCu6 z+p9X4MJhnm-s9!>%=2N5x9qFFOft)vZkTI#>-~$#d1)&C`AhyAWKCax>|wvPTM>iu zwQCLU4>P=f-od*h+}Zrl_VA-3>dv{^Ew^-62mZX}u6gT;DthGY=wxxR=zSsbe}d0< z@$@W@Wk1ThWKHi#nklW;JG+GMYC`&X2{#v?tItAQO0DJ=3OcY}oi*B{TkGLv%5gdT-1&oE|*J(Qn(*3e|0W%Fcp|5MwfpWYL3&40CY zg~y((_ni^?pt1Y@{W~rf2Uq*vuSoiTGTA#Y+w8$Kg@^NxUHSjp;KJ|9&F?fOzAyMK zkrn+Z`EbO7GjFBdF+|KqFO>5-8rJBy`fXiyN+~$8aDLfIM{^^=u9OpBGxl8ZD_y-wKx^&P*S{&Vy6hdXWwx39%3X7S|;t7l2BDl_$1r=~9#^Nk}-G%Hg*P5)Q%l#_vf z)osIqzJEFTJ6_wbjw1g&NkCtRrVlfjeY62 zTZKBY`&nO44@=Ey{t2D5z5c-S+ht7ZQLH>bXpNeeiRlYelSI!T6=n#DSK<4zcgJG$g(+Q|rQ}1! zcV7Ag$x9JT|G4G7F1GH-pVT$~qRFxhse)fdXSR3V_-49w+i|`pJ1(c(s5s*%a%VHg zWmOx8RUyA0)w|kieY{}%vv!lS<5W*}zsjH`@3yaByzLuDUq{2`0yC|$XXh(V{p!e_X!W~t-aaG|iah$;)bPK=boxa^yRd{XP+^bEw zrtO7WJk!;_oL~2Um+jx>Qqf=Bf@@ywoqp!{<$w8$_H7h&kB{pp_4eB6I`_oiK2z7| zzcF5?7tgm^d9R)E{&|tNnfKvyE2ifcJ$tDtbSO#B>e~C`2j}`Hd~aL+VcW&~&PuE5 z7}=l7S_H={d;Mhl(|>F8M=|!Aef!TJntShX#OKe+%lh8W{d*%UzQ6SUk7<_Q_y5a64^Z!{coZ)vxL^MFe^2J8-(R(>qcsJ#%Qkkr=sQuMpnX}<_?__sq1CH` z`(mqf@8gHzA+U|2ram} zN|I0g5 zHoF8OHh;>z^ZQcygy`?vBR2VN3U_;b@=0OHnrc2#%^!1bY?u3dUG~^FbG<~r{;=7L zo*bCI>blOsi<^wDbVqzWa<1x4MGQ-D;X%7^z1$FEJEUbBQLerwP37u`m3wQ8sLwcAehPd?gT*ZBYU z%WIBb({J(oD0syGT%q7`Y>ShgkM3N)_4~XtD{AWF;sb5(Ijm}KymvmNbjkZubB}*` z^tkxROutFkUn(v?6lH9xwi?Qiv>uiIqZE*JMdxU#SGz%z3L+lTq5MLcd!+oNr{ ze`5M(0r&cd*2qseX>0HHiN~!x=DqRalKL|CkH7Qp{IFQ`cIgl63E#~%;u-y~%{f@y z?-H3)pJ;#T+8?3b|G9?CPWGMt*Z8KHlcuXynyJd%@>bryU1{Y%=J=yQqCuvSf}!hIK3FwdZui}HKb9%2;@bEs zCRBZOp4Jj0P{-=P1df&~iB+uEnXeVIJy~Ha>Ns(R$0nw_P%3E=6WlZu9IIsqr%|DuD|`d8$FNQdNa}C?u^Y# zg65p~WW#=Ue#WHqtN^V?Wto|oHQL(0&sW%+St{xF$2ChHIoa?&{l3|j_n`SM$zMFn z@5YK)_kZfQtCWwsyUVMtqvYV@N|r^xlcQ$+Sn~2+`l-M1lgqY0JR8jW<9T|+^nO_p z`EO=>RGLhIf)6d+Yx1dDd)2CpRZ1&GLrd2ia`?zF3Hp_;FAOUEwf~sc)eQ_)YZhsN$G&*l z8_I9hJ_=rQygE#E;xVcFQ#H@09_{eIQ||A6wRruE_bZ(3D|puKU*Udp({GnF-?_8; za}NG7-M#U73P=BW$$1l`-Ya^Bcg0U%dEWj)!m?Rq>yMpR-M7+HacaU*!COMT?-$)) zJyBfVyf8kIWtUV(D2H#4BaZtjb|$sKH51!;P8q+*SsbMOi#Qx zM_;mi^*sA#^$+j8ul~DjzBFg``OSiF<60h8yqY}!!<#lEzRPi4`dhu-o`k(W2;N9$JQ*)uI#Xr*BMDs}$D2{%6#t(kph?ev%b9(jn0cbxfUK6~%Z zXr*Ph&Xue`w8|>DH2;6$DsHbx#n7W6(ozZ=<@!OBxd{<0pX3h&Yd4nqzirW*{W$wZ z>avgazvsH9O;pd_{qs$viS+XZ-6;{>&hlV5kP{J*PH^=ZX~`b>;qVgO2aUsk57R+^G9FXUe7R ztC@XE|2L$6O=M4TJmGlds?x>Znnw<6yR_QI=qJj_O_P_nGvoJ)KaM9WZyt01?f23D z^0sYHC9Om4_#f|l#hj64*SdH1zNCNGN?K<9sxFJ;Nt3C2b9;-3_x3%v{@-u>GS$|1 zpYXP@#S3rp@7KAvHF+z?yV?75#8zJ3$TMYq>J0RRkj%8mKW&z-uwP(EZ-JIs$nuQo zkJv>Qh9qM8SoLuBP{p>;G8T!EoPN!)7 zxU)0$#`n52hFX>X9#;nj1hlC7cUOh}H}UH3`cT^0Jj-h50^y$dD|MVbPlou+mAd=y zU9J2qzMNy9UbR~MxD}a~IXf)-|NqOAx;1O!dL>yaKRgiy%|iyZ zuXrZA-ZAwo+mxwK7A{yKa^Ln(=bz~bR{sujYj3PR%Oo=OjO*`bXCLKWZD60Z=f|sH z=~4xa0^6RbopX1b(AwE~eA$i~pVQOkzuNQp!=j$YC-*Fl*!L&BBH_QIjrOhETUI77 zbrG_TzWDC<+SxbK?{B=R_QuX`AJUX+g~je`Mu+-CM8!dR(7Y44!zs_n;Ip^I92x zL`ybz`TlfuRW{>3?f2IgJe$$Neo5@|U)hX#w<`a(2ZT*&w~1Vm75%hq&d<2kXD*i= zer}Wbj^4IYZR~K4S)nvf& zTf=?zq{-rOn+!=amV0*n zl6kt-WnYhSsn^#xLDOaKgx0?6tY@#YiPx*UaaT4XS}U)#(!Z)db-|y5Urz<01=oB# zrr+P*9{wc1`{UoOn+u=2^y@f0b#OnS_}Zn#z|5YV_2=S11HXU0)?6p1)|;`UF41CH-l5s5p||gD%as>5_HN3mj#o6D_WbKNp`fp; zZfieX`(vfJ(4@<{O0O5RhOB*Yy#9P}cs^^G?pgyUEv@(i^)dk-dq3_nH#6IQC;8J} zp7b@G6Y@?a*1vyVU^S)e@uQW-YODB`?|pdv>hl}XdwlYYuWt6%D^`A9bl zK11B~y5!TzcWycSJo&WJ4^$E$JX=sL7|@=%y~gEtxTz@^cBI&eWP2smGj{n@#EK1vp zW^doMe__wW(mXpx{;+vAd?HJWkMT{Z|LlH34!z{kW1N1(skh{`+Qq=#E&;slsj=#U zfuRXgPZ!A+`HDrqdn3ty^opFA4P=5=f{ii%W67Dxxf+=krTOju+Kk+;?Yzk{M`NDd z>iK?br`|8u+Kg@kKU1vM;;x2Us)sUFgk!aqo$BOTk=QA5U9)<-)~a1cg^q@JH&vrH zb|3?<5VG++FQce$=}FDNklwgkZ%;Tx$gWEA7OlM+!`-<;%H-*y2#sZKmLDdA0|t4t z6V856?4ls_a+2oXyDz$4?5S(F2s->i%2iqqnYEHlZRjR&Tmy_UYL?b!ZKC z6z+il&W=A4g6gaMp1yzg&dKB1chD%E&cUGFO6MxxTzRlIs=AfdGz@(=m0CbzF|UleL;wa;;MQ84$Z!ds3>{ z!b{mnA-&55#e>&MU+r3<)v&5#)w)Z2_SkHG`uutFtu2`n_H{O2EX>WtwfeH|Iw&+; zyA~F+uSRly%_q)tb1aklZr{G`YnkhQ`^u8i7eT%D-f}1bi|QhtNe(X8a-G_kvu^TO z%NBHoUY)5~oz4~`wDihLrcJ7wZ{NNAprdQ$wa8UxUvJ#yZ7TL^hGDWn)t8Jrg~w%g z{C>APFeWBv+3VHHS9b-4id;=DU07u!Cn6@6^z6*cWxbb|`!8O&kn#DsxyDJWyEbX9 z$dcDuk!6cNX_+vJ`lJdcYZ>*f(~4SrqDSwdaj1`|uIS83)0cj`8X;w97~1M9Y7r`O z)ndgfmC(eH)(}y*_j|v``OLAn*sn;6&Nd``)J5+ zhpE%Fb#+aZK&v~GV^+njzizU;Y1OfKUy+nt`#Y0SV+AF`9ORiE*_A3N8UJ;)DNRuj zPQ3Xf#%%68{aaco>1NU8H_nBK+J&lwDqiMVX|;6!f&~o1YCZ?nL~iz(C+fO2dF^7< z)sWqm#m^+vR~-wHHO-o`Q@r%(DrZRLfmV*exoj#5RcXs|1SbX@T_Ppwm%49%aEW)X zmX_73j#Zm9LY-PJCU&n3dlT|-^Ww$I?>w%){2RR7&y;CJ>5^M3e`s~R+Q_wPSLUX7 zA-V38OP9UcDHm-R+8^q$_w~BnJsP)f+~6o(v1-PuT&uZ<_o-gC$G1qrZa0e(pJ7c` z#VkePccy8pb_HCWI!p2TT%}E3Ujl`LuZm99=j}+;><{}8;us=6`%>%TD^pih_ZF^l zS|J+bEEKcA_KAC(pPfylrJI7USg^2suV~;~yU2j6btWwhejoEQGYy$m%dK8;>gB&q zl}bDd6)vRv0CP>)cwTo+V`Kn`!+WH7oR1a{KRei4U2c z)fN-Je3f6*b=MU+Qk!P1YFgGc=hj3kr_xn>d*fFf56ie}G^^(N`h-_k^n8BXa}{j+ zmpn%>u(ZV8@Y9{2LhT1qZ*A-gT0419W_8tBu2o^+QmruL{CxZTU*U}A+S;eLq~}kn z#$Ags3VEnJ5W1eZB-*UA@0My)mc^ak4IVSKHk?Y`$+uI@Fxa{}i`U!dYTBDCRiZ($ zLLLsXE3Inp?+RKwt=Y$>uKJrTDc!yGc~~XhrA>yAx>;-Td*z8fB`arWscS80b6!+^ z>fYL}Re2jtR1B|LxvbSTH8&T3C2)0$#a{bBfzXSlBCo_8O*NLvoREBdT2|lm}M9|+ru?0cCo1>3}hz4GrDJA3@x@X}l z?q2oSDGQ%#9)+z1c-1x;wqES!&6^+1zRW7iF)!_Wwd~xLb9y&je6H56(9ZaFFo2zD zVOh^y3#rXoToa9N_iv8PfBfYs|Akw1XSXc=np=Ic+FGo4@~e*(K9;c^r@A(LZ2Smr z)$lYL)SUIr_{Mta1IL1$_y63xdZ=#xl>D~y^FJ7eI!$c+B;56>;06oRio4sn-Dh30 zzrFbHGyZCZoCj^3F7t1$E4P81^;d$=wAzLYous zS{2$pIbIsWtoA$LhpXg^*ykVpK1*AaKi#6a{_V}PT&r$PkK24w&&Jj8s?fuEEFKHQ z8xL^iXq7Kqu!6;vRc_6#z}wcp-zcsrst6D{9lz_Vz@?K#6Xw*0ZaNho*EmJr$#EWc zsCA#p6nTyP;ny$4Ft18_SM_>RxrJ81Yk#fs)Bd+N#2(xFbH)2<-(}u@aQnr-u`ulU?Rc$+IU<*EV0s{md#9S74C!_efZt5&S4wmusF{sh;Y&Zbpd^Q_L=XRw3{ z20h)gcQfjBD^*8^i(&=zN_Wmsw@8K7*lHAF-!S( z!UUE*1xNjLnrt7yT*arSslU|RkGS;%(wUd zFBLiMO6f#vM_>Cd|20!f7S!Y}F3*~JS@ZHc$B$DqXV}&5$~jta+BE(y-xTX4YcuTeaEpLJ?QKzXwF|Nb?xoaseSh?O0+k8cgb1vF!)A@;&a}*IXAZQ zonGB|SKI5M#(Jl@_6_`Tztv5)tnhd!$RI3xEWE;ScrFiwPQ}! zg_#eQ-cNjeNu$4O)jgZ4ES7>NKUY~y?+T3;JTATaysUfQgP)-nf5+^4+R)OzLO8v6 z%iYlE_|{sfzaQVf%vb4ObUv}*@$2_?)i;*aZp%$?O=T^+a;&c8gLy)2rR6+(q2Ch^ z?(tq-uwdm|wtJK3eJ=&is!B-AZcx7y(yeRw?$x=ve+_$_A0F&G{BOp^%L%9UGyd-3 zm-YI*?uf+lv+pzKyCZtV;KF#jeq-Lu)9bmCJRUDuwJek6%8NDCq5)5@#0W3Wvf=eC zymD;qf-KfE72UTyb7t+IJ59cHS(kFC&Bp!tE04DCtD2MdS0MbBes{;Mylw9S*u3_} zJN;bI{xD-!+q?ev4vxQVHDrzD%l+r|?va#>;i~B=6O0u;ddr1<71s(YJzuRa;AxHq z)d%}OER@kZQaib7&AjBUWsXcHhkbtax$7V}X%Fr_lIe+9|RpBnVYUb6a zUA9fKxa$6z|8Y_EoBeFE*9*REm~+}cPnA3Tk!NUYc;0d8tM?C@?7R!!I3^+f|LEO_ zy$N=8W|_?QZtRzBUw!?-(sI|ZDF&?fh0@<|+w*pXc>3F0k-9g+iY44<-&(ry-_5V_ z+n4_jNxppB$LHoJkNI(%IF@T=rPSy%Tn&`t{C~Gwl)qEr7pshjUizzS7u$Oc{{ySd z?oGM(d=@MBhu!Sk9weOIyrQzIv!#7Tci-3Fg$2)rgZ^mlS(}wr|L5`A-aiKy9B=>k zzW6};@83FiUfTAU+S{k)9r}K*E@$=nPS5#$|G((GmFEwhQF{L1p0MD%>%OrK zxyJDaJ{qfUOuHp|B46g&U2|Tp^Vs&*%?8cBW*)E0s9yPxO=W-Z{Ev&iyg%jea~n6P zFhx{*4J>)_OoFD#X%-WvzMK%S%;h@di-X(OxN8kz4_`(5%0feTDQ3V zx*z?~Xy=r!nVpMPAM26x1RAZUXdhdU(_N@N?Lq`fH z8(8Iw+`4t^!^B--yZ<+=7Qba!{N`^#`m-a;zb$_ieKdAg(B%1S=RF%(9(3tVnLhQy z+Us?1w=|p-Tj@WkTuLsMV@>2wlXtZ*txv4|9j$Xy?K*f;wg5aS8)c@6HY+QwZyHdy zXMs$}`pBlmsi`Z(55DT0`}M}h9URLZHPya(|LWuGyQvzpZ)<$Je)vYs2cc)4@&9(k zJN7KOq1-gNEoLWlVpb!DXE{eKwu#xqx0n;NN9=Y7I4R2f+BfM#a`jECJweq{^-q8G zb|j@%BtMTj6K1>fmE@b6OzFC`tmWy;Z~ptv|2_D+NrK(4zP0M-Tu{#2Fve>=&?v*O#SFB7+BFZGdVY!LQly?y^W_w=I|tE%QtweEj-^!Rg* z^`1(HnV;&?UC1C*zcX;^YwU_N|8ovDbec~0Pyx*UPGEW?DKJ56RoUOSPviZ>C&@Rz zZ&>~*bIp&7j(`41o7?qeRBQfYdvaIyMXaQTy;;gT=5F#3u;r+Di#0hW@*$ zrnI_i<*)VIeNLX9WHWox|DVb0zwZv;7<4p9)R?`fL8^O=MW}V^$CV97EON8MS5NP8 zXbI_9FzaQ(L+;0NNB;jy<>oRz{c-vKJh5Brws&*Q>8##oAlBGdwCDN?9XQmhpYZ&c(VBm***f;7i*CuTHmEe=*ZW!3o-iq9gvSR-~lX{-p_Hg|sRFRAW3Kk7q+uJ?!g*hrMz{dats@2eZ? zep(&d-+k(v{eteccFST0<<*q3zP zr{>ddhC7YB3%=joJn`wdqdN*)g>GDJ3|@ZzByUB*`8W0lpS*l(q5JO2k<7m*|GtVS z@mcA_uQL6qCFg_#&$~erz)CZ(KDG_LnzZs`?96+yVLd;N)P64svHjllbDrgw=HnNB zbyrQ%-OXPs)3))~S@&%cilygI26!o!E~v5Yi~FsTt2s~o^3?hTPOFyPUH!4RGe0ZH zLp7qXWt+?6-7m^ho*X^ydna6iaVML6jL)nma<7&51q2^2HC5%aVl`nZFEXlKDI)Ft z(EG=S4YraA_H%Y=&MH&4uus+7J|&{VdJ@aYXUg^3PFc!)^IlGPUdvN0CY7AF{+iJH z%O5-|@BjVq{_3n34>!x1zn@m=_G`|WZ(W5F-=|N%;`67(;IZ_X+GEmFnva-0zTW-Z z=@9qgPtn>Nc~5W1I5)j#a`^fA2ZeupU+P(qEE>E`wEEh!=XWD4MdKc?^ske6fA!@3 zml1^%_)}$;?G>qK-pI#Z70!05zkfD6dh0};@nhAiJ(U-OQ-ys4`${MO{F3xV#C;XV zN~72JbH1^)t1h#e>sL5O&13Vnt0vV~W1SfVtB$@~7`?+-xKh$}$BhZSn!)eH7KZ*a zynU@Rtn;z?DQl@np$QMZ+$`qsJaWDI^gov5uCxV9O>66=W``bM(xi2FWu_dH{^SGC zr#k#&uEM5)h*fk$97dcxS3xU zxLKvO@X-Z3nT#DG*0!zkIu%iU=1EmARHUS&0>ZC1sQv6S_DpjAHd|hM+K%Awk6Vk= zFI-XS{&F&+m0>| zKJ~cm{PK17{e8{PmRYUQk6^fJo9n=A_~Frq*5VH**EAhexq4`i@pI23HxAE;-^uy= z+uK80*LehQ<>;JIDf8_87H_`t14HuV87p7ICS@f+ld^@NNm*I%oRxnc?Y!~A>O#nO z{)#Zh44-#LoSH4(_5W8`b^nXf;l1ZqoQv#e57(J8eNmi~jg5}I-VVd>fj^TcecsgD z|84H0`OnsE(LH}-<)=!C^P%z%!JjqX-2Ec@xqR9CeQNKwR4UbaOLRZyKjBjIb9PPz zYxEQI7WI99C;V|Rm{Is+WB%nJox7j1{?{{K`sM&?VOT->848g33(!XO+jAPu>^g4} ztu|-T3aN)7&wg9?Mh3Tr^)A$MTAgFY>**7^F=+C;P#@Vf)?2;*P1UMe-m$`=FPWz+ zCRkvKKxyuDYr%KtTz2mWvo3kfAsJ|T`?0IWo!-;o>lW>`ZP@5K*(JmGeM_ieXfoTa zk2hyOnFpE+F?sfK(|oz($1cAPP>P?zYIL{iDYyH_`OhNnuaw^(VJqq?H~o*qW5MH@ z%HK|0`Fr%}tFPBZ4!ri)J3i^J)*;VHuCw)KH>Vry-y)JK^t|NV9iunZ_Rl0_HSS;W z{ZrtmzQjH_vTf3&l{2hNcm2Kl+s;JxM$gl$+=U;uZgo2mwQaAQzt@zDJMZ6ZZ}9p5 z|K-WQ5s`bPjJZBNIH~RQa@X}me1T`JYT>FnsKxv%<%@K61NC4bt*!;-$w zV%5-^+5PS8?6WTAKW)7yiO1JwE#_lkUDqC{y@b5R)X185x*1HA%SDYgHRMB5d?pD}N z+4Ozkg6FqAp1xtav`9H6^ru{#A>i3yAd!g6r za<`do!KRY$m3jv#*-x;$y^%@!scqvv=UJbgKU|tzePLH3=cgy{x2(vqJT>obzkJr3 zD9>ie<5Rz92NbVa`hP!TZcama>VcZvX0%jd|x9`%KMNa;>m({rKza>qlC1o9^6+Vb*rPp1AvqvAw?wB(nX!6u*rxR0sm>3lxM$k{)y|4$Xw($-#_J>|{|-c_H2Swrt;*Ie4RZQG6+v(~Nk z>AWSyRkC2mYrUAY(*q_RYOOrabesxb} zO`JLF)tM5n1J`v5r9?YEtuESdvElLEt=qRNYipnWqx{RwiT{Z714dB&-_jucv-M=s z;=QHIIkZ|g-TZtz^Swx*!QBI@=WmCHlvI}4BGlqZ5{ zf%?|V;p)-6pB*RKXX%zc)SR9%_f^o@39ny;gzoRtb4m^FcRd*=`6SLdAbl0rjO*)S zodW|WzBGybYB;Yjgs-2lqT7peNV&OD!SGp@c({;x=(i{!b{o( zUDwBD9y%_+SKa)AWT-`B;x3)BA+Od`qOY z*F#1M?`SmE{0V*RS@U(uk;=XII@PzmIU=6!FZo2j?C{F!#g9`eg#wu5*4R|aXn3hF z;Gg2(h1P(W&&s6N*(&ui?DR6`Sfv$hs&_IXTtY-6o^IM$^r}c{VTF54Wfk z1anq&FHfGAg8vs$G0>@n%8S%bhdM`G~t!b6x71Bc;AI#fh<~ zsHouMBT3=Q7bZV++qRwIxjo;hUdCj%>cZ>>7H%VvN_YHYW}}?_k!KkxvPTz zmac#K=xFy0i^4|}q%IdQzS0YAEc^50quY$Du4|hTBb~J^I4gzT=dWR@KYR9V;nuAC zknLPs^E}@9-QDz(<*p)c&s4N-9WvLhm_=!#-pot)d-X0#xO$rIO4{DBQftjBW9Z6* z)u)Z8wW%(PDqnR>Bh-DR-`8-)kmYahX9Nje?OI^xD#SI-S_dbS;=$%>F0KQk@SC* zEE^XTzN&P^Du$|uhggl@)>*8Lni%%|);6w{Cp}w3N*Ar_4n4hP+cv4`IYpN9AW0s_ zl$$)0(j2!Vol;z`7w+C|op9#;dlBobh^D2hPGlu7XA>4%Ahm7As^$R0%U0f{f-9CS zQ;XSOxA*)Hw?|EWZ?`*T6>iiCQN8^8_N`k2JZ$cZDz`bJCNoIlgpeOB6&5slTVoqb z7Si5o{46e1W|ene$BZo5CAU^|tkGHGCXDj?U1W{BU!uU)-!uHgQusJLNH z&duY~3W5wvBMgIuH?Hbfwb3v1#g!#ZS>E2!yxUGIzB#1~B3 z(=a7iG1T;wpm1>M1g#aXmi4x)u5bto6SK0mE_``OwMWX7ON!~h+p@z?i+Eqn+p?}} zqg8AC?O6tiO_4La?yd`4AsgbXgLg7+nu9@4#}SX-6DI#BR5+J<)d#F&wX(YSkniB# zhb_S|E2Wqg1pBO6Rh}gkXc#K(6Jz7W8Y<1SVDH|$9gDPHiApCFh`vor7nlDLyHxKpM`hBv-s#m7guJPYH7c%5jipH9rpSHLo z>tq3V$tiN#h+rGYFzs4)Sv)Q7VCUlNAJ_jcUU+bsVvLV zV7M42m}Ap6$IwzkLt}?&Qr4rhD-E)a28w!{Mn1f9M0>*LBSy;@@I|6W0t-h*#-*K` z8{7KVKRo`UTo4F}eEwEJwej7%yvIgo&z(DVxBPyuVe+v9@4wG3o%3bZv5>20Uw=LH_~VS^ zwTt`0tb&7;o?<)x4%%65Jg>wk>RNhv$)lID<#!T~T)B2F>~X}^?6TsWF#+nUyH?K9 zSSH2uM}bl3#~%TX!`Ev#6Vn;FKHt^Mvu=3yOzdZw&-DAdy>7g3))#2IJh#6l|Ni=r z{pZ^qB0lY%^#0xK`@2o&-IZZtyz=h1rPcl~@*ffkSEbh#SIMpjtuHoa`ZWLHpF@A{ z{Ws(@e|+Hn`y=}PbKDQE`OkfSb(Mg#+}8=Wc5U3>*!XVpPedw)#My^Tm4u@qcUMQO zy8O5F{=Iv7->TNkUgn`9w7>Pm)E}DQb^8yDeH03qW}k}H(9m)WY-C?ucIDfyn+I+> zM?C$oKx5kelGloYyDu$e_!esU;FR`+Pp%p#iWg=bpV;!L?#+qp~-ul`oQ zw$vHx&AAbpTKCZBx6EJl4X*cjEAzX$xE>U(IW%!uL5+rbSv|M+HJJlj*iTKA-P0Ff zv;6%*huWq2uXVOfvEK0I=e_q&djIl%k>y9<*)!q5Tc-p6W}oc~Zw;P%X}#ysU}-Lg z^IO;WZV&O<%FNm7^y1AM7X<+a0|}FA+ilNhiHoU+hlfv>RR=et41Aav-~0{JoTqua z)9q(aj_p6Avh_3j*SgP2eruNa`HE{s%{PT8)%{EVrOvsxfkT?#Wa&%umXGyO&5x%? zJ@qzg`89pM%hy?~6}Ea^l^-tf_b=SIRe9Ea_fO&V;-#5KFAC^+`AcUnIfpdOeEF~M zZW+i_+$$T^c(^COM-)VBQNw~osl z|9)N1t$w}3|JtS5+C9$EatAMey_8y}v`YG~w8xs$$*3c;j6yqVIaau>+_m^!>1NO6 z-~PWV-@keJ$3I7kw!8RTJ-E^$%QeI{y!3ihYUtgq$E_^RZcZ(os$;vYkn>UbVeodH z9fC~0>ywY>CH(%rzb|R!^SN7j@^kbKx5@vFzTzvjqhWE;U;X|6RF&hNo{wvLZpL(b z+drB8RDSY|)8OM#`>KWFC znN^K%J}WE?yRTtaw7gSn_gaCemX2?S^4i*Wee_X6seY8V|}H4Z>Z?UjV!bJ z682iie%-yL=IUpQsR_$@&95h}p0aiSj;?jLvNHW5!=1$l<#cOQ0oG-Yx8$Wy|tLO?tar(Z|x14 z^Sd^keDh1m12kW_FWEa!y=PZ#^vD0(%hf&vhF+Kd&v;X@QAL1>(KBVD0*fk_M$@Dn z4BL`eyOp*q`ge5gqP1P#2fL0g&Cfb-{|K;m9j(mG`wqiqh{+>^BePhCTjwelwwK4zg zWNZ0Di09R1?%E8VFRw4lUR0CazQv;3==tIfXTQUT4u0Ikxl!=cfp6u<5-mQS|MOkq zRq^6}o3Hv0_UUOy$9R6*bkbwKOgDR5@Jp`HwI9#FwoEvsz1qovgM(2~fu*HEK!6Fv zX>@aH*l+)8OYw8RKdMSd|^t<985mb-hQ20_0wdTxvS#@tyi8%h`F)Q?A-d$7@-Z{ zX9#WnviFMX(yiv9^Fzv8v$tw;7}{RCICB~M2CwXU|Fw+_Wx~I8th4p`9J(%Y3x~W< zy^P^s_2g5RGG9DR{B&AFYiHtDt~HULW%osI2#FHdMaaq83&-ALgJPdB=@@vHo}D?Pod(|A`>qMGZjb@82r znj0NbHI0m>KaN=W_S&aSPANLe-=5M^;gM@*j}VnJ=G9KW)2@=0cWt_H!HHu_f1J?i zk-j4TzH~;%RPN=8KYMn6_^2jSnK`TJ|Kbz(rY~NmI9VzC{rh?S)1T|RyOn85em--q z_~xx&Yio?9vVOG5d>2S9GnUW?-g7buH68S!3z-J#W_Vsq@IS8*Z64 z>6=2_=?X#Sq|Fbu)oadQzAGk2^}>zwaV;%h(m($B)o=Lk*TWOq*W)%CCg1&wBf)H* z(=heek89ESE5pvtGCeJ~^OW_ON@*9Lr(6*~o=o2tI{)a!Lx-HEOqrsQIQ4K^^wzA_ zZ*Oluo>P1-aD7V)%a**mQfFtIhgU|#Je@9XO&*sl|IRG-lKEN@3lL=d|8qE(=K|M zM^BycWR@L~9-h9=O09Z+k-yY_1;*;U3RF;jr@&}nVId~YyUw8mTST*^c)sIaFC2p*r?(DMk)Van9CZdNnc`i0AIAP(V z{IK-mti2)Ei@xz`r{C+36N#K{_Al~`N_fwcd9w1~W3Ht&iN)0_n@(6&E0WSZK=?IyAI12`|58_TfS>fZfVz(NnM89jg`x{hV?1 zy2HJ<^^Z;j+dgLqKXORjeJb1Ky=wyl17C^C%JwczB1|Yi8%ydR{qqaj2#I?TblT(+$m!)vsT=L_mP4cU}Y6!_$X5i@J{WnCR6C%FOKI zlK43DqQw8Ndb75C@%Qk5*L1LdZ{y7Vr3rV!UAH~H)^g29zWZPK*+XZ(?%XkzRjZim zb)WmP{r=VWmPfDt?CXMrYfjwaY5RKU@%%fTk~RGQ zX3VUxI2#sjaC~#qqA=mBL4Tz`TR(oZj^)Wi58o~8)^B6*cUT}CySZ}fp_cfdAPcyPVf2nqeXsEaEemz|@QQws>ebR(E+fvP*`OEuWj{Z^3 zx4{#fE1?k$tt>WoGO#zzTI?HH{^!GCe%WueUoN^!SQIE6IwZ3{`1by9Y>N)QY3WmX z`c+unPh;wI<$&mIIh}p7){pjlJ{Np(g`=Zm#H_boy}>F-w^$yhDm8ocq_^f=GS zJPbRR+LSjuZoM((Y~AXuhwbhyi2gP|QE}?!HHAMqp4IK0>U!O4T7ssMNxd+em1Wc# zmM1@N6fWsnjmQSAFkmrLDi zPgzC2uDh#Jwc>K^k9T)9B}&4rF0D`dcTqHvueL{aJlicR&1Z z-p12&dKHtri*x$KhYRcHu4?j*^^>%U`KMm<>0~a)LC*`b)wj7nyC`WW^u6a*=utqU~@4_7W`hBySuDr3iAN&8~arwvds^1yDcRP^xIXyAhy{9Ne zEBwT%+?bd-yISiHG%&unzJC6$-ua8eBTJr&PdD6u=JyRg_eEtdFR?ne@i5*_2%MJx z_xX{sieC(IUP7SuMTLq$t)bdPHM7J^KBcqE4n8ZtlKbcU{poqr&HCTn?_Vsl)64wv z`h^<%I8~}_>wl}7Z4SM$FGo)-_nhgrmkWK*^E|THfBeGEqUpa5rXOxQdt%#p$H>;Z zUz9IgOq#v7e_8X^qdPcumt=2_-u>Xkg*nc@C(PX||NEqPov23j7m?qbCudAF;{Cb& zlmp``lkYEWzZ7V6`Mfcl@$AN#BMaQ`AAHx8H084HliTL+!!C159B+_T|06qlb9dl` zy|U6~mwjJ9)V(obQ}P$y678~!omb4kx^3sWuX*L(r}|E;` z#?u$}e+tjc{mplbt(=iH|CUnR+#8mXpJJ|QZdSj4>U;9dO}rw%C41*hzwUP4Dsn@< z*8a)ACZ5I#Z1%^S>GLmszqzyG_uK6s|NVadxS8MXz}xNj-xY<|I2;KPGu}GkR8mG{ zF87ipbOo-k)l&uP8gKCU}Hg)r=i z=U%1r43b86s0*}BT%Uh9xmsPJQR!iF&~2|mBsZePqj68sZouo8f#&o zS@q+z2ODp`zI*S{dEuGcmKL4o^LKP|QW6sGy*@jd`^8Mh;DX0J2P1YpsZ)K?J7-!a zdq&%(EA7t~&B^;;UwhrDXQm-vY|W|b8ee)DB~ zkj7mV`J4RjC(HA@q&_$%egE)L?&*&zFDXtIO4e)_wvG+Zx1DBs{pG9KW{Eo82FA9c zh7YgoKe_!v2=Dxa9l2ht+w0uFA3pv%eR0O40GEq9I=puZYM$3W(!Gt{>FbW7DMq$g z8T?z{R8{VZx@Y&tX|Y%L|LF8MPrHEq?8g&c9NAlu{B+B$oh8k?9607R+PTGzO*3r2=%;><5SK0Akh*!jxR%4tJ2tY-+lw8hPg#mt zoJ{v#aMJX8%;FG_u%xY0(bG%C3?qL$G1~LQ(%-Ub%F)X|epHmazZdH|{ZsB=osL(x ze}8pZzsKbI@z{fAkt$DBxtCR){Jo>Esfj7)))vpRD{n1wUoKV7 z|7`aB@s-W#{(FACS{bHtQfbd5Xrut-Ek*DX}wsH~gy{gB+4 z_!r+5T#jwM7`*z|{eN1kR_~Zmm#`?|!VI&5mFMbDi>a;-@R_*M#GgxP?z7^B0-hq` z(=TqdnDb8J!XpFEIY(JlcDX5CGHYLRGb7aUr?0Sr%dAhc`**J^mObKo+iDk&@1sk1 z&ojPGSdf=$``hik^Ob8}-(r713YfmTx9HRS7T2UF)wA#3cvQE1--0}Mp1&(z*qrJK zdMYA1XZ@@0JmFl)sjo8b`u_hFGJUb?`DjKvcAIcD_f}Z93|>szb2qAbPg{|0`O$dp zk98Gm6*s-BnDWjnrFY`@&y(KoN&h>k|KpTpTko&>TN2wnSEu4tM@ZcYk@J&hc}xtA zVo3d5l^1;P`0J>Er^&Z6w;k^M{Goe$<;ukYm2+9INM~1e&p#$_+x`V7&kxPcum1&*V>N0i=~$=TU|f( zzP_fZ(c=>K+Bxr=*yH#>!xE2hr$tE6I@owpxqi416yf-;!!@t;IOXmH1F{e)Nn*HzVN_d(cryToL1dCUcBH_^U@z>wSIpdXxTl}S&?Np_4TurEL|`61&I|^&Tb8vR~~x* z-Flvr_K;q=g)WQI?Q%E!s-Kfz1z(&0Ye^4APIKV+Q^fh?*)uI$Lw$XJ-^f!{O4;3O zti{B{v}z}ro_cn6_UZ$Hai8XXn)632c!&wRq3E*06NLsi$8?|JkYY z{4v`GhEv6|MMpHdSJ|j%WfT~jWEXKIo{e7Ab|hk3s#x$%KNlC4q~zqnA0HA!?YVc{ ziRkqE`*fbbr6Pz^A#Fmmpn1^8z+Sj5_qN!-Gc#{pnH!k@JMzktCHZU96{o7FJ?#kT z(?|`x{3oe(diTNI2|UeYj?j>;c`BguZxzS#zBHxjN3PHK;rH!C z$Xn*=srD9&zTViFoHf@qRICh=Mc|1M)k;ML7ADsN`i7z5=aMwKXXz}-`Z%f8SIlW^ z$ExXRf>T?A&mDKtaGzH6=&M=otp^A0#aaXgEqSJ`p{;%RtNFdI`tv`;4|RD9TxyCd z;oiS)`gE&}vfEDT*Uq_4&{ju~t@qu|FH-GZ@r>Q>quu5ir*8jA+BhX%XGu}z-nFd$ zanqj2I?cYoG(~LA0moCpadGS7_DfoFX@{+G2n(CGYw7&Ok)VYftO=AQam^74|aZAR9?Ce{a;3{hLNmcH3kuv+-{!OF-D zSM6RUZxX?1lb|$EGMJ+5L7k9~C)MX`*iI~Umu0caxnXdp_`I#v?xU|yk z=cZEk$~4ExpJyruf87=9VH?_fNcp!wS&=n|+=YLB6sDx4EZDL|#L&?2)Uv*& zt9qLYPM_4f@`{;IcnL6G`lO- z+}qo7LtR#hWuN7}beVkvzs?s(qYfpmP&hLV8=vS?=1CCn+MLqMC}Pii(bRubuy9p>_3+K&*N9?y5NEz5de(loY-Pye{u~ z+-H5|p<(i|6)W9J<@P>lt~)#PRFZ1<(wq~KN3Zg|ROOzhQ&;rpk4}?VTCVf#2{}A_ zRtRtU{@(RkqqD_~=-xZCiUscLvYvH1bY%)d%(T-n1qWHZES~1>J%5KIcKWxYuV$Q6 z_Qs!`7=$lGDX%Y1d3Cq^{@Q74^fz5w@zo=)=##fksOn4k?p4p&9bW!@H!bGn#^&3C z)vwffc5E=_>X$vTFZQ>G$J&DrH(j%Meki1+Wov-bs%;1RvI|4>zZyPQ{e8%;up}$? zPti8z+js-Qq>d?V@5HUAuUrXHU9f4wE1hMZ%Jv?)vS5M22j?X z-&`_XXIas_D%WM3W}ITv*3t@bSy6VNa%Opfw9uhVg(q7(OS1nfrpR0Ihy`u-ce%Xw zugt`#dc~==4~`_QB2X+gh%$<~mM+m`@A|ZQ$r6^OOP6YSOjZuv`tGE+?zUgL%QgwF zn=swRUNijKp2}kJ`>R&_Et;VebUw3=rCI-NPjhwMp@(Z?-Ykv&-5= z));^4zW(*|OpEpRC$5ZPT)io0%Z3dCg@uLR*j+Pksh{=|h>30Bt}Z*!7;8OYanPvUr(<3{w{X@qo6Pjj>h>j8|ECgFJ|}niZv>v zG#U3F4GBw$Jd#p6P1!LrAl2~l9H&Fdfl?P4@7HXXoxAAMlnJv!FA2#qmt^l>*R7oF z?CdNkC%3NV;fhGx!ZqiDr>A;(dBtw3J`*i(zvZFBjfCjNO^g3>T`>x%V?EWE7rx*P z>#4qP+5x8>eu{EfH*OHr&`Yy!{G=UFwk5xD+w!-+cJoZJZ``!_wqQo}t#$UN+dilY zm@y|dSF)Vyv(K@e$~h&zans^j-YvGd*YBq;_{%wEufxrc)4O-xnfavqrhcS2a&=_! zm*tOG@K5KZ`|i$nPUx4j?V6?=ZB?@{OH8Ea#J1RgfXgEP@9q?H6kI#ug0(^MlB^J& zC!cix<=)y7_>bk0*#G~3-`C%&**m@Q#|K#s={pk~Ze9#vN`3FMS^4c{mYQg`MgN%+ z58u4)aD%6X_nUS=S&1}r>iUhhEQKvuySC;@>oX@B3z#uI^(QP1s$0pHG< zSf?lbJ{RIPYpM=PKjNGnQ(gDUJ0X33Pow` zjh2hr0iCby>i+DQwSKB{u(q~#=$4!Xb{6w33K!ku-}31h_vcfmPj7ZP^p=~8D@e&O zJ>g^2CH?6P{p}9R9By+j$q(DMWq*y_htqd=9{pLdia&1G>EzV-Z>;ke;`je}$NIeP z!M=y>Y(@5#^4xpGlQu5o_)vM`?`iuLR^OHHD;_HE{UEDz?zq$``HiA(0XN3%wHvECSN?IF zX8+}r_@j;vj?&fk_8ncyA#;OEcDp=}{d!MNLnGkp@gqkxqK_Uu`gL2T*@1YW*Vg}6 zZRh_T)4uzNyb3$NT+c%1_EkE$x3`6Q|6QPa??YO==!ANw2Rdp8;#XM|ez9K8$}N`g z^3u|8@`YFYF5Caxba!>Q{)as)!}yOGr+(dGRr{-?=J(s}a-UB)erKt8HNEolv&3(2 zZf51>7W;_>owxsA^HSM(%I1Q(^=JNkx$OV(qPzUc^9;|_HcYs+*q#4nvav|ycdv${ z<#N_G>zb$8cQ8+P29(AgT&=aPGW-`-D++qb^BG{M_TzyY=v;On)cWwot- zVyo)^zK(b9Uh#+9R=w{~>cXj$*E#E7_4}#LBE`vQxBP46+Vz^|cT0r#{d^|<^J@!b*zdP!WPleA)&$oMCsF3vP=I!Z^ zc0wzR#$#R!?j>n8Uu@FqmeBc;nx4M;_TQh(g$snQAG~NFv-g0L7I*ib*QVWa%e@2s zd^)ZF`p%lf!)==XBNV=x7T&vYBjV_k(=RlvwGFR^&z|JZF(;R0%ZyXcZPfoM9=yHt z+#x>hmG?gFOkQ|CIClH)noaj@8O1LDn055f%Fs!6n-&$7y`5}lxBJ)YoDb91@BH&9 zyM4EH^OIYJW?xeN)_h5oxw4*3Qx`ES()de|qhrRYCRXlMI%OL;4kq1yc)0zl^Fk$M z<+p)Tz7~sW2~BMcS*HzZrC6QX{_XSW_=`*S*}eP}9$Px~v`ycw<*nS}uX0M`KI#5F zGkJ2Q=ERln08`@mZ|?|`a9GwO!EKQZ?>=E?DKj1^nOmdZ`p5G zzVlz3XXuUDJNb@IygPByl~bF#Rz0rXm{%=X_3eG*f&V(Gk*N;lS!J`9ZvJSzzkiPH zx6<3y_kU%rO#FQH{`q6KkAF?SyrK5`j$7{k!5Z(_Ga=l|pDq0yvpRU0&%t%EyQjR=i`|v*>B-4`p~1y6GbQa8 zvA7-4`L1m5x8{e1a8`Pe3 z<%G$WybGt-eK&mZV)@swyT2t~*d{UMy_}w49X9v8;0Hay763@&F5g7 zkC%d${Lj?N^Vs+=(CPWw+m~kgI?v1J&D_21s_O5shf~GX5^vpEd+Z$J{=@tKe^URW z_4G{5{4eP-SGS41C^`F9qTG|a=I14oHN~_1?qA-ab#pu0<@gG@`q{tZXYZ7gFi25& zH~W{xC98`4muAQE?PS#yPL|Ju*&A-exIE;tc5 z_0N&3ckaZPME8m^7{S3Wx}5726``>mQIS zD%!hYK?9#Kf8JGv^6zGUro`^A%k?_{g=?G0C7Y1g=gy5Ex1PKDuZercdFFV74_{9_ zy}C@_jYqQKv(-`MEt0N!<{M8WOIiPEz4zzT&-c|cX5Z$j)wdAez1;tB%k1?B=0AU1 zdLsE;ew_ZvS>0=dr+(X`IGt&F8_VtOXDhE(323ii7I^Zc`P}r+XJcxLcbuuMG=Ez1 z^YX?o*ZlSVUfyCFR8{8m^4-=SecVC#@a)mkh zf7{RQ{m0tZ`#Tl?3S9rmWHX1PgRQvGlj8dlkF|Je^>;Ho+6i)NUf851Qciitw z-XJu4UxoN*Bfej6%r}3Z7V~?Drc=}Djn#*PYCauQkJvl;*N$NOp50%A=KtEUZU5;F zUwU^NmS2py^Y>WL6xJR6vNz{6ef}B!y8W@~q0e>M#~L@jz1RQv^?ldpb;=$dzQ>~D z^^cc#+aHXWQF1zc2QfcU~@4S;C}${;$+&@$<)bukUyJ)A;hn-0-;NpAX&Kw*U6ITYGiS!klj9kjR9md-l|-Epzz&H0S)Dvw|yEu3RZ$o;OF9 z)&6DKvokX*UaegI;mKtGTi>JCndCN}v#q|x|MdL{XU8&~Di!s^^A84wmQFe}#W`W= z{wk|9i-6`m%#kOuguB6Fx%^iLbUgx$MbXxhr!AHKWx{JyIE z)psYX`QdTE=G|V=i`NyV*ZjQy_~-sL3{`!HA1e#z+K23T5_Dbl-s$U-&rKBGR`tlv z?%8M_+czqwQK`dmKHa$Z%E&aZ7tuEvQsHMQ?l&fUYy{O&eW zsX6QC^2}v{A+pcq*OaVU^iS#07v*WeoxyE0R`s#BMiyKa>v`I+Wwt?Ch>?bh=-y+c z$CY2#9l97Ceptr*#l8IRwGSe?E4_^`Ca(~Zj;~_r?}_WV|7C5jl&RN_?eX93*vx7^ ziJ9Gqxw&B{&)s={Wu0>8i=UDEB=PWx#j#w=PhpR*R&M)Rx%uPa;Qa?vH*U*a-ddgK z=63z@xtuxY@89CO^UXf>;`5@nCpIL#nVecu-uV`(KUE{@P8jQwg=7sYg-O}bX#Bg{;GKR|7T^Xw`}-qzwXXU7mYPu?Qq@a z?6h^FPeqjT?_ZP5^$xFtq-CiB-RSBw5!p455A1B+gxnIi?71LJnyX;#pTyAaWjakC z%=Z5{tYP0fHUH*wkI=e}4yWR+B66PcU(nh2X|natvbwlU45yDFK4xGRq^}P`MF&l;3x4E1RPCdqNcU9%p=3|ws+SW(A&iGy+ zB{y&T;d%APn>;;sm&v)S<|BKN&(qWM#f^7iKC}1t zt=Yc9Ht%Wo%0KU>8c(>kZt>b0>zW-)PsCmOYnWd*xxQ@wE`^oJ)@OeFYv3=-zWsEa z^4;$fclysdv_t7)zKP%8lTR&g{?xQf&ALCUbobnExBnF0p2k)4|J~tN2RqsRo1BSQ znQO3Eu%hA^)1KcOF52H0pSX9C>)C#sdw!?wNVhq}$C-dA%=wmvdAX*TWd z?d?C^?%Y+K|7%BTw)2lg-~FF|zPhWww`zOMPrYpq+4h+Iwkk^j}GT zuXm_@@}(8^JsW>tQmU=H_3O&p!sz)o&g)SUFk`K9t3tL5+Ko?rgC_3f_x zZ9BitJZ5%dVI1eFELtd#>)#y0uAUeL(AVoA2p7 zS(lIe`gQQSg#7QcgWff{3ks)CX=Al6+L(GzWlQk&uCf^>`HRo)d*{vn_{#I|yw_iE z{%Lht;&|ikkBYyMI;sU$940enoI1C8!ih(6-3#|z+5hS@dt}{5JF%FpFHT*w`*k#a z)sJQc_breS)LAG4C{LMKh`!Xd)F$P zRuk8wyA~h)_9ylDwuIZ)7JqyDxaLpA%-Y$xb62g~lq-M8`#Jy7?B(wc&JkU`A>~{^ zPF0~;Wk9o*y8ISr7RVjojLqT{nyO9k4V_dA&#b!;>{NKDE!e*F(Je z^hAsF-;6(VaPjrcd;1GcILAM`K4tQH)f-<)ZnX=g(aJuiSo`j->VNu)npc%kuWJY@VK?kbE*HW>cxwI-CEJZ?uhX z<^Ql_dpxc5o7KJ_?b&`S_dbrbI2JRZZ}p2Ct9oo-%~<~N(Yf+`nZFxfzTc|6qA6jna}o9!t95qW8z~%JIU~KN$^$Vuiz7(tNn^n^H;$f|(rsk?y-|toPUym)H`}gaQ$Nkq={`zr5{H+-v(ZRkZjnn%vL4{2}7V@uSMiSkLa9ojs-Be!scZku470Gx&CF5Wn9P z)xd1mvb;*W{?iS{!~65Zm4D8$m}PCo_V#>czu2oY9F9tcK0W!aP4;)o*2;ARvy|Pv zblqyp)s0U#iDod>oGr9dKXZHA0=HR4S7lfucb|J|S?IFoXQ=C;d*7}vf7r=h*S-AS zKe-+6Y>u=`|6Jv9C*SjO%!@x$_dE^>{=Kbm&!xoK^&JoX{G9#2xjvxQ-=@Sm=uz}y z=TicEc0AC$73^}cv(GN$caHz`^$XW z{NJ;s6?5P8y}vGNYT{nH`rY4*Z0mp9cQeSnR@q&n`@KZGal2iXf3b~SiL?HLAN>{O z-=wDh+ww-aY*;ro47)K0VvmU{QVetgdCuLBEzS2;Hh{U+(rR zIKuXG-I6ljgA4Xuzu0&6iutwLn=Qvh?=G7+<;vV;suc`BA1_b*tIQnu_U!wrFS`A_ zpC!1mYUQeezHiGZmz%U(Z85WL$%co&EM(rktW{l^EUm0%YQp9@H~ROr<4?X{+{*pY zOt7}_iL1%6=!d_=-7j8y9kJu#iobt?YR&%1<}A1KUTC+Y@=?f=;B`Asm#?t7*EjoS zMwsr`pR-=B{C~G!)%)1Cx(&CN?M(SOr#k7?UXQmIxYk-NNjh}@N0h_c( ztqEOqTj#=)DMxRt&STqEv+zXO-A^UD1zkBn`>sx~JdaRGfaLAlIklp=l zabyL@)*j{S+3R2bvOVzW)07y)w?vS{-DCYXKh~9^{+Sg zUH01BsIFAlJxJc|BIn^{`G4;0&9B(C%yO&q_Vt3j%_-oZ_i(@PiyGk^# zty#ESx&A}rt$%ml*Daq>@5Ep7^6F~wWqxy4ef#}qy=!$z*Nx7EDE}OVAAz$smhy2Go?2gZ*RH7r?$Q~r6TX)>bKiD@85bAHTw;x z45RGdcjuCVXGh#>Io2)~cDC|s?t;D~g|C*jqPyNtKA-$-Mc#@NvHj`mCAu9gO;1!j z4?ni{)|cikz2IPHd$T!uK%<;x09|%B%UAr!l`T!yYm9? z-3#Iu7y1S~zPRq;`n1Fx%YWamxZAGV%d8xH`|*!;`5(Wr-(S@7`{c$QwOVY`tzIaG zh2Q-qV;2A4`br4e>Ycz0iq3hP;OZ+i#HZ&}4s*`_NN{JHzj zKscYD{a?jXi#56nI-+8y->-eJGk>S*GeeG9o0dBDvQFl>mrxtib@aXe@gz2Zxn0%& z3v|~>RO*`9e{cL%=q-lv z=I3z#{<(zB>gl8J>7{-_(YCVXDUVN_D*i8CDd8>FGxyiRWs>uY?_SW{R+eMho3Zv* zdW`*xJF5@>SY;Wx@YJ*^Vb?YVRKJKXl>2MKH0Qe3m2)niAL{g7H^{#K^Vh@9#mirN z_g|s+ua|3Ea}eVk(h7RX7fe7nubED| zx?`1PW=zWGH5NBd{k&p+W^uJT%kA^=b~}YHs?9j25?UBE_x$pl>rC$-UwLftr6l*k zDW8>weayk1Q$msE3YWJwhz0F5(q?_R#o}Uw_CtN8D3_~?vYfY;K04BQV_UBD4(Fd@ z>%`+K97Cu2T;z}PxLVpTYc0mf$?4(keR=n*4LnZAiyv?Ne_UqGd5r}USJPh9<;@AM zOkdf&?}W+X+HL$_K58~!Fg`c;!K;i@54}b1nw_4wM*Y;w?nXhqu33{)`&eyqD|Pd0 z9G#?V2x`s<9j|Uvq3%vtN9`nfQo58LM~NMe@rq+OdBXPt#s4 zqOvwVxawX#yHaDB5&$0rY(0>>EuRoY3*VeG2?1Ft> zd-ZNNJ^$+t<+UR2+h=c{Fl+Zi@ zr%aqLD(H2sHuFjTRU0PV+usfp=ilw#Vmcd%OONccT{dW} z{-gKj@80r_iGLKnbZ*+Z*KK}(h;(oGyH>HRHPzPdYU(WWs$czIbjC97_$1|I_1kOK zT;BRXz|}DPxYYHgu0_gR(|1h^G2a;5p7nd>vBN*OvWwUKDts`rKm76b$?JoZ78|+! zH?pstpT+d<)!oJqAr(8@B76DsWpa<-jfvm!^p1L;4bS^mRc|$J?-yGg{(h5s$gdzw1A)n&&jJ)O@u& zaGme-)&tV^$2U4Q-*{MiYeab zQRrrQ-qBU-?;Tt6{94dDku7}Bi|6&Njc;DdUiRqobN9#m?=LTWc5LebjrTe0%dBk{ zTI(%)6C5|U^K13DgtN~tdj$MemwwMj-7jBW0Eb`{w+jE_i%5~ zygtp_@BZ@n%QaM=yi&Y)S;Eh2IkW0i`K!$WrHfA&o?3nPRz`T)aZAh3VYd@)4IaJH z)5^{aWxBL}pH%o|?OF%^S;uc|thcaNw`R^d-S{;Baqs!?ME*jHLM8FlViJPgnsaX- z2#(e|%~NP%|6O3y_ce#?)oVScbx-uazVg<-)oZo)bRT@WcDGv6xmj~hoVIQFdOBQj zcg**xuguu*XYgy;ep{Njzx2NKhf_21BEH?xov~H({Nnrfejlj4e{Gxh?>i!bCfujb z?bkoD?2glv@QeT2UOZkl@r8TstXo@|m6Vk)KK}I3+Z&!KDZ2Z9`>Wg)V+9fRf8F8bO1b82JiOdW^tvr9fy|I(CcwW6o@iwtVcD2dtx_@_B zPx$`x(D|5Ym9KLBuba$0zAvZc@c|n(l;tVBo(Cd5p5}J?@Ctm)-}h6^VcMSAk=t@4 zx8>bkr4$rt!<(a&dL<~Sf6>pkN&yZ{Nq=^7u47&5__6=twWm6Z`WAS6X8-Wv@UNBU z-DcP~7gO*v#zurj^|~%E8)Rd=mtI@f$eK zeOH&rS6AvMu(9C&w23EQ?s)sC{?Sisw+EG472k#VA3R#A|M=aP{YeLR+22}pu;l*6 z)NNlGPsvI3E?;@(@~TaVKNJ?*_p-{`hRxpZ8L;D&W8tJH?NO$Gi_hAB*!R5P^epKQ ze`bVV)PH=w?px#beWg;)C86)FyPg&Q$zlQY5{Up4^RXtk;d|W?wIvcIWE- ztt{MmvV7AbEp0!3OIotc*>#VPe*VF9?(fxjL-jW@f4)7mcZ`kOVdu5o=A+p^ zgGtXMLjxz@JJx;lhr)f^;xEUSeRK|=yI$69@|*vMXMO4n>wRD#75wzu-K?Xf880p> zGcd3p@pN$viIF^he*a6>nhU?~SA2R{e{0?0U3U!r6r034zer!T>zi*W@7~NUSKc%C z%&PCn^*im*>ui2Ky_?^oH&^Dxy@|*h0;DE2Or3D5c$wMGXS1@eJg@jyu+lz(t!S?F z)qrnv{%*as?N<7?lW(N$&%C@E9>4U3=i|xd_ACbjeGGSX$WK{X|MvPe8{MH3n(q+H+F)yH@!_!1 z8=aiqf8lWsoBzKo5xTuEw)4&o?t;o9o{iR?#k1NJk2p|GFdV`ntK!+I;eMZxUlHQ%ZL~ERE6hvr%gn z5Rq!l5D#d4C4K+L&fJcd4ZE|OHND@yinQRXn5Bi*oxa1l@=g0zslr{hHm6@*W?Exe z&tirId7$Q7Gso-~S~plP6?tS+r|X-sf=tuGEE>|E~S+ zsN*5!YV)6;%W;Ocn^@xA+uw2~^jGQU=ic8a)4hr>F5;J$`n2`AU*GL`vO%!Gj^C#7 zVey5Z?cDx9=k~uWj^N&L?)crj%`4oJx1W2u#W8fADBtlF*0nco8+Ft*C<;&eT5WZ# zbe{qovfyw}{XOw-u?Bk}CT*l4HO#V;1N08}(~nKbV)RGvoKo$+iD~?T|Y9(>+6pRe7g%_+LBzmHel# zGrrcdJb2cjxOo36t-Z443Xcj8$NsOD@fPb@t95bP-+l9TNbtJ)^n?YhJ{M3r=axc3L3E^2+Gn&pVGlhfH6Yy*292$L%$-ud~_AvTlfz0_cg`ydYc#rE}m{+y! zdcoTdCVV!(RgibhJg{fXchZsI$K^< zu@UQhzNz$j#h3#k9NzLjkAL;iIvRX&&dl07EYH8~X8JQNwU)2i zx=t<7ZgMTBjr+cDud>^B%de9@zg79epSpP$FB!bOa9zCo@q_1?tFLIm=fF+MnD%k3 zTywc|MipB>%RiwXFPG0>WyyZi_w$^AOW= zSTN5QzF+%YR&Vzkqmp-bcE**y{@L|9^@(`Y3|F&xw{O1cHgNyvB|rBs^WqH~1h~a? z7`o-ob^eb1bz^2%PPOs@`&m<`TxdR=5!2c(&7WsHos*AmT45^NC6DVrYvkcgMaSWVUd!S7M1pp zf3nW3EW<7z|Fg$nn=Yi+E{{%hRkX^*w+?dLzs zTz>MFs%aF{AGw3`Ya;`m%bU(!uiv}v;Uxn_*oxx^>B<4(ic{xKIT6Aidvv?-b@iX0 z9_p*BAI}wynYVw!r`7vTipRf-a#zSOLhCIe+ncF0J{~8Xt&oNZVOz&jhbpgpCpUSvT(DS~+L` z%gpaVS~(&tPr6+fzc^;RNHG0XgjMigD`hL+If(utlGcK0!XMl{o>~U~mlv4py@0_) S+MI!bfx*+&&t;ucLK6UO{YRAm literal 0 HcmV?d00001 diff --git a/doc/qtcreator-vcs-diff.png b/doc/qtcreator-vcs-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb9a0f5da83259e30a92995bba2349349cef858 GIT binary patch literal 194103 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 |35ED{P`lz|4`k&o?)~2(FgYbvPIJL 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℘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

VR=8)9?dHa|Zr3ZV;~fd6Ml;^Oy}9|gN&oiQ zX3=}a?ruo+u`F93-~H9PPjKSOCf?&^YmVR2b$`+B#9MdkhpyQ>+or$K*B;Hz-*?zN zJ1p_|M5n1U>H?o7-rl}irf|1ykB#ltdgH$0k2_yRY|Rqg_9ta}U@6y2>1#=6&F@d> zF^$-*D7$=>)REsdpQr9$Ca`-YpVz-tq0$9jw_l%Vo3mHiGBVSwe^wB z>sRrywXbwIXSFbVH@(xpqyAMu;B~%4#b4bs%yQ3O+EOe~dPiQ;-b~5#e8?;Pnpd4y z()&L5^!{EOq*JZL>#uYBy~qCgpFT@$x9}{T#nV-9!`olK;ke-XlZ(DRn-IT)xmc~l z`ToAzi<@uPRy@7DR>gLc;yoX6=YMD3KT}>C?O**b??;0FO6B#>E#j*t*YWNBwK)HL z-i-gw)8vb!Up+lJVP0;^7SHGxwnBRs7j9I4{`|oK|HI3Jc5lzjUUs^6x1HSUpk8?~ zn}xY^Ry>~H_Vd1`WY0ww8^d}_F`I?ApSK513g0FF`DLB|rttgwY&G9I-w0kfeeun0 zuQbBW)O+;5Klw?jp!nKOxn1!u@7I6*I}yy z%A4z*-=DIXRr|xiGbWq*-|g04AMo~aUU2`%ve_25rdR*|np1y%UrOJ`&Nqi_E8Z?N zY0qD3`$g)Th}NE|?^bVowDot*ukfS)wpL7hQ+4}u|Kmj-s?B}5zmi`4<`*t|pLlnl zQcfPV(hIM-{tQd|B*TSsebW&hq~+Lyr;iEPdvYA=8I)tMeiCE-{jj}lj^Ns_v-ui zw(9>mZ_=X{%U68j->HvM@H;HHc_JiiUZ;!N_Zd7-7gw!5&%f!A}|6alW zf5jtqN4blqShVVAv`l@_*KjCYa3xpq_bH8cI$d&(Z(CtCwKK*wA?(Qm^(5oPyN+G* z7d;Rb?j5Yaue94vu6Yu>qTME0KiNBde_KtwM3>&!W+&^qkaNe2OWuYWib6XjZx^gt z)Ho|N%C+?M;@mBl^>(SVsq?$-&ztz|kM)Fb+0Mqp?nzHRG>6`b(*`z#POiSa~ z=5_zBUR|(Yju|u4o$nQYZ=C)zt!;9_{Nz7ZgsY<}J~4cId#ho4M#vAgJFV`=`7T_V zazRKm`txa-m)ibs58mskIbLdbTs+)rUF5ZyzpQ?LHQZBk@N31}Gxf0e%yCUN6onN`K%xTB>Kb!l2`Z5ImIL@ zSHtttn(M#s_qbipjs9FW=Kk<_W0CWo>AS8>TfATg`@LV+wQ}z4;L^XhReZBrU0;m# zx2fvp5B^358{Rcz@19oE7H2l8^xxDOU+WZ~?fETvZGC*J>U%$@CBEOMm%VM|Enb#z zs;ffhR}Sa0{`5-uM>E8u#cr+gxLzc4XOqbLI-jXK>NS!wvPyH;itnwxabS0DcH)V!dWs)4TiokxSaYU#hQY_WGc)Y?1XHUwewi%0EO%On(T#wu z$CV>&{@!o7cy`CbTeD4O*Z;ZQUwEWpecI-i!5?mSRc~m?F?hYMu_E)-)E^1)8`aK- z?-7*#rn~%G^vkpV=GC4QNe;g`Yw!AFb9%ftWL$O2iP_3AJ>|^7tKxq+-L<~{dcEs@ zvu5_MpI`Lr3ePI0X6%vfGdz6kfmB!Y{*M#Ho}Z1kdHIg}xI+rtt@0MWISri7R*$Y6 zbB)-!m}kobZu^d3FT;O%H(qqE-u3Xxh2sU$U(TBa^T#>A%@BMize7BDy-e3?`E?8a zJ&j+WC-T3dLauD8bneTW{&WBI)f~O4zxNAo+qMJ0w!7IUeD*?&;W9ctuy170pLlak z%Boc&{|&;9Xii?z74lU1|BYw-!pm!(v}eezJr(@3ySsa9ai6s~({=Z&zAs-_t$i0= zD&rIUrSi&>*Bx^Erq7wPMs#z*L#I16pU?K4?~yc?3azP`zi-MuG55Y#%C4XJQZHp} z^!W1jV2b)h+njlR%!OZ1sFd`-?mH+RyCC=5q}k5OtNmo%1>G-S`MWLUe#g1k7pvr2 zm-=k6YM-#eqGZumzuRr)ZZ$DBNlKY#@7mbb|6z5$sH`S5(a^Twp}@SRs1_ajw&lN0 z#TRRNU)TSbr1G_E@z&(z3wy)MU9xnQS!y{B+kKSn{IERp`mHvLr3qJkOLJXf=Vt4L zhbbSZ?aQ8R5OIh~h3@1hMe*-)#TxacOP8C<$?wnQ2-qXdEtXrfdHKrT3(Wg( z{*{fZ{FCyE>rH?;dtMQSrY?!v_W#f~HCtpP5`=381VJt0u?$PBb(d zncXBdm4)oNRyS(Q_}t5X#l5_}x!X?5)P$|}_t9VJ$(O9_KZjS$7N~vst^34r>!d&4 z!Y^O()@-%Ce{rA5Y~Nb(-zU;erZij6pVe$QCF|v_zfn^0AKh|9!Y;1byR3Ti{`7dG zqc`%{+jFA4r`^7DxmeE0tH1BX4Q1B;JqKzTujUDI4dc9e|0|l zt9=1k@3-&y$~v#)JG;C8-$m*(8NbRt^!#zvR-8%Q{LxlX_ltTqEm_BuuS@?b{VJPq zt6XDFmT!TQ^hSP>U&+#I*H^Gw&)+}!Rv_20`zPbRbJy(rEcq&aQo&;tInP?ArOQia z{(JcRW%c3c`Okv*L-&V0Vb6(&OlE+G+!Q$GZYHHVYVl<76ne6 z&}Cw}%yRXq$dDPUrmtG=n&f+Q%G9ZepP!wTlB_*zYIBSwVsDkHS?;2{6UFtft$V-s zdmQiQ{tV~oiq35b=jK@6s@?zJrOf?(2eZYjxvih-atk%Kiyi#v*+9I!e^zeS z;ySn`vZs25Q`j#)nG@RTTbn(zZC}iq{UWR0{9%0TUGK@(*Ay4H?XRA6JZHoT` zj;u0VJB#g=58I@(nc*+4L>7NMcf=*+dG6u)>*w@b+-a6m^WCj>mD%2az{(u6s+$FE zpDtKk_|w1W#p3wS9l?*c&QllsySvTe)AazmQ;td&{ejkY<>&ez{HrK>*=UH(YY$;tier!ZkCOP2YKM!^^ix_mqVV{DTz*J3U;NUohKHId%2x)f+CX zpYy+J^Th?yatGdO-VLnz5WQ#bkLW3z=g!$|JuRs~yV-2xu4n(AZ_NI)cZU7zvOT|k zuzY#BpVj=<{&zmFleCZhs{hBjzp9cmak`i36=!SSYT3nC8vhEOyDpNN?fyo+^#mX9 zw@Y~$^%}gtPkwd2cyZpoWwWl$UMe22YfsyhUo&~HPOEb*S_vImf{;t{T zxoY+Hiu9a08$ad!57OV4(zLN#Hs|e*v#N{ApR?W1k``Qj)&ITyinpeR_UD*hjk@=# z>lT~N7V9s|*EGcSGCVKmDNR`P;i1a8+8I0F-KnoQd@=felJRFty%|l>yRYSE*Ps2> z=chS+vG(z@y%NT0aXxkn>~mwj|B%1 zPEJk_Z|~skQiVKD=RZFxEGgI9maDVKaMfFb4|^=8|5+Ep{&zyA`}a5eUp}5(Y-n*# z_~9#^Q!m{`d}lwMxMun47wwI9F(TV$c|GU3x31>d_4;1#U zh6-vdM}M0qWN$moFY=gw8pEqB9shG{of~d1_;oNxZ7Q2*_CnvemNQq~+E8_H@p3h% zR{vFBO@o`Q_z$E*{SdNbMjn{MJ?%VyQLXyWZH=j8rgwrM{RVteoB zEw{z<8kjBSg!gtY+In)O#$wY&mRGW0n`JF;vp@IKQt8*9*B`dWUSIg(gZYfw&+83; ze(m1)dZzYPn|Y7llzv)Z&U^gQC;$KZeRot(@KeY#f5CtK@a7oXsoU)?OzwS@vCC3; zW#w)ABY*VyFWnX{SDLzX_H7US@ZZw4c6DFh%&sW?+I+%dN`E2eyw^cr9$QOIv?~9p z*7I7r@r{37f1$DVn;Y7@UuVzSlq0=%^67<3W?Z^*c~0H(gh}%x1-YJWyK=caN51jJ zy5h8%4wagiNc=z1Cc31uDm!qM)UsLAJK735)x}ev$2N6Gc zU-;;6af;2!&3b$&x1!nN{g(UZj>dLgT(Ly+%)#w<8cy3)3e-pLV7R@!@7M>8>btqC zY=bhNtj}rnID5VJ=HEe%x;%Z3VcEp9XRN-m9?uXdu1(*oze3M;<-w(2 zRlnxG`5VwYHz)3o_L|d`w@x?O|Gm$4=i?busgo->7u&y--|w!<$j|rI@k7Y(7l+UM zIV|4yt%CnA_w_lsk9ykI#U}smJGFTB#>B&kvmPG#`C8znw&>yCEssxp^Sx2I=hDmH z>5TGP3=DjUpgRH%oLS$Lyi2f^caP0~?>pa4)hl|1AAY%BSK;;s4y6xU-!s0m?x}6m z|1+nydCrZO)knhbCxq-X{nfa!u1F852joz!oS+i4Q>UD5%}&!Fk|&b_@F3aEK{>T>Bn&!3GtX%%v zbCE@>mdVVt{(h-%>)Q*<%XOR{2^~nzD!RP=kw=_nu8CXrgJ*KiaXaUpEee`)?c&mh z^S@T!+|s7`c7pGlU=H8;y~|9Fe}B8oW{YrMrd-*3OTY3(7j4~gC%#rW^72slzX=hs z`xi0a-thf~X2=wA<>ww^zST?QZPzfgX3c63kDAfi^M-5Js^wOnYK3E^L&K-(EZiv& zpgjFfzoCRdh5+05tMyvP`Tdra*0EpE$W{xTYrkf8)@fe%gwKXbH~CW%{)*=(Kl?me zGt?;Q@XoWrceeSSIAPV`|Lk6C{C@Yqw_o=;oPV#i{-KpkqJrMCC+GM5;@c)`)#5vU zk5kL7*E$WtGhZy6{`|sfE$(=o$WCTU){N_Re0Md~7ajgubMKMK&3Rw>{H0pkJ+6Ef zo`3XKk4#kEQik@jAlc8W3XUzm({^#)n!fCUqtUzhq+2+zf4e>@?22l_nXT6!Mg8iL zH0`)%ShkIS`SS+{8eUD>`Ym_Q&y!U$N-}=)&mI2t^jF8xCv~w8*6MAYYGoNUqnyXG z{o3QNGv`l!Vk8n|e>Guu+onUmU+?(y_~7ylDVG^Vo}?z;zV-FQ%AjqR&OBQpeb;eq zc=W4J$-(jm?!WguGVA&KW52Dr_q=+0n{8h1?Ew9y#nCPov~<}2eG)BuHg&E_aBRvv)gbrc!a`=Y*h20}6-Q^B3JUp^_?Y?r-)@crs|~)Mdp*(XbwPaLQPCYH zUxV%#R;qE{>^Xl;_EG`=vSpip{tW+ka+|Y;VtmBUXWkLcB{yR;|NiY#54OB{zT)lK zfA?xnvLv5XmpaAezenbKfbS0d6AIQ-o}@gOYj5ve{_dda^U@8kkGz!rv_bdfsXP0v zmOfhfJdeTdm#$oOv1$>QSHUh7{@K&c9J^bu=py$c{?^X8`!Z9GR=hiWru2Jjv4YV~ zJ3sx0s!!2Okze?7EWyZ^M+24U}Ke#a;E2$>u;JGSXYSdPQK=lpfY_Vg^@_3hg7 zl_q`3+FzI#`=8i}JS}{-vq5{}sq02YSCx+J|Mx4qTji(N=Crd?DJdx#%0V-2wwehT zXL)UOzxb<6P(#Vd@ZTPm^5dEAvyD@8+_%NfY;jb+=&T&G*x=2kM34KsnAtCzKVHx! zFV=4HkMXTY(*%c2{qOAh?n+-*F8h!w;r4oJoJEnqw!D)LR(CHu?attls#Hw+^YPxc zeV;bhoxHJ4b1uhi*@RhQTe{+l`r|sfm6KyyJA-amUwf+6#|)sK*x@2QD=I@$5+a#+5r1w^n_8Xk)Zh z&e7$cfi|pFd5H)NDF$UcQ!eEv!~$l~m(V zZl2dhS36XGm;PQj!}h&r&+K1J@1jquyke2c{HHOm!s+d=HPf$uxUO3NH#4X5U3tMC zH%W)fpYo;GOn<7|w=Lu2x^fx0A7z|P>319NXNX=lt*AQr-6QAyQlH(6{y5(YHrN^% zF=bySPwK15RhGY2oH31^xbLUBginf<(bioy-5nS9HwlI$-s<))NM5gS=umNNp1)M{ zZ~Z#iV)+>jJEs)hy4?Thk!AhiEr$P_pGMbb%kwVFIX)@!T2hEzo%p=PHs>>2dk;VA zRX!#5`)e-5t?aLv7TBkS(% zM7wLcf0&q;opnx{U_5Q1i<6%;!=LwEXDf2vSk#97Zz$5)|6a`C?5T$@w}&gKMs4pl zbGVSaN84=O^?7gSKe;;n--Eu70=MQ&o?85c_wL6Jr?veHwpXeWInU}5pu5Rh^c!QU&I(>iD(`-NP+AAOS^Vq|$ zyI1fpydKiK)pu|2K9faPzcVGRRDLyx`s?2+_2%z4>nBHf4~u#lw#4$T&6H{r z5O&(OuFZY+Hdl{`4$Jt}E|=0ILQRaWSjw(l=e8+#igC{;bGsks;+@O3Z{=Ndc3Bh8 zua`e}_?ZMxoF=hC>6I==;uJUTWxFn^IM=_v^`q-gPVtIuC*DqWU;J@dSz6<5_5Le% z6#;?Y(^l@e|N8!Z`+r}S+do{p{obc}7gV?H+tp-d&6JyxCb8@7q+_pDpX#q&=bTZk zB-*=X(sdu+iF*lC%XdkJepZ|Qd!6;W9fvQLYx-(?oKM>< zm>3aK7&ZIdZM!xz3nQ)U@B@4FzOK-)^;NDeee-(dzU7^_db=(xkJ7#y+b_DsFg!Lu z<5sZMz>-3bG>x&t3_9w)dQKc=KL z=TvxsDeiqU#tnOFw zQG59kIsKYnQ`>}prwBATExvG)S7UX~WBEEc?WB$mSIi|Qnar8jTzBAfh$qSbRgUt5 zPLEXEGdDXnuYG74Hcu&`S6N*o^K|IP=X(r8&88jx`Qz6cp_ML5)6xVddKv%u{moEd zWtHx$?95sFw*~76&z-mY9=oC9%Jh%_%r#gN^EhX=eAT(V+oA94-1{;6itW@w=Wa2$ zI#p`g{?e~&cP!bU{NNVf9>&AD7rq{C-Tq}=;VNEjrt7Bn9-B_ida}Fs+;WzzpEDm8 z$dxW%R4d#3f|aM!K=*#MO!}v#5^dcivm}%4~M;3cWzSPlsjP{YyD> z&pY?Otz5D1*3{ntm)cHUmVAEELQ_0uj!doOe9gc23GGFZO5Qd7@@}AKqRsvAnJH;n^?Sj+xaxN{`}x zK6~CTw&x+QR+au}T-A%RFfW6TWsl&>n0eBvS7p4mn9W>vx!qT5rQ8kQMSu1kWtpTj zF{Zzcd!xd_wYe<6zWKRazb6~JgjLaQqkiu_quc8as;-RTV)AuZVEFHRZvX9-r!L<} z65T1B@$cBQ>rt1D6(4arZw!3Bq3ZOOLXM!gO1bqVFW(*fUvqRj-))n6-C6v{r@agh zQ@&O6BXaG^^2)Q}{P}ecV%1TW^ePmv)CjJW(ND>G@WZUyudd_C%1K#O_WtqD66V}n z!x3GYqqp={OS#+p&k?(RXH4_stle^UU}cqq~>s@K)8QkCtXcE$hAgV2@yU z)Ba6oZf{usV_Hj*_qC%{GCSXg*0wJfzrJ?)`wepY|MzS+@wW~6|L7$DKjYG=L5MYv z3$`jh;GcNPX6}TQx;KP>xIZ{9U%zIp<%uk*>pej&tCVV^3QS#09T#|VXc(F5>-$gM zoN-a9pG8*vf!W5qyH+t}H&b6+UmrjDRM=}#bI%j!O^he!?Af;YCV!&bPi-@+@3M=R zEMYl4U7vlj+`7iMdS+#=uIp+Q59psgbvpC0!Kc+93ThvlCC_{CAmO97vclRgbM}A# zY2EVIfmb7AY3S4}#8wptZl?qBN>f9p@vi8o2y9vMnk{6mbvc{;4tA+2G5J41r$f%0 zmp7|LUTvmHXiAIyCm+_6zK#n-6%V{^IBDVkw(&Oa{*C~Z9PL%VEW<_L?cc#)x>fY{ zvR%7w9bR#;c-<`f=+>L-a^lsjV{*^rPVh7|UGyiNds4`riyQ_2&%Ivn?&>=8S7>6Q z;@Zo8-CMmgwsL$ZXR-fnwD6q1Y3%RmVbO&vXDGn;)ciRvkij$Yl-H>fA^OW6y*%Q} z`OoIh(`V1BbecYY<`4R3V)|pTck<~CPRm4%BJx*1(coDFT0Hqj=GE~Tt0&%GwXabQ zvV`*McCeE54o?c?uAhCyH1Tm)_s3gWmAbxttCGDho%Rt|J2HcZ+hoScoHaVyDFrjb zP6qypR$agJq^0!N z+QFeNVhfk?whpf?A@Nx&tG041?i7O7sA$vy%RUDM7p?U(fBk3Vn6XF3HTGp30|Ntt Mr>mdKI;Vst0INNY=>Px# literal 0 HcmV?d00001 diff --git a/doc/qtcreator-vcs-gitbranch.png b/doc/qtcreator-vcs-gitbranch.png new file mode 100644 index 0000000000000000000000000000000000000000..398de10ee6595f196b5dac31407a310c1b201f31 GIT binary patch literal 38666 zcmeAS@N?(olHy`uVBq!ia0y~yVA{;Uz&M?Qje&t-fzgd+3=C|wna<7up3cq+0Y&*~ znK`Kp3>A!Tr&n7{$rL$o{=1=ZOJH8)O{va9Q=+v*6nE|Db?n%b+~Ymd@NBEkww&8x zMJruQFZMl|#Ffi+Ge>;7YS8Sg6#+M$roTNDls)tBzBey!+JC!Q|84)C^PlbBzqh_` z`Mh@j_nPOH=NSX+Pd_M14q!+qX0iF@mF|^r!HUb1OJjngWRK(QgHMX*W|;8%JdHng z!PenJc<$%IcuPCptIOX;Pn-HO&3pSc^UeQ`dg!Tr-oVQ!prv-9OXm4gi}v2l^5;G> ztz)>{d1$8OQI6vlg2`Iv``}M>5BIj^y5E?2wxCA%ll`)^^+u@CLI@L4tZ8TiT8s2J<&zQljRe0TdSE}u1YpsP@T*xk(_>-LBdvH za_^IqDT~z^MC6!aIup4n3*}1}@NWbiN8(%cX6C)lpPm!H@ykT!lNWP#_6INe969~^I`2D1Vf!L{V;?`)`{MD@ z=9TKla|=^{F1fJ%ciz{@Kd!H>6*3TMSrg3T*3|ACx90t=0_`ui!bN*7ZAf}H^Mh7c zu}l0EFO$;6Kh+LP=$bX!9(mdO_CehJKg#P{^aVRwA6aTBxN?@RqQ`k8uN_EcZS|NixTecOPEg7p{l zCQrFJHMD%ivx37D*&j{J>3uVC&adR%`@T<<@H$o`FTa0YcyZ>84Y*KAT^WF1V_S?<7W;d;$ZJNDJV;j%i7uj!j+^l(hNq^~f z)!g6jRPLqTDV~t!vHP}v8OQtGwhL@rzs7eldAAGhBbC z`SSCN)~}rZyXIQ)%kDGN?bct3+xjQ$lhyCD_qI2cH!^p#g|ff@t0xy_y~gg&7rUR$ z-{pVR^Yq;Lxw&df!kYy;9&LZ;PX0K*=YPt-`h7p`<9>gb<#6Ox_`f`c|8fl9*%&@b zF+5(%Fe~Ej;+2d)ZZc)%+8RFns?738k=M_G_fA{-2S!C@whrD+T%3+OPWZX>Oi|i; zqV|dIsvfBY-!d3Zxf@?73hC<8l+dowR?!gAxD&?WT6{F%=-;kzQFacu76&J-hg^vh zGQ4<{(}dqoGVv@45_{QrNoMI;uj^Avr&yly4Swc#)As4kuI;B-uS%}+T(y7I&XuAQ zIaAbj#@%(Yt$)?C(tX)W-_w^jTv>5FX8ljc*Auqw`&KAxJonYhEid&;FYk}|b2NDG zVdFbr1OL9#uQc{eD?8`4_(otA&!lwy8F%w$7^g3uICtZ$kB@gw{rqiaj!CKM>|`^y zy~g_s9QXXx;%4@q^mK)3<-*q9tBWeTHNC&&l)l;WX6v*p{maD*ETr_!%Quyl6@QEu ze7Wmt?*CJVLUpsx+`VkGByQEcWm}Hgm6b@x2iv>@nqjg3-0XO(^50FX^+zG$#a(* zoj35ldtT2vy-05Fg$T`E84^$x;2UgR9>6{kt}O+kVk~mG%jLt#d6tG{5gSz2fZgUxt$ZPyXl+0VM7ayw)EKSP!^x)Jr94}?zpK5%t+qJVX!QZHl*Uj^tu7|6 z9Zg-V5mgg5HL$RBPT&$Y^4wQ^Z}#*`&os5%wk`j!&Md#L`+VN->hiY9#?SAHx728w znr_W6DEPn|bZ2wa)~vV9O-+kFnLgCyoWOuUbA*{JEiFB7-n_XxWyAYTn>N|?_VmQ0 z%UhhVvMhad<>$hM3;DY~R_!lYp{oC)yOYJE0fA0UYOsiSShcjX@V8%D+OzoA*Va~h zlp6KioUHC|CY=8!#B%>_qolQqOEkRiTACs3oZuj;rqCC5dcs*-uD<%t>EB*feSP&; zXi?6SCyItqpCvY#B(46i>fsenxLpfm1O=i+fA&OejqdO6@@JK`ultj=@=t)DL{vbZ zo>ZtJqtFT_mN_SH?8~%&RraRm2FKy;0jz3gH77A}PH=e15uwPgP$S5#VQQ)WJn&1wF97 zFmqz#ng<3gk%A0<>PAn(*KF8eu)f1+N&ogLXSt@O_f!M+6$gg~dCV}}_I;n1_9$0l(YyG!hcg3Gtoiw)94Q8GWj%zJ(M#I#v z|9KvJ3#^b!lGuLYq{%)B{@Q;sZtL^=)AfGKzmxbKo^Z+NkI^c{e?Nc7e|+QqQLXFr z|CUta|NP>nlh$A8xm)q>m}Z7)p@`7EpThrkInLTL`B%MnZSC~Rnfv(v*F60H;f>SU zD<%^0Z)%xyRl~jGG=GODA2a^`FqFTx|Njnwa{ied$xq7oAANT1Uz{u({BB|X|IUl$ zHrdxY=Y;R?IDTQ9;3V#xOZD<^H2?1x{rUQBuD18S4VKT>uh;qf%*JDZjlhZY#cnIp zudR*?eaLj5Y`Fe|!91?8%7jKTLBD%#Ec8LbJK}#> zyo;z1zW4Kcl1c6*nVac#u70=elYU;W4g7wl%%=RUhEKGe#QWYi9CK{D?>{zwAYYz; zz*qSGLHGW-N3EUZ4{qs?{d!J$#yvg0{O*^(o>!hOOkFKyvFp9cE0#{V$eSxPckQXV zUn}=J?M-}}_mK&;4|@AIEGXyIseBO?W4_C9+dgxi(mB6Bu9DakDE$0kyJBwPqvwBD z1ln)$`NqD!>wlPt+4DoMv|qM&Ush@?c02G-l6&L)ImWye0-z)~MUwHOR+n|j_uKgi zpKjf~u_0Py=gTUSwZV7)oaA~L)zH6fPv5$A)tia}q`&v%DaYL?Sz;ZvaQ2Rn{bKd& zKK_-Qll)~z@iDGHl@oqNT`t@yv#;Rl^5gZ2Z8{$g?0)~~+`e8Fc9XoC#y#Hk%ir&- zzP4BY?Yd)2Wu;#1&D!zenRTQ3^vCs?<%_aUM2fcZNHTTxG-0p3;`tBP}@$MCvY*#7!(%i1= zV7wpmt-d3_|JMjjH{sgMdq4*ijv;kSCTZILO`q|2Hn4mW5O5ASFPpWd>*37>)_Jq< zFu&isLFRXGzB8{f+rc%)xi@*%%&A)}vFUq)@1NxvY7bYyO{=y)G>JFZJjC*6$C$&77Y2{>s01X=lI%gQ$W-@;0uR6u*fq9tZp!-Z!xBv;SjU z_TH}hakbe4ef=7J-eU?;I*~UUqd)1bUv*JeI^93}8Bd?8ibCc6=M_G)=kJ&8OpjhX zFJh`2|Hn;I^P&t*LS6j&GS6JgxXYfr^ye9S+qTcoe2+D7ANsgow*A76aCwt!+k&P) zUizLjoQE~8LWbWbuRUB&s$qrz`?oiLSkLOcZ)}U)pRn`JgtEl@-U7lG1${jI~nNXKq$u6gr`*a4+JnQ^LK+I}+zbR@~&}Pd>QAUeS%`vTc-P zs(G68#p)y78J|z8@a+D@yx=T{Pt~KaJwHyl+_}7k)lN<>>y3wil+2XuGi|FP!e=lF zH2`SqC-M3@VfDhf=QG2_Ht9<8%a zpSU1u`UP2n91}yfrk%M7s!m~zhY%^It6FD$ECi8_)^b-k^0Fjsr)TjYs2jkJncB=? zyLswkt0FOkXn-oGLE1L2xH7+4ph^g0ofbP|Rhstk(kD6)K8Rf4C6sU`XX>6eb4(Df z4dG+@awe?r^@&KR>p^wpRFwlWZfaHDw9G`fX@v~Siu20+y@;fA88?`(e3^#{< z+EjcA$vu`FQ@GEsQPvdf?CkXL@^X%}KcrZA+pA{N#|X{!c|!Z*f2pb2|Fd|u)?Z_( zPMJEyC@}fKZ9z_Q+U0K#dXMWJo#I;d^@HT@!C;`z>hCjfaLcd*5r8bn>+;>k9tAT_;d_`1A**malHr zEmZ*v#PWW9v`#V8xuayWHDC0@o!b(YE4tY&8TE?Z9o+E3yYOoHaf3~J8+h`&%lH2i zose$a|O9%HVU2E$^Q{ zJoj4uxSpou$7fo5YTV0PEWRaudi(jp?~mOZ3O-1znXpTfyYA58>)R&GS#P(w;NtvS z31?1t&e&8Y&!&Fv_}uMw=_lNN3r6gFk@}^B(=n`!uV~X|o?4#9o%wt<-_Kv4Sod6e z$Ko)SZ+dfkBKLnkHdT|`uxM6>VF8!fp3es7em}MSGG{|@Rczx5P2~;W9<0uozm4x#lqkcWsvHKyTw`OWXrtJEI$NtGbTyTW-eMFtC+`fI_p<<>-Cw^_@PON1?)x^s>j#Yw!V7Q zxw^Er=ipB_Sb^-o^t8iaW@Xy!($~yy=JcQK%#-R`%c&F_WR9> z+k20d-~ZdO`&QJ)RkarsF1<-NG2PtyZRO1Dsj7+ZHe|$DmGkTEd*=3K=MrYWv?pAe zL2iFH%SxFRY%M)>@9vkovqJrzN1nWLTDmpbzw2DotnZD{`UfUNFJI=ZCy@5!%(gIo z-CI`W5>c^M;$QXp4u7rHb9~3LB+x7G{hpbNUObwa9cO6+>ga$=H-*MeP7BT?r5(Qg z<+z27tnAj|oRNF$uhq%>UB1WFA3n4b?`Svltc$xIaZAS| zL|f*P+vBXces32aKlFP=%vna;4?_4^Mb#n`Xu>0pHU6h57d4C!*9;U z-k0;Th0OF!)f!gsHaqsc_)+7WjAqXY4_^*lmAN8Oe!P=RD=l5$FM9E)bM@U0v5QDG zWI!Irl$q&bin<1s_pN*^>e(LMI;Lc0CAIdE8t05@D;COKnPHI=`A=(}^qs3Ky8Cil zU8_~n!X};8%zn~q&MR~^5RAHJG$=qx`TUSGdWh~b$$90 z7i+s}ok-FypS8i$*{|B1EoG2izOf?jFw>u31#>Kq?@KnwduMg$(xE$X3jbqlPV%1S zJtEL}EGB#5{~MeWI6KZnocaB_h8Ni?0q;0iR8>_w->=UJo@HZlQ1RXV2_K?5E=9k4d-A2jtdOj^Elb37MK|^< z`#uWJ?u?l@OYLXDN%7K-MVd+ZPp25l9G%_1cX#`q%M;Zu?%H}LmdmAndGEx-if#2C zJH*reT|e4frK1E%6`+1_gRqA9v77_xCmBH%HLSa?rP^rJJ#+086H84*$*9m+?4?k! zf7NM|K6(4T_`090>i+YN%rs8#kzU@^-2B zI};GYd-KDGf|j;6skZF8$5;O~ZvJHDzk2Sotug1!;T4N`#5eDnwU&R9+}b^SPj&NGK3sb*?%cLY{e^RTx7*B|II}jl zz!n5&WH-p1IJl4PO=X?G*#GJv+bzE?$xic|Yt<^O?zbRxby&ug6%$)8>$~rl-h6v| zzPU)SYxcD@nMZsw8ud7kDl&z}RgMmOH~$K1{`TeN<(>C#`pvcaDeBOnvY+e9502jM zj-DP9p2&Q|O?9$U4k1VWDOE<(jH_~2)K~ob^?Lm=+mL@DSN2a^ldi&KQMO++xvrzvfoQtA$_FjlQ4! zwAf|qo~zp4&e!?_G`oc+jlF73GKpe3hqV~RJTB2aly z&-7~M)*P35FaC%#YwV{kfw%EMIjhU{fSh^u`QO!IjNLP@R&e;wi=5lDyvScTIeIde z<%H(HpAUXL@b$pg1oZ=76P6!*&%Unx(>6Js+LGK=>0xgVbIBV=hd76+pWpUONP)e` zfO7(~YH>E zyV&|8(Tm?5c;&3VvFd;V&ySq_S5@yDGRMc+a)ei}-ERKTA8-ghS@ns59`h!sDQ^?IM(z2c+! z)kf>*DOJ7S<@)Jg{f%D-|E|dAncDZ$wsD@~y?L?kTskcB_4!w(ow>T5uX6pu_uH&0 z60cjxr-%Qpy%?VKA$4Qhx7NL)>zbpT4sQE-{QK2wvD59JPn$j6|6f_vyS&#c&GIF0 z&$2nuDD$b#=uY}BGcDIMIdzY(*&c1O+-5p+g0tuYh2S?g-5nqk&Zi`|1^%8pZNL3t?PZp%FL4APT9wCy!*t9Iwk z2%NwDmS&7m(ernC*z?^De&~Q8^1-jnHHtK z{UvtA^u6hp?N{F&Gd*2=u{Qp3)34cYBE&AN(r4{`CCLr_Y`y=cljbERU|%P2sDw&yLE@f4%aa-obm<;@)YV-=-#7v|@(L z8q>9HYo>M;>#ntHm0caVk^7%j)bBG<=kI-;9&^et+2_Q&97$-A56S?WA?kW86W=cmJqld^D1glWsc6YH>Ep%rFFbnZCLm+ z?s3igNy`l!>yOSi64-d@-B16RW}X(SNE&V+nvtfcJ_~)(iKy_4}Z@D zN__YuWwG?lflHkowNHdoo?MH5yGOqN?-s5Md!E?WyKkMayPhS$w)5NWZFa^74@!lK zs#MF&db{U*>?`i%yxEu4+&OAa6`fVxKd*Ya&ylIZF5iD}W@!4zM=n|u`}*LeyBn|X z__p2G{O609rqaD3n?HV7m3=Q;LMUnN^sf=d)l+t=&Eh|>`~K|LCtsU>TeW|==|j2X zr)O@b@I-FbWlwn8sPg9TlgcAfuLG{1*Sr38`>o#*hvSZgi+OCalipRAfB4PK%Z3RD zO5T)e$xpRq5MH}g>n;D9nm9Y=`3DkDoH_6QukFwFHTFBjo;`QGsUi}1e$n~EQT;Zz zu5EZNHQDoNQqo)X)z`0X;?$MCc>lVUg5l;*`fVRS_sGrkXkg(|FF5sq*Q%i4bNh_l zA-DS9^+_CVozWnEo9Dn8?q!dE%UW;9`4v0E=0#r3W3E-U)sLdj)Mv3Ao4b?!^uCBT z@poDMFO`2i_`5e#$>sOA!&iRXi`Z1hy=_f=)4h+u7uTQd_6X>oQ>_2bD8=ZN-CwzF zZ*DZ{Pt$Sy&h~KUsbz2bj~^4cTzY-W_q#j1vu^dzYdpXIhfMiboAm`hFCDs&|4GB9 z^<~7SH{4%d2a9Vj-{0qZa$Ta({^Q1%!ym1xi(R06J)=U=tvokEVb7tfw+NX7iBgqnCH9xk8)a1p8nOv8=rjE{}Ay0SYGMs z>l132;&yM8Pph*QyDYc+*n`J;2~TTYXYFshbvQ=9JmJVK?u{s=Fk(x?gF1z zHu1^XGW@@)V}#!sy1kXx$WG;S+kU?_u-0nPedct7_n*%zdP@|`&FHNNf3xYm>6_Xb zkDM=G`aa#XQ2lc)|H$|Fo@47)8gI=pt4B4?CAV6w&zbD zZ(MTa*`mi)IX5@S8NUlMo3D8B>MjFY?$zgIr$`E|P-0{=j zIV`8l8+BSb)XT0vc`aak^U9XH&YM4eZuys#V>NM4wP~8yN9VoPiW;`EU#-7R+x+v# z`^J_7Hn=4FHD zt2lq;{FeCh@(|C*e@yrP?O<+SpV{AC^~E4%#_#`@6IG`M-h5Wq@X%1UaN?1oclnnD z=ic6KdQ0{H^($vr|MAoN+qS=Te*7-ZRg6jR#oxaxIP*KleAoS3T(_t1Ym1fW+pgbl zmgJE9tLKPu?UK3goHKfYPDEGPh^=9HH|Nfo7x`PJ)$)|aS+4ubqsti?c{57OFj^_P z?)5jb?_U-fY(KA=ygfYf+Kmqj(kn``OZF~U*&-R!&~3H7oz2l=?#mNmM~fzHPx{8p zpZIHCV8q|g!5M;!t~)NBd0q8*X)M>}t987MIu<3DuKOImR?lOeRI<4GZqG{Z{RbaD z*|_7xVbgPWxi3xrCwF`K?Chc+IdA5FV^8+G`hFiA&JzZu>Oe-ukJ%W(Ozs-pM_DE9q3%_JXsk>>sz?ixsH;y7|Y)iniT$ z{(g_LdO!P=XC{7%)vYee$(Gtwb?-&do>Jov50g(9+B{Ye^ZUtXJ72mj?A^;9PsJ6d z?@8y~cUU9l(j8m()zK;Yl+u@3njcpCV)Jg6?BUlJ)+jIvX^1j%MsKJO@m4+kBB#H7LHf2YHku1J2^%D_u!+(%U=$O|29~)`LCIxuCMXq+~&i*JM45DFZYPAja82M zHE&u|g^cL=a1Y_n#qVrt4`rks?KRt#!SPI1y6MQ?)gN5u3+||Nlb88@+VqlIevVqg ztC>%xc*I>VcYFBh^D$;==I%SI-S;Y7dy~>r`=Pj|`&&fOX;-DoYjodL|5?7C!C&|A z&oV|u@df)WR?YtvAGB_r*7qmhct72f)_vs>GwaEovwJL73c6p&S%_gZdhMa)p}q0acy?hydP1orJ_FG z)Vd%M-|r?Q5jtTLZ9xR2TW-*&DQ*Y6*-)<6B^?EB;&^Ti*${rbD0_;r-UkAKZC z4E-c--C(J_x;f+XhKf%fOrfm}wdLGrZ|Azy8(BP`7x`N@x7D{L*VpMuz)wqw{lTYA zlB@cU{t{4}3tJ0d)44cCGm*Xi{+y1exsO%uiOjG`unEicb|@-R`j!{fpL_gF!{Jwt zGJchPI$iOvqABW;;T_Yj$vI+?=|;s|)7O78dFg+9TgdX; zTP3ug-(Po!_0Crby}q*Wf4}~=|G3>g`@vcJH+h;##{3C4Wgfg-eP#oDd93V~m#Q0A z6u+CWH*LG(*@ptjwYtx2R6lZ*mo|J{!6;wc|KiGeh0ka2KQSurSGIZ~yUQ*`GIuUJ zudRCg)noUrrrVh=7hG4LGw(<)Q*e7s&;I`l0@t!mUe~X_)Z+ZF4~w!7-g_tX*?(En z^&1%vFYQ-IFaPbkU+rKbS0VS;X{Wc#)vQfyUO)X~_SQb*YZtG)W_x^e|9{!@cZ9kf zC!0R7$^Z4OJ%8id1e<&H&#ZbTd{yep*jrF3eKPV{X7SazHgyu5)%y>{A6vO5L}gi; zRBr9dmAqW5&0B8V`>{9gkV5;Zvj-;!Z??F8=i9`OGgHs3@wZu{(&!*;@c38JrnApO zUuXP1zP~r{_4*@EUN2kt{a>cU?qX9X`Q2Q~Y&-rhoVV>)`WA8J0B44adaT`SUk_SL zUv>G2#2Z0X!{&~oKYZmMefcokaKY=6&D-v3)a=OIBiTH2V%z(9QmyPUe=p=&*h!R4 z)c$6YpR=qgtNN}nZ-f=&_0qY`>UMWK3&lm1?u%~Dm_OSxgeR}=ZQ7ZdH_kTY&!0}v zUwCIjS90|8$1lIHKf2buOfY`K`zagin_c+ho3H9B$5`#YU0$D{w@h{~yRaM2gy{1z zE1wHT*xu}MElc}3>vv_V(Rtzi*TK_{biDh0ZfW{jrmD2m?(Mc(w?z-HtcrT=xQ)BG zE%}6Z^h1yRvchbouFd)19`m3596w#cM(Oq9UDLlVG~66kle;b_nkO^B!)KcPJi4SU3VzA|E*J-ps{q{yv6ev-2B=;UX=VN6IY!iD)-y3Vs+i8`E&h4 zmcRZGaQ8|4Pt;dpnEOXPM<@9*+gsnPpQ+=Q zxSj9Tq3wT|jF$YZpO@SBu)dyYw$QPIVn?Gltn8ok_Wur1=Iwn44$iDE_^5Hi;_vsz z9>M*I9u`tp^>^HNOf1$vvFCwASf_cU>&45H0%s)`mVCAJ+m{`);@{6(zo*15*!02l zO?J(4i(u!NjXQSn?VnO=`YF1S_DFTE|Kpb@_NqQCiRp0Q{(Z-ItGtqqRIL?GUeG6TVBW4uE$)@gzgVSy zPn#d#W1QG4vFTIy|NHF=JUjQ-U;6NQn~F{8^Hh%Sii`agtJ!UTqm}cHb>{Q=y}$2l zUbE=s%V|NMVn81BnwK5J^7r$W@0vHAQxmgqT>o*h!h9RA+V@?o$<4Nc9H z>*w8+-6X!ODs6T6`gzYgHL7-&D7l&z+`Ja^;E4mD8l%6=oR0rls(nYlIP5Rmb|5&s z{nM^8nd93Mzn1TR{OI*B#basp)5B}u{&`#Z>UE~?El$xh;wjH+dBt<01MY47k^f=- z{IbUNm|(6&3?=6((lxtd_OPpbnhE`QBClICFnrk0wv)9 zWwQXYMfa1_z8Y@(R?+dt{;$Ej<1t+zH|nc`27TADBZhrLo_tMsx$bp@?WV-U#HaRY zVN**iWZI-H_baXz{uGktYw~|$uCEeE?|C*X{tKwRG9mPQj+*Ye)@{Ab>i?<&`w@0lii3~)9xHWtpz%v=$?-0x@q%-+5}GoG7Io}@%H?we=# zKnF2N!zi@k4$B(peL+D%JnPro>ip;D_{jC_$L#@MkIC89+$hj?cX4@AmGSjC|7&%D z(^1>|Ry9w(zF2LWDtjz*4F9uxXP!9l{n~rt{mDJ^66^GS?0oS2(BAs`%Aa)`)^$p4 zdUYeDf6c$@ds{MtmG3yb{yUQ?>CCD_zpN@hsrb#eo4a~P-lXU$8<^|;CZLS$o|9!f zExlTK)!p#TX}(uhhoAqEeCHSQmHD?=RMpge-8Ej#6~(r;bjy@$#VAA1r#uhjZOFR! zkLyU!-`_Tdv)iUU+NP9-7@uum@i?%a<KxxFX4LvtLg1PM(>u{~O*JKAif>smKV)C{fNSbJMSF<0&~A3pwIwQ?UrzcXUWUB!Xvd6UD;^6R4t%vUgX1RO6%DSeFg763M!fW z$Fn(AYFe*!oB1@|V>?!8e5p#-p3@$lT(Vxn1_g0!fNY#7T)SMy z`4ZmUns4y4>GK00?n8Iqzd3OGZSscPbG{wbe~NkH%$?p`6{*?wqOfM#XRW$h+nKGG zl^v0lf8+8<_-a6~_hk?D(VpX5Jp=T>W}B zYxnrhcbVE3GaoFD*zif{#tQKYrcHP*JmVbw7PZ zmpy!f7Bomfi%LY*0+!8-d|DT`*({^@V(p~gEb)0332|M{2X^$^9pRlDt*|Q0!YS$2 z;?Nh4d(6}M_Wf|3b;WpgXMd>C;|-7J3T6n3Hc!i~T3j2kVv6O5%jugN1i1~iRO=j4 zU8A6;CM6Y75SDU(dj`AP_l(9D%bqXZ?tPcI^ zcRr5VeonScTdwy&_3HT!6<9*K&0eW!Yf3z< zOiFgSNcfKD>SyU!0tfcslZKR7}<0 z6!Ff5QOs|5Z*l+4Ew!jkYRx&7H@CiO>%FiRx%}_jE|E2d-rwOlc<7iiq7;~-*=W=| zbFF4@{l{b79~LQP*o$lqzuTnI>CU^Bd(O#CNx_FNzJJL1$V9ej#rDR9-|x16vsO>| zVXt?z$$Qh%`8Q@?a__yp;El|alyu4Gyz6Rs``W4jy`=Mv2NE(NtAGk6yosm z@j0XE&Dv$P?eavme^;X>2t@5v)H&M`%d3CL|F4^UI!9LK@kJ`jnKSuz2Kpo=zx^a@ zmFBUdC%(n8+lcQrBGEE%PMPHp5EK;DYLMn_8_b1R`ot)-qJ-s?N!qqc7oW61$~Fjj zPP4J$*cmzdI+^`{K5_fav*|QWKPRzq&B22QE7fL9p4_}ZA^A09#p!6-Jy&m^zIiRh zlkdra^R5Tqi$ZFPrup2zr8YeO`S-#8_v}wseT(arG7VTCXKRvsD`cBT??!>&eKT! z52`j?e(;_7x^v{Z_BU^GQc_bDm6e%Su3UL+W8vdt8TaGf-QsuP@;I|bYSaFIzg8!< zu2z(mlk2;1A>eSq+5A1X>XH?OsRGV@G{X~EkWA}1PU?%bdG zC+0)-r2l!lWHYAe9z5@wU@v~k(%AU2LCWOGlNav4W}bD0L)NNf!@hZc%f9?x`x7)V zTlfEO`H^GC7UkXD)uyQJpLW93?JINY|A5NV(Z*lG^7YfBzc+=5m6_f9l;W25Z7X!D zZXIKh0y{X6Y$N}?_bg3WAZflQTmUrKO{EVDsk;}G&t6EQ-@KE03 zAl|fV*4Gm*h$bCq5#@^Vu=uPit70pDeaTd2*;@DaR~_qv?{|5=xaogAk#%AHvE!=* zv;U?hm%sg8DkkEFta%;BioeUZEhsgP2nm_8QL$nFRFU=T>y>%0{8|^edD+9MTYDnw zwS6lQb(jN_Xmf*=@l~~u-vMu3>Tl1h`+jECq+g2^qYcF*wyGdnh7Lj-Y_{y$JoQ$` zKfk*EnW3+vx2IgNzHwziD*8n3?|^>4<(JnR{K?CWl8fAW2sC03NrWKM;jPnY=hyjC zb^SB1D#X`j+OY6O)yM0dLNs+6yF4Arw{OaEsXuq%{k+I}E%!(i_fBqT6NxxEZ~Lh~ zrC+Mgtckk&>k`rgY7(Id)TnQXJNsvDo${?rXO-gWzc;Tf@!)%s0GdXHB}Nr+1J~ha zBtPrcPxYM1X@Ad85kfQ!8dyFFUbwsN%RH^xpTD{Cu`aW|F;bVVwM(3k#ju-`w3TzB&E; zu@@H?d+T(|BHX%Qm9Rz86OWC8D-^SrF1pne_Ir^GvzT%8rQ=gYRr?O{xjxpnQLU{w z?5)2yMPid})t3c|uQ`QIgCYvD++%?Ri;neKtE$(t?*Cr@JZm#+()^nZm1&>-58Y1b zj;?!kMe|PK@sc%BQx#&fPkGP(xSDP4*CU3uui_b&KiPVsV#&KBos(70BPZ|zJr0&b z%&&dlLwYr;GdtGrJ$_};e4C%#F+%0m%l2I3*_s_{{w&pE{n1C)KNek?F!lfOd)3za zei?D!)!WURzwf7gOnvRP#2Z!22aAw`oAEx_slW2(ZV!9weA?|ybnvdt4V7u$%fk-d zd-c+``kT(ZxGJf~alH&EsIvNefHX^m;V&t7!AX0*i(+UIEcS*_VAfOVT^! z&D?F)IbKcC5q=$+`FZ_yb!qkHcXNAISd})IeO*|4b%t*I$wt-Wtc07QA7|93-~O~z zYO5k5r`3SH@oe?E;w*m4t9y=}W>ZSr7Bw&M{J~DYWlKEE)g9g%EJ=U%;Q0FR2QRI6 zB|nN8l20YwM%HZU(T^5dXC3_#$L8JTvW`+e(k(W@|2Z=^5xe{a;|TPRkqw%d9vh) z=gw=acfaZdEv@;!yFcNDOv1qpWgM@J*k&)iP*`Fs*K2&cbZ55Ox9-1rYSZFWkPfD)UUUef+ly4*#OH5uE;|tCmcw_P%AVVI;Hs z9Lqx2?~E&C?@BBW_ItQ@zYW()$3qL5e`H;Z=HTNz>dU{sX$y~nqGukT_C`bQC35i% zzkhu@>ObA*=&V%z0>^5;NupBEjvG(%FM0e{kQ#X^d9qazP|Sn%{u97QSr8H z>_t%rW?YDQ|7`Cb$(8D^Q(AKRQEf%7hqq;ZQ=RhjgvX7+ z9jl|o&HH4vxB78ravb!%^g;f1ALI3T`l&Mo3_Whv%gi*t(_x`INu=(d>Wd)x7uR>o z|BAWBxpH>8lg!o#iw&|R*_*r9iz;$|@0eJl`^u}b?Uhlsa9Y1$>5b(OmyFQd`XF=`@$b_+KlscZIn~yt>lmaCSq2%hk6%@5+4+_Wz&NG1oiZp)5=- z>softyY0SC85O>g`=y*zw`~h^;eDLxp~^V@qqV^GyER%fzpd9@FP1B{%f&ONc}cfw4Y}O;HNR7_nkAcWp5Wn1VX>~@s~Op0i{JM8D?dNuxn{O0 zAGh4g{_o|_*$(fDI-wX`U2<&K)t8K&*oQ1J0g*I5m|sK?L0 zEBsWoH(F)cX7gEWR_VLOT^FUIwI`)qX4#lNu_$bwa9D8d>~t@YZwqEu?yOz0ux)2n zUryHQXW0=M9OvHuckglI|B@f)KWFvgkDrb>O4#qykK6r7W!|evO*{YYUcCP%>t8j! zV+*!P%@OF+o;Qz!N4BL(|LfuJn%N(}?Gtra-I!sTzU1bv`#MY3nD*Y>vuj7oN7(S2 ziUZTro(8E6)7~y~KfQprWtO9-r)Sc)pZafaY-IMGZRYy*)zxD4z>t?8KYq-(zD`!k zG%I95x08p5$AJ~DD|ggoRC};6t~z}zDRR+Xi;Rhj^-o$Kt>6`74*x9V)U9F}|L=Y5 zkLPPAcJ%h@Zu4Um`55`&z{=p69c!dD+qMa>Tz+mr+r;aBMadDbBs(XqRa_`k`M<5e zD(L8yX`c#K$NWBJ7i+rZOwWn0mO9#qy8MBRfJNOO3!Un<7Kc~LF6ZBG1sdxudlNBd zUF){3YnD4nPitor6cp?zt7&d-pDcL&O;K{S_FaweHxVb;VlM1?`sG^Z%d?@k_up*z zd``~Erdj%<$}1*joP$|>qhVS84W>h$GF8LwVH>C0DBzt&G@vR)iIDjuKH!ac{T zlpL*n1o6mDtXSGJNne(sL_cjet5R~y6#Dx;7_GLyW0+`o4(R~i^@ z{+2!cc<9{ZV<&FC?%iYa_q3O*;exf>P#jsImT+`;l>7O$Hq*ma)TS|K+E~e+?6CS~ zr?;Xys%+h=iLY0kOMbw0SSMY~Z@yjc+|ED?*;>;>i)U4-oen}26bg+ELMQT<|137( zjQ)_nr199wsE-0ad!y!h{M+4L9<7A!#np+ zsp~6Wtu;$n+A&l2%!IEdm8*RepPUF5(953JcWrI7wDkK`Hr~tByW>yKGRca>sYw3d_7s)Kvh>Ix_aA}57;4XNd#?vw7iX?y-Z zbc`$FOirRTZ$}6N7#&uAy?XAcZ3i?>c-=4TJD7B4+I*3gvfihbiNE_F zHL_|h4bYYdR^R4!{4l4)9)-0cMK`7*{7@sj;f?<57i+iPN-R4Zdj6`}mGH#cy(hnf zy}K{Ld|TtEdg5xWLNoQ-ohw#o9QMtXJY5!`6>@1^&i`9-j zIjv(7HFd)0qz=KMOZXtUuIqsz5Je>{69RB*glWzKTVjz8Y7|KKv$|A%Lv z+{%4wa^aDsJsXqH9e*%wnc+JR-{XhsWsWs1K5#+s`Qq)TR!VoTkF)Cj`TkE^-FNe2 z6PNx!+|v8WX3GYSGxP7TxZ6$t%xmy0I62%XD_*Aena9x=%ljW}Szame_|*;MoNUAN z^X=wGU-jZ%XGwj2aDIC2{F{$Xgany|ug)$cQ_3bP`=S8bV}9j9A&`qTLnCk*7~ zEodw74C>twQ1V*7`P=fzA1`jt26$N+~=Go2MYGStN{Kq@5 zLL27XVOSOy-hO!E>(Z^!|FTYG?Uh?wWSVyPiJNxe*=adVpYE_8Unnf`BmCnzC6?Uk zEl%CnOfTG$jR;PcU~4a)ly|7}YtIh)b&?c~cDJIz?v{ytVUkv*qX`22al3HKZ`gl0A~ zU%xte;}!2}sp_MrtFCCeeZ45+%%}9)W2bIs@r`*-DR!Cm|GO6c_b}_K?azLH(gvwK zwP#}No*DXnMQVUp`mKGBG*k)>eAu+AaFy6Twcir6!kw>qRjreY+WKs3zGu)1mL!=Q zIZ}1E>@OF6NSl?&J)JkN?X=Fpm78Q|JPAL^8!N2WeT?Dbv2ERq`y%U@V%O(4>?^t# zb?&kKC5f8~hP|e&lJ7q#@~`Mim&@s@d;WUP*~%rBYk%%|(z4^pj7y*PL~CU)Joo&= zx{~s}=L_$ioq_1wGoJR_+_$gehO?h({@+z`Q}*q9@@&2F+m(NoGTLnSUsG|oa_9dO}fd~-p&kVzOeh^bKm&_*Zsd#zHUFr?<=sH!qkw|LE)4SNEK0zt_G;?)ni>W9sSqcSl$6-ej1Y zCH;}1+VfG%wJ9@S8og3({@mYU^ZBFUI?c}ah_Qx%8m6+}XI`z{HhceM3*FC>p-W{B z%JDzU6l(4KzOSoL zb2q!sX>b1QmvH%J!j~M`ruSw`PRDJO{Gq5QefIqH2_4RwLTVFQ|I3|m*>1M5K+gM^ z`p>#w;d^UOt_}`&4|!}N5&kW=;a%0?nMb%Y92y@QPkZ&D!=Qwd`_Q$J<$~R}*VN{I z@i=oxS?Id7-rJO9qyCfEcij1WP1#5c+WB&rs+w>!^V-H03Rn1ocl+dSfAmc^r>E$f z2xI)KS#qJR3y$TSon_jaTv4&3aEr~hC~-kSM&0XXzl>})x4n2&ooXxD$oIF?-jvl} z*T*I3u2n@zjJ8h2Dpt82dRpb{Z*!wJ2Ad^k=GL5u z-uiBd%l)bo5z^+D)HErYdiFfWaIzO>0DvP z`|;A==Za5GWM(QpWL-Cr>&)@vJMx|)rJlw~!W(4fT-*3$64y5#FCU*TtM`{bKR5SS zGuM?@dg~5Ve}88x*J1F4cl*Kgm21TQ-n^15ar3Kqk6h*MvkqIML~OF;zg{{QyFp}g zeUIbU6El)thXiE(o20NMPiNVpBd6a@4SzY=yz=0SOBNjL{Z>b%SLZf;oITOpeU0*N zF%uE~5BEYo7nya6HOK$iSlwMyxwkj^mt-IlEDt(7RoL)kqDREHsKT_An9Eo}RK{9~}%@>j4h{M*Lx$}_JcUhn@aw|a?x zK?HYyu2=kw=DqIcr^WfKW6A%tX@jY`S@`W6`L8DxFmvh`++U_9t)?OtuAcw+nbt9Q z@6$n4{lVE|+FH{tefw_GXA$r>`#hUgS{U!;tfVvV%C{Vl?cdXSxifiUX;|H<>$=;o zRPase;5_+!$F>JtT+{xZS>?VU?Mv&5`|qq=%+>{JIo}etnTE8}FH|Yvty-we?~6tW zrfFfnMVIFX-uQKW($?MxDgHISKJ(T{t=O7m<+Z~>ImI$)!c@(Ti}W5}&B&10DkQ%8 zc-FxH|Ga{V+>rhZhPS7YM}q_^n7+k7zN)r`=axf{%!b-D)3B{7Y-`u=J>GQW_o{o> zJ_zizkI#F0{^Up5#Zn?E@5%&J+H_F{)?adfyLYQhOw+W_+HH27`K9e;Zuh00TtvU6 zf#sZHqq4i#w!(BznK`a=r?u$*Fu$Y_V7U1k=gruw-_+}F-hOddc#Vih!!-${Mw>&b zdcw`#Ya1;-hn~+-_%`$Fde!JTl2bRlT^YRm!>#P~54Yd1GnVT}IJiZ6hgMYMT)SGS zv$M^QzukVnk6UlYf)?dX(y+tNmDI9 z9G>*OaNF~@FD^&S{}?K^(&j~g*ym?6poLd}DWuP<#k%$X6}`)K;P&jh`;WM@UoNlm zXUhw8(QetCeqKpY@nFS_$dLJ=33k-oM3nbK2PnbLQlH;k^;h+V@sMx%^dW zWeKOuwv$Wp=65d8GYsCPYax9`p#pX%mDT86lSJR z+I#Djd6^`QS0Bp?3YzqAqVAbh+j+uG=Y0*_e(U<*h-mu><;#?=Mlw%)cuHUR_|w|k zJqv%F=5_y25|jL$;r5-#{m-qK6Bqv5TX*!@#df}x%Yy_X%{Sdpy4eV8+AXLN+VIBh zb%cyA^Vah@4mO)rzwQ%bbJ_m8tE;Q&P(b+BeJ1(!nKPv}{kl}-Tcva6hi*~z@>i7mh%ffNGvlVklOj`V z|D0oA3=4PGzOO3ZeKD}q;ga5--zy@Yznk2(^J|u}$FUy|1KugP$?t<_$PitoX_E~F zHm^%Ns`uk{Mt}PW{ovk95k76!$^LEAuARPD>gH}uV?CD0xXb=CXHR6xv#@T}-O~Lg zFT2-XUw2@l@@<1RCzLZx3snU!afrLrwf??$KgGmuYbtA6&h0jLyE_?kmcRSOq@TOG z^BOOARl--!z2|w}^#3h9y&>A7bpnjMfa4hk7<>95s+r@@?&O!x5p@nJso#)T-ZTHQl=hPM`+Q#;Y$~o@ zJpYx!zWrZTnrr3DyCl7td4I#A@9SS&+%r#NYw*T8``%kIH_kvO%^X-&7HpfNw)=0` zl|8AmMYq-l-ex^w{QB*!Dc6!$3w%-2`>{{34}QJenwSl+e(Cc!z24oSy%reCw=KO@m{z0Sk6cUIf| zOA=wdmnu8)au?{O>QV-9P<$!rRN`U3(^0I6HBK{VQOY_OAHx{R3O)MlDL+ zZr4$KHvagBE5`+-?lD~NtCY1&?@PF;s(x{MsBMYh;@IQOuT*SAB+B-Hb6%7d35Ps~X&y}~IRmAw}*$!9PG@riSc{_;5N!c@^ zX&HRoaznuRYlG?(fFHbNi=%Hs4lS`hDY5BbEBNoV|A@ z1yr8V-ynMY$-E7pUC;L1Z`?6&ZSiZxWuMhAA5XgQgEc5k%j|{P_vE^*e|?$tPv**} zS;aR7n4V%^SpB(aw_3&9$=a?)4||Vx)Ny9ZL|?4`WBg)&0{=CcncX{%$?23-+dqSk zyPOgQw^{E^3Eq7=Z}H2Ww=x=Uq?;woyE#d!f8PQP7EoI?>q6N2xVsgZ_pH`OZdN;V z_;7LjEw|TO@;ys-`8;wn4*r(-@wBbMim68$?mc<^yr{IZ?eV$m*A~d9Ey$1mxawNC zb3o9t9R^1mV#+V|JP(a6dUjuVUyx_-?#GoIb=mJ)$5in;{?D`JUB7bP{+5eBoUIp6 z-KI0)kn`PR8s}c+X8gTy<=UNznXIx5>eu$Gw!INtV_D%Ak#orD*_`vfqhn@ARfb%v^v31?DAV)ebXMUuJxYfq!gWWA~@;F zygTi!cg-d3r@!v?z3pFlajT=uzikCuEa$wO;F|KgPNFaOh4sVOH`90jkzJ|2q55~- z^{_ZzgM=9o)8ca{&ws(AQq>f)yxS#iBFpoVhL`88_ZZl0ywD{l*x z+x^`rvGwDO(9hO2Tix@2UlQq3`;>QIZS~W+`VP(!#j*1r&i(LhpQwagx=Pf^*ng&3 z<}SP4!%pi)re)P%&2@XWt?_Md@@ws1(#P$2cb&+2@G|!9s+HLncP8dunI^p@ji-v4 zeSXjB+?Ss?pU<0r|9}6Z=do@7ik!nHPmE8#am4XQR!w~8d)w44C-28`N4Io74=?SH zZ*x3-Y;p1ATPv8keBZ-dwXkPpmOiuGqb;>SJoyR+Ex16Amzk_7-rM_)qB!! zxxe2Py)8$w>dTA98#itQNpGoi*El&-c-Q|`5%)K_=e|5+{kQvAM`U5g_K-&@uf;O` z!`ts@OwWAtUrNdDX2{D3=U<|_RiU?*&l5af&igZYVTP@jQ%5bl9d}B-@$vEg!<(*i zT@H9_a9Zrj9=kKIK0G}9;>O10#Mti8`g69Mt!7SA`?^EUx{OEKeAewSQ8jnQe?K1g z2Yk4-y+-9`@PfR%LDHM7rr&w+`ojq&sZF=E?_^}pTC~bLkT){fB{|zfYSXDE_)5bA z;*6&!Y~8NeE1NMr`F#6|^7HdgLOOuGPkrU5E>&c{yQ}o@{(oQfZGJwP{7BX3?B0#u z+uvN;5ut4s_Bbv3`nueR|J(1^?Y_8O<(J4Z{nzk9#bd!Lfemj=UPoN1TrHTrU9kJs zdX2YQSMrZa@mGI5DlYwyY1i_cs;a7WA6HEd4anN?Dlj?ws&sVto&|=6hHf{U0~Of#x7OjowP*IubNYt7>I z+tw(<=NcJ>KKLHkba~C<_t)M)ebn&Z|>nu{I6=unH zU!I3B*r9cyt)Xw23B|O-?ja! z)7@beBxoD=B|&f`hGd4FSz~9sU`H*t^y4|zX|<%6F+XMs{JeL9_V_V zXF1Xu;5zjMzmH^Tt=k)xnUwZfdV8I^Pb0D&jLHE*(dXVx)%E;;NKJUdjL6qF_qJ+I z*uPK3P~vCm2c)rHj|2a~!{AlYivQPttcrX1ZRXbKhxgP@6(M<~@szuQfLuiW6qP3r z@4Pd9?JKzY&i!8zMU^T@iAqBjTxA}eIBo7+-rk+Mp7HUI=X|bBtJOSgg=7|^kOp64 z!_hNYIzXwfxD+xAIE`dkaFC~sh4azC(1dTnx`dyw)p!_BTskyC;L)6=eor%Si?{R;tY zO3bP>PP;aLdMDEQ)&+0C(X(-d6su91nL;Al(%Lz1KR!ObaI)U2ujjTs3sPb)+EBj| zbSy)G?F~-w?)%@3uNN+Pz0k()9B8>l?ICAR+sz+8ek|K}2HrKAz`!}hnCa-pGq2?R zXI-(|Qn&Z}^O8T+->3U-UQ`vD8+&0_Y4&eTlyo9Gq2ccD^=1oGFR&$PF>)FQh;P~F zm2`nEY0?x=*H+wZCw7%uah{Ryed`dS*TPgNUAu9vRy=jG<+ZoU`(^!$_Z^J}zT7FhHs-2c(OKqrFp*VZy%+4)a zOs=d9KK|iC)vrBMwyY`e-aKQ{;>C-3oy{yQZ{CmyS3iJML#qUQzRwDSiZ3Y0*q^%yvR zD1g?*)$|e0zutZeS@eg3 z!}&G*7Hg2#wrSjFkuZ+F^7^q&+tlvu3m#v{7L?w=d)7uHIP7s%K&val#R2y?rYuZ1 z<9&Zup10O*{m)n3=Jt0(@BP^EwNU2ZhxYczI}XQ|_!Xs^zO$Su!wzk8L+TTa!!vFQ zbX*pk@r9Gm?t+xGxJ{#?a=hD}jjb<);&yrdeE0Uip+v)q|Eu1AczNR6zS+034LQyRy^2Im6|u6@U1*y&+tDN|!UIS@Y!| z*bx`l(beU&zL0xjhRE{7k2?})Y)xXFxBuXp*;^`Czx23yFs!f#rk`Lp#_>C2p z48ki#)O7DKl&+GCFk|GeV_Q?dMSW3~?;$}-mF@lt?Vf3Uwlhi&Tj<1@oz|#N&KBZZU#Gl1cFKu6A69D?pMT^jVV=!8&A0re z*&E(BCqpZhm+>2?uKu%gcZ}$wg9qislV@b#F%Od|c=_Z&+s?-^#cx`7O8a^_NQLb; zycIex+;85=4@gD7mPMmc&&*OKYxka0^S3A8e#TPs<>-TqAeeL!y+J0`I(>~?#{KP}D>;~0u`Tk7V!!Vs^A6Gtqt*HIm+l^<1t&?6I zw=Vp8ICeu>k@cP3k6m*-f3Po_Z1(70AG6`Ub7Fg{&RY0n{MWPFStw|?=Y5b%tHp<- zPy8xOY8d-e8?56{Qh|2+rGOiHomrvse3K@;)*Gw zxrxW&#;@-my}f@t@$Iy`I}~<_$vE16IM>IrrN1!Yp6}WZ&(Htw=y%`JuKbkY-rNsn zm*Qjl?(ROG>~?$KkAmk0HWzJq^|$QiGIrb3smso;d}<;~dqv}1qr9FT>qo~VYE(8I z|6k7b>)uDhHdQ;G)cl^xBXi5YU8!IE9<{zxUT+M zr)?Xhub>q=MS+Ep_d5fl)4It|s_)xIPM&)5OiJ1&^^-j3FD0(sd+k>C`mgt^(``S$ zD__6!?K@TrpDF2gm&|l<-j$qL>nOG3=hUAXqK+MtGIyk%^f^;m!uoE;Z&My^rmkO| z>+|NxoZT&Wx`zGm+@cM8=j%>w?tC$2ajC%OO|=ZE6;I2jCodA4GDqEZpXh8p58s#9 z7*AIHx+!h2(LqS))2Y6L_nxkQd@%j`WA3vV8N!o!gNh#t|2W%}IVrN=@X^Z+@w;`B z_qi9z?fPUh<(cRF&t5WOw8BR;ej@KgHpw$1N=Fs0#(Q69PF?B> zvRCCSUFNwOo%Y?IzfFq2HeF=hnZ2Ux|G&wR3Hz$@ z@8*)fpDb!+?3di|%)V_U7caff@b{%_6K~(r)61~Vla|ia_WpKsPjTVJCSli;=a0Ky zPf2d!NbFCSdAD}eft~*LUGvY*?_Dis+qOz|dAUr#+#LAua083boCbf#ua6YInRL84 zW96qattVf z=l}NbYZkvl>%XYIn;!MJeWk9Y!j=4^uOCg{o$;?m#{5q6S#A5NT)vD`t@36W>i;-< z`9|1#*V?aUIji%^d0*@)7wfYPw)%JI^@>kCQ|qQb{BW?-TH*_C4L% z`g8gMS*QQ}w*Qf$P0hK2vj=hI{Qjn$`Y`+CWI-p1Sa4)wg8zWphq_q_kSpSI-xlTkx- z85Jx!mV|_ccFuXV`e64gsY0o*DT@BJ@yQ%tO-+>^rPP0Q-s)Vtw_@(8#Z{|g<74}; z@P3*0_3a9#Ao=&#uZJ9dtvSK&CU2QvcJ-whkE^4VU+Q?We_8a|?^3kvW_9mxuXk8TP-*no8P`ma1P^&bcHcJp6m2;qB#8AFiH;tp&Kbu^7=*aA4Z&v*3Dd zT6N_g8>HF%2@Xuc9jnj3>65koa8x`#;ru+?6{}Yl|FOAz>5|ohtlV5zudaR5^j8bE zc+8e{ntJ=^n%Bvmd`}MiUiA6C=sod0`W5jX_H9_tXnl4+|GU4n0qa(M-?VviU`R;I z!^7>1m$+OL?+xyleg4fX)9ekUuftN((iX+5hS+9)QUOSkw2ybdkPK}ip z1huH|J@|Uyb>sDB--heWzRmUW6}DfVeZ6q$Qq!|%X(lEn4-Pak``MJN$bYK3J3epe z<44A;oyu-+%kAR|SDdZ-dhfF3%dHQY2JE?IKF9O*10P%8?0tE&i>%M?daHLnWm!1$ zdRckaB8B#E`)BUa|4}~abJ}jkvl*QC#6RxUpHdtgJXtyA``g>>wNddgF+Cq2AD?Z1 ze%(>Qefsi0KY|Veyt})6@s=$jt*xzn6RwIfoatS%(Q`KU$(V?;eU^*niff(S^;SH^ zVwst}k+N|d|3P*0d(O|+H^1i&+_3-rp0bL!H?B9#H4E9jkfXq53#b0(#WGQFN#@0{;w1>(Qg(N z5wYNA+Hp5<GZ(zFR#!j1@syO|>$2rH;a8^c<`c21%)_xO-c#tU|o0_h@y?pc=QZ_T>eDNyG zO?j6k({$Q9H*>3Z)%L^ZQw61w~ewQ6+o39xMY9N&= zOyt7@Uof+jy}9x5i;`40qv$57N6*q8e3MR1GiB~g=FI!9KFzK`9;rLic#fsV&$#fp z)V?_mulH{}BlS9G#owfp{kN?)yR{y_r1{Pnsbf502MbfI?_l@iu$Q7hYAT=;Qj=+m|PL^hUK2+8x9Gj7mDcKrzsiMeTyPJH|H zS8M4{-KLE1Z(m6iMy8uhv3FVVXPwnalu@dC>K9^luiyRKEV$r&j)B%0l+5O$U~7B# zWcRW3YaBN!{?5sb(b;TuDk6r*N-&uX;phnthXf6n!mQ=;eI>-_M}FFpRnGqEiAXs*-GGj3J}*O0CAsAKxL<=mxov!Cnb`z9dzqcMsJHL1QbzKgSF z`g(gi>-=uB_PbM)c35^wDkMT6d#h1X^-{c3tbGDQqwy38ULp>yeBwTdAZ*t%}5`;+?h&#t%bg&lFmGDugy?C^7_ zcXx2!Ql*<&lg4~>?dz7C3J5bMINaelvgm2f>KvWl<)$-s{5&)3{=2uUm>ZvN{E@)2 z?I3buW&95IOn^H_jnw+vuZ(90ygqYF%jSy1On>C$Uc>Szv60txD?)ILEG2p&FbA zcTCIOAL+Y#e~#17Gi_2bwVBQn6YUVnRQMYc+|E|KaQJmb?Y!yXiHO?4AqE_}?o|e& z8^6r#og(%cxp@4d$#l#sJIUNyU5{VR{PySHP8qv5mfU#zZ-^r|E(p_iTx!rf?vsizB zgA_7fBAMKl&$PJIw`xb|>YSi8#?mhrMD`;Rxrc%!$C0E5Jta>--WEaf_5nq|13z}p zvXGLANjH;!R3m(emhFjaz*8`7Mwv0c{2)m*fD+FaG-6GiXOl1?sGXS`exK@|DAj* z)dx8#*n%Tw*0rdps0DW0H@=a6XJNbVT+WVj8&Jo@7AXpt&yW1NwBzWJJ5%}HOq!Ep zkxE_0@8D9mK=*dtX3m$!(pd#xmh!r`{e+YmAaa5YOOvGOycQncU20SzJ?zo0=_l<@AGJ9qpzv+C2b^J``=??h@hIJ_4& z*tbcoZ;LzUb7SdK@=76fOB7H|_|8!he!8^$e}eLIyv2M(ZPEJQuAB3h^Rb-lxNWuh z4H_uLoZwKkvJXG)A{XHKAlyr?Tvd zuIQ`nzdFnAuj>;uKb;fKo@R+C3ML#_=%_I7TI8=Ya#Gg?+>u7<@2VyIiS?E7ZO)qN z>+S6=Gyi4=+i{eN_@pbe#5V$!`26q^|JgSA*39WBB|ao}Jfe;5Ht&kx^1H0GNA5c* zC4PM5Xo){0O8kmnXLhYlx$P!$O5W+SvfvKuvNsM(O21B6^P1V8@5uvY2fin;cBp3@ z{~oyWOr&gmIeBmfahW>a__D{K79@v2Hl9Tw&MT0{w=YT6@}mekwp@a|foq9tv_|Hv$d| z{*NuU<$c3iSY4#BknIGDRrk~{T)OlqUgN;odmo0Wvz*05E;Z9B3)#**s zZpztCw?P``|02n>?S78auQP2*lD+!6uYYMwVz#{TT^Q6?0Qq!}T#nSA-v?eV)Q{yq z*fZ;5%;IkmhnBuHmhR(2+Q{6%vdh=ORi`#>cke`AM9s{=`Gt)!d8z5f*|i0C)5B_0 zXV027Vb(0K`H|-5MQ$U8{~K9U7lcJF7Tg`R*zA_#u6?r__0BGpy(Vx*UnwGPh2Q3N z{XC%KefmK?0#H}v!0Us{4({jQBlqjp*Mwh-#UlS+WZ6EwEML5*Nm+%SS>;y}ePLJLOkEuvm)O|3${D?_+g4vrub;f-^1*MLPro&J z&8Ga|^k&POFB7V7JT045+AOFLKf9}T?~TmeeV(_Umff0idt+?g^0!uMxzlfF2In0w z+c|gJ>ls^O^OpPWlm#hRmwc&g=UlU=WjWJt4>e7)YwkSBT%)&Q6@RGuF4>sxGj%mI z9DIFwzrDH1?7O-&Z0(kZO?;OuSZ=>e_ze!8;3ma_PdR>NRyX*{cFs+U{q*$fgWYVP zK4@CNnBBslHk$Uj;!S7A(d`}kCi~lU&w0Op|+JnEFzPqM3C*O+rI+JP9Dn1=u-O_(;Gyi4Unmc)wmTq006lT4Y$;Ccv?%K6$zwQ@UW+xOInR!=2 z(tMKhg3;_J z>N5@_x<`#EY7X;nrr7P4L0T!TV#(+~slOjt86V4$7| zYmq$9c%AdeFV*IF-xzz*9C$Ztfxd9ZRi+!$k5A#L?T$S2?FnaYZfC>kX+w)|%<=yRCwMy&F?d|%SemVdD{WUCj;J_nmC6au+@92)g$A2D~X|kPg zgcLU_HjODW+waaQUc8ZERYmRdxn65xb~3-d{{Hy0v+NtP!{?s)`qoJ=;PflIhc2<3 zrj%dVw02SZCWE3ByJI~s+gAp68z#GDM({P7hpkC6Te@r4t#m!!oQtiwdn-c@?EC-k zcVCCDw)SMkzJnVQ4+lgtmGQZR z`w=nkS)^4U$*oaXR7|zVK77AX*)9ZC*+jhxFExn{L zeTKh#e!trtvA4?9tyfC*RSg>#7uN#yJ*)FoCYJ8azhabpQCKUU=gIBc);G3f3ak0d zXn1*fxwX3fo$Z_V8FGCC-(l&YFq1>&wauGrb8b&%4e0;;sQdNDFPCQ}So? z-1baSS6Ni+eo5T-C~=;nIt%)LO`Uyf^=#?r4cXbe|31EAdvj->`13i&Lg{l1mw7u% zubyb^D))1D-ptU%?L|+$jt5z0UQ!8s56}$7JlAjV{&>n=q&_>?c+Xbfir2lqH@4KV?<>7m zFsJO+#8|Fd5%2h~*QS*wNSoyp$n9Ru|MJJj$FhQ}mHhPuc%#(ou6gO3)ol^_{k!+D zVY}#&Ln^CkOMKE|tkis8&)}D{d10WTrFH1V#l`$Lxox#(tbue5F61(OoZntuHg9X= z4%6ptn;5cwuMV&8OwG@0G`E*m?w9QPYqWj2$?AivSm&8|b_Yzp8Mp0r^|g!TTWt3i zpX!#KU)ykN&*Fj`8~)AhPCnNezWbqdN_XVcidCPcEZiQsWuig0sK??y*{-g)TYvnP zo~ogH_V|%bWv8qI>vWzitWth{+17S7^M%H>vAe}~?%a9qbU;>XsA9Iy2e%KI?OW=O z2Q*Lr|2geX?(8Smu35QSGP@-|;#7Z-9Y42q(we@l&G}a!PF;WIaH;wJo>iy&x#Ny5 zy>npWjE}D)zPfI>ySv<4f8WX(p{Gm!uPBMn%X-?k*XPh^lKfLeZ^_-YK_PRp# zcQL=hr2CD|*wmW+d;8ox!7sD8|Lo>(Ctq}0h9AB1`+fd_S95hG$`1vYq*iZOZ^}AT zckPJ`!P9FvB0QZ;)=oD28@zf6=hx`42UqR?F`eJ@t1LQ9vTv5D@N)fqe8OFOBYy7P z{K0~dMh zqx%zHp3Cu>ZN@wKlpFKx`A0+VTeG`QkL%)J#hlH4|D1)Og`u%>MPhr5zFplrL7T06 zHaX`lkxt`Di_v=G8+Cjg&$l->9~&5!D(BAr3N4`(qL{3%mz2w`i~6VF=4%_=qVwVP z^7wY*z45fvH-Le2!!1`EymB#3Bl= zcklRkFn!~THtq}cr<-qVT7Gcld?QYaOOx+q-aoKy(cQlA-TUfH7AM`D|KZvyUB%yT zla*>@+|KeDx6d^QnRcq==d8PY$*Hm@;J<>^W1LcI&0);@oDR{B}Vin#cA<+$UOC%O(CxU+Me z`0Bb!(RI5DB+tzayR|U(?u(fH!J_qTlC$rn%(}Kwn>lr%w(JWnzJ>cbe@G`nN~Z>v zU5*QWe=bm!v-oWF@}Q5+$CHz11V5S`b6U;s@SWoN8`m~BD^|Z)yMDU(Vw)3OR+`nR zaZ@j?(RrS_@PJ!Y^|`CdPs}z8O)Ac{+SB?osZO+dKF3YBjR#Y=F6-Pdb!Y6Q%uipg zR&t)Hyn3?7DYtoQ#ozmR6Dri|{ydqiA^jrRJmn3KOzkVD zwz!mXYU8b1-KeAgowm=qvSGSXSWe^B8(K`EJ2buX9qr8C`yM~m8{f71prB*;mafpr zyV7Qc3ND|!V$GV8X?KGhmuH`Rb#!6oXJ0LYwYR?=SG@A#?S%3(N4Gzi_VK{1>S>Gi zEL{6@pNGy{kFZ8%I|hOUcX}UU+wsPLjARR&A-3OSUz*m z+4^c`-R~JEEXCbk<-IfzE;|(vsdd@*XX}k^zO|l5`6M67ShNQIQ_htPm47;q@#G@sAs zy0b<6cKJKE!gpbJOw0J>eq76~sQsCF58G zj&MGI5FODKDt^E7_Iat^KaMjuoquJJTb{Bs`J$o3!FBgLOmpo{IYep*`)a>Fmz*cB z8Vo77RRpvd&7VDNzG}Dn^_GpTjGs5$UES>X?B?W;2PTR?o;ba}`{Ip;`}%PWk&CxK zuD||=#rdOUp7rze6T6@BSG>NXyz%vB-V=WI8gI=#7B77M;-#yt_48N4S8c1y7F(uk zu|2DNa<+#5T28J@*|Hb2&3G^0xzyrQs4TL1@jljP{6{X63fj#c8MWPW)dXmi%U$+k=GKZ8E>T_tby&*|Ytp zSIzHNJ0sqIalJjalixkAE59RggTU(#>vx|&Hp%$=!`=P&J8Ev$KW_8iSmrQy|NGtA z;mN0W2}Z2`-M=HEZ_*eEnBb?zvPc%2*T}sNA#eP-yFH!NPCb zo@Kt!d2^{Y?5~O8Ty_ig>g=yfK)^eY0&`J~bXZJlEsjM7ypnUb%lnp8l`xONiH?diAq37<0V|Fe84SAT!= zmV;Ad3MD<=k9~M-Si`iT{zjohs9OK2+f7;0!YN0MDnEM1O$q+a6ZvnUX)McHo6PCk zm&$~5{&m{$-9h`?+dHo}nC-goW_{tAB(o1Kw|daz*LT+TKaQHHlx|hvka_d(l3$FG_kHDge@rvoQGfAz;r`1fEP4*}@SGC1mznsy zZ-%dFzrdmEUsrvYdR^e`$3xriM*fywy{6AoGQ(Oc>Fcr!d!izzI)0wgTUYW2*3Eig z#%TU5v0rbAR^s{_sb}`w*g4@e zXx3LIIB~s{S*YC7<=Z8XQ}ZT19Pi65UHdLP-w?X#myu}yr- zcSYUk+jAQxCEdM#{rohi`9gmF=O@?*t|@vIY&+}Q+vzVSKJ`87>#+T3h^o3&Fc@O7@xUbQGcoh@=Vm;XxWGWg1ITPnqiHC0yU$SP0kc+G=R{R;m6 zo7xze*(~AL&%zsaeqXR=|C9QQ zZ{B=-zdq~%yKs&Az56VDzgRYMc;y~m%stnWBQ!k!#9rTNGkBx-|J9gvX>wwW+LxAB z?yY;~@rZtu`VxMShg-e*Kcu5N!9j*&havxSK1t0@A`wOZyLY@;_+IIU*NWUW_5U`j zy)&mJ->wrpaJZ&;`}S?8BokMiJN!v=-WOk+J#S~U&=7;@oM9@|Cx=9>v`MJt;?UtKHqj zyO(!moR%rG@KX8ved(i5KR(NM{@@XF;qOchi|cpVwq?Dd@!{)!X=S_ioYAYBBy{f2 z;W{7tpg5<^PKVjzXKp|F`u_I45$8_E{hYVqhpJ5V2l0wG=Qt(IQiRidC0~YketmKI z?bQ{zB8IohV)8ei7guuDS%1?q_wT8*dD`pU?`}(PJY+mU^=oUx<@ao>@82ru-Y0ln ztmJKMe)k8#I>e^IP@foY_K+()nw?ggm&Me&}}0=4HJzj^=C- z&XVd?yVmW)dS`;7^M>N*e$U&PuVlTfiJr)PpyYCYGA+4?=>kN%%}?rz1ctrB0qzc$Qu5i85paKF1@oyKdX(-1Ye~S-=13cKh!BbJOK3BqACb*IA-%k^RL#seUD4d?ESag;??inAMf;vpE~U$_vY>{$^3uk z-#7lWKi<@tG-uQEo1F27`wNuoew}7Fcq(pxfaAURkH5b5Qy2c>Sl%Pe&|j`R@7HN{ ziSkn=Jh~dK%In#lST`-xKfBW^U0hsTIXijjinAXV1=<*upFYKtw9{qP`K?OE-gnef z-^2;#1l^UN)4tC6`J+9n&mCG{zg1v+{C?qXz1=LT%$EXpKQ3NV|IY5gm;Z;hEOxo0 zZ9UN_*G&I^7VFBQ8Gks7KbmHK{pl^1c;Wx<*t!Tsc6PJ%ZowaUc%+|eS3h0FZTR6| zb>Wv2GH;@G%ds9m@48STcwYDRnC2g`{=YS#uY~njXMKs=F~;=&=k0&8m-&kOKU*sPs8fB(50!X(*Mkb% zC2rLHfBeYYTFkkNYi?clm5=Rdk*j=4H@&*uW)=AR)1w((b+I+uHb%DW_;6~~YL}0R zNBiuIex1DEpptZTNz>)M3m%pH`0%je{od~>KYOc=mxo20&%J!3BO-a}+lrE(Weeh& z>vsz*|FdoHlSk3=2jlBX#M*vueUkX&=Cbk$#W#6szE4sAEBd}}xlnN1_Q>+Tb=x1l zdiL;2Yq_({dc*QV`Gt31&;D@v@u92lUoa=H*(jBMGFj|%@1Y~Fw0CD-R+Fj!^U<+o z_x{^H&?2Bgn`M_hf4BAX)cQlxOUn~4HmUyj<^4bLYqs6IKZW}w()P&S^L6|caVP4Z zkkr0PE5Df+!s`Dh?Fp$9KJ_W}-jt_1rp5oQT~ShW=tuX*H>$=m%={Oui`UIu?mOM& z+Rm8k?dSho_cAf7ah><)c~_gLqjvwztN&Jrg=`ExS);eh?UGiOZ^4l@IXyq$P2Q1q z;{3-KSIr;(GtVL@8kOP{-^i%#|6vZFmH(gonJDmWBHs*+=XYmcKStY$pl~iVpwmNc5jccX7BPx z`t~wyjOVXDyzy{x;kWGkMX48a?ijCM8=t)Hz@zJReGkt){A~Dd(d`dc9v$8BTs8B@ z?C+1PyXPHTtX=!}jEh*`K8Jf@Rhf!)w(sTUd|Yn3Xf{`Cq&17^#a84+ndi0NP3PTu;!e0?&vL6Z&2yO-i_cx?`qAGjG<51b3jR7fA3C4dwJ9uj>l$X+8*V3l zF}4Rbu9M#@*u%f}*y(Ay#nr z(}TYUnD)DBzS!uxalx`($0F0WIXruEARs>Y@t+$G8;sW8zFoYoOM7u**cG|PgTeb6 z9e2JwA(*`;D#i7>mE#_@t1oUSN*KOApJUfhySucKd1F$#sN(+k@Hc;|e+m1te_ymR zQs?mBPu6QPR*Sy+{@&F)%4}27W~-?`r8#Cz*jo4fwD-#*zv3l#4_vrZ!0?rqBkI|e zsh^@W&1*O5ZjM^lZPOuA(p2HRVBtQ|t)FhHdWXLK^B{80gkZ+Sogw18M0Z`P50rJc zUZ!6sTY4q%$B)PThDk>_eCFBQ+!%3dZkXZfr1QLm(*sQ;eq}|dD5l))QR3md)W@i1JT3vLGcbWZ^x&LkiMn+2Rt9YG!CC^%B?PGOk`TwgMME#lXcX?~2 zxo)}HwC%IV{QgCk&Lv&6zri7tDcPFD&ns8NF2<(+!YDi}onv$UtccRfhfAYRu}-wt zU>6QK@#=T;E8#mjnUQB4>Kq(DJyFk<*0MV|;n!9T>pZ1j-`~IA5yxhn!?yX_tZ#>p z7TMjsyjkm2QE{s}Vz^3ZDHiqvPS>ks^^|M9T>!p43X%S(w1 zeO~BGdvxB0^tJMYJ)Tus+yg~&sicg3-JZ>Mf1eN?cqiGuu`8 zb`>4Goxfjqzx5t2RaMm)X1TLA?`pm$v*nE1$Ij;$KqFNP_ysLOo;`ebX6HhkhF_@; zrail)SF}a$EtEFmpWk#T(|BTh$b%oJtxm7#Dq1un)c)}|?)al?Bobv;uX!eaBe?g} z)BJ@GKl2+r+@RQ}c1eCxknfXSGfFR~U*qx2U$SeL)$`eBUtL|jvF>lxaU;vTIcuED zj|iSSe{+N-n9g*r;FNGvzG=`GbJwiET7*#dvLJ%#@6iV${Amm=YCxtYwBO` zqhRoYp>%)1Lj9?;CojBj@afa1fQX0}Ixh{=&Peb`nVcxxZgAhu=Wf8`B-ljm4o`)f z&k~LMcbPsf`)YCfn!&Ck&vuo*PRN$HYFKtbpTE{~@r_#Jmla>mOT0ew^W?d6?-q0( z>yzz1*vwvj!DX5K!AAjNpA$;o+FZZO^XAysqyX=wv)+7-_Uqkqa)o%qx|6G9ujNNd zF)_~06~3K&>udGuJ6{}iPyY)1&;PaiYX3fl<>s^RX*^S5|27|*?o=)avk2A7ne~+H zd*5qm9>kmcrRUrA3}NBfhBIzFnN0-BUL(&dRbE=>6MMODc45rXHDy<7tgi^Ky&u!l zakVD+oyrsW>IKX0Ov$_>e(G(V}suI?so7+x(%GBCs^L(n1~fu zR}|S*`<%aZJQe0@h?YMrNmrMIY^rO4Roe`lGF&W4TN&iIa;l1Z47(%eUASkHYlE~z zZ$g7mN9g2N>o*xfYkKHD0w=*6I|>(Hj{kK=?Mh~HI`VqKkQ4hp9OB;bs7t#l&y+a{ zc`1@Y<2#`re?Fi8_-6C@N7eU#&$~QDJ?wwWyRw$w$cvgLIGC`6oUr@<=X2kLtMPH6 zvflG=W^immT1Ym*VZFeL6)Qe)-~98Z=0f_ma6e{#>Eyn~Xpi7#c7R{(=DySFK~!in;0@rn~7?R6>4s{El-u z{&NN8+M$UD6b%YWOjSaXyPpP&Ljo~1_n=8KbLh*2~7a2P-p!B literal 0 HcmV?d00001 diff --git a/doc/qtcreator-vcs-log.png b/doc/qtcreator-vcs-log.png new file mode 100644 index 0000000000000000000000000000000000000000..e74cd3dade8ba9bffbb30affe5a688fbdd38d315 GIT binary patch literal 173623 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�`Hk(n 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
  • @wC={0DQcdotF%*Tv{Rx_u+S@`_Zyx;kJ-j!T2wPKa>X=m2|GycG_Vd_nWuM;j;eAka- z734pz@2H@gR-z-Qe=D%;kBq&ndZf+cRE=Z&VfXeh%-VK#(e~J)&kKcbKHKZ->uY~n zv&x4-;NYu`lZ{I1kDq_Myux(ZGWYFkKnbVpU(5Uj)$&TO9(`EFrGMvRlc;sYo&%3v zZ7XiPwtAJ(UG?ff`d+8dz{c2k?mW%H|N9n++eLt8plkW%`{j-6yWYq9Jrgg9)c;eb r_{u@|e&Q>I!)}+q&Ed^>{-0g9OD!qKjmLn2fq}u()z4*}Q$iB}=4Y57 literal 0 HcmV?d00001 diff --git a/doc/qtcreator-session-menu.png b/doc/qtcreator-session-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..eaae9ef1465d8dbc2ecfbc76ed50cc987808c0d0 GIT binary patch literal 48425 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

    n603NqtJf!y4r%*kItTUwAa7yWBzgb`9Pl+ zcMLXsc;K+}&lZ(m-~PT%pSkivrRPFMS;ybs^P>x29yz!1@^s6sIs5CM$KT&qbEtm~ zk7H%!t%?bJlSEm5p2;#@5xDx?@p63y0k2q#ZL8Pry}XTCF}?3Ex6!xvKg(@mYq!L^ z2WE@+X57Dd{POGeyU}&=`*UIrZ1WbFF>}_3hp{bl5}fX^s|kM-6m0*$F23Sn#Df(p zyYJpAv)okvdUEyknA;^2m$$IE7Va!ySl}mr!y@O;9a6_Z zqfZOO{>gDPZLIzKNp*5<*n6I~MK8S;Mj5+4XFPF4M(yP_a`TgJAPrJKeW%>W4 z8<*X@nkMCnD&#hbb(@sl51uq3ui>ivj#C{MW+n2{gC+_cK*PL&Aa7)WM9uV$hdPzr%~lglt7B1>1w^C z4G$)UhRUp3*17WLx5ef=t*TB+KB|qL?s(!!Wxd7Da@H5-Yv)PV+Y@d-TycL@}tz*=b9{-J|6j@-{_uix}o^giD@aEAw{hgq8EirpPW7Za>F&b z1)(foUqu`{aM(d^`z#lxO3}ZE>z>RAxU#e1jH^QR@uSzvU+(yx&?&cSc8j*sob43~ za{pd@+mIJla%EHR^0{~S%H7+?acJ+?3umjg=_bxFtbW1}24uhNY*E3bSdR ztJtIZ+4(-(8%|co-{uD%RZriynAPdzo2Suo_u8C!J92p~PtN99*dL|X&J=QGPg`oy zBXN#B#kv}5ub$4oeg4(#D4v-=xOtT2?(Dj-D>(mwu*cbmE$iYIrvWj>tiFM zpwfye2VRj?Opckd3*GH%3nssBm}px+hvSfC<-u9E!~MHdU6bNAT6Gn0vfe!YeU0mG z5$9!`E|V&?%iFfumDik~wXyjBF5wy}kq^geuS=O^^4>gNT=J~%{of~!1((I%zVvdu zYbEKlyfc3%GO7fF-1M=$Swo5ptF*o~Km z8yPN6{vAH|u1)KX<469^@R86s`F%-?F1ypJ>zOKITn_B*cmJMWeVxO!s5<4kmhoq) z&C~Lqa;wzw&VAtWbfN72?_cKMxU={2$J*JKF9$npy}!S5VeE4GdH49=nU<(!bWeH0 z(k}K^G|KC;)Ww$z7RI;Spa1B7&^+F+XLh_~ZPE$Yn7m9s`^6Q;Z@P1$-|egW*pS^W zC(ymbS1msvHP-g8{kHjStd-~IG20(^X}$Y%efIspqNdhw2acJ(nZ8i7~^ z4;O21`^nszDkIPRZ~grH7j2I{p6Or$!*2fd z^AAmP=-tH^x#0u9?osz#Mq7(j7IMnX?nfFVjfH-_$q}5(^QW~$$kY3K-vYS=*39E= z@$z@}+7=#kbK#0&{+hc&M5&@UTDMRx<5TV%)-2T?I#v?RlEM?6&2u%c-f#iuqq3-Ywqc zW-xV4?ETLE>HpVC?{=~m_^fv4;L6@TFOTv}biZ!5oIgkE`tg~R=T4jS=i%McY~S=0GC1#t9dMkg{=F&v#PLrT1U`vP_n5UcBRAwOo0Qaz z%a_dsxHmUcnig@t7WSRJ-Otm#iSg^!@*?~CPxYPmlcdeFnMLN=au}|U6o2tu(x~#{ zlYdP*|MpHWUVE#&_4=U&xm#9w`z3WQ**W|8{oUtIJM+E$SAAKYyW#u|evbd2)xWXD zJ0;)W(Vu@d`&wJUl%SonE=YcAmARuF&?^%qbMvoxPfJL7!>1&Z4;vo-JZs8%L1DT{ z=j`a!?EQyJOL`+R9!pv3O<%oyIlINBO=r>!g@h(6Da)B{%I9mG6&&W18MvJB4%5L8 z?AN2pUn%!Y8l<&eH{Xp!cP1mZ><#sWN6ScIA?(7N-{_wo$OH1c`-mUI0 zk18o%VDGQ|D&=-8EzFEJYRA^qxw-6D5|(^;-BWjL*|S`$Z&xlqt^4(XjZ^NU#6*#4S!*tNN~;?_g4OAYcn&V=1}c2@FG3o4J0E7TNuZ=+JvE$pq|VN

  • (EwHd>vf<9)s33koLE;Jim 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 Session} menu. + \image qtcreator-session-menu.png + + To switch between sessions, select \gui{File -> Session}. If you do not create and select any session, Qt Creator will always use the default session. -\omit - session management can also store project dependencies, thorbjorn is - currently working on it -\endomit + \image qtcreator-session-manager.png \section1 Qt Help Integration From 76b3341009c87c559a4f9820c3746aaca5c99b8d Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 19 Jan 2009 14:12:39 +0100 Subject: [PATCH 71/81] implement "real" full screen mode --- src/plugins/coreplugin/coreconstants.h | 2 ++ src/plugins/coreplugin/mainwindow.cpp | 26 +++++++++++++++++++++++++- src/plugins/coreplugin/mainwindow.h | 2 ++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 06d4d70085d..2b42aca64a3 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -120,6 +120,7 @@ const char * const EXIT = "QtCreator.Exit"; const char * const OPTIONS = "QtCreator.Options"; const char * const TOGGLE_SIDEBAR = "QtCreator.ToggleSidebar"; +const char * const TOGGLE_FULLSCREEN = "QtCreator.ToggleFullScreen"; const char * const MINIMIZE_WINDOW = "QtCreator.MinimizeWindow"; const char * const ZOOM_WINDOW = "QtCreator.ZoomWindow"; @@ -187,6 +188,7 @@ const char * const G_WINDOW_NAVIGATE = "QtCreator.Group.Window.Navigate"; const char * const G_WINDOW_NAVIGATE_GROUPS = "QtCreator.Group.Window.Navigate.Groups"; const char * const G_WINDOW_OTHER = "QtCreator.Group.Window.Other"; const char * const G_WINDOW_LIST = "QtCreator.Group.Window.List"; +const char * const G_WINDOW_FULLSCREEN = "QtCreator.Group.Window.Fullscreen"; // help groups (global) const char * const G_HELP_HELP = "QtCreator.Group.Help.Help"; diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 5a535b532d3..047bc747413 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -143,6 +143,7 @@ MainWindow::MainWindow() : m_exitAction(0), m_optionsAction(0), m_toggleSideBarAction(0), + m_toggleFullScreenAction(0), #ifdef Q_OS_MAC m_minimizeAction(0), m_zoomAction(0), @@ -448,7 +449,6 @@ void MainWindow::registerDefaultActions() ActionContainer *medit = am->actionContainer(Constants::M_EDIT); ActionContainer *mtools = am->actionContainer(Constants::M_TOOLS); ActionContainer *mwindow = am->actionContainer(Constants::M_WINDOW); - Q_UNUSED(mwindow) ActionContainer *mhelp = am->actionContainer(Constants::M_HELP); // File menu separators @@ -641,6 +641,17 @@ void MainWindow::registerDefaultActions() mwindow->addAction(cmd, Constants::G_WINDOW_PANES); m_toggleSideBarAction->setEnabled(false); + // Toggle Full Screen + m_toggleFullScreenAction = new QAction(tr("Toggle Fullscreen"), this); + m_toggleFullScreenAction->setCheckable(true); + m_toggleFullScreenAction->setChecked(true); + cmd = am->registerAction(m_toggleFullScreenAction, + Constants::TOGGLE_FULLSCREEN, m_globalContext); + cmd->setDefaultKeySequence(QKeySequence("Ctrl+Shift+F11")); + mwindow->addAction(cmd, Constants::G_WINDOW_FULLSCREEN); + connect(m_toggleFullScreenAction, SIGNAL(toggled(bool)), + this, SLOT(setFullScreen(bool))); + //About IDE Action #ifdef Q_OS_MAC tmpaction = new QAction(tr("About &Qt Creator"), this); // it's convention not to add dots to the about menu @@ -1113,3 +1124,16 @@ QPrinter *MainWindow::printer() const m_printer = new QPrinter(QPrinter::HighResolution); return m_printer; } + +void MainWindow::setFullScreen(bool on) +{ + if (on) { + setWindowState(windowState() | Qt::WindowFullScreen); + //statusBar()->hide(); + //menuBar()->hide(); + } else { + setWindowState(windowState() & ~Qt::WindowFullScreen); + //menuBar()->show(); + //statusBar()->show(); + } +} diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 4a1c08f16ef..c7fccdefabb 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -137,6 +137,7 @@ public slots: void newFile(); void openFileWith(); void exit(); + void setFullScreen(bool on); QStringList showNewItemDialog(const QString &title, const QList &wizards, @@ -213,6 +214,7 @@ private: QAction *m_exitAction; QAction *m_optionsAction; QAction *m_toggleSideBarAction; + QAction *m_toggleFullScreenAction; #ifdef Q_OS_MAC QAction *m_minimizeAction; QAction *m_zoomAction; From 13be7393605b90e93415ae6902af5c9f5e2dedc0 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Mon, 19 Jan 2009 14:51:34 +0100 Subject: [PATCH 72/81] Fixes: Documentation - swapping the order of the images to improve clarity --- doc/qtcreator.qdoc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index b33d5cbf53f..4f393ec9dc1 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -162,14 +162,15 @@ session. You can create a new session using the \gui{Session Manager...}, available in the \gui{File -> Session} menu. - \image qtcreator-session-menu.png + + \image qtcreator-session-manager.png To switch between sessions, select \gui{File -> Session}. If you do not create and select any session, Qt Creator will always use the default session. - \image qtcreator-session-manager.png + \image qtcreator-session-menu.png \section1 Qt Help Integration From 57a091ac8a6226e6193c49cc4ad925c4adfe16a1 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 19 Jan 2009 15:49:47 +0100 Subject: [PATCH 73/81] try to act on system's maximization attempts to toggle fullscreen mode --- src/plugins/coreplugin/mainwindow.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 047bc747413..31cb2b77429 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -641,16 +641,18 @@ void MainWindow::registerDefaultActions() mwindow->addAction(cmd, Constants::G_WINDOW_PANES); m_toggleSideBarAction->setEnabled(false); +#if !defined(Q_OS_MAC) // Toggle Full Screen m_toggleFullScreenAction = new QAction(tr("Toggle Fullscreen"), this); m_toggleFullScreenAction->setCheckable(true); - m_toggleFullScreenAction->setChecked(true); + m_toggleFullScreenAction->setChecked(false); cmd = am->registerAction(m_toggleFullScreenAction, Constants::TOGGLE_FULLSCREEN, m_globalContext); cmd->setDefaultKeySequence(QKeySequence("Ctrl+Shift+F11")); - mwindow->addAction(cmd, Constants::G_WINDOW_FULLSCREEN); - connect(m_toggleFullScreenAction, SIGNAL(toggled(bool)), + mwindow->addAction(cmd, Constants::G_WINDOW_SIZE); + connect(m_toggleFullScreenAction, SIGNAL(triggered(bool)), this, SLOT(setFullScreen(bool))); +#endif //About IDE Action #ifdef Q_OS_MAC @@ -928,13 +930,18 @@ void MainWindow::changeEvent(QEvent *e) qDebug() << "main window activated"; emit windowActivated(); } -#ifdef Q_OS_MAC } else if (e->type() == QEvent::WindowStateChange) { +#ifdef Q_OS_MAC bool minimized = isMinimized(); if (debugMainWindow) qDebug() << "main window state changed to minimized=" << minimized; m_minimizeAction->setEnabled(!minimized); m_zoomAction->setEnabled(!minimized); +#else + QWindowStateChangeEvent *ev = + static_cast(e); + bool isFullScreen = (ev->oldState() & Qt::WindowFullScreen) != 0; + m_toggleFullScreenAction->setChecked(!isFullScreen); #endif } } @@ -1127,6 +1134,9 @@ QPrinter *MainWindow::printer() const void MainWindow::setFullScreen(bool on) { + if (bool(windowState() & Qt::WindowFullScreen) == on) + return; + if (on) { setWindowState(windowState() | Qt::WindowFullScreen); //statusBar()->hide(); From d1dac15cc57549ac7da6c6007685e5bacdbf1828 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 19 Jan 2009 16:46:08 +0100 Subject: [PATCH 74/81] debugger: fix "ScriptFile" option (store in preferences and source file on gdb startup) --- src/plugins/debugger/debuggerplugin.cpp | 21 +++++++++++---------- src/plugins/debugger/gdbengine.cpp | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 204345a0220..8fa465d543f 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -894,6 +894,7 @@ void DebuggerPlugin::writeSettings() const s->setValue("Locked", m_toggleLockedAction->isChecked()); s->setValue("Location", m->m_gdbCmd); s->setValue("Environment", m->m_gdbEnv); + s->setValue("ScriptFile", m->m_scriptFile); s->setValue("AutoRun", m->m_autoRun); s->setValue("AutoQuit", m->m_autoQuit); @@ -922,18 +923,18 @@ void DebuggerPlugin::readSettings() s->beginGroup(QLatin1String("DebugMode")); QByteArray ba = s->value("State", QByteArray()).toByteArray(); m_toggleLockedAction->setChecked(s->value("Locked", true).toBool()); - m->m_gdbCmd = s->value("Location", defaultCommand).toString(); - m->m_scriptFile= s->value("ScriptFile", defaultScript).toString(); - m->m_gdbEnv = s->value("Environment", "").toString(); - m->m_autoRun = s->value("AutoRun", true).toBool(); - m->m_autoQuit = s->value("AutoQuit", true).toBool(); + m->m_gdbCmd = s->value("Location", defaultCommand).toString(); + m->m_scriptFile = s->value("ScriptFile", defaultScript).toString(); + m->m_gdbEnv = s->value("Environment", "").toString(); + m->m_autoRun = s->value("AutoRun", true).toBool(); + m->m_autoQuit = s->value("AutoQuit", true).toBool(); - m->m_skipKnownFrames = s->value("SkipKnownFrames", false).toBool(); - m->m_debugDumpers = s->value("DebugDumpers", false).toBool(); + m->m_skipKnownFrames = s->value("SkipKnownFrames", false).toBool(); + m->m_debugDumpers = s->value("DebugDumpers", false).toBool(); m->m_useCustomDumpers = s->value("UseCustomDupers", false).toBool(); - m->m_useFastStart = s->value("UseFastStart", false).toBool(); - m->m_useToolTips = s->value("UseToolTips", false).toBool(); - m->m_useTerminal = s->value("UseTerminal", false).toBool(); + m->m_useFastStart = s->value("UseFastStart", false).toBool(); + m->m_useToolTips = s->value("UseToolTips", false).toBool(); + m->m_useTerminal = s->value("UseTerminal", false).toBool(); s->endGroup(); m_manager->mainWindow()->restoreState(ba); diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index 79530908c77..a6d426d21da 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -696,7 +696,7 @@ void GdbEngine::sendCommand(const QString &command, int type, //qDebug() << ""; if (!command.isEmpty()) { - //qDebug() << qPrintable(currentTime()) << "RUNNING << cmd.command; + //qDebug() << qPrintable(currentTime()) << "RUNNING" << cmd.command; m_gdbProc.write(cmd.command.toLatin1() + "\r\n"); //emit gdbInputAvailable(QString(), " " + currentTime()); emit gdbInputAvailable(QString(), "[" + currentTime() + "] " + cmd.command); @@ -1520,6 +1520,7 @@ bool GdbEngine::startDebugger() #if 0 qDebug() << "Command: " << q->settings()->m_gdbCmd; qDebug() << "WorkingDirectory: " << m_gdbProc.workingDirectory(); + qDebug() << "ScriptFile: " << q->settings()->m_scriptFile; qDebug() << "Environment: " << m_gdbProc.environment(); qDebug() << "Arguments: " << gdbArgs; qDebug() << "BuildDir: " << q->m_buildDir; @@ -1599,6 +1600,22 @@ bool GdbEngine::startDebugger() "dyld \".*libobjc.*\" all " "dyld \".*CarbonDataFormatters.*\" all"); #endif + + QString scriptFileName = q->settings()->m_scriptFile; + if (!scriptFileName.isEmpty()) { + QFile scriptFile(scriptFileName); + if (scriptFile.open(QIODevice::ReadOnly)) { + sendCommand("source " + scriptFileName); + } else { + QMessageBox::warning(q->mainWindow(), + tr("Cannot find debugger initialization script"), + tr("The debugger settings point to a script file at '%1' " + "which is not accessible. If a script file is not needed, " + "consider clearing that entry to avoid this warning. " + ).arg(scriptFileName)); + } + } + if (q->startMode() == q->attachExternal) { sendCommand("attach " + QString::number(q->m_attachedPID)); } From ac6419f0d7cf285d2aff3543776a6d1fc6a24a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 20 Jan 2009 09:32:59 +0100 Subject: [PATCH 75/81] Fixed include when building without tests --- src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index a8dfb4cb89d..7710b5e83f4 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -48,6 +48,7 @@ #include "profilereader.h" #include "gdbmacrosbuildstep.h" +#include #include #include #include @@ -64,7 +65,6 @@ #ifdef WITH_TESTS #include -#include #endif using namespace Qt4ProjectManager::Internal; From e0a4789081efcdb92f95e667435474cc2e53f0be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 20 Jan 2009 09:48:50 +0100 Subject: [PATCH 76/81] Added some structure to the advanced edit menu It was getting a bit cluttered without any grouping of the different actions. Also, the collapse and expand actions have been added, mainly for discoverability. --- src/plugins/coreplugin/coreconstants.h | 9 ++++++- .../editormanager/editormanager.cpp | 26 +++++++++++++++++-- src/plugins/coreplugin/mainwindow.cpp | 14 +++++----- src/plugins/fakevim/fakevimplugin.cpp | 2 +- .../texteditor/texteditoractionhandler.cpp | 23 ++++++++-------- 5 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 2b42aca64a3..469727c1844 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -174,11 +174,18 @@ const char * const G_FILE_OTHER = "QtCreator.Group.File.Other"; const char * const G_EDIT_UNDOREDO = "QtCreator.Group.Edit.UndoRedo"; const char * const G_EDIT_COPYPASTE = "QtCreator.Group.Edit.CopyPaste"; const char * const G_EDIT_SELECTALL = "QtCreator.Group.Edit.SelectAll"; -const char * const G_EDIT_FORMAT = "QtCreator.Group.Edit.Format"; +const char * const G_EDIT_ADVANCED = "QtCreator.Group.Edit.Advanced"; const char * const G_EDIT_FIND = "QtCreator.Group.Edit.Find"; const char * const G_EDIT_OTHER = "QtCreator.Group.Edit.Other"; +// advanced edit menu groups + +const char * const G_EDIT_FORMAT = "QtCreator.Group.Edit.Format"; +const char * const G_EDIT_COLLAPSING = "QtCreator.Group.Edit.Collapsing"; +const char * const G_EDIT_FONT = "QtCreator.Group.Edit.Font"; +const char * const G_EDIT_EDITOR = "QtCreator.Group.Edit.Editor"; + // window menu groups const char * const G_WINDOW_SIZE = "QtCreator.Group.Window.Size"; const char * const G_WINDOW_PANES = "QtCreator.Group.Window.Panes"; diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 75cdc7c14f8..cf10f0fca66 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -196,6 +196,16 @@ EditorManagerPrivate::~EditorManagerPrivate() EditorManager *EditorManager::m_instance = 0; +static Command *createSeparator(ActionManager *am, QObject *parent, + const QString &name, + const QList &context) +{ + QAction *tmpaction = new QAction(parent); + tmpaction->setSeparator(true); + Command *cmd = am->registerAction(tmpaction, name, context); + return cmd; +} + EditorManager::EditorManager(ICore *core, QWidget *parent) : QWidget(parent), m_d(new EditorManagerPrivate(core, parent)) @@ -319,12 +329,24 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) : ActionContainer *medit = am->actionContainer(Constants::M_EDIT); ActionContainer *advancedMenu = am->createMenu(Constants::M_EDIT_ADVANCED); - medit->addMenu(advancedMenu, Constants::G_EDIT_FORMAT); + medit->addMenu(advancedMenu, Constants::G_EDIT_ADVANCED); advancedMenu->menu()->setTitle(tr("&Advanced")); + advancedMenu->appendGroup(Constants::G_EDIT_FORMAT); + advancedMenu->appendGroup(Constants::G_EDIT_COLLAPSING); + advancedMenu->appendGroup(Constants::G_EDIT_FONT); + advancedMenu->appendGroup(Constants::G_EDIT_EDITOR); + + // Advanced menu separators + cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.Collapsing"), editManagerContext); + advancedMenu->addAction(cmd, Constants::G_EDIT_COLLAPSING); + cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.Font"), editManagerContext); + advancedMenu->addAction(cmd, Constants::G_EDIT_FONT); + cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.Editor"), editManagerContext); + advancedMenu->addAction(cmd, Constants::G_EDIT_EDITOR); cmd = am->registerAction(m_d->m_openInExternalEditorAction, Constants::OPEN_IN_EXTERNAL_EDITOR, editManagerContext); cmd->setDefaultKeySequence(QKeySequence(tr("Alt+V,Alt+I"))); - advancedMenu->addAction(cmd); + advancedMenu->addAction(cmd, Constants::G_EDIT_EDITOR); connect(m_d->m_openInExternalEditorAction, SIGNAL(triggered()), this, SLOT(openInExternalEditor())); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 31cb2b77429..664dcb89613 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -402,7 +402,7 @@ void MainWindow::registerDefaultContainers() medit->appendGroup(Constants::G_EDIT_UNDOREDO); medit->appendGroup(Constants::G_EDIT_COPYPASTE); medit->appendGroup(Constants::G_EDIT_SELECTALL); - medit->appendGroup(Constants::G_EDIT_FORMAT); + medit->appendGroup(Constants::G_EDIT_ADVANCED); medit->appendGroup(Constants::G_EDIT_FIND); medit->appendGroup(Constants::G_EDIT_OTHER); @@ -432,9 +432,9 @@ void MainWindow::registerDefaultContainers() ac->appendGroup(Constants::G_HELP_ABOUT); } -static Command *createSeparator(ActionManagerPrivate *am, QObject *parent, - const QString &name, - const QList &context) +static Command *createSeparator(ActionManager *am, QObject *parent, + const QString &name, + const QList &context) { QAction *tmpaction = new QAction(parent); tmpaction->setSeparator(true); @@ -465,7 +465,7 @@ void MainWindow::registerDefaultActions() mfile->addAction(cmd, Constants::G_FILE_OTHER); // Edit menu separators - cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.CopyPaste"), m_globalContext); + cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.CopyPaste"), m_globalContext); medit->addAction(cmd, Constants::G_EDIT_COPYPASTE); cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.SelectAll"), m_globalContext); @@ -474,8 +474,8 @@ void MainWindow::registerDefaultActions() cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.Find"), m_globalContext); medit->addAction(cmd, Constants::G_EDIT_FIND); - cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.Format"), m_globalContext); - medit->addAction(cmd, Constants::G_EDIT_FORMAT); + cmd = createSeparator(am, this, QLatin1String("QtCreator.Edit.Sep.Advanced"), m_globalContext); + medit->addAction(cmd, Constants::G_EDIT_ADVANCED); //Tools menu separators cmd = createSeparator(am, this, QLatin1String("QtCreator.Tools.Sep.Options"), m_globalContext); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 4083af7d50b..24864848227 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -178,7 +178,7 @@ bool FakeVimPluginPrivate::initialize(const QStringList &arguments, QString *err ActionContainer *advancedMenu = actionManager->actionContainer(Core::Constants::M_EDIT_ADVANCED); - advancedMenu->addAction(cmd); + advancedMenu->addAction(cmd, Core::Constants::G_EDIT_EDITOR); connect(m_installHandlerAction, SIGNAL(triggered()), this, SLOT(installHandler())); diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 44b6f33b17d..e15cbfd0096 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -125,35 +125,34 @@ void TextEditorActionHandler::createActions() m_formatAction = new QAction(tr("Auto-&indent Selection"), this); command = am->registerAction(m_formatAction, TextEditor::Constants::AUTO_INDENT_SELECTION, m_contextId); command->setDefaultKeySequence(QKeySequence(tr("Ctrl+I"))); - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_FORMAT); connect(m_formatAction, SIGNAL(triggered(bool)), this, SLOT(formatAction())); m_visualizeWhitespaceAction = new QAction(tr("&Visualize Whitespace"), this); m_visualizeWhitespaceAction->setCheckable(true); command = am->registerAction(m_visualizeWhitespaceAction, - TextEditor::Constants::VISUALIZE_WHITESPACE, m_contextId); + TextEditor::Constants::VISUALIZE_WHITESPACE, m_contextId); #ifndef Q_OS_MAC command->setDefaultKeySequence(QKeySequence(tr("Ctrl+E, Ctrl+V"))); #endif - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_FORMAT); connect(m_visualizeWhitespaceAction, SIGNAL(triggered(bool)), this, SLOT(setVisualizeWhitespace(bool))); m_cleanWhitespaceAction = new QAction(tr("Clean Whitespace"), this); command = am->registerAction(m_cleanWhitespaceAction, TextEditor::Constants::CLEAN_WHITESPACE, m_contextId); - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_FORMAT); connect(m_cleanWhitespaceAction, SIGNAL(triggered()), this, SLOT(cleanWhitespace())); m_textWrappingAction = new QAction(tr("Enable Text &Wrapping"), this); m_textWrappingAction->setCheckable(true); - command = am->registerAction(m_textWrappingAction, - TextEditor::Constants::TEXT_WRAPPING, m_contextId); + command = am->registerAction(m_textWrappingAction, TextEditor::Constants::TEXT_WRAPPING, m_contextId); #ifndef Q_OS_MAC command->setDefaultKeySequence(QKeySequence(tr("Ctrl+E, Ctrl+W"))); #endif - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_FORMAT); connect(m_textWrappingAction, SIGNAL(triggered(bool)), this, SLOT(setTextWrapping(bool))); @@ -161,7 +160,7 @@ void TextEditorActionHandler::createActions() command = am->registerAction(m_unCommentSelectionAction, Constants::UN_COMMENT_SELECTION, m_contextId); command->setDefaultKeySequence(QKeySequence(tr("Ctrl+/"))); connect(m_unCommentSelectionAction, SIGNAL(triggered()), this, SLOT(unCommentSelection())); - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_FORMAT); m_deleteLineAction = new QAction(tr("Delete &Line"), this); command = am->registerAction(m_deleteLineAction, Constants::DELETE_LINE, m_contextId); @@ -172,28 +171,30 @@ void TextEditorActionHandler::createActions() command = am->registerAction(m_collapseAction, Constants::COLLAPSE, m_contextId); command->setDefaultKeySequence(QKeySequence(tr("Ctrl+<"))); connect(m_collapseAction, SIGNAL(triggered()), this, SLOT(collapse())); + advancedMenu->addAction(command, Core::Constants::G_EDIT_COLLAPSING); m_expandAction = new QAction(tr("Expand"), this); command = am->registerAction(m_expandAction, Constants::EXPAND, m_contextId); command->setDefaultKeySequence(QKeySequence(tr("Ctrl+>"))); connect(m_expandAction, SIGNAL(triggered()), this, SLOT(expand())); + advancedMenu->addAction(command, Core::Constants::G_EDIT_COLLAPSING); m_unCollapseAllAction = new QAction(tr("(Un)&Collapse All"), this); command = am->registerAction(m_unCollapseAllAction, Constants::UN_COLLAPSE_ALL, m_contextId); connect(m_unCollapseAllAction, SIGNAL(triggered()), this, SLOT(unCollapseAll())); - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_COLLAPSING); m_increaseFontSizeAction = new QAction(tr("Increase Font Size"), this); command = am->registerAction(m_increaseFontSizeAction, Constants::INCREASE_FONT_SIZE, m_contextId); command->setDefaultKeySequence(QKeySequence(tr("Ctrl++"))); connect(m_increaseFontSizeAction, SIGNAL(triggered()), this, SLOT(increaseFontSize())); - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_FONT); m_decreaseFontSizeAction = new QAction(tr("Decrease Font Size"), this); command = am->registerAction(m_decreaseFontSizeAction, Constants::DECREASE_FONT_SIZE, m_contextId); command->setDefaultKeySequence(QKeySequence(tr("Ctrl+-"))); connect(m_decreaseFontSizeAction, SIGNAL(triggered()), this, SLOT(decreaseFontSize())); - advancedMenu->addAction(command); + advancedMenu->addAction(command, Core::Constants::G_EDIT_FONT); m_gotoBlockStartAction = new QAction(tr("Goto Block Start"), this); command = am->registerAction(m_gotoBlockStartAction, Constants::GOTO_BLOCK_START, m_contextId); From 44ed62c1819fd0c3d539475a702ecdf7fcf1b9d5 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Mon, 19 Jan 2009 20:06:39 +0100 Subject: [PATCH 77/81] Fixes: Expand the #elif's condition. --- src/libs/cplusplus/pp-engine.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 6ed55492e50..e7d3011a767 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -963,7 +963,21 @@ void Preprocessor::processElif(TokenIterator firstToken, TokenIterator lastToken } else if (iflevel == 0 && !skipping()) { // std::cerr << "*** WARNING #else without #if" << std::endl; } else if (!_true_test[iflevel] && !_skipping[iflevel - 1]) { - const Value result = evalExpression(tk.dot(), lastToken, _source); + + const char *first = startOfToken(*tk); + const char *last = startOfToken(*lastToken); + + MacroExpander expandCondition (env); + QByteArray condition; + condition.reserve(256); + expandCondition(first, last, &condition); + + QVector tokens = tokenize(condition); + + const Value result = evalExpression(tokens.constBegin(), + tokens.constEnd() - 1, + condition); + _true_test[iflevel] = ! result.is_zero (); _skipping[iflevel] = result.is_zero (); } else { From 113b81e9dbc67dab5252eb9b6a8aaa57efda3de0 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 20 Jan 2009 11:52:04 +0100 Subject: [PATCH 78/81] replace ExtensionSystem::PluginManager::instance()->getObject() by Core::ICore::instance() --- src/plugins/bineditor/bineditorplugin.cpp | 48 +++--- src/plugins/bineditor/bineditorplugin.h | 1 - src/plugins/bookmarks/bookmarkmanager.cpp | 26 ++- src/plugins/bookmarks/bookmarkmanager.h | 2 - src/plugins/bookmarks/bookmarksplugin.cpp | 12 +- src/plugins/bookmarks/bookmarksplugin.h | 3 - .../cmakeprojectmanager.cpp | 3 +- .../cmakeprojectplugin.cpp | 3 +- .../actionmanager/actionmanager.cpp | 5 +- src/plugins/coreplugin/coreimpl.cpp | 13 +- src/plugins/coreplugin/coreimpl.h | 4 - src/plugins/coreplugin/icore.cpp | 5 +- src/plugins/coreplugin/icore.h | 2 + src/plugins/coreplugin/modemanager.cpp | 2 +- src/plugins/coreplugin/navigationwidget.cpp | 10 +- src/plugins/coreplugin/outputpane.cpp | 6 +- src/plugins/cpaster/cpasterplugin.cpp | 26 ++- src/plugins/cpaster/settingspage.cpp | 6 +- src/plugins/cppeditor/cppeditor.cpp | 10 +- src/plugins/cppeditor/cpphoverhandler.cpp | 16 +- src/plugins/cppeditor/cpphoverhandler.h | 2 - src/plugins/cppeditor/cppplugin.cpp | 39 ++--- src/plugins/cppeditor/cppplugin.h | 1 - src/plugins/cpptools/cppmodelmanager.cpp | 6 +- .../cpptools/cppmodelmanagerinterface.h | 2 +- src/plugins/cpptools/cpptoolsplugin.cpp | 40 ++--- src/plugins/cpptools/cpptoolsplugin.h | 5 - src/plugins/debugger/debuggerplugin.cpp | 20 +-- src/plugins/debugger/gdbtypemacros.cpp | 18 +- .../designer/cpp/formclasswizardpage.cpp | 5 +- src/plugins/designer/formeditorplugin.cpp | 20 ++- src/plugins/designer/formeditorw.cpp | 2 +- src/plugins/designer/workbenchintegration.cpp | 4 +- src/plugins/fakevim/fakevimplugin.cpp | 3 +- src/plugins/find/findplugin.cpp | 25 ++- src/plugins/find/findplugin.h | 2 - src/plugins/find/findtoolbar.cpp | 2 +- src/plugins/find/findtoolwindow.cpp | 6 +- src/plugins/git/gitcommand.cpp | 3 +- src/plugins/git/gitplugin.cpp | 2 +- src/plugins/helloworld/helloworldplugin.cpp | 3 +- src/plugins/helloworld/helloworldplugin.h | 2 - src/plugins/help/helpplugin.cpp | 6 +- src/plugins/perforce/perforceplugin.cpp | 162 +++++------------- src/plugins/perforce/perforceplugin.h | 8 - src/plugins/projectexplorer/buildmanager.cpp | 3 +- .../projectexplorer/projectexplorer.cpp | 8 +- src/plugins/projectexplorer/taskwindow.cpp | 11 +- src/plugins/projectexplorer/taskwindow.h | 1 - .../qt4projectmanager/gdbmacrosbuildstep.cpp | 5 +- .../qt4projectmanager/profileeditor.cpp | 10 +- src/plugins/qt4projectmanager/profileeditor.h | 9 +- .../profileeditorfactory.cpp | 3 +- .../qt4buildconfigwidget.cpp | 6 +- src/plugins/qt4projectmanager/qt4nodes.cpp | 13 +- src/plugins/qt4projectmanager/qt4project.cpp | 1 + .../qt4projectmanager/qt4projectmanager.cpp | 1 + .../qt4projectmanagerplugin.cpp | 20 +-- .../qt4projectmanagerplugin.h | 2 - .../qt4projectmanager/qt4runconfiguration.cpp | 6 +- .../qt4projectmanager/qtversionmanager.cpp | 11 +- .../qt4projectmanager/qtversionmanager.h | 2 - .../qt4projectmanager/wizards/qtwizard.cpp | 1 + src/plugins/qtestlib/qtestlibplugin.cpp | 37 ++-- .../qtscripteditor/qtscripteditorplugin.cpp | 2 +- src/plugins/quickopen/quickopenplugin.cpp | 14 +- src/plugins/quickopen/quickopentoolwindow.cpp | 3 +- src/plugins/regexp/regexpplugin.cpp | 22 +-- src/plugins/regexp/regexpplugin.h | 7 +- .../resourceeditor/resourceeditorplugin.cpp | 26 +-- .../resourceeditor/resourceeditorplugin.h | 13 +- src/plugins/snippets/snippetsplugin.cpp | 21 +-- src/plugins/snippets/snippetsplugin.h | 9 +- src/plugins/subversion/subversionplugin.cpp | 20 +-- src/plugins/subversion/subversionplugin.h | 1 - src/plugins/texteditor/basetexteditor.cpp | 11 +- src/plugins/texteditor/basetextmark.cpp | 4 +- src/plugins/texteditor/completionsupport.cpp | 14 +- src/plugins/texteditor/completionsupport.h | 6 +- src/plugins/texteditor/texteditorplugin.cpp | 11 +- .../vcsbase/basevcssubmiteditorfactory.cpp | 3 +- src/plugins/vcsbase/vcsbaseeditor.cpp | 93 +++++----- src/plugins/vcsbase/vcsbaseeditor.h | 8 +- src/plugins/vcsbase/vcsbaseplugin.cpp | 9 +- src/plugins/vcsbase/vcsbasesubmiteditor.cpp | 7 +- 85 files changed, 432 insertions(+), 613 deletions(-) diff --git a/src/plugins/bineditor/bineditorplugin.cpp b/src/plugins/bineditor/bineditorplugin.cpp index 97b9d703764..7e3d15dc4c1 100644 --- a/src/plugins/bineditor/bineditorplugin.cpp +++ b/src/plugins/bineditor/bineditorplugin.cpp @@ -42,16 +42,16 @@ #include #include -#include +#include #include +#include +#include #include #include -#include -#include #include -#include -#include #include +#include +#include #include #include @@ -205,7 +205,7 @@ public: break; } - switch (Core::Utils::reloadPrompt(fileName, BinEditorPlugin::core()->mainWindow())) { + switch (Core::Utils::reloadPrompt(fileName, Core::ICore::instance()->mainWindow())) { case Core::Utils::ReloadCurrent: open(fileName); break; @@ -231,12 +231,15 @@ class BinEditorInterface : public Core::IEditor { Q_OBJECT public: - BinEditorInterface(BinEditor *parent ) : Core::IEditor(parent) { + BinEditorInterface(BinEditor *parent) + : Core::IEditor(parent) + { + Core::ICore *core = Core::ICore::instance(); m_editor = parent; m_file = new BinEditorFile(parent); - m_context << BinEditorPlugin::core()->uniqueIDManager()-> + m_context << core->uniqueIDManager()-> uniqueIdentifier(Core::Constants::K_DEFAULT_BINARY_EDITOR); - m_context << BinEditorPlugin::core()->uniqueIDManager()->uniqueIdentifier(Constants::C_BINEDITOR); + m_context << core->uniqueIDManager()->uniqueIdentifier(Constants::C_BINEDITOR); m_cursorPositionLabel = new Core::Utils::LineColumnLabel; QHBoxLayout *l = new QHBoxLayout; @@ -317,7 +320,8 @@ QString BinEditorFactory::kind() const Core::IFile *BinEditorFactory::open(const QString &fileName) { - Core::IEditor *iface = m_owner->m_core->editorManager()->openEditor(fileName, kind()); + Core::ICore *core = Core::ICore::instance(); + Core::IEditor *iface = core->editorManager()->openEditor(fileName, kind()); return iface ? iface->file() : 0; } @@ -337,8 +341,7 @@ QStringList BinEditorFactory::mimeTypes() const BinEditorPlugin *BinEditorPlugin::m_instance = 0; -BinEditorPlugin::BinEditorPlugin() : - m_core(0) +BinEditorPlugin::BinEditorPlugin() { m_undoAction = m_redoAction = m_copyAction = m_selectAllAction = 0; m_instance = this; @@ -354,16 +357,11 @@ BinEditorPlugin *BinEditorPlugin::instance() return m_instance; } -Core::ICore *BinEditorPlugin::core() -{ - return m_instance->m_core; -} - QAction *BinEditorPlugin::registerNewAction(const QString &id, const QString &title) { QAction *result = new QAction(title, this); - m_core->actionManager()->registerAction(result, id, m_context); + Core::ICore::instance()->actionManager()->registerAction(result, id, m_context); return result; } @@ -386,7 +384,8 @@ void BinEditorPlugin::initializeEditor(BinEditor *editor) QObject::connect(editor, SIGNAL(modificationChanged(bool)), editorInterface, SIGNAL(changed())); editor->setEditorInterface(editorInterface); - m_context << BinEditorPlugin::core()->uniqueIDManager()->uniqueIdentifier(Constants::C_BINEDITOR); + Core::ICore *core = Core::ICore::instance(); + m_context << core->uniqueIDManager()->uniqueIdentifier(Constants::C_BINEDITOR); if (!m_undoAction) { m_undoAction = registerNewAction(QLatin1String(Core::Constants::UNDO), this, SLOT(undoAction()), @@ -416,13 +415,16 @@ void BinEditorPlugin::initializeEditor(BinEditor *editor) aggregate->add(editor); } -bool BinEditorPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) +bool BinEditorPlugin::initialize(const QStringList &arguments, QString *errorMessage) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - if (!m_core->mimeDatabase()->addMimeTypes(QLatin1String(":/bineditor/BinEditor.mimetypes.xml"), errorMessage)) + Q_UNUSED(arguments); + Q_UNUSED(errorMessage); + + Core::ICore *core = Core::ICore::instance(); + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/bineditor/BinEditor.mimetypes.xml"), errorMessage)) return false; - connect(m_core, SIGNAL(contextAboutToChange(Core::IContext *)), + connect(core, SIGNAL(contextAboutToChange(Core::IContext *)), this, SLOT(updateCurrentEditor(Core::IContext *))); addAutoReleasedObject(new BinEditorFactory(this)); diff --git a/src/plugins/bineditor/bineditorplugin.h b/src/plugins/bineditor/bineditorplugin.h index 51ff129dd62..ddc4333acdb 100644 --- a/src/plugins/bineditor/bineditorplugin.h +++ b/src/plugins/bineditor/bineditorplugin.h @@ -62,7 +62,6 @@ public: ~BinEditorPlugin(); static BinEditorPlugin *instance(); - static Core::ICore *core(); bool initialize(const QStringList &arguments, QString *error_message = 0); void extensionsInitialized(); diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index dbe9246d977..3d9ea294d92 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -58,6 +58,7 @@ Q_DECLARE_METATYPE(Bookmarks::Internal::Bookmark*) using namespace Bookmarks; using namespace Bookmarks::Internal; using namespace ProjectExplorer; +using namespace Core; BookmarkDelegate::BookmarkDelegate(QObject *parent) : QStyledItemDelegate(parent), m_normalPixmap(0), m_selectedPixmap(0) @@ -214,8 +215,7 @@ BookmarkView::BookmarkView(QWidget *parent) this, SLOT(gotoBookmark(const QModelIndex &))); m_bookmarkContext = new BookmarkContext(this); - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - core->addContextObject(m_bookmarkContext); + ICore::instance()->addContextObject(m_bookmarkContext); setItemDelegate(new BookmarkDelegate(this)); setFrameStyle(QFrame::NoFrame); @@ -225,8 +225,7 @@ BookmarkView::BookmarkView(QWidget *parent) BookmarkView::~BookmarkView() { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - core->removeContextObject(m_bookmarkContext); + ICore::instance()->removeContextObject(m_bookmarkContext); } void BookmarkView::contextMenuEvent(QContextMenuEvent *event) @@ -246,13 +245,11 @@ void BookmarkView::contextMenuEvent(QContextMenuEvent *event) connect(removeAll, SIGNAL(triggered()), this, SLOT(removeAll())); - menu.exec(mapToGlobal(event->pos())); } void BookmarkView::removeFromContextMenu() { - removeBookmark(m_contextMenuIndex); } @@ -296,7 +293,7 @@ void BookmarkView::gotoBookmark(const QModelIndex &index) BookmarkContext::BookmarkContext(BookmarkView *widget) : m_bookmarkView(widget) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = ICore::instance(); m_context << core->uniqueIDManager()->uniqueIdentifier(Constants::BOOKMARKS_CONTEXT); } @@ -315,15 +312,14 @@ QWidget *BookmarkContext::widget() //// BookmarkManager::BookmarkManager() : - m_core(BookmarksPlugin::core()), m_bookmarkIcon(QIcon(QLatin1String(":/bookmarks/images/bookmark.png"))) { m_selectionModel = new QItemSelectionModel(this, this); - connect(m_core, SIGNAL(contextChanged(Core::IContext*)), + connect(Core::ICore::instance(), SIGNAL(contextChanged(Core::IContext*)), this, SLOT(updateActionStatus())); - ExtensionSystem::PluginManager *pm = m_core->pluginManager(); + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); ProjectExplorerPlugin *projectExplorer = pm->getObject(); connect(projectExplorer->session(), SIGNAL(sessionLoaded()), @@ -513,7 +509,8 @@ void BookmarkManager::documentPrevNext(bool next) nextLine = markLine; } - m_core->editorManager()->addCurrentPositionToNavigationHistory(true); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); + em->addCurrentPositionToNavigationHistory(true); if (next) { if (nextLine == -1) editor->gotoLine(firstLine); @@ -525,7 +522,7 @@ void BookmarkManager::documentPrevNext(bool next) else editor->gotoLine(prevLine); } - m_core->editorManager()->addCurrentPositionToNavigationHistory(); + em->addCurrentPositionToNavigationHistory(); } void BookmarkManager::next() @@ -557,7 +554,8 @@ void BookmarkManager::prev() TextEditor::ITextEditor *BookmarkManager::currentTextEditor() const { - Core::IEditor *currEditor = m_core->editorManager()->currentEditor(); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); + Core::IEditor *currEditor = em->currentEditor(); if (!currEditor) return 0; return qobject_cast(currEditor); @@ -566,7 +564,7 @@ TextEditor::ITextEditor *BookmarkManager::currentTextEditor() const /* Returns the current session. */ SessionManager *BookmarkManager::sessionManager() const { - ExtensionSystem::PluginManager *pm = m_core->pluginManager(); + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); ProjectExplorerPlugin *pe = pm->getObject(); return pe->session(); } diff --git a/src/plugins/bookmarks/bookmarkmanager.h b/src/plugins/bookmarks/bookmarkmanager.h index 1763b4e5260..0a422e5b239 100644 --- a/src/plugins/bookmarks/bookmarkmanager.h +++ b/src/plugins/bookmarks/bookmarkmanager.h @@ -48,7 +48,6 @@ class SessionManager; } namespace Core { -class ICore; class IEditor; } @@ -131,7 +130,6 @@ private: typedef QMap DirectoryFileBookmarksMap; DirectoryFileBookmarksMap m_bookmarksMap; - Core::ICore *m_core; QIcon m_bookmarkIcon; diff --git a/src/plugins/bookmarks/bookmarksplugin.cpp b/src/plugins/bookmarks/bookmarksplugin.cpp index 961b11bd714..d7051fab068 100644 --- a/src/plugins/bookmarks/bookmarksplugin.cpp +++ b/src/plugins/bookmarks/bookmarksplugin.cpp @@ -57,7 +57,7 @@ using namespace TextEditor; BookmarksPlugin *BookmarksPlugin::m_instance = 0; BookmarksPlugin::BookmarksPlugin() - : m_bookmarkManager(0), m_core(0) + : m_bookmarkManager(0) { m_instance = this; } @@ -68,13 +68,13 @@ void BookmarksPlugin::extensionsInitialized() bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - Core::ActionManager *am = m_core->actionManager(); + Core::ICore *core = Core::ICore::instance(); + Core::ActionManager *am = core->actionManager(); - QList context = QList() << m_core->uniqueIDManager()-> + QList context = QList() << core->uniqueIDManager()-> uniqueIdentifier(Constants::BOOKMARKS_CONTEXT); QList textcontext, globalcontext; - textcontext << m_core->uniqueIDManager()-> + textcontext << core->uniqueIDManager()-> uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); globalcontext << Core::Constants::C_GLOBAL_ID; @@ -172,7 +172,7 @@ bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *) this, SLOT(bookmarkMarginActionTriggered())); // EditorManager - QObject *editorManager = m_core->editorManager(); + QObject *editorManager = core->editorManager(); connect(editorManager, SIGNAL(editorAboutToClose(Core::IEditor*)), this, SLOT(editorAboutToClose(Core::IEditor*))); connect(editorManager, SIGNAL(editorOpened(Core::IEditor*)), diff --git a/src/plugins/bookmarks/bookmarksplugin.h b/src/plugins/bookmarks/bookmarksplugin.h index f4853c48cb8..ef3cfbe0236 100644 --- a/src/plugins/bookmarks/bookmarksplugin.h +++ b/src/plugins/bookmarks/bookmarksplugin.h @@ -45,7 +45,6 @@ class QMenu; QT_END_NAMESPACE namespace Core { -class ICore; class IEditor; } @@ -67,7 +66,6 @@ public: ~BookmarksPlugin(); static BookmarksPlugin *instance() { return m_instance; } - static Core::ICore *core() { return m_instance->m_core; } bool initialize(const QStringList &arguments, QString *error_message); void extensionsInitialized(); @@ -85,7 +83,6 @@ private slots: private: static BookmarksPlugin *m_instance; BookmarkManager *m_bookmarkManager; - Core::ICore *m_core; QAction *m_toggleAction; QAction *m_prevAction; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 1f4bc59e9ef..966c0144355 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -37,7 +37,6 @@ #include "cmakeprojectconstants.h" #include -#include #include #include @@ -45,7 +44,7 @@ using namespace CMakeProjectManager::Internal; CMakeManager::CMakeManager() { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); m_projectContext = core->uniqueIDManager()->uniqueIdentifier(CMakeProjectManager::Constants::PROJECTCONTEXT); m_projectLanguage = core->uniqueIDManager()->uniqueIdentifier(ProjectExplorer::Constants::LANG_CXX); } diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index b83c4c2e30f..29ad08ec5f1 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -39,7 +39,6 @@ #include #include -#include #include #include @@ -57,7 +56,7 @@ CMakeProjectPlugin::~CMakeProjectPlugin() bool CMakeProjectPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":cmakeproject/CMakeProject.mimetypes.xml"), errorMessage)) return false; addAutoReleasedObject(new CMakeManager()); diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 3932d42598b..9101801ac73 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -61,7 +61,7 @@ namespace { You get the only implementation of this class from the core interface ICore::actionManager() method, e.g. \code - ExtensionSystem::PluginManager::instance()->getObject()->actionManager() + Core::ICore::instance()->actionManager() \endcode The main reasons for the need of this class is to provide a central place where the user @@ -80,8 +80,7 @@ namespace { So to register a globally active action "My Action" put the following in your plugin's IPlugin::initialize method: \code - Core::ActionManager *am = ExtensionSystem::PluginManager::instance() - ->getObject()->actionManager(); + Core::ActionManager *am = Core::ICore::instance()->actionManager(); QAction *myAction = new QAction(tr("My Action"), this); Core::Command *cmd = am->registerAction(myAction, "myplugin.myaction", diff --git a/src/plugins/coreplugin/coreimpl.cpp b/src/plugins/coreplugin/coreimpl.cpp index 63521ce6f0a..9f8ec24b576 100644 --- a/src/plugins/coreplugin/coreimpl.cpp +++ b/src/plugins/coreplugin/coreimpl.cpp @@ -36,12 +36,21 @@ #include #include +namespace Core { +namespace Internal { + +// The Core Singleton +static CoreImpl *m_instance = 0; + +} // namespace Internal +} // namespace Core + + using namespace Core; using namespace Core::Internal; -CoreImpl *CoreImpl::m_instance = 0; -CoreImpl *CoreImpl::instance() +ICore* ICore::instance() { return m_instance; } diff --git a/src/plugins/coreplugin/coreimpl.h b/src/plugins/coreplugin/coreimpl.h index b09de4101f6..a845a4b9905 100644 --- a/src/plugins/coreplugin/coreimpl.h +++ b/src/plugins/coreplugin/coreimpl.h @@ -45,8 +45,6 @@ class CoreImpl : public ICore Q_OBJECT public: - static CoreImpl *instance(); - CoreImpl(MainWindow *mainwindow); ~CoreImpl() {} @@ -93,8 +91,6 @@ public: private: MainWindow *m_mainwindow; friend class MainWindow; - - static CoreImpl *m_instance; }; } // namespace Internal diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 5d6d3274177..5654c885758 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -51,10 +51,7 @@ You should never create a subclass of this interface. The one and only instance is created by the Core plugin. You can access this instance - from your plugin via the plugin manager, e.g. - \code - ExtensionSystem::PluginManager::instance()->getObject(); - \endcode + from your plugin through \c{Core::instance()}. \mainclass */ diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 22df3bd9ee3..4f369e23c41 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -74,6 +74,8 @@ public: ICore() {} virtual ~ICore() {} + static ICore *instance(); + virtual QStringList showNewItemDialog(const QString &title, const QList &wizards, const QString &defaultLocation = QString()) = 0; diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 46262e4ee55..24a0b6eac37 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -217,7 +217,7 @@ void ModeManager::currentTabChanged(int index) // FIXME: This hardcoded context update is required for the Debug and Edit modes, since // they use the editor widget, which is already a context widget so the main window won't // go further up the parent tree to find the mode context. - CoreImpl *core = CoreImpl::instance(); + ICore *core = ICore::instance(); foreach (const int context, m_addedContexts) core->removeAdditionalContext(context); diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 5c7e03e8930..1141909aa0c 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -316,8 +316,8 @@ void NavigationWidget::objectAdded(QObject * obj) if (!factory) return; - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - Core::ActionManager *am = core->actionManager(); + ICore *core = ICore::instance(); + ActionManager *am = core->actionManager(); QList navicontext = QList() << core->uniqueIDManager()-> uniqueIdentifier(Core::Constants::C_NAVIGATION_PANE); @@ -399,9 +399,8 @@ NavigationSubWidget::~NavigationSubWidget() void NavigationSubWidget::setCurrentIndex(int index) { // Remove toolbutton - foreach (QWidget *w, m_additionalToolBarWidgets) { + foreach (QWidget *w, m_additionalToolBarWidgets) delete w; - } // Remove old Widget delete m_navigationWidget; @@ -466,8 +465,7 @@ void NavigationSubWidget::setFactory(INavigationWidgetFactory *factory) void NavigationSubWidget::setFactory(const QString &name) { - for (int i = 0; i < m_navigationComboBox->count(); ++i) - { + for (int i = 0; i < m_navigationComboBox->count(); ++i) { INavigationWidgetFactory *factory = m_navigationComboBox->itemData(i).value(); if (factory->displayName() == name) diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp index dc27d837d28..372c76d4464 100644 --- a/src/plugins/coreplugin/outputpane.cpp +++ b/src/plugins/coreplugin/outputpane.cpp @@ -395,8 +395,7 @@ void OutputPane::showPage(int idx, bool focus) if (!OutputPanePlaceHolder::m_current) { // In this mode we don't have a placeholder // switch to the output mode and switch the page - ICore *core = m_pluginManager->getObject(); - core->modeManager()->activateMode(Constants::MODE_OUTPUT); + ICore::instance()->modeManager()->activateMode(Constants::MODE_OUTPUT); ensurePageVisible(idx); } else { // else we make that page visible @@ -411,14 +410,13 @@ void OutputPane::showPage(int idx, bool focus) void OutputPane::togglePage(bool focus) { int idx = findIndexForPage(qobject_cast(sender())); - if(OutputPanePlaceHolder::m_current + if (OutputPanePlaceHolder::m_current && OutputPanePlaceHolder::m_current->isVisible() && m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt() == idx) { slotHide(); } else { showPage(idx, focus); } - } void OutputPane::setCloseable(bool b) diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp index e4682ee61b1..af4cbabbbe8 100644 --- a/src/plugins/cpaster/cpasterplugin.cpp +++ b/src/plugins/cpaster/cpasterplugin.cpp @@ -38,16 +38,16 @@ #include "splitter.h" #include "view.h" -#include -#include -#include -#include -#include #include +#include #include +#include +#include +#include +#include +#include #include #include -#include #include #include @@ -63,8 +63,6 @@ using namespace CodePaster; using namespace Core; using namespace TextEditor; -Core::ICore *gCoreInstance = NULL; - CodepasterPlugin::CodepasterPlugin() : m_settingsPage(0), m_fetcher(0), m_poster(0) { @@ -84,11 +82,9 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m Q_UNUSED(arguments); Q_UNUSED(error_message); - gCoreInstance = ExtensionSystem::PluginManager::instance()->getObject(); - // Create the globalcontext list to register actions accordingly QList globalcontext; - globalcontext << gCoreInstance->uniqueIDManager()-> + globalcontext << ICore::instance()->uniqueIDManager()-> uniqueIdentifier(Core::Constants::C_GLOBAL); // Create the settings Page @@ -96,7 +92,7 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m addObject(m_settingsPage); //register actions - Core::ActionManager *actionManager = gCoreInstance->actionManager(); + Core::ActionManager *actionManager = ICore::instance()->actionManager(); Core::ActionContainer *toolsContainer = actionManager->actionContainer(Core::Constants::M_TOOLS); @@ -133,7 +129,7 @@ void CodepasterPlugin::post() { if (m_poster) delete m_poster; - IEditor* editor = gCoreInstance->editorManager()->currentEditor(); + IEditor* editor = ICore::instance()->editorManager()->currentEditor(); ITextEditor* textEditor = qobject_cast(editor); if (!textEditor) return; @@ -244,7 +240,7 @@ void CustomFetcher::customRequestFinished(int, bool error) QByteArray data = body(); if (!m_listWidget) { QString title = QString::fromLatin1("Code Paster: %1").arg(m_id); - gCoreInstance->editorManager()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR + ICore::instance()->editorManager()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR , &title, data); } else { m_listWidget->clear(); @@ -284,7 +280,7 @@ void CustomPoster::customRequestFinished(int, bool error) if (!error) { if (m_copy) QApplication::clipboard()->setText(pastedUrl()); - gCoreInstance->messageManager()->printToOutputPane(pastedUrl(), m_output); + ICore::instance()->messageManager()->printToOutputPane(pastedUrl(), m_output); } else QMessageBox::warning(0, "Code Paster Error", "Some error occured while posting", QMessageBox::Ok); #if 0 // Figure out how to access diff --git a/src/plugins/cpaster/settingspage.cpp b/src/plugins/cpaster/settingspage.cpp index 33363063617..1907d6eebea 100644 --- a/src/plugins/cpaster/settingspage.cpp +++ b/src/plugins/cpaster/settingspage.cpp @@ -34,7 +34,6 @@ #include "settingspage.h" #include -#include #include #include @@ -46,10 +45,7 @@ using namespace CodePaster; SettingsPage::SettingsPage() { - Core::ICore *coreIFace = ExtensionSystem::PluginManager::instance()->getObject(); - if (coreIFace) - m_settings = coreIFace->settings(); - + m_settings = Core::ICore::instance()->settings(); if (m_settings) { m_settings->beginGroup("CodePaster"); m_username = m_settings->value("UserName", qgetenv("USER")).toString(); diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index b41a70c218d..093c39611bb 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -139,15 +139,14 @@ QualifiedNameId *qualifiedNameIdForSymbol(Symbol *s, const LookupContext &contex CPPEditorEditable::CPPEditorEditable(CPPEditor *editor) : BaseTextEditorEditable(editor) { - Core::ICore *core = CppPlugin::core(); + Core::ICore *core = Core::ICore::instance(); m_context << core->uniqueIDManager()->uniqueIdentifier(CppEditor::Constants::C_CPPEDITOR); m_context << core->uniqueIDManager()->uniqueIdentifier(ProjectExplorer::Constants::LANG_CXX); m_context << core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); } -CPPEditor::CPPEditor(QWidget *parent) : - TextEditor::BaseTextEditor(parent), - m_core(CppPlugin::core()) +CPPEditor::CPPEditor(QWidget *parent) + : TextEditor::BaseTextEditor(parent) { setParenthesesMatchingEnabled(true); setMarksVisible(true); @@ -169,7 +168,8 @@ CPPEditor::CPPEditor(QWidget *parent) : /*ambiguousMember=*/ 0, Qt::WidgetShortcut); #endif - m_modelManager = m_core->pluginManager()->getObject(); + m_modelManager = ExtensionSystem::PluginManager::instance() + ->getObject(); if (m_modelManager) { connect(m_modelManager, SIGNAL(documentUpdated(CPlusPlus::Document::Ptr)), diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index cf1337c0cbd..5059a92d8b1 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -67,15 +67,16 @@ using namespace CppEditor::Internal; using namespace CPlusPlus; +using namespace Core; CppHoverHandler::CppHoverHandler(QObject *parent) : QObject(parent) - , m_core(CppPlugin::core()) , m_helpEngineNeedsSetup(false) { - m_modelManager = m_core->pluginManager()->getObject(); + m_modelManager = ExtensionSystem::PluginManager::instance()->getObject(); - QFileInfo fi(ExtensionSystem::PluginManager::instance()->getObject()->settings()->fileName()); + ICore *core = ICore::instance(); + QFileInfo fi(core->settings()->fileName()); // FIXME shouldn't the help engine create the directory if it doesn't exist? QDir directory(fi.absolutePath()+"/qtcreator"); if (!directory.exists()) @@ -90,7 +91,7 @@ CppHoverHandler::CppHoverHandler(QObject *parent) m_helpEngineNeedsSetup = m_helpEngine->registeredDocumentations().count() == 0; // Listen for editor opened events in order to connect to tooltip/helpid requests - connect(m_core->editorManager(), SIGNAL(editorOpened(Core::IEditor *)), + connect(core->editorManager(), SIGNAL(editorOpened(Core::IEditor *)), this, SLOT(editorOpened(Core::IEditor *))); } @@ -99,7 +100,7 @@ void CppHoverHandler::updateContextHelpId(TextEditor::ITextEditor *editor, int p updateHelpIdAndTooltip(editor, pos); } -void CppHoverHandler::editorOpened(Core::IEditor *editor) +void CppHoverHandler::editorOpened(IEditor *editor) { CPPEditorEditable *cppEditor = qobject_cast(editor); if (!cppEditor) @@ -117,9 +118,10 @@ void CppHoverHandler::showToolTip(TextEditor::ITextEditor *editor, const QPoint if (!editor) return; - const int dbgcontext = m_core->uniqueIDManager()->uniqueIdentifier(Debugger::Constants::C_GDBDEBUGGER); + ICore *core = ICore::instance(); + const int dbgcontext = core->uniqueIDManager()->uniqueIdentifier(Debugger::Constants::C_GDBDEBUGGER); - if (m_core->hasContext(dbgcontext)) + if (core->hasContext(dbgcontext)) return; updateHelpIdAndTooltip(editor, pos); diff --git a/src/plugins/cppeditor/cpphoverhandler.h b/src/plugins/cppeditor/cpphoverhandler.h index 27daccc35d7..6833c9f5743 100644 --- a/src/plugins/cppeditor/cpphoverhandler.h +++ b/src/plugins/cppeditor/cpphoverhandler.h @@ -42,7 +42,6 @@ class QPoint; QT_END_NAMESPACE namespace Core { -class ICore; class IEditor; } @@ -74,7 +73,6 @@ private slots: private: void updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, int pos); - Core::ICore *m_core; CppTools::CppModelManagerInterface *m_modelManager; QHelpEngineCore *m_helpEngine; QString m_helpId; diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index 105ca5adbcd..f2309edb9ac 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -88,7 +88,7 @@ QString CppPluginEditorFactory::kind() const Core::IFile *CppPluginEditorFactory::open(const QString &fileName) { - Core::IEditor *iface = m_owner->m_core->editorManager()->openEditor(fileName, kind()); + Core::IEditor *iface = Core::ICore::instance()->editorManager()->openEditor(fileName, kind()); return iface ? iface->file() : 0; } @@ -111,7 +111,6 @@ QStringList CppPluginEditorFactory::mimeTypes() const CppPlugin *CppPlugin::m_instance = 0; CppPlugin::CppPlugin() : - m_core(0), m_actionHandler(0), m_factory(0) { @@ -131,11 +130,6 @@ CppPlugin *CppPlugin::instance() return m_instance; } -Core::ICore *CppPlugin::core() -{ - return m_instance->m_core; -} - void CppPlugin::initializeEditor(CPPEditor *editor) { // common actions @@ -160,14 +154,13 @@ void CppPlugin::initializeEditor(CPPEditor *editor) // auto completion connect(editor, SIGNAL(requestAutoCompletion(ITextEditable*, bool)), - TextEditor::Internal::CompletionSupport::instance(core()), SLOT(autoComplete(ITextEditable*, bool))); + TextEditor::Internal::CompletionSupport::instance(), SLOT(autoComplete(ITextEditable*, bool))); } bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) { - typedef TextEditor::TextEditorActionHandler TextEditorActionHandler; - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - if (!m_core->mimeDatabase()->addMimeTypes(QLatin1String(":/cppeditor/CppEditor.mimetypes.xml"), errorMessage)) + Core::ICore *core = Core::ICore::instance(); + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/cppeditor/CppEditor.mimetypes.xml"), errorMessage)) return false; m_factory = new CppPluginEditorFactory(this); @@ -181,21 +174,21 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess wizardParameters.setTrCategory(tr("C++")); wizardParameters.setDescription(tr("Creates a new C++ header file.")); wizardParameters.setName(tr("C++ Header File")); - addAutoReleasedObject(new CppFileWizard(wizardParameters, Header, m_core)); + addAutoReleasedObject(new CppFileWizard(wizardParameters, Header, core)); wizardParameters.setDescription(tr("Creates a new C++ source file.")); wizardParameters.setName(tr("C++ Source File")); - addAutoReleasedObject(new CppFileWizard(wizardParameters, Source, m_core)); + addAutoReleasedObject(new CppFileWizard(wizardParameters, Source, core)); wizardParameters.setKind(Core::IWizard::ClassWizard); wizardParameters.setName(tr("C++ Class")); wizardParameters.setDescription(tr("Creates a header and a source file for a new class.")); - addAutoReleasedObject(new CppClassWizard(wizardParameters, m_core)); + addAutoReleasedObject(new CppClassWizard(wizardParameters, core)); QList context; - context << m_core->uniqueIDManager()->uniqueIdentifier(CppEditor::Constants::C_CPPEDITOR); + context << core->uniqueIDManager()->uniqueIdentifier(CppEditor::Constants::C_CPPEDITOR); - Core::ActionManager *am = m_core->actionManager(); + Core::ActionManager *am = core->actionManager(); am->createMenu(CppEditor::Constants::M_CONTEXT); Core::Command *cmd; @@ -218,22 +211,22 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess am->actionContainer(CppEditor::Constants::M_CONTEXT)->addAction(cmd); am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd); - m_actionHandler = new CPPEditorActionHandler(m_core, + m_actionHandler = new CPPEditorActionHandler(core, CppEditor::Constants::C_CPPEDITOR, TextEditor::TextEditorActionHandler::Format | TextEditor::TextEditorActionHandler::UnCommentSelection | TextEditor::TextEditorActionHandler::UnCollapseAll); // Check Suffixes - if (const QSettings *settings = m_core->settings()) { + if (const QSettings *settings = core->settings()) { const QString headerSuffixKey = QLatin1String(headerSuffixKeyC); if (settings->contains(headerSuffixKey)) { const QString headerSuffix = settings->value(headerSuffixKey, QString()).toString(); if (!headerSuffix.isEmpty()) - m_core->mimeDatabase()->setPreferredSuffix(QLatin1String(Constants::CPP_HEADER_MIMETYPE), headerSuffix); + core->mimeDatabase()->setPreferredSuffix(QLatin1String(Constants::CPP_HEADER_MIMETYPE), headerSuffix); const QString sourceSuffix = settings->value(QLatin1String(sourceSuffixKeyC), QString()).toString(); if (!sourceSuffix.isEmpty()) - m_core->mimeDatabase()->setPreferredSuffix(QLatin1String(Constants::CPP_SOURCE_MIMETYPE), sourceSuffix); + core->mimeDatabase()->setPreferredSuffix(QLatin1String(Constants::CPP_SOURCE_MIMETYPE), sourceSuffix); } } return true; @@ -246,7 +239,8 @@ void CppPlugin::extensionsInitialized() void CppPlugin::switchDeclarationDefinition() { - CPPEditor *editor = qobject_cast(m_core->editorManager()->currentEditor()->widget()); + Core::ICore *core = Core::ICore::instance(); + CPPEditor *editor = qobject_cast(core->editorManager()->currentEditor()->widget()); if (editor) { editor->switchDeclarationDefinition(); } @@ -254,7 +248,8 @@ void CppPlugin::switchDeclarationDefinition() void CppPlugin::jumpToDefinition() { - CPPEditor *editor = qobject_cast(m_core->editorManager()->currentEditor()->widget()); + Core::ICore *core = Core::ICore::instance(); + CPPEditor *editor = qobject_cast(core->editorManager()->currentEditor()->widget()); if (editor) { editor->jumpToDefinition(); } diff --git a/src/plugins/cppeditor/cppplugin.h b/src/plugins/cppeditor/cppplugin.h index 52655e6ae70..c653866e271 100644 --- a/src/plugins/cppeditor/cppplugin.h +++ b/src/plugins/cppeditor/cppplugin.h @@ -65,7 +65,6 @@ public: ~CppPlugin(); static CppPlugin *instance(); - static Core::ICore *core(); bool initialize(const QStringList &arguments, QString *error_message = 0); void extensionsInitialized(); diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 177b40f03e4..75f64fea5da 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -433,10 +433,10 @@ Document::Ptr CppPreprocessor::switchDocument(Document::Ptr doc) modified within Workbench. */ -CppModelManager::CppModelManager(QObject *parent) : - CppModelManagerInterface(parent), - m_core(ExtensionSystem::PluginManager::instance()->getObject()) +CppModelManager::CppModelManager(QObject *parent) + : CppModelManagerInterface(parent) { + m_core = Core::ICore::instance(); // FIXME m_dirty = true; m_projectExplorer = ExtensionSystem::PluginManager::instance() diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h index ca1c57f8635..849c3c691fd 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.h +++ b/src/plugins/cpptools/cppmodelmanagerinterface.h @@ -46,7 +46,7 @@ namespace ProjectExplorer { namespace CppTools { -class CPPTOOLS_EXPORT CppModelManagerInterface: public QObject +class CPPTOOLS_EXPORT CppModelManagerInterface : public QObject { Q_OBJECT diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp index cd45cb356c4..c28c4a8127d 100644 --- a/src/plugins/cpptools/cpptoolsplugin.cpp +++ b/src/plugins/cpptools/cpptoolsplugin.cpp @@ -65,10 +65,8 @@ enum { debug = 0 }; CppToolsPlugin *CppToolsPlugin::m_instance = 0; -CppToolsPlugin::CppToolsPlugin() : - m_core(0), - m_context(-1), - m_modelManager(0) +CppToolsPlugin::CppToolsPlugin() + : m_context(-1), m_modelManager(0) { m_instance = this; } @@ -79,21 +77,23 @@ CppToolsPlugin::~CppToolsPlugin() m_modelManager = 0; // deleted automatically } -bool CppToolsPlugin::initialize(const QStringList & /*arguments*/, QString *) +bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - Core::ActionManager *am = m_core->actionManager(); + Q_UNUSED(arguments); + Q_UNUSED(error); + Core::ICore *core = Core::ICore::instance(); + Core::ActionManager *am = core->actionManager(); // Objects m_modelManager = new CppModelManager(this); addAutoReleasedObject(m_modelManager); - m_completion = new CppCodeCompletion(m_modelManager, m_core); + m_completion = new CppCodeCompletion(m_modelManager, core); addAutoReleasedObject(m_completion); CppQuickOpenFilter *quickOpenFilter = new CppQuickOpenFilter(m_modelManager, - m_core->editorManager()); + core->editorManager()); addAutoReleasedObject(quickOpenFilter); - addAutoReleasedObject(new CppClassesFilter(m_modelManager, m_core->editorManager())); - addAutoReleasedObject(new CppFunctionsFilter(m_modelManager, m_core->editorManager())); + addAutoReleasedObject(new CppClassesFilter(m_modelManager, core->editorManager())); + addAutoReleasedObject(new CppFunctionsFilter(m_modelManager, core->editorManager())); addAutoReleasedObject(new CompletionSettingsPage(m_completion)); // Menus @@ -105,7 +105,7 @@ bool CppToolsPlugin::initialize(const QStringList & /*arguments*/, QString *) mtools->addMenu(mcpptools); // Actions - m_context = m_core->uniqueIDManager()->uniqueIdentifier(CppEditor::Constants::C_CPPEDITOR); + m_context = core->uniqueIDManager()->uniqueIdentifier(CppEditor::Constants::C_CPPEDITOR); QList context = QList() << m_context; QAction *switchAction = new QAction(tr("Switch Header/Source"), this); @@ -115,7 +115,7 @@ bool CppToolsPlugin::initialize(const QStringList & /*arguments*/, QString *) connect(switchAction, SIGNAL(triggered()), this, SLOT(switchHeaderSource())); // Restore settings - QSettings *settings = m_core->settings(); + QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup(QLatin1String("CppTools")); settings->beginGroup(QLatin1String("Completion")); const bool caseSensitive = settings->value(QLatin1String("CaseSensitive"), true).toBool(); @@ -135,7 +135,7 @@ void CppToolsPlugin::extensionsInitialized() void CppToolsPlugin::shutdown() { // Save settings - QSettings *settings = m_core->settings(); + QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup(QLatin1String("CppTools")); settings->beginGroup(QLatin1String("Completion")); settings->setValue(QLatin1String("CaseSensitive"), m_completion->caseSensitivity() == Qt::CaseSensitive); @@ -147,14 +147,12 @@ void CppToolsPlugin::shutdown() void CppToolsPlugin::switchHeaderSource() { - if (!m_core) - return; - - Core::IEditor *editor = m_core->editorManager()->currentEditor(); + Core::EditorManager *editorManager = Core::ICore::instance()->editorManager(); + Core::IEditor *editor = editorManager->currentEditor(); QString otherFile = correspondingHeaderOrSource(editor->file()->fileName()); if (!otherFile.isEmpty()) { - m_core->editorManager()->openEditor(otherFile); - m_core->editorManager()->ensureEditorManagerVisible(); + editorManager->openEditor(otherFile); + editorManager->ensureEditorManagerVisible(); } } @@ -222,7 +220,7 @@ static QStringList matchingCandidateSuffixes(const Core::MimeDatabase *mimeDatas QString CppToolsPlugin::correspondingHeaderOrSourceI(const QString &fileName) const { - const Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + const Core::ICore *core = Core::ICore::instance(); const Core::MimeDatabase *mimeDatase = core->mimeDatabase(); ProjectExplorer::ProjectExplorerPlugin *explorer = ExtensionSystem::PluginManager::instance()->getObject(); diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h index 092de535b3e..281fe1f708d 100644 --- a/src/plugins/cpptools/cpptoolsplugin.h +++ b/src/plugins/cpptools/cpptoolsplugin.h @@ -42,10 +42,6 @@ class QFileInfo; class QDir; QT_END_NAMESPACE -namespace Core { -class ICore; -} - namespace CppTools { namespace Internal { @@ -75,7 +71,6 @@ private: QString correspondingHeaderOrSourceI(const QString &fileName) const; QFileInfo findFile(const QDir &dir, const QString &name, const ProjectExplorer::Project *project) const; - Core::ICore *m_core; int m_context; CppModelManager *m_modelManager; CppCodeCompletion *m_completion; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 8fa465d543f..7fd564a3a05 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -55,12 +55,12 @@ #include #include -#include - #include #include +#include + #include #include @@ -346,7 +346,7 @@ DebuggerPlugin::~DebuggerPlugin() static QSettings *settings() { - return ExtensionSystem::PluginManager::instance()->getObject()->settings(); + return ICore::instance()->settings(); } void DebuggerPlugin::shutdown() @@ -387,7 +387,7 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes m_pm = ExtensionSystem::PluginManager::instance(); - ICore *core = m_pm->getObject(); + ICore *core = ICore::instance(); QTC_ASSERT(core, return false); Core::ActionManager *am = core->actionManager(); @@ -713,8 +713,7 @@ ProjectExplorer::ProjectExplorerPlugin *DebuggerPlugin::projectExplorer() const /*! Activates the previous mode when the current mode is the debug mode. */ void DebuggerPlugin::activatePreviousMode() { - ICore *core = m_pm->getObject(); - Core::ModeManager *const modeManager = core->modeManager(); + Core::ModeManager *const modeManager = ICore::instance()->modeManager(); if (modeManager->currentMode() == modeManager->mode(Constants::MODE_DEBUG) && !m_previousMode.isEmpty()) { @@ -725,7 +724,7 @@ void DebuggerPlugin::activatePreviousMode() void DebuggerPlugin::activateDebugMode() { - ICore *core = m_pm->getObject(); + ICore *core = ICore::instance(); Core::ModeManager *modeManager = core->modeManager(); m_previousMode = QLatin1String(modeManager->currentMode()->uniqueModeName()); modeManager->activateMode(QLatin1String(MODE_DEBUG)); @@ -733,7 +732,7 @@ void DebuggerPlugin::activateDebugMode() void DebuggerPlugin::queryCurrentTextEditor(QString *fileName, int *lineNumber, QObject **object) { - ICore *core = m_pm->getObject(); + ICore *core = ICore::instance(); if (!core || !core->editorManager()) return; Core::IEditor *editor = core->editorManager()->currentEditor(); @@ -872,7 +871,7 @@ void DebuggerPlugin::gotoLocation(const QString &fileName, int lineNumber, void DebuggerPlugin::changeStatus(int status) { bool startIsContinue = (status == DebuggerInferiorStopped); - ICore *core = m_pm->getObject(); + ICore *core = ICore::instance(); if (startIsContinue) { core->addAdditionalContext(m_gdbRunningContext); core->updateContext(); @@ -916,8 +915,7 @@ void DebuggerPlugin::readSettings() #if defined(Q_OS_WIN32) defaultCommand.append(".exe"); #endif - Core::ICore *coreIFace = m_pm->getObject(); - QString defaultScript = coreIFace->resourcePath() + + QString defaultScript = ICore::instance()->resourcePath() + QLatin1String("/gdb/qt4macros"); s->beginGroup(QLatin1String("DebugMode")); diff --git a/src/plugins/debugger/gdbtypemacros.cpp b/src/plugins/debugger/gdbtypemacros.cpp index d392a836f0e..c586e6c3027 100644 --- a/src/plugins/debugger/gdbtypemacros.cpp +++ b/src/plugins/debugger/gdbtypemacros.cpp @@ -35,7 +35,6 @@ #include "gdbengine.h" #include "imports.h" -#include #include #include @@ -49,9 +48,7 @@ TypeMacroPage::TypeMacroPage(GdbSettings *settings) m_pm = ExtensionSystem::PluginManager::instance(); m_settings = settings; - Core::ICore *coreIFace = m_pm->getObject(); - if (!coreIFace || !coreIFace->settings()) - return; + Core::ICore *coreIFace = ICore::instance(); QSettings *s = coreIFace->settings(); s->beginGroup("GdbOptions"); @@ -164,14 +161,11 @@ void TypeMacroPage::finished(bool accepted) m_settings->m_typeMacros.insert(item->text(0), data); } - Core::ICore *coreIFace = m_pm->getObject(); - if (coreIFace && coreIFace->settings()) { - QSettings *s = coreIFace->settings(); - s->beginGroup("GdbOptions"); - s->setValue("ScriptFile", m_settings->m_scriptFile); - s->setValue("TypeMacros", m_settings->m_typeMacros); - s->endGroup(); - } + QSettings *s = ICore::instance()->settings(); + s->beginGroup("GdbOptions"); + s->setValue("ScriptFile", m_settings->m_scriptFile); + s->setValue("TypeMacros", m_settings->m_typeMacros); + s->endGroup(); } void TypeMacroPage::onAddButton() diff --git a/src/plugins/designer/cpp/formclasswizardpage.cpp b/src/plugins/designer/cpp/formclasswizardpage.cpp index 6c7c72c05cf..38982075027 100644 --- a/src/plugins/designer/cpp/formclasswizardpage.cpp +++ b/src/plugins/designer/cpp/formclasswizardpage.cpp @@ -37,7 +37,6 @@ #include #include -#include #include #include @@ -176,7 +175,7 @@ bool FormClassWizardPage::validatePage() void FormClassWizardPage::saveSettings() { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); if (QSettings *settings = core->settings()) { settings->beginGroup(QLatin1String(formClassWizardPageGroupC)); settings->setValue(QLatin1String(translationKeyC), hasRetranslationSupport()); @@ -190,7 +189,7 @@ void FormClassWizardPage::restoreSettings() bool retranslationSupport = true; int embedding = PointerAggregatedUiClass; - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); if (QSettings *settings = core->settings()) { QString key = QLatin1String(formClassWizardPageGroupC); diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index 051f3e567d6..6215fedff04 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -50,7 +50,6 @@ #include #include #include -#include #include #include @@ -90,13 +89,16 @@ FormEditorPlugin::~FormEditorPlugin() // INHERITED FROM ExtensionSystem::Plugin // //////////////////////////////////////////////////// -bool FormEditorPlugin::initialize(const QStringList & /*arguments*/, QString *error_message/* = 0*/) // =0; +bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/formeditor/Designer.mimetypes.xml"), error_message)) + Q_UNUSED(arguments); + Q_UNUSED(error); + + Core::ICore *core = Core::ICore::instance(); + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/formeditor/Designer.mimetypes.xml"), error)) return false; - if (!initializeTemplates(error_message)) + if (!initializeTemplates(error)) return false; const int uid = core->uniqueIDManager()->uniqueIdentifier(QLatin1String(C_FORMEDITOR)); @@ -108,7 +110,7 @@ bool FormEditorPlugin::initialize(const QStringList & /*arguments*/, QString *er // Make sure settings pages and action shortcuts are registered FormEditorW::ensureInitStage(FormEditorW::RegisterPlugins); - error_message->clear(); + error->clear(); return true; } @@ -122,10 +124,10 @@ void FormEditorPlugin::extensionsInitialized() // //////////////////////////////////////////////////// -bool FormEditorPlugin::initializeTemplates(QString * /* error_message */) +bool FormEditorPlugin::initializeTemplates(QString *error) { - - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Q_UNUSED(error); + Core::ICore *core = Core::ICore::instance(); FormWizard::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); wizardParameters.setCategory(QLatin1String("Qt")); wizardParameters.setTrCategory(tr("Qt")); diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index dc5cddb5e60..05a4001effb 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -163,7 +163,7 @@ FormEditorW::FormEditorW() : m_formeditor(QDesignerComponents::createFormEditor(0)), m_integration(0), m_fwm(0), - m_core(ExtensionSystem::PluginManager::instance()->getObject()), + m_core(Core::ICore::instance()), m_initStage(RegisterPlugins), m_actionGroupEditMode(0), m_actionPrint(0), diff --git a/src/plugins/designer/workbenchintegration.cpp b/src/plugins/designer/workbenchintegration.cpp index 3db3512a716..9e25f80432a 100644 --- a/src/plugins/designer/workbenchintegration.cpp +++ b/src/plugins/designer/workbenchintegration.cpp @@ -79,8 +79,8 @@ static QString msgClassNotFound(const QString &uiClassName, const QListgetObject(); - return core->pluginManager()->getObject(); + return ExtensionSystem::PluginManager::instance() + ->getObject(); } WorkbenchIntegration::WorkbenchIntegration(QDesignerFormEditorInterface *core, FormEditorW *parent) : diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 4083af7d50b..6d2431de188 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -45,7 +45,6 @@ #include #include #include -#include #include #include @@ -159,7 +158,7 @@ bool FakeVimPluginPrivate::initialize(const QStringList &arguments, QString *err m_handler = new FakeVimHandler; - m_core = ExtensionSystem::PluginManager::instance()->getObject(); + m_core = Core::ICore::instance(); QTC_ASSERT(m_core, return false); Core::ActionManager *actionManager = m_core->actionManager(); diff --git a/src/plugins/find/findplugin.cpp b/src/plugins/find/findplugin.cpp index 1494d89a4b3..fb6c9c53b71 100644 --- a/src/plugins/find/findplugin.cpp +++ b/src/plugins/find/findplugin.cpp @@ -60,8 +60,7 @@ using namespace Find; using namespace Find::Internal; FindPlugin::FindPlugin() - : m_core(0), - m_currentDocumentFind(0), + : m_currentDocumentFind(0), m_findToolBar(0), m_findDialog(0), m_findCompletionModel(new QStringListModel(this)), @@ -78,14 +77,14 @@ FindPlugin::~FindPlugin() bool FindPlugin::initialize(const QStringList &, QString *) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); setupMenu(); - m_currentDocumentFind = new CurrentDocumentFind(m_core); + m_currentDocumentFind = new CurrentDocumentFind(core); m_findToolBar = new FindToolBar(this, m_currentDocumentFind); m_findDialog = new FindToolWindow(this); - SearchResultWindow *searchResultWindow = new SearchResultWindow(m_core); + SearchResultWindow *searchResultWindow = new SearchResultWindow(core); addAutoReleasedObject(searchResultWindow); return true; } @@ -125,10 +124,10 @@ void FindPlugin::openFindFilter() m_findDialog->open(filter); } - void FindPlugin::setupMenu() { - Core::ActionManager *am = m_core->actionManager(); + Core::ICore *core = Core::ICore::instance(); + Core::ActionManager *am = core->actionManager(); Core::ActionContainer *medit = am->actionContainer(Core::Constants::M_EDIT); Core::ActionContainer *mfind = am->createMenu(Constants::M_FIND); medit->addMenu(mfind, Core::Constants::G_EDIT_FIND); @@ -151,7 +150,8 @@ void FindPlugin::setupMenu() void FindPlugin::setupFilterMenuItems() { - Core::ActionManager *am = m_core->actionManager(); + Core::ICore *core = Core::ICore::instance(); + Core::ActionManager *am = core->actionManager(); QList findInterfaces = ExtensionSystem::PluginManager::instance()->getObjects(); Core::Command *cmd; @@ -173,11 +173,6 @@ void FindPlugin::setupFilterMenuItems() m_findDialog->setFindFilters(findInterfaces); } -Core::ICore *FindPlugin::core() -{ - return m_core; -} - QTextDocument::FindFlags FindPlugin::findFlags() const { return m_findFlags; @@ -218,7 +213,7 @@ bool FindPlugin::hasFindFlag(QTextDocument::FindFlag flag) void FindPlugin::writeSettings() { - QSettings *settings = ExtensionSystem::PluginManager::instance()->getObject()->settings(); + QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup("Find"); settings->setValue("Backward", QVariant((m_findFlags & QTextDocument::FindBackward) != 0)); settings->setValue("CaseSensitively", QVariant((m_findFlags & QTextDocument::FindCaseSensitively) != 0)); @@ -231,7 +226,7 @@ void FindPlugin::writeSettings() void FindPlugin::readSettings() { - QSettings *settings = ExtensionSystem::PluginManager::instance()->getObject()->settings(); + QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup("Find"); bool block = blockSignals(true); setBackward(settings->value("Backward", false).toBool()); diff --git a/src/plugins/find/findplugin.h b/src/plugins/find/findplugin.h index caad6daa0cc..9b2ac1f4aa6 100644 --- a/src/plugins/find/findplugin.h +++ b/src/plugins/find/findplugin.h @@ -64,7 +64,6 @@ public: void extensionsInitialized(); void shutdown(); - Core::ICore *core(); QTextDocument::FindFlags findFlags() const; void updateFindCompletion(const QString &text); void updateReplaceCompletion(const QString &text); @@ -93,7 +92,6 @@ private: void readSettings(); //variables - Core::ICore *m_core; QHash m_filterActions; CurrentDocumentFind *m_currentDocumentFind; diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp index 88d5fed220d..5af25e496d4 100644 --- a/src/plugins/find/findtoolbar.cpp +++ b/src/plugins/find/findtoolbar.cpp @@ -141,7 +141,7 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen QList globalcontext; globalcontext << Core::Constants::C_GLOBAL_ID; - Core::ActionManager *am = ExtensionSystem::PluginManager::instance()->getObject()->actionManager(); + Core::ActionManager *am = Core::ICore::instance()->actionManager(); Core::ActionContainer *mfind = am->actionContainer(Constants::M_FIND); Core::Command *cmd; diff --git a/src/plugins/find/findtoolwindow.cpp b/src/plugins/find/findtoolwindow.cpp index f45c99b2aa3..f9f23d0668f 100644 --- a/src/plugins/find/findtoolwindow.cpp +++ b/src/plugins/find/findtoolwindow.cpp @@ -42,7 +42,7 @@ using namespace Find; using namespace Find::Internal; FindToolWindow::FindToolWindow(FindPlugin *plugin) - : QDialog(plugin->core()->mainWindow()), + : QDialog(Core::ICore::instance()->mainWindow()), m_plugin(plugin), m_findCompleter(new QCompleter(this)) { @@ -124,7 +124,7 @@ void FindToolWindow::search() void FindToolWindow::writeSettings() { - QSettings *settings = m_plugin->core()->settings(); + QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup("Find"); foreach (IFindFilter *filter, m_filters) filter->writeSettings(settings); @@ -133,7 +133,7 @@ void FindToolWindow::writeSettings() void FindToolWindow::readSettings() { - QSettings *settings = m_plugin->core()->settings(); + QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup("Find"); foreach (IFindFilter *filter, m_filters) filter->readSettings(settings); diff --git a/src/plugins/git/gitcommand.cpp b/src/plugins/git/gitcommand.cpp index ce81be961d6..fa62401b011 100644 --- a/src/plugins/git/gitcommand.cpp +++ b/src/plugins/git/gitcommand.cpp @@ -84,8 +84,7 @@ void GitCommand::execute() QFuture task = QtConcurrent::run(this, &GitCommand::run); const QString taskName = QLatin1String("Git ") + m_jobs.front().arguments.at(0); - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - core->progressManager()->addTask(task, taskName, + Core::ICore::instance()->progressManager()->addTask(task, taskName, QLatin1String("Git.action"), Core::ProgressManager::CloseOnSuccess); } diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 263474312e0..a49ba12b42e 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -232,7 +232,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *error_message) Q_UNUSED(arguments); Q_UNUSED(error_message); - m_core = ExtensionSystem::PluginManager::instance()->getObject(); + m_core = Core::ICore::instance(); m_gitClient = new GitClient(this, m_core); // Create the globalcontext list to register actions accordingly QList globalcontext; diff --git a/src/plugins/helloworld/helloworldplugin.cpp b/src/plugins/helloworld/helloworldplugin.cpp index 6dd0bc9c63f..522984a9814 100644 --- a/src/plugins/helloworld/helloworldplugin.cpp +++ b/src/plugins/helloworld/helloworldplugin.cpp @@ -39,7 +39,6 @@ #include #include #include -#include #include #include @@ -78,7 +77,7 @@ bool HelloWorldPlugin::initialize(const QStringList &arguments, QString *error_m Q_UNUSED(error_message) // Get the primary access point to the workbench. - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); // Create a unique context id for our own view, that will be used for the // menu entry later. diff --git a/src/plugins/helloworld/helloworldplugin.h b/src/plugins/helloworld/helloworldplugin.h index 8aa2a9aa127..36c60165a32 100644 --- a/src/plugins/helloworld/helloworldplugin.h +++ b/src/plugins/helloworld/helloworldplugin.h @@ -36,8 +36,6 @@ #include -#include - namespace HelloWorld { namespace Internal { diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 74900b6acee..a22cc1f5105 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -123,9 +123,11 @@ HelpPlugin::~HelpPlugin() { } -bool HelpPlugin::initialize(const QStringList & /*arguments*/, QString *) +bool HelpPlugin::initialize(const QStringList &arguments, QString *error) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); + Q_UNUSED(arguments); + Q_UNUSED(error); + m_core = Core::ICore::instance(); QList globalcontext; globalcontext << Core::Constants::C_GLOBAL_ID; QList modecontext; diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index 73008ca8225..75a868232e2 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -145,7 +145,6 @@ bool CoreListener::editorAboutToClose(Core::IEditor *editor) // PerforcePlugin //// -Core::ICore *PerforcePlugin::m_coreInstance = NULL; PerforcePlugin *PerforcePlugin::m_perforcePluginInstance = NULL; PerforcePlugin::PerforcePlugin() : @@ -183,17 +182,20 @@ static const VCSBase::VCSBaseSubmitEditorParameters submitParameters = { Perforce::Constants::C_PERFORCESUBMITEDITOR }; -bool PerforcePlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) +bool PerforcePlugin::initialize(const QStringList &arguments, QString *errorMessage) { + Q_UNUSED(arguments); + Q_UNUSED(errorMessage); + typedef VCSBase::VCSEditorFactory PerforceEditorFactory; typedef VCSBase::VCSSubmitEditorFactory PerforceSubmitEditorFactory; - m_coreInstance = ExtensionSystem::PluginManager::instance()->getObject(); - if (!m_coreInstance->mimeDatabase()->addMimeTypes(QLatin1String(":/trolltech.perforce/Perforce.mimetypes.xml"), errorMessage)) + Core::ICore *core = Core::ICore::instance(); + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/trolltech.perforce/Perforce.mimetypes.xml"), errorMessage)) return false; m_perforcePluginInstance = this; - if (QSettings *settings = m_coreInstance->settings()) + if (QSettings *settings = core->settings()) m_settings.fromSettings(settings); m_perforceOutputWindow = new PerforceOutputWindow(this); @@ -209,24 +211,19 @@ bool PerforcePlugin::initialize(const QStringList & /*arguments*/, QString *erro static const char *describeSlot = SLOT(describe(QString,QString)); const int editorCount = sizeof(editorParameters)/sizeof(VCSBase::VCSBaseEditorParameters); for (int i = 0; i < editorCount; i++) { - m_editorFactories.push_back(new PerforceEditorFactory(editorParameters + i, m_coreInstance, this, describeSlot)); + m_editorFactories.push_back(new PerforceEditorFactory(editorParameters + i, core, this, describeSlot)); addObject(m_editorFactories.back()); } m_versionControl = new PerforceVersionControl(this); addObject(m_versionControl); -#ifdef USE_P4_API - m_workbenchClientUser = new WorkbenchClientUser(m_perforceOutputWindow, this); - m_enableP4APIActions = true; -#endif - m_coreListener = new CoreListener(this); addObject(m_coreListener); //register actions - Core::ActionManager *am = m_coreInstance->actionManager(); + Core::ActionManager *am = Core::ICore::instance()->actionManager(); Core::ActionContainer *mtools = am->actionContainer(Core::Constants::M_TOOLS); @@ -245,7 +242,7 @@ bool PerforcePlugin::initialize(const QStringList & /*arguments*/, QString *erro QList perforcesubmitcontext; perforcesubmitcontext << - m_coreInstance->uniqueIDManager()->uniqueIdentifier(Constants::C_PERFORCESUBMITEDITOR); + Core::ICore::instance()->uniqueIDManager()->uniqueIdentifier(Constants::C_PERFORCESUBMITEDITOR); Core::Command *command; QAction *tmpaction; @@ -383,10 +380,10 @@ bool PerforcePlugin::initialize(const QStringList & /*arguments*/, QString *erro m_redoAction = new QAction(tr("&Redo"), this); command = am->registerAction(m_redoAction, Core::Constants::REDO, perforcesubmitcontext); - connect(m_coreInstance, SIGNAL(contextChanged(Core::IContext *)), + connect(core, SIGNAL(contextChanged(Core::IContext *)), this, SLOT(updateActions())); - connect(m_coreInstance->fileManager(), SIGNAL(currentFileChanged(const QString &)), + connect(core->fileManager(), SIGNAL(currentFileChanged(const QString &)), this, SLOT(updateActions())); return true; @@ -420,10 +417,8 @@ void PerforcePlugin::deleteCurrentFile() void PerforcePlugin::revertCurrentFile() { - QTC_ASSERT(m_coreInstance, return); - const QString fileName = currentFileName(); - QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, fileName); + QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(fileName); QStringList args; args << QLatin1String("diff") << QLatin1String("-sa"); PerforceResponse result = runP4Cmd(args, QStringList(), CommandToWindow|StdErrToWindow|ErrorToWindow, codec); @@ -439,7 +434,7 @@ void PerforcePlugin::revertCurrentFile() return; } - Core::FileManager *fm = m_coreInstance->fileManager(); + Core::FileManager *fm = Core::ICore::instance()->fileManager(); QList files = fm->managedFiles(fileName); foreach (Core::IFile *file, files) { fm->blockFileChange(file); @@ -472,7 +467,7 @@ void PerforcePlugin::diffAllOpened() void PerforcePlugin::printOpenedFileList() { - Core::IEditor *e = m_coreInstance->editorManager()->currentEditor(); + Core::IEditor *e = Core::ICore::instance()->editorManager()->currentEditor(); if (e) e->widget()->setFocus(); PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("opened"), QStringList(), CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow); @@ -488,8 +483,6 @@ void PerforcePlugin::resolve() void PerforcePlugin::submit() { - QTC_ASSERT(m_coreInstance, return); - if (!checkP4Command()) { showOutput(tr("No p4 executable specified!"), true); return; @@ -550,8 +543,8 @@ void PerforcePlugin::submit() Core::IEditor *PerforcePlugin::openPerforceSubmitEditor(const QString &fileName, const QStringList &depotFileNames) { Core::IEditor *editor = - m_coreInstance->editorManager()->openEditor(fileName, Constants::PERFORCESUBMITEDITOR_KIND); - m_coreInstance->editorManager()->ensureEditorManagerVisible(); + Core::ICore::instance()->editorManager()->openEditor(fileName, Constants::PERFORCESUBMITEDITOR_KIND); + Core::ICore::instance()->editorManager()->ensureEditorManagerVisible(); PerforceSubmitEditor *submitEditor = dynamic_cast(editor); QTC_ASSERT(submitEditor, return 0); submitEditor->restrictToProjectFiles(depotFileNames); @@ -563,7 +556,7 @@ Core::IEditor *PerforcePlugin::openPerforceSubmitEditor(const QString &fileName, void PerforcePlugin::printPendingChanges() { qApp->setOverrideCursor(Qt::WaitCursor); - PendingChangesDialog dia(pendingChangesData(), m_coreInstance->mainWindow()); + PendingChangesDialog dia(pendingChangesData(), Core::ICore::instance()->mainWindow()); qApp->restoreOverrideCursor(); if (dia.exec() == QDialog::Accepted) { const int i = dia.changeNumber(); @@ -596,7 +589,7 @@ void PerforcePlugin::annotate() void PerforcePlugin::annotate(const QString &fileName) { - QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, fileName); + QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(fileName); QStringList args; args << QLatin1String("annotate") << QLatin1String("-cqi") << fileName; const PerforceResponse result = runP4Cmd(args, QStringList(), @@ -623,7 +616,7 @@ void PerforcePlugin::filelog() void PerforcePlugin::filelog(const QString &fileName) { - QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, fileName); + QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(fileName); QStringList args; args << QLatin1String("filelog") << QLatin1String("-li") << fileName; const PerforceResponse result = runP4Cmd(args, QStringList(), @@ -752,7 +745,6 @@ PerforceResponse PerforcePlugin::runP4Cmd(const QStringList &args, qDebug() << "PerforcePlugin::runP4Cmd" << args << extraArgs << debugCodec(outputCodec); PerforceResponse response; response.error = true; - QTC_ASSERT(m_coreInstance, return response); if (!checkP4Command()) { response.message = tr("No p4 executable specified!"); m_perforceOutputWindow->append(response.message, true); @@ -847,7 +839,7 @@ Core::IEditor * PerforcePlugin::showOutputInEditor(const QString& title, const Q if (Perforce::Constants::debug) qDebug() << "PerforcePlugin::showOutputInEditor" << title << kind << "Size= " << output.size() << " Type=" << editorType << debugCodec(codec); QString s = title; - Core::IEditor *ediface = m_coreInstance->editorManager()-> + Core::IEditor *ediface = Core::ICore::instance()->editorManager()-> newFile(kind, &s, output.toLocal8Bit()); PerforceEditor *e = qobject_cast(ediface->widget()); if (!e) @@ -882,7 +874,7 @@ void PerforcePlugin::p4Diff(const QStringList &files, QString diffname) Core::IEditor *editor = 0; bool displayInEditor = true; Core::IEditor *existingEditor = 0; - QTextCodec *codec = files.empty() ? static_cast(0) : VCSBase::VCSBaseEditor::getCodec(m_coreInstance, files.front()); + QTextCodec *codec = files.empty() ? static_cast(0) : VCSBase::VCSBaseEditor::getCodec(files.front()); if (Perforce::Constants::debug) qDebug() << Q_FUNC_INFO << files << debugCodec(codec); @@ -895,7 +887,7 @@ void PerforcePlugin::p4Diff(const QStringList &files, QString diffname) diffname = fi.fileName(); } - foreach (Core::IEditor *ed, m_coreInstance->editorManager()->openedEditors()) { + foreach (Core::IEditor *ed, Core::ICore::instance()->editorManager()->openedEditors()) { if (ed->property("originalFileName").toString() == fileName) { existingEditor = ed; displayInEditor = false; @@ -918,7 +910,7 @@ void PerforcePlugin::p4Diff(const QStringList &files, QString diffname) } else if (!displayInEditor && existingEditor) { if (existingEditor) { existingEditor->createNew(result.stdOut); - m_coreInstance->editorManager()->setCurrentEditor(existingEditor); + Core::ICore::instance()->editorManager()->setCurrentEditor(existingEditor); } } } @@ -926,7 +918,7 @@ void PerforcePlugin::p4Diff(const QStringList &files, QString diffname) void PerforcePlugin::describe(const QString & source, const QString &n) { - QTextCodec *codec = source.isEmpty() ? static_cast(0) : VCSBase::VCSBaseEditor::getCodec(m_coreInstance, source); + QTextCodec *codec = source.isEmpty() ? static_cast(0) : VCSBase::VCSBaseEditor::getCodec(source); QStringList args; args << QLatin1String("describe") << QLatin1String("-du") << n; const PerforceResponse result = runP4Cmd(args, QStringList(), CommandToWindow|StdErrToWindow|ErrorToWindow, codec); @@ -936,29 +928,32 @@ void PerforcePlugin::describe(const QString & source, const QString &n) void PerforcePlugin::submitCurrentLog() { - m_coreInstance->editorManager()->closeEditors(QList() - << m_coreInstance->editorManager()->currentEditor()); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); + em->closeEditors(QList() << em->currentEditor()); } bool PerforcePlugin::editorAboutToClose(Core::IEditor *editor) { if (!m_changeTmpFile || !editor) return true; + Core::ICore *core = Core::ICore::instance(); Core::IFile *fileIFace = editor->file(); if (!fileIFace) return true; QFileInfo editorFile(fileIFace->fileName()); QFileInfo changeFile(m_changeTmpFile->fileName()); if (editorFile.absoluteFilePath() == changeFile.absoluteFilePath()) { - const QMessageBox::StandardButton answer = QMessageBox::question(m_coreInstance->mainWindow(), tr("Closing p4 Editor"), tr("Do you want to submit this change list?"), - QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel, QMessageBox::Yes); - if (answer == QMessageBox::Cancel) { + const QMessageBox::StandardButton answer = + QMessageBox::question(core->mainWindow(), + tr("Closing p4 Editor"), + tr("Do you want to submit this change list?"), + QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel, QMessageBox::Yes); + if (answer == QMessageBox::Cancel) return false; - } - m_coreInstance->fileManager()->blockFileChange(fileIFace); + core->fileManager()->blockFileChange(fileIFace); fileIFace->save(); - m_coreInstance->fileManager()->unblockFileChange(fileIFace); + core->fileManager()->unblockFileChange(fileIFace); if (answer == QMessageBox::Yes) { QByteArray change = m_changeTmpFile->readAll(); m_changeTmpFile->close(); @@ -1007,15 +1002,14 @@ bool PerforcePlugin::editorAboutToClose(Core::IEditor *editor) void PerforcePlugin::openFiles(const QStringList &files) { - foreach (QString s, files) { - m_coreInstance->editorManager()->openEditor(clientFilePath(s)); - } - m_coreInstance->editorManager()->ensureEditorManagerVisible(); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); + foreach (QString s, files) + em->openEditor(clientFilePath(s)); + em->ensureEditorManagerVisible(); } QString PerforcePlugin::clientFilePath(const QString &serverFilePath) { - QTC_ASSERT(m_coreInstance, return QString()); if (!checkP4Command()) return QString(); @@ -1041,7 +1035,7 @@ QString PerforcePlugin::clientFilePath(const QString &serverFilePath) QString PerforcePlugin::currentFileName() { - QString fileName = m_coreInstance->fileManager()->currentFile(); + QString fileName = Core::ICore::instance()->fileManager()->currentFile(); // TODO: Use FileManager::fixPath const QFileInfo fileInfo(fileName); @@ -1069,67 +1063,9 @@ bool PerforcePlugin::checkP4Command() const return true; } -#ifdef USE_P4_API -void PerforcePlugin::runP4APICmd(const QString &cmd, const QStringList &args) -{ - m_enableP4APIActions = false; - updateActions(); - - ClientApi client; - if (!m_settings.defaultEnv) { - client.SetClient(m_settings.p4Client.toLatin1().constData()); - client.SetPort(m_settings.p4Port.toLatin1().constData()); - client.SetUser(m_settings.p4User.toLatin1().constData()); - } - - Error err; - m_coreInstance->messageManager()->displayStatusBarMessage(tr("Connecting to p4 server...")); - client.SetProtocol("api", "56"); - client.Init(&err); - if (err.Test()) { - StrBuf msg; - err.Fmt(&msg); - QMessageBox::critical(m_coreInstance->mainWindow(), tr("Perforce Plugin"), tr("Failed to connect to p4 server %1!").arg(msg.Text())); - client.Final(&err); - m_coreInstance->messageManager()->displayStatusBarMessage(tr("Connection to p4 server failed!"), 3000); - return; - } - m_coreInstance->messageManager()->displayStatusBarMessage(tr("Connection to p4 server established."), 3000); - - // ???? - //client.SetCwd("c:\\depot\\research\\qworkbench\\src"); - - int argc = args.count(); - char **argv = (char**)malloc(argc*sizeof(char*)); - int i = 0; - foreach (QString s, args) - argv[i++] = qstrdup(s.toLatin1().constData()); - - client.SetArgv( argc, argv ); - try { - client.Run(cmd.toLatin1().constData(), m_workbenchClientUser); - } catch (...) { - QMessageBox::critical(m_coreInstance->mainWindow(), tr("Perforce Plugin"), tr("Failed to run command %1!").arg(cmd)); - } - client.Final(&err); - i = 0; - while (ieditorManager()->currentEditor(); - if (edt && edt->widget()) - edt->widget()->setFocus(); -} -#endif - QString PerforcePlugin::pendingChangesData() { QString data; - Q_ASSERT(m_coreInstance); if (!checkP4Command()) return data; @@ -1169,22 +1105,18 @@ PerforcePlugin::~PerforcePlugin() m_settingsPage = 0; } -#ifdef USE_P4_API - if (m_workbenchClientUser) { - delete m_workbenchClientUser; - m_workbenchClientUser = 0; - } -#endif if (m_perforceOutputWindow) { removeObject(m_perforceOutputWindow); delete m_perforceOutputWindow; m_perforceOutputWindow = 0; } + if (m_submitEditorFactory) { removeObject(m_submitEditorFactory); delete m_submitEditorFactory; m_submitEditorFactory = 0; } + if (m_versionControl) { removeObject(m_versionControl); delete m_versionControl; @@ -1214,7 +1146,7 @@ void PerforcePlugin::setSettings(const PerforceSettings &s) { if (s != m_settings) { m_settings = s; - if (QSettings *settings = m_coreInstance->settings()) + if (QSettings *settings = Core::ICore::instance()->settings()) m_settings.toSettings(settings); } } @@ -1252,12 +1184,6 @@ QString PerforcePlugin::fileNameFromPerforceName(const QString& perforceName, return rc; } -Core::ICore *PerforcePlugin::coreInstance() -{ - QTC_ASSERT(m_coreInstance, return 0); - return m_coreInstance; -} - PerforcePlugin *PerforcePlugin::perforcePluginInstance() { QTC_ASSERT(m_perforcePluginInstance, return 0); diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index 8069154a25c..e5985a28ab5 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -42,12 +42,6 @@ #include #include -#ifdef USE_P4_API -#include "workbenchclientuser.h" -#else - -#endif - #include #include #include @@ -117,7 +111,6 @@ public: Core::IEditor *openPerforceSubmitEditor(const QString &fileName, const QStringList &depotFileNames); - static Core::ICore *coreInstance(); static PerforcePlugin *perforcePluginInstance(); PerforceSettings settings() const; @@ -230,7 +223,6 @@ private: static const char * const SEPARATOR2; static const char * const SEPARATOR3; - static Core::ICore *m_coreInstance; static PerforcePlugin *m_perforcePluginInstance; QString pendingChangesData(); diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index ff426805c2e..a7e7286a30f 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -178,8 +178,7 @@ void BuildManager::startBuildQueue() { if (!m_running) { // Progress Reporting - Core::ProgressManager *progressManager = - ExtensionSystem::PluginManager::instance()->getObject()->progressManager(); + Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager(); m_progressFutureInterface = new QFutureInterface; m_progressWatcher.setFuture(m_progressFutureInterface->future()); Core::FutureProgress *progress = progressManager->addTask(m_progressFutureInterface->future(), diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index c11d2c958ee..f4f5efc52be 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -147,10 +147,12 @@ ProjectExplorerPlugin *ProjectExplorerPlugin::instance() return m_instance; } -bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QString *) +bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *error) { - ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); - m_core = pm->getObject(); + Q_UNUSED(arguments); + Q_UNUSED(error); + + m_core = Core::ICore::instance(); Core::ActionManager *am = m_core->actionManager(); addObject(this); diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index 50f946966a1..03243abb5ca 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -251,7 +251,7 @@ void TaskModel::setFileNotFound(const QModelIndex &idx, bool b) TaskWindow::TaskWindow() { - m_coreIFace = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); m_model = new TaskModel; m_listview = new TaskView; @@ -266,10 +266,10 @@ TaskWindow::TaskWindow() m_listview->setContextMenuPolicy(Qt::ActionsContextMenu); m_taskWindowContext = new TaskWindowContext(m_listview); - m_coreIFace->addContextObject(m_taskWindowContext); + core->addContextObject(m_taskWindowContext); m_copyAction = new QAction(QIcon(Core::Constants::ICON_COPY), tr("&Copy"), this); - m_coreIFace->actionManager()-> + core->actionManager()-> registerAction(m_copyAction, Core::Constants::COPY, m_taskWindowContext->context()); m_listview->addAction(m_copyAction); @@ -289,7 +289,7 @@ TaskWindow::TaskWindow() TaskWindow::~TaskWindow() { - m_coreIFace->removeContextObject(m_taskWindowContext); + Core::ICore::instance()->removeContextObject(m_taskWindowContext); delete m_listview; delete m_model; } @@ -315,7 +315,6 @@ void TaskWindow::clearContents() void TaskWindow::visibilityChanged(bool /* b */) { - } void TaskWindow::addItem(ProjectExplorer::BuildParserInterface::PatternType type, @@ -579,7 +578,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, TaskWindowContext::TaskWindowContext(QWidget *widget) : m_taskList(widget) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); m_context << core->uniqueIDManager()->uniqueIdentifier(Core::Constants::C_PROBLEM_PANE); } diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h index 71875f9e84f..269f6e3ce62 100644 --- a/src/plugins/projectexplorer/taskwindow.h +++ b/src/plugins/projectexplorer/taskwindow.h @@ -89,7 +89,6 @@ private slots: private: int sizeHintForColumn(int column) const; - Core::ICore *m_coreIFace; int m_errorCount; int m_currentTask; diff --git a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp index b299e70d3f1..ea622415a20 100644 --- a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp +++ b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp @@ -38,7 +38,7 @@ #include "qt4project.h" #include "qt4projectmanagerconstants.h" -#include +#include #include using namespace Qt4ProjectManager; @@ -66,8 +66,7 @@ void GdbMacrosBuildStep::run(QFutureInterface & fi) QVariant v = value("clean"); if (v.isNull() || v.toBool() == false) { // Normal run - QString dumperPath = ExtensionSystem::PluginManager::instance()->getObject() - ->resourcePath() + "/gdbmacros/"; + QString dumperPath = Core::ICore::instance()->resourcePath() + "/gdbmacros/"; QStringList files; files << "gdbmacros.cpp" << "gdbmacros.pro"; diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp index da1dc0ac2ed..12750868c4b 100644 --- a/src/plugins/qt4projectmanager/profileeditor.cpp +++ b/src/plugins/qt4projectmanager/profileeditor.cpp @@ -42,7 +42,6 @@ #include #include -#include #include #include #include @@ -60,9 +59,10 @@ using namespace Qt4ProjectManager::Internal; using namespace ProjectExplorer; -ProFileEditorEditable::ProFileEditorEditable(ProFileEditor *editor, Core::ICore *core) - :BaseTextEditorEditable(editor) +ProFileEditorEditable::ProFileEditorEditable(ProFileEditor *editor) + : BaseTextEditorEditable(editor) { + Core::ICore *core = Core::ICore::instance(); m_context << core->uniqueIDManager()-> uniqueIdentifier(Qt4ProjectManager::Constants::C_PROFILEEDITOR); m_context << core->uniqueIDManager()-> @@ -73,15 +73,13 @@ ProFileEditorEditable::ProFileEditorEditable(ProFileEditor *editor, Core::ICore TextEditor::BaseTextEditorEditable *ProFileEditor::createEditableInterface() { - return new ProFileEditorEditable(this, m_core); + return new ProFileEditorEditable(this); } ProFileEditor::ProFileEditor(QWidget *parent, ProFileEditorFactory *factory, TextEditor::TextEditorActionHandler *ah) : BaseTextEditor(parent), m_factory(factory), m_ah(ah) { Qt4Manager *manager = factory->qt4ProjectManager(); - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - ProFileDocument *doc = new ProFileDocument(manager); doc->setMimeType(QLatin1String(Qt4ProjectManager::Constants::PROFILE_MIMETYPE)); setBaseTextDocument(doc); diff --git a/src/plugins/qt4projectmanager/profileeditor.h b/src/plugins/qt4projectmanager/profileeditor.h index e2c6c3be5c8..256e9a95008 100644 --- a/src/plugins/qt4projectmanager/profileeditor.h +++ b/src/plugins/qt4projectmanager/profileeditor.h @@ -41,12 +41,6 @@ namespace TextEditor { class FontSettings; -class BaseEditorActionHandler; -} - -namespace Core { -class ICore; -class IFile; } namespace Qt4ProjectManager { @@ -66,7 +60,7 @@ class ProFileEditor; class ProFileEditorEditable : public TextEditor::BaseTextEditorEditable { public: - ProFileEditorEditable(ProFileEditor *, Core::ICore *core); + ProFileEditorEditable(ProFileEditor *); QList context() const; bool duplicateSupported() const { return true; } @@ -98,7 +92,6 @@ public slots: virtual void setFontSettings(const TextEditor::FontSettings &); private: - Core::ICore *m_core; ProFileEditorFactory *m_factory; TextEditor::TextEditorActionHandler *m_ah; }; diff --git a/src/plugins/qt4projectmanager/profileeditorfactory.cpp b/src/plugins/qt4projectmanager/profileeditorfactory.cpp index 11704c2fb1b..b3d32a025e4 100644 --- a/src/plugins/qt4projectmanager/profileeditorfactory.cpp +++ b/src/plugins/qt4projectmanager/profileeditorfactory.cpp @@ -40,7 +40,6 @@ #include #include #include -#include #include #include @@ -75,7 +74,7 @@ QString ProFileEditorFactory::kind() const Core::IFile *ProFileEditorFactory::open(const QString &fileName) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); Core::IEditor *iface = core->editorManager()->openEditor(fileName, kind()); return iface ? iface->file() : 0; } diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp index 0a53b99b62d..46d5b106f5c 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp @@ -36,11 +36,11 @@ #include "makestep.h" #include "qmakestep.h" #include "qt4project.h" +#include "qt4projectmanagerconstants.h" #include "qt4projectmanager.h" #include "ui_qt4buildconfigwidget.h" -#include + #include -#include "qt4projectmanagerconstants.h" #include @@ -93,7 +93,7 @@ Qt4BuildConfigWidget::~Qt4BuildConfigWidget() void Qt4BuildConfigWidget::manageQtVersions() { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); core->showOptionsDialog(Constants::QT_CATEGORY, Constants::QTVERSION_PAGE); } diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 2cc23b9ea8a..d7a1783feb5 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -262,7 +262,7 @@ bool Qt4PriFileNode::changeIncludes(ProFile *includeFile, const QStringList &pro bool Qt4PriFileNode::priFileWritable(const QString &path) { const QString dir = QFileInfo(path).dir().path(); - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); Core::IVersionControl *versionControl = core->vcsManager()->findVersionControlForDirectory(dir); switch (Core::EditorManager::promptReadOnlyFile(path, versionControl, core->mainWindow(), false)) { case Core::EditorManager::RO_OpenVCS: @@ -291,7 +291,7 @@ bool Qt4PriFileNode::saveModifiedEditors(const QString &path) QList allFileHandles; QList modifiedFileHandles; - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); foreach (Core::IFile *file, core->fileManager()->managedFiles(path)) { allFileHandles << file; @@ -428,7 +428,7 @@ void Qt4PriFileNode::changeFiles(const FileType fileType, void Qt4PriFileNode::save(ProFile *includeFile) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); Core::FileManager *fileManager = core->fileManager(); QList allFileHandles = fileManager->managedFiles(includeFile->fileName()); Core::IFile *modifiedFileHandle = 0; @@ -839,13 +839,12 @@ void Qt4ProFileNode::updateUiFiles() ProFileReader *Qt4PriFileNode::createProFileReader() const { ProFileReader *reader = new ProFileReader(); - connect(reader, SIGNAL(errorFound(const QString &)), - m_project, SLOT(proFileParseError(const QString &))); + connect(reader, SIGNAL(errorFound(QString)), + m_project, SLOT(proFileParseError(QString))); QtVersion *version = m_project->qtVersion(m_project->activeBuildConfiguration()); - if (version->isValid()) { + if (version->isValid()) reader->setQtVersion(version); - } reader->setOutputDir(m_qt4ProFileNode->buildDir()); diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 0e64fc2be1e..e771109d066 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -48,6 +48,7 @@ #include "projectloadwizard.h" #include "gdbmacrosbuildstep.h" +#include #include #include #include diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index c589d2eb865..35fd609b117 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -42,6 +42,7 @@ #include "qmakestep.h" #include +#include #include #include #include diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index a8dfb4cb89d..763d7fb65d9 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -97,31 +97,31 @@ static Core::Command *createSeparator(Core::ActionManager *am, */ bool Qt4ProjectManagerPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - if (!m_core->mimeDatabase()->addMimeTypes(QLatin1String(":qt4projectmanager/Qt4ProjectManager.mimetypes.xml"), errorMessage)) + Core::ICore *core = Core::ICore::instance(); + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":qt4projectmanager/Qt4ProjectManager.mimetypes.xml"), errorMessage)) return false; - m_projectExplorer = m_core->pluginManager()->getObject(); + m_projectExplorer = core->pluginManager()->getObject(); - Core::ActionManager *am = m_core->actionManager(); + Core::ActionManager *am = core->actionManager(); //create and register objects - m_qt4ProjectManager = new Qt4Manager(this, m_core); + m_qt4ProjectManager = new Qt4Manager(this, core); addObject(m_qt4ProjectManager); TextEditor::TextEditorActionHandler *editorHandler - = new TextEditor::TextEditorActionHandler(m_core, Constants::C_PROFILEEDITOR); + = new TextEditor::TextEditorActionHandler(core, Constants::C_PROFILEEDITOR); m_proFileEditorFactory = new ProFileEditorFactory(m_qt4ProjectManager, editorHandler); addObject(m_proFileEditorFactory); - GuiAppWizard *guiWizard = new GuiAppWizard(m_core); + GuiAppWizard *guiWizard = new GuiAppWizard(core); addAutoReleasedObject(guiWizard); - ConsoleAppWizard *consoleWizard = new ConsoleAppWizard(m_core); + ConsoleAppWizard *consoleWizard = new ConsoleAppWizard(core); addAutoReleasedObject(consoleWizard); - LibraryWizard *libWizard = new LibraryWizard(m_core); + LibraryWizard *libWizard = new LibraryWizard(core); addAutoReleasedObject(libWizard); addAutoReleasedObject(new QMakeBuildStepFactory); @@ -148,7 +148,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList & /*arguments*/, QStr am->actionContainer(ProjectExplorer::Constants::M_PROJECTCONTEXT); //register actions - m_projectContext = m_core->uniqueIDManager()-> + m_projectContext = core->uniqueIDManager()-> uniqueIdentifier(Qt4ProjectManager::Constants::PROJECT_KIND); QList context = QList() << m_projectContext; Core::Command *command; diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h index 584a9bfca47..374e8918345 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h @@ -36,7 +36,6 @@ #include #include -#include namespace Qt4ProjectManager { @@ -79,7 +78,6 @@ private slots: #endif private: - Core::ICore *m_core; ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer; ProFileEditorFactory *m_proFileEditorFactory; Qt4Manager *m_qt4ProjectManager; diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 3953e6d9ba4..3ff03bcc28a 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -41,7 +41,6 @@ #include #include #include -#include #include #include @@ -182,8 +181,7 @@ void Qt4RunConfiguration::updateCachedValues() ProFileReader *reader = static_cast(project())->createProFileReader(); if (!reader->readProFile(m_proFilePath)) { delete reader; - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - core->messageManager()->printToOutputPane(QString("Could not parse %1. The Qt4 run configuration %2 can not be started.").arg(m_proFilePath).arg(name())); + Core::ICore::instance()->messageManager()->printToOutputPane(QString("Could not parse %1. The Qt4 run configuration %2 can not be started.").arg(m_proFilePath).arg(name())); return; } @@ -233,7 +231,7 @@ QString Qt4RunConfiguration::resolveVariables(const QString &buildConfiguration, QString relSubDir = QFileInfo(project()->file()->fileName()).absoluteDir().relativeFilePath(m_srcDir); QString baseDir = QDir(project()->buildDirectory(buildConfiguration)).absoluteFilePath(relSubDir); - Core::VariableManager *vm = ExtensionSystem::PluginManager::instance()->getObject()->variableManager(); + Core::VariableManager *vm = Core::ICore::instance()->variableManager(); if (!vm) return QString(); QString dest; diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 41b2366581d..6e67989158b 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -37,6 +37,7 @@ #include "msvcenvironment.h" #include "cesdkhandler.h" +#include #include #include #include @@ -63,8 +64,7 @@ static const char *newQtVersionsKey = "NewQtVersions"; QtVersionManager::QtVersionManager() : m_emptyVersion(new QtVersion) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - QSettings *s = m_core->settings(); + QSettings *s = Core::ICore::instance()->settings(); m_defaultVersion = s->value(defaultQtVersionKey, 0).toInt(); m_idcount = 1; @@ -116,7 +116,8 @@ void QtVersionManager::addVersion(QtVersion *version) void QtVersionManager::updateDocumentation() { - Help::HelpManager *helpManager = m_core->pluginManager()->getObject(); + Help::HelpManager *helpManager + = ExtensionSystem::PluginManager::instance()->getObject(); Q_ASSERT(helpManager); QStringList fileEndings = QStringList() << "/qch/qt.qch" << "/qch/qmake.qch" << "/qch/designer.qch"; QStringList files; @@ -196,7 +197,7 @@ void QtVersionManager::apply() void QtVersionManager::writeVersionsIntoSettings() { - QSettings *s = m_core->settings(); + QSettings *s = Core::ICore::instance()->settings(); s->setValue(defaultQtVersionKey, m_defaultVersion); s->beginWriteArray("QtVersions"); for (int i = 0; i < m_versions.size(); ++i) { @@ -235,7 +236,7 @@ void QtVersionManager::addNewVersionsFromInstaller() // NewQtVersions="qt 4.3.2=c:\\qt\\qt432;qt embedded=c:\\qtembedded;" // or NewQtVersions="qt 4.3.2=c:\\qt\\qt432=c:\\qtcreator\\mingw\\=prependToPath; // Duplicate entries are not added, the first new version is set as default. - QSettings *settings = m_core->settings(); + QSettings *settings = Core::ICore::instance()->settings(); if (!settings->contains(newQtVersionsKey)) return; diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 872b44b2178..f6ccd017b67 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -37,7 +37,6 @@ #include "ui_qtversionmanager.h" #include -#include #include #include @@ -208,7 +207,6 @@ private: static int indexOfVersionInList(const QtVersion * const version, const QList &list); void updateUniqueIdToIndexMap(); - Core::ICore *m_core; QPointer m_widget; QtVersion *m_emptyVersion; diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp index d67cd1ab46e..b61861a8e67 100644 --- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp @@ -35,6 +35,7 @@ #include "qt4project.h" #include "qt4projectmanagerconstants.h" +#include #include #include diff --git a/src/plugins/qtestlib/qtestlibplugin.cpp b/src/plugins/qtestlib/qtestlibplugin.cpp index 5b38e05b33a..7d0cada5323 100644 --- a/src/plugins/qtestlib/qtestlibplugin.cpp +++ b/src/plugins/qtestlib/qtestlibplugin.cpp @@ -33,25 +33,26 @@ #include "qtestlibplugin.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using namespace QTestLib::Internal; diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp index fec9d760b0d..dcf69b04b06 100644 --- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp @@ -78,7 +78,7 @@ bool QtScriptEditorPlugin::initialize(const QStringList & /*arguments*/, QString { typedef SharedTools::QScriptHighlighter QScriptHighlighter; - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/qtscripteditor/QtScriptEditor.mimetypes.xml"), error_message)) return false; m_scriptcontext << core->uniqueIDManager()->uniqueIdentifier(QtScriptEditor::Constants::C_QTSCRIPTEDITOR); diff --git a/src/plugins/quickopen/quickopenplugin.cpp b/src/plugins/quickopen/quickopenplugin.cpp index 80b1ca131c0..f0354c0ba6c 100644 --- a/src/plugins/quickopen/quickopenplugin.cpp +++ b/src/plugins/quickopen/quickopenplugin.cpp @@ -82,8 +82,7 @@ QuickOpenPlugin::~QuickOpenPlugin() bool QuickOpenPlugin::initialize(const QStringList &, QString *) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - + Core::ICore *core = Core::ICore::instance(); m_settingsPage = new SettingsPage(core, this); addObject(m_settingsPage); @@ -137,7 +136,7 @@ void QuickOpenPlugin::startSettingsLoad() void QuickOpenPlugin::loadSettings() { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); QSettings settings; settings.beginGroup("QuickOpen"); m_refreshTimer.setInterval(settings.value("RefreshInterval", 60).toInt()*60000); @@ -170,16 +169,15 @@ void QuickOpenPlugin::settingsLoaded() void QuickOpenPlugin::saveSettings() { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); if (core && core->settings()) { QSettings *s = core->settings(); s->beginGroup("QuickOpen"); - s->setValue("Interval", m_refreshTimer.interval()/60000); + s->setValue("Interval", m_refreshTimer.interval() / 60000); s->remove(""); foreach (IQuickOpenFilter *filter, m_filters) { - if (!m_customFilters.contains(filter)) { + if (!m_customFilters.contains(filter)) s->setValue(filter->name(), filter->saveState()); - } } s->beginGroup("CustomFilters"); int i = 0; @@ -245,7 +243,7 @@ void QuickOpenPlugin::refresh(QList filters) if (filters.isEmpty()) filters = m_filters; QFuture task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters); - Core::FutureProgress *progress = ExtensionSystem::PluginManager::instance()->getObject() + Core::FutureProgress *progress = Core::ICore::instance() ->progressManager()->addTask(task, tr("Indexing"), Constants::TASK_INDEX, Core::ProgressManager::CloseOnSuccess); connect(progress, SIGNAL(finished()), this, SLOT(saveSettings())); } diff --git a/src/plugins/quickopen/quickopentoolwindow.cpp b/src/plugins/quickopen/quickopentoolwindow.cpp index 40cbeb7edcf..d769313b58a 100644 --- a/src/plugins/quickopen/quickopentoolwindow.cpp +++ b/src/plugins/quickopen/quickopentoolwindow.cpp @@ -490,7 +490,6 @@ void QuickOpenToolWindow::showEvent(QShowEvent *event) void QuickOpenToolWindow::showConfigureDialog() { - ExtensionSystem::PluginManager::instance() - ->getObject()->showOptionsDialog(Constants::QUICKOPEN_CATEGORY, + Core::ICore::instance()->showOptionsDialog(Constants::QUICKOPEN_CATEGORY, Constants::FILTER_OPTIONS_PAGE); } diff --git a/src/plugins/regexp/regexpplugin.cpp b/src/plugins/regexp/regexpplugin.cpp index 86a4ca0a7ca..af1bc8f242f 100644 --- a/src/plugins/regexp/regexpplugin.cpp +++ b/src/plugins/regexp/regexpplugin.cpp @@ -32,14 +32,15 @@ ***************************************************************************/ #include "regexpplugin.h" -#include "settings.h" + #include "regexpwindow.h" +#include "settings.h" #include #include #include -#include +#include using namespace RegExp::Internal; @@ -49,25 +50,24 @@ RegExpPlugin::RegExpPlugin() RegExpPlugin::~RegExpPlugin() { - if (m_regexpWindow) { - m_regexpWindow->settings().toQSettings(m_core->settings()); - } + if (m_regexpWindow) + m_regexpWindow->settings().toQSettings(Core::ICore::instance()->settings()); } void RegExpPlugin::extensionsInitialized() { } - -bool RegExpPlugin::initialize(const QStringList & /*arguments*/, QString *error_message) +bool RegExpPlugin::initialize(const QStringList &arguments, QString *errorMessage) { - Q_UNUSED(error_message) - m_core = ExtensionSystem::PluginManager::instance()->getObject(); + Q_UNUSED(arguments); + Q_UNUSED(errorMessage) + Core::ICore *core = Core::ICore::instance(); m_regexpWindow = new RegExpWindow; Settings settings; - settings.fromQSettings(m_core->settings()); + settings.fromQSettings(core->settings()); m_regexpWindow->setSettings(settings); - const int plugId = m_core->uniqueIDManager()->uniqueIdentifier(QLatin1String("RegExpPlugin")); + const int plugId = core->uniqueIDManager()->uniqueIdentifier(QLatin1String("RegExpPlugin")); addAutoReleasedObject(new Core::BaseView("TextEditor.RegExpWindow", m_regexpWindow, QList() << plugId, diff --git a/src/plugins/regexp/regexpplugin.h b/src/plugins/regexp/regexpplugin.h index c944d37bc17..aa102953704 100644 --- a/src/plugins/regexp/regexpplugin.h +++ b/src/plugins/regexp/regexpplugin.h @@ -39,10 +39,6 @@ #include #include -namespace Core { -class ICore; -} - namespace RegExp { namespace Internal { @@ -56,11 +52,10 @@ public: RegExpPlugin(); virtual ~RegExpPlugin(); - bool initialize(const QStringList &arguments, QString *error_message); + bool initialize(const QStringList &arguments, QString *errorMessage); void extensionsInitialized(); private: - Core::ICore *m_core; QPointer m_regexpWindow; }; diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index 3775564cc80..a1d612efc2e 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -56,9 +56,8 @@ using namespace ResourceEditor::Internal; ResourceEditorPlugin::ResourceEditorPlugin() : m_wizard(0), m_editor(0), - m_core(NULL), - m_redoAction(NULL), - m_undoAction(NULL) + m_redoAction(0), + m_undoAction(0) { } @@ -68,13 +67,14 @@ ResourceEditorPlugin::~ResourceEditorPlugin() removeObject(m_wizard); } -bool ResourceEditorPlugin::initialize(const QStringList & /*arguments*/, QString *error_message) +bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *errorMessage) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - if (!m_core->mimeDatabase()->addMimeTypes(QLatin1String(":/resourceeditor/ResourceEditor.mimetypes.xml"), error_message)) + Q_UNUSED(arguments); + Core::ICore *core = Core::ICore::instance(); + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/resourceeditor/ResourceEditor.mimetypes.xml"), errorMessage)) return false; - m_editor = new ResourceEditorFactory(m_core, this); + m_editor = new ResourceEditorFactory(core, this); addObject(m_editor); Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); @@ -83,16 +83,16 @@ bool ResourceEditorPlugin::initialize(const QStringList & /*arguments*/, QString wizardParameters.setCategory(QLatin1String("Qt")); wizardParameters.setTrCategory(tr("Qt")); - m_wizard = new ResourceWizard(wizardParameters, m_core, this); + m_wizard = new ResourceWizard(wizardParameters, core, this); addObject(m_wizard); - error_message->clear(); + errorMessage->clear(); // Register undo and redo - Core::ActionManager * const actionManager = m_core->actionManager(); - int const pluginId = m_core->uniqueIDManager()->uniqueIdentifier( + Core::ActionManager * const actionManager = core->actionManager(); + int const pluginId = core->uniqueIDManager()->uniqueIdentifier( Constants::C_RESOURCEEDITOR); - QList const idList = QList() << pluginId; + const QList idList = QList() << pluginId; m_undoAction = new QAction(tr("&Undo"), this); m_redoAction = new QAction(tr("&Redo"), this); actionManager->registerAction(m_undoAction, Core::Constants::UNDO, idList); @@ -129,7 +129,7 @@ void ResourceEditorPlugin::onUndoStackChanged(ResourceEditorW const *editor, ResourceEditorW * ResourceEditorPlugin::currentEditor() const { ResourceEditorW * const focusEditor = qobject_cast( - m_core->editorManager()->currentEditor()); + Core::ICore::instance()->editorManager()->currentEditor()); QTC_ASSERT(focusEditor, return 0); return focusEditor; } diff --git a/src/plugins/resourceeditor/resourceeditorplugin.h b/src/plugins/resourceeditor/resourceeditorplugin.h index fd9576ea00d..d8c4c3daf1a 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.h +++ b/src/plugins/resourceeditor/resourceeditorplugin.h @@ -36,11 +36,9 @@ #include -QT_FORWARD_DECLARE_CLASS(QAction); - -namespace Core { - class ICore; -} +QT_BEGIN_NAMESPACE +class QAction; +QT_END_NAMESPACE namespace ResourceEditor { namespace Internal { @@ -57,8 +55,8 @@ public: ResourceEditorPlugin(); virtual ~ResourceEditorPlugin(); - //Plugin - bool initialize(const QStringList &arguments, QString *error_message = 0); + // IPlugin + bool initialize(const QStringList &arguments, QString *errorMessage = 0); void extensionsInitialized(); private slots: @@ -74,7 +72,6 @@ private: private: ResourceWizard *m_wizard; ResourceEditorFactory *m_editor; - Core::ICore *m_core; QAction *m_redoAction; QAction *m_undoAction; }; diff --git a/src/plugins/snippets/snippetsplugin.cpp b/src/plugins/snippets/snippetsplugin.cpp index c014a6432a1..32dd4bc04e2 100644 --- a/src/plugins/snippets/snippetsplugin.cpp +++ b/src/plugins/snippets/snippetsplugin.cpp @@ -36,13 +36,12 @@ #include "snippetsplugin.h" #include "snippetspec.h" -#include +#include #include #include #include #include -#include #include #include #include @@ -69,19 +68,20 @@ void SnippetsPlugin::extensionsInitialized() { } -bool SnippetsPlugin::initialize(const QStringList & /*arguments*/, QString *) +bool SnippetsPlugin::initialize(const QStringList &arguments, QString *) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); - Core::ActionManager *am = m_core->actionManager(); + Q_UNUSED(arguments); + Core::ICore *core = Core::ICore::instance(); + Core::ActionManager *am = core->actionManager(); QList context; - context << m_core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); + context << core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); m_snippetWnd = new SnippetsWindow(); addAutoReleasedObject(new Core::BaseView("Snippets.SnippetsTree", m_snippetWnd, - QList() << m_core->uniqueIDManager()->uniqueIdentifier(QLatin1String("Snippets Window")) - << m_core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR), + QList() << core->uniqueIDManager()->uniqueIdentifier(QLatin1String("Snippets Window")) + << core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR), Qt::RightDockWidgetArea)); m_snippetsCompletion = new SnippetsCompletion(this); addObject(m_snippetsCompletion); @@ -107,11 +107,12 @@ QString SnippetsPlugin::simplifySnippetName(SnippetSpec *snippet) const void SnippetsPlugin::snippetActivated() { + Core::ICore *core = Core::ICore::instance(); SnippetSpec *snippet = m_shortcuts.value(sender()); - if (snippet && m_core->editorManager()->currentEditor()) { + if (snippet && core->editorManager()->currentEditor()) { TextEditor::ITextEditable *te = qobject_cast( - m_core->editorManager()->currentEditor()); + core->editorManager()->currentEditor()); m_snippetWnd->insertSnippet(te, snippet); } } diff --git a/src/plugins/snippets/snippetsplugin.h b/src/plugins/snippets/snippetsplugin.h index 3647244d659..dba0804a632 100644 --- a/src/plugins/snippets/snippetsplugin.h +++ b/src/plugins/snippets/snippetsplugin.h @@ -40,11 +40,6 @@ #include -namespace Core { -class ICore; -struct Application; -} - namespace Snippets { namespace Internal { @@ -62,9 +57,8 @@ public: static SnippetsPlugin *instance() { return m_instance; } static SnippetsWindow *snippetsWindow() { return m_instance->m_snippetWnd; } - static Core::ICore *core() { return m_instance->m_core; } - bool initialize(const QStringList &arguments, QString *error_message); + bool initialize(const QStringList &arguments, QString *errorMessage); void extensionsInitialized(); private slots: @@ -74,7 +68,6 @@ private: static SnippetsPlugin *m_instance; QString simplifySnippetName(SnippetSpec *snippet) const; - Core::ICore *m_core; SnippetsCompletion *m_snippetsCompletion; SnippetsWindow *m_snippetWnd; diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 0e3ad1c32a7..23f4986bc31 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -249,8 +249,10 @@ static const VCSBase::VCSBaseSubmitEditorParameters submitParameters = { Subversion::Constants::SUBVERSIONCOMMITEDITOR }; -bool SubversionPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) +bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMessage) { + Q_UNUSED(arguments); + typedef VCSBase::VCSSubmitEditorFactory SubversionSubmitEditorFactory; typedef VCSBase::VCSEditorFactory SubversionEditorFactory; using namespace Constants; @@ -259,7 +261,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments*/, QString *er using namespace ExtensionSystem; m_subversionPluginInstance = this; - m_coreInstance = PluginManager::instance()->getObject(); + m_coreInstance = Core::ICore::instance(); if (!m_coreInstance->mimeDatabase()->addMimeTypes(QLatin1String(":/trolltech.subversion/Subversion.mimetypes.xml"), errorMessage)) return false; @@ -493,7 +495,7 @@ void SubversionPlugin::svnDiff(const QStringList &files, QString diffname) if (Subversion::Constants::debug) qDebug() << Q_FUNC_INFO << files << diffname; const QString source = files.empty() ? QString() : files.front(); - QTextCodec *codec = source.isEmpty() ? static_cast(0) : VCSBase::VCSBaseEditor::getCodec(m_coreInstance, source); + QTextCodec *codec = source.isEmpty() ? static_cast(0) : VCSBase::VCSBaseEditor::getCodec(source); if (files.count() == 1 && diffname.isEmpty()) diffname = QFileInfo(files.front()).fileName(); @@ -760,7 +762,7 @@ void SubversionPlugin::filelogCurrentFile() void SubversionPlugin::filelog(const QString &file) { - QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, file); + QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(file); // no need for temp file QStringList args(QLatin1String("log")); args.append(QDir::toNativeSeparators(file)); @@ -802,7 +804,7 @@ void SubversionPlugin::annotateCurrentFile() void SubversionPlugin::annotate(const QString &file) { - QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, file); + QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(file); QStringList args(QLatin1String("annotate")); args.push_back(QLatin1String("-v")); @@ -861,7 +863,7 @@ void SubversionPlugin::describe(const QString &source, const QString &changeNr) args.push_back(diffArg); args.push_back(topLevel); - QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, source); + QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(source); const SubversionResponse response = runSvn(args, subversionShortTimeOut, false, codec); if (response.error) return; @@ -1015,12 +1017,6 @@ void SubversionPlugin::setSettings(const SubversionSettings &s) } } -Core::ICore *SubversionPlugin::coreInstance() -{ - QTC_ASSERT(m_coreInstance, return 0); - return m_coreInstance; -} - SubversionPlugin *SubversionPlugin::subversionPluginInstance() { QTC_ASSERT(m_subversionPluginInstance, return m_subversionPluginInstance); diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index 729bbc909fd..17285e73351 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -105,7 +105,6 @@ public: bool managesDirectory(const QString &directory) const; QString findTopLevelForDirectory(const QString &directory) const; - static Core::ICore *coreInstance(); static SubversionPlugin *subversionPluginInstance(); private slots: diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 11c129fb10a..cae7df6bd7d 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -88,7 +88,7 @@ using namespace TextEditor::Internal; namespace TextEditor { - namespace Internal { +namespace Internal { class TextEditExtraArea : public QWidget { BaseTextEditor *textEdit; @@ -124,16 +124,15 @@ protected: } }; - } -} +} // namespace Internal +} // namespace TextEditor ITextEditor *BaseTextEditor::openEditorAt(const QString &fileName, int line, int column, const QString &editorKind) { - Core::EditorManager *editorManager = - ExtensionSystem::PluginManager::instance()->getObject()->editorManager(); + Core::EditorManager *editorManager = Core::ICore::instance()->editorManager(); editorManager->addCurrentPositionToNavigationHistory(true); Core::IEditor *editor = editorManager->openEditor(fileName, editorKind, true); TextEditor::ITextEditor *texteditor = qobject_cast(editor); @@ -563,7 +562,7 @@ bool BaseTextEditor::open(const QString &fileName) return false; } -Core::IFile * BaseTextEditor::file() +Core::IFile *BaseTextEditor::file() { return d->m_document; } diff --git a/src/plugins/texteditor/basetextmark.cpp b/src/plugins/texteditor/basetextmark.cpp index 4e4adf28bdc..c5db6932565 100644 --- a/src/plugins/texteditor/basetextmark.cpp +++ b/src/plugins/texteditor/basetextmark.cpp @@ -57,7 +57,7 @@ BaseTextMark::BaseTextMark(const QString &filename, int line) void BaseTextMark::init() { m_init = true; - Core::EditorManager *em = ExtensionSystem::PluginManager::instance()->getObject()->editorManager(); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); connect(em, SIGNAL(editorOpened(Core::IEditor *)), this, SLOT(editorOpened(Core::IEditor *))); foreach (Core::IEditor *editor, em->openedEditors()) @@ -117,7 +117,7 @@ void BaseTextMark::updateMarker() void BaseTextMark::moveMark(const QString & /* filename */, int /* line */) { - Core::EditorManager *em = ExtensionSystem::PluginManager::instance()->getObject()->editorManager(); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); if (!m_init) { connect(em, SIGNAL(editorOpened(Core::IEditor *)), this, SLOT(editorOpened(Core::IEditor *))); m_init = true; diff --git a/src/plugins/texteditor/completionsupport.cpp b/src/plugins/texteditor/completionsupport.cpp index 43665b064e9..ddac8de09d1 100644 --- a/src/plugins/texteditor/completionsupport.cpp +++ b/src/plugins/texteditor/completionsupport.cpp @@ -49,23 +49,23 @@ using namespace TextEditor; using namespace TextEditor::Internal; -CompletionSupport *CompletionSupport::instance(Core::ICore *core) +CompletionSupport *CompletionSupport::instance() { static CompletionSupport *m_instance = 0; - if (!m_instance) { - m_instance = new CompletionSupport(core); - } + if (!m_instance) + m_instance = new CompletionSupport; return m_instance; } -CompletionSupport::CompletionSupport(Core::ICore *core) - : QObject(core), +CompletionSupport::CompletionSupport() + : QObject(Core::ICore::instance()), m_completionList(0), m_startPosition(0), m_checkCompletionTrigger(false), m_editor(0) { - m_completionCollector = core->pluginManager()->getObject(); + m_completionCollector = ExtensionSystem::PluginManager::instance() + ->getObject(); } void CompletionSupport::performCompletion(const CompletionItem &item) diff --git a/src/plugins/texteditor/completionsupport.h b/src/plugins/texteditor/completionsupport.h index 9704f80f2a2..a2300010200 100644 --- a/src/plugins/texteditor/completionsupport.h +++ b/src/plugins/texteditor/completionsupport.h @@ -38,8 +38,6 @@ #include -namespace Core { class ICore; } - namespace TextEditor { struct CompletionItem; @@ -58,9 +56,9 @@ class TEXTEDITOR_EXPORT CompletionSupport : public QObject Q_OBJECT public: - CompletionSupport(Core::ICore *core); + CompletionSupport(); - static CompletionSupport *instance(Core::ICore *core); + static CompletionSupport *instance(); public slots: void autoComplete(ITextEditable *editor, bool forced); diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index 9122d791a75..c36d985a18b 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -88,10 +88,12 @@ Core::ICore *TextEditorPlugin::core() return m_instance->m_core; } -//ExtensionSystem::PluginInterface -bool TextEditorPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) +// ExtensionSystem::PluginInterface +bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMessage) { - m_core = ExtensionSystem::PluginManager::instance()->getObject(); + Q_UNUSED(arguments); + + m_core = Core::ICore::instance(); if (!m_core->mimeDatabase()->addMimeTypes(QLatin1String(":/texteditor/TextEditor.mimetypes.xml"), errorMessage)) return false; @@ -170,9 +172,6 @@ void TextEditorPlugin::initializeEditor(TextEditor::PlainTextEditor *editor) void TextEditorPlugin::invokeCompletion() { - if (!m_core) - return; - Core::IEditor *iface = m_core->editorManager()->currentEditor(); ITextEditor *editor = qobject_cast(iface); if (editor) diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp index 6427a1e9fab..f4610ed6685 100644 --- a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp +++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp @@ -36,7 +36,6 @@ #include #include -#include namespace VCSBase { @@ -83,7 +82,7 @@ QStringList BaseVCSSubmitEditorFactory::mimeTypes() const Core::IFile *BaseVCSSubmitEditorFactory::open(const QString &fileName) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Core::ICore *core = Core::ICore::instance(); if (Core::IEditor *iface = core->editorManager()->openEditor(fileName, kind())) return iface->file(); return 0; diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 4458765b36e..7cf2f2a9a4e 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -68,8 +68,7 @@ class VCSBaseEditorEditable : public TextEditor::BaseTextEditorEditable { public: VCSBaseEditorEditable(VCSBaseEditor *, - const VCSBaseEditorParameters *type, - Core::ICore *); + const VCSBaseEditorParameters *type); QList context() const; bool duplicateSupported() const { return false; } @@ -83,11 +82,10 @@ private: }; VCSBaseEditorEditable::VCSBaseEditorEditable(VCSBaseEditor *editor, - const VCSBaseEditorParameters *type, - Core::ICore *core) : - BaseTextEditorEditable(editor), - m_kind(type->kind) + const VCSBaseEditorParameters *type) + : BaseTextEditorEditable(editor), m_kind(type->kind) { + Core::ICore *core = Core::ICore::instance(); m_context << core->uniqueIDManager()->uniqueIdentifier(QLatin1String(type->context)) << core->uniqueIDManager()->uniqueIdentifier(QLatin1String(TextEditor::Constants::C_TEXTEDITOR)); @@ -100,46 +98,39 @@ QList VCSBaseEditorEditable::context() const // ----------- VCSBaseEditorPrivate -struct VCSBaseEditorPrivate { +struct VCSBaseEditorPrivate +{ VCSBaseEditorPrivate(const VCSBaseEditorParameters *type, QObject *parent); const VCSBaseEditorParameters *m_parameters; QAction *m_describeAction; QString m_currentChange; - Core::ICore *m_core; QString m_source; }; -VCSBaseEditorPrivate::VCSBaseEditorPrivate(const VCSBaseEditorParameters *type, QObject *parent) : - m_parameters(type), - m_describeAction(new QAction(parent)), - m_core(ExtensionSystem::PluginManager::instance()->getObject()) +VCSBaseEditorPrivate::VCSBaseEditorPrivate(const VCSBaseEditorParameters *type, QObject *parent) + : m_parameters(type), m_describeAction(new QAction(parent)) { } // ------------ VCSBaseEditor -VCSBaseEditor::VCSBaseEditor(const VCSBaseEditorParameters *type, - QWidget *parent) : - BaseTextEditor(parent), - m_d(new VCSBaseEditorPrivate(type, this)) +VCSBaseEditor::VCSBaseEditor(const VCSBaseEditorParameters *type, QWidget *parent) + : BaseTextEditor(parent), + d(new VCSBaseEditorPrivate(type, this)) { if (VCSBase::Constants::Internal::debug) qDebug() << "VCSBaseEditor::VCSBaseEditor" << type->type << type->kind; setReadOnly(true); - - connect(m_d->m_describeAction, SIGNAL(triggered()), this, SLOT(describe())); - + connect(d->m_describeAction, SIGNAL(triggered()), this, SLOT(describe())); viewport()->setMouseTracking(true); - setBaseTextDocument(new Internal::VCSBaseTextDocument); - - setMimeType(QLatin1String(m_d->m_parameters->mimeType)); + setMimeType(QLatin1String(d->m_parameters->mimeType)); } void VCSBaseEditor::init() { - switch (m_d->m_parameters->type) { + switch (d->m_parameters->type) { case RegularCommandOutput: case LogOutput: case AnnotateOutput: @@ -154,17 +145,17 @@ void VCSBaseEditor::init() VCSBaseEditor::~VCSBaseEditor() { - delete m_d; + delete d; } QString VCSBaseEditor::source() const { - return m_d->m_source; + return d->m_source; } void VCSBaseEditor::setSource(const QString &source) { - m_d->m_source = source; + d->m_source = source; } QTextCodec *VCSBaseEditor::codec() const @@ -183,7 +174,7 @@ void VCSBaseEditor::setCodec(QTextCodec *c) EditorContentType VCSBaseEditor::contentType() const { - return m_d->m_parameters->type; + return d->m_parameters->type; } bool VCSBaseEditor::isModified() const @@ -193,19 +184,19 @@ bool VCSBaseEditor::isModified() const TextEditor::BaseTextEditorEditable *VCSBaseEditor::createEditableInterface() { - return new VCSBaseEditorEditable(this, m_d->m_parameters, m_d->m_core); + return new VCSBaseEditorEditable(this, d->m_parameters); } void VCSBaseEditor::contextMenuEvent(QContextMenuEvent *e) { QMenu *menu = createStandardContextMenu(); // 'click on change-interaction' - if (m_d->m_parameters->type == LogOutput || m_d->m_parameters->type == AnnotateOutput) { - m_d->m_currentChange = changeUnderCursor(cursorForPosition(e->pos())); - if (!m_d->m_currentChange.isEmpty()) { - m_d->m_describeAction->setText(tr("Describe change %1").arg(m_d->m_currentChange)); + if (d->m_parameters->type == LogOutput || d->m_parameters->type == AnnotateOutput) { + d->m_currentChange = changeUnderCursor(cursorForPosition(e->pos())); + if (!d->m_currentChange.isEmpty()) { + d->m_describeAction->setText(tr("Describe change %1").arg(d->m_currentChange)); menu->addSeparator(); - menu->addAction(m_d->m_describeAction); + menu->addAction(d->m_describeAction); } } menu->exec(e->globalPos()); @@ -217,7 +208,7 @@ void VCSBaseEditor::mouseMoveEvent(QMouseEvent *e) bool overrideCursor = false; Qt::CursorShape cursorShape; - if (m_d->m_parameters->type == LogOutput || m_d->m_parameters->type == AnnotateOutput) { + if (d->m_parameters->type == LogOutput || d->m_parameters->type == AnnotateOutput) { // Link emulation behaviour for 'click on change-interaction' QTextCursor cursor = cursorForPosition(e->pos()); QString change = changeUnderCursor(cursor); @@ -245,11 +236,11 @@ void VCSBaseEditor::mouseMoveEvent(QMouseEvent *e) void VCSBaseEditor::mouseReleaseEvent(QMouseEvent *e) { - if (m_d->m_parameters->type == LogOutput || m_d->m_parameters->type == AnnotateOutput) { + if (d->m_parameters->type == LogOutput || d->m_parameters->type == AnnotateOutput) { if (e->button() == Qt::LeftButton &&!(e->modifiers() & Qt::ShiftModifier)) { QTextCursor cursor = cursorForPosition(e->pos()); - m_d->m_currentChange = changeUnderCursor(cursor); - if (!m_d->m_currentChange.isEmpty()) { + d->m_currentChange = changeUnderCursor(cursor); + if (!d->m_currentChange.isEmpty()) { describe(); e->accept(); return; @@ -261,7 +252,7 @@ void VCSBaseEditor::mouseReleaseEvent(QMouseEvent *e) void VCSBaseEditor::mouseDoubleClickEvent(QMouseEvent *e) { - if (m_d->m_parameters->type == DiffOutput) { + if (d->m_parameters->type == DiffOutput) { if (e->button() == Qt::LeftButton &&!(e->modifiers() & Qt::ShiftModifier)) { QTextCursor cursor = cursorForPosition(e->pos()); jumpToChangeFromDiff(cursor); @@ -282,16 +273,16 @@ void VCSBaseEditor::keyPressEvent(QKeyEvent *e) void VCSBaseEditor::describe() { if (VCSBase::Constants::Internal::debug) - qDebug() << "VCSBaseEditor::describe" << m_d->m_currentChange; - if (!m_d->m_currentChange.isEmpty()) - emit describeRequested(m_d->m_source, m_d->m_currentChange); + qDebug() << "VCSBaseEditor::describe" << d->m_currentChange; + if (!d->m_currentChange.isEmpty()) + emit describeRequested(d->m_source, d->m_currentChange); } void VCSBaseEditor::slotActivateAnnotation() { // The annotation highlighting depends on contents (change number // set with assigned colors) - if (m_d->m_parameters->type != AnnotateOutput) + if (d->m_parameters->type != AnnotateOutput) return; const QSet changes = annotationChanges(); @@ -372,9 +363,10 @@ void VCSBaseEditor::jumpToChangeFromDiff(QTextCursor cursor) if (!exists) return; - Core::IEditor *ediface = m_d->m_core->editorManager()->openEditor(fileName); - m_d->m_core->editorManager()->ensureEditorManagerVisible(); - if (TextEditor::ITextEditor *editor = qobject_cast(ediface)) + Core::EditorManager *em = Core::ICore::instance()->editorManager(); + Core::IEditor *ed = em->openEditor(fileName); + em->ensureEditorManagerVisible(); + if (TextEditor::ITextEditor *editor = qobject_cast(ed)) editor->gotoLine(chunkStart + lineCount); } @@ -386,7 +378,7 @@ void VCSBaseEditor::setPlainTextData(const QByteArray &data) void VCSBaseEditor::setFontSettings(const TextEditor::FontSettings &fs) { TextEditor::BaseTextEditor::setFontSettings(fs); - if (m_d->m_parameters->type == DiffOutput) { + if (d->m_parameters->type == DiffOutput) { if (DiffHighlighter *highlighter = qobject_cast(baseTextDocument()->syntaxHighlighter())) { static QVector categories; if (categories.isEmpty()) { @@ -413,11 +405,12 @@ const VCSBaseEditorParameters *VCSBaseEditor::findType(const VCSBaseEditorParame } // Find the codec used for a file querying the editor. -static QTextCodec *findFileCodec(const Core::ICore *core, const QString &source) +static QTextCodec *findFileCodec(const QString &source) { typedef QList EditorList; - const EditorList editors = core->editorManager()->editorsForFileName(source); + const EditorList editors = + Core::ICore::instance()->editorManager()->editorsForFileName(source); if (!editors.empty()) { const EditorList::const_iterator ecend = editors.constEnd(); for (EditorList::const_iterator it = editors.constBegin(); it != ecend; ++it) @@ -456,13 +449,13 @@ static QTextCodec *findProjectCodec(const QString &dir) return 0; } -QTextCodec *VCSBaseEditor::getCodec(const Core::ICore *core, const QString &source) +QTextCodec *VCSBaseEditor::getCodec(const QString &source) { if (!source.isEmpty()) { // Check file const QFileInfo sourceFi(source); if (sourceFi.isFile()) - if (QTextCodec *fc = findFileCodec(core, source)) + if (QTextCodec *fc = findFileCodec(source)) return fc; // Find by project via directory if (QTextCodec *pc = findProjectCodec(sourceFi.isFile() ? sourceFi.absolutePath() : source)) diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index 42c31c6c37d..5c516f00ffb 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -46,10 +46,6 @@ class QTextCodec; class QTextCursor; QT_END_NAMESPACE -namespace Core { -class ICore; -} - namespace VCSBase { struct VCSBaseEditorPrivate; @@ -121,7 +117,7 @@ public: // the editor manager and the project managers (defaults to system codec). // The codec should be set on editors displaying diff or annotation // output. - static QTextCodec *getCodec(const Core::ICore *core, const QString &source); + static QTextCodec *getCodec(const QString &source); // Utility to return the editor from the IEditor returned by the editor // manager which is a BaseTextEditable. @@ -166,7 +162,7 @@ private: void jumpToChangeFromDiff(QTextCursor cursor); - VCSBaseEditorPrivate *m_d; + VCSBaseEditorPrivate *d; }; } // namespace VCSBase diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 7cbd8a9233e..06cefbb71dd 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -34,13 +34,12 @@ #include "vcsbaseplugin.h" #include "diffhighlighter.h" -#include #include #include #include #include -#include +#include namespace VCSBase { namespace Internal { @@ -57,10 +56,12 @@ VCSBasePlugin::~VCSBasePlugin() m_instance = 0; } -bool VCSBasePlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) +bool VCSBasePlugin::initialize(const QStringList &arguments, QString *errorMessage) { - Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + Q_UNUSED(arguments); + Q_UNUSED(errorMessage); + Core::ICore *core = Core::ICore::instance(); if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/vcsbase/VCSBase.mimetypes.xml"), errorMessage)) return false; diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index 9bec38c5753..64192d1b6b4 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -59,12 +59,12 @@ enum { wantToolBar = 0 }; namespace VCSBase { -struct VCSBaseSubmitEditorPrivate { +struct VCSBaseSubmitEditorPrivate +{ VCSBaseSubmitEditorPrivate(const VCSBaseSubmitEditorParameters *parameters, Core::Utils::SubmitEditorWidget *editorWidget, QObject *q); - Core::ICore *m_core; Core::Utils::SubmitEditorWidget *m_widget; QToolBar *m_toolWidget; const VCSBaseSubmitEditorParameters *m_parameters; @@ -79,13 +79,12 @@ struct VCSBaseSubmitEditorPrivate { VCSBaseSubmitEditorPrivate::VCSBaseSubmitEditorPrivate(const VCSBaseSubmitEditorParameters *parameters, Core::Utils::SubmitEditorWidget *editorWidget, QObject *q) : - m_core(ExtensionSystem::PluginManager::instance()->getObject()), m_widget(editorWidget), m_toolWidget(0), m_parameters(parameters), m_file(new VCSBase::Internal::SubmitEditorFile(QLatin1String(m_parameters->mimeType), q)) { - m_contexts << m_core->uniqueIDManager()->uniqueIdentifier(m_parameters->context); + m_contexts << Core::ICore::instance()->uniqueIDManager()->uniqueIdentifier(m_parameters->context); } VCSBaseSubmitEditor::VCSBaseSubmitEditor(const VCSBaseSubmitEditorParameters *parameters, From f6b08203157d11dbb8e333eee91d2ccdb236906d Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 20 Jan 2009 11:54:18 +0100 Subject: [PATCH 79/81] forgot this --- src/plugins/git/gitclient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 81820b8fa0f..9856de8e4ee 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -178,7 +178,7 @@ VCSBase::VCSBaseEditor QTC_ASSERT(rc, return 0); rc->setSource(source); if (setSourceCodec) - rc->setCodec(VCSBase::VCSBaseEditor::getCodec(m_core, source)); + rc->setCodec(VCSBase::VCSBaseEditor::getCodec(source)); } return rc; } From 897c05f57c64d07c1361c7170495641ece42c7c3 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 20 Jan 2009 15:31:33 +0100 Subject: [PATCH 80/81] replace Core::ICore::instance()->pluginManager() by ExtensionSystem::PluginManager::instance() --- src/plugins/coreplugin/basefilewizard.cpp | 37 ++--- src/plugins/coreplugin/basefilewizard.h | 19 +-- .../coreplugin/dialogs/settingsdialog.cpp | 2 +- .../editormanager/editormanager.cpp | 21 ++- src/plugins/coreplugin/icore.h | 7 - src/plugins/coreplugin/mainwindow.cpp | 4 +- src/plugins/cppeditor/cppclasswizard.cpp | 7 +- src/plugins/cppeditor/cppclasswizard.h | 23 ++- .../cppeditor/cppeditoractionhandler.cpp | 5 +- .../cppeditor/cppeditoractionhandler.h | 3 +- src/plugins/cppeditor/cppfilewizard.cpp | 3 +- src/plugins/cppeditor/cppfilewizard.h | 6 +- src/plugins/cppeditor/cppplugin.cpp | 5 +- src/plugins/designer/cpp/formclasswizard.cpp | 4 +- src/plugins/designer/cpp/formclasswizard.h | 6 +- src/plugins/designer/formeditorplugin.cpp | 5 +- src/plugins/designer/formwizard.cpp | 8 +- src/plugins/designer/formwizard.h | 8 +- src/plugins/designer/formwizarddialog.cpp | 17 +-- src/plugins/designer/formwizarddialog.h | 14 +- src/plugins/git/gitclient.cpp | 6 +- src/plugins/git/gitclient.h | 2 +- src/plugins/git/gitplugin.cpp | 6 +- src/plugins/perforce/perforceplugin.cpp | 8 +- .../projectexplorer/allprojectsfilter.cpp | 3 +- .../projectexplorer/allprojectsfilter.h | 7 +- .../projectexplorer/allprojectsfind.cpp | 4 +- src/plugins/projectexplorer/allprojectsfind.h | 6 +- .../projectexplorer/currentprojectfilter.cpp | 20 ++- .../projectexplorer/currentprojectfilter.h | 2 +- .../projectexplorer/currentprojectfind.cpp | 4 +- .../projectexplorer/currentprojectfind.h | 3 +- .../projectexplorer/pluginfilefactory.cpp | 17 +-- .../projectexplorer/pluginfilefactory.h | 18 +-- .../projectexplorer/projectexplorer.cpp | 137 ++++++++++-------- src/plugins/projectexplorer/projectexplorer.h | 6 +- .../projectfilewizardextension.cpp | 12 +- .../projectfilewizardextension.h | 7 +- src/plugins/projectexplorer/projectwindow.cpp | 6 +- src/plugins/projectexplorer/projectwindow.h | 8 +- src/plugins/qt4projectmanager/qt4project.cpp | 7 +- .../qt4projectmanager/qt4projectmanager.cpp | 43 +++--- .../qt4projectmanager/qt4projectmanager.h | 14 +- .../qt4projectmanagerplugin.cpp | 23 +-- .../wizards/consoleappwizard.cpp | 4 +- .../wizards/consoleappwizard.h | 2 +- .../wizards/guiappwizard.cpp | 6 +- .../qt4projectmanager/wizards/guiappwizard.h | 2 +- .../wizards/guiappwizarddialog.cpp | 2 +- .../wizards/guiappwizarddialog.h | 13 +- .../wizards/librarywizard.cpp | 7 +- .../qt4projectmanager/wizards/librarywizard.h | 2 +- .../qt4projectmanager/wizards/qtwizard.cpp | 7 +- .../qt4projectmanager/wizards/qtwizard.h | 14 +- src/plugins/qtscripteditor/qtscripteditor.cpp | 6 +- src/plugins/qtscripteditor/qtscripteditor.h | 8 +- .../qtscripteditoractionhandler.cpp | 22 +-- .../qtscripteditoractionhandler.h | 2 +- .../qtscripteditor/qtscripteditorfactory.cpp | 16 +- .../qtscripteditor/qtscripteditorfactory.h | 11 +- .../qtscripteditor/qtscripteditorplugin.cpp | 4 +- src/plugins/quickopen/basefilefilter.cpp | 13 +- src/plugins/quickopen/basefilefilter.h | 7 +- src/plugins/quickopen/directoryfilter.cpp | 12 +- src/plugins/quickopen/directoryfilter.h | 5 +- src/plugins/quickopen/quickopenplugin.cpp | 3 +- src/plugins/quickopen/settingspage.cpp | 2 +- .../resourceeditor/resourceeditorfactory.cpp | 9 +- .../resourceeditor/resourceeditorfactory.h | 9 +- .../resourceeditor/resourceeditorplugin.cpp | 4 +- .../resourceeditor/resourceeditorw.cpp | 4 +- src/plugins/resourceeditor/resourceeditorw.h | 7 - src/plugins/resourceeditor/resourcewizard.cpp | 7 +- src/plugins/resourceeditor/resourcewizard.h | 2 +- src/plugins/subversion/subversionplugin.cpp | 3 +- src/plugins/texteditor/basefilefind.cpp | 8 +- src/plugins/texteditor/basefilefind.h | 4 +- src/plugins/texteditor/findinfiles.cpp | 4 +- src/plugins/texteditor/findinfiles.h | 5 +- src/plugins/texteditor/fontsettingspage.cpp | 34 ++--- src/plugins/texteditor/fontsettingspage.h | 2 - .../texteditor/generalsettingspage.cpp | 60 ++++---- src/plugins/texteditor/generalsettingspage.h | 12 +- src/plugins/texteditor/plaintexteditor.cpp | 8 +- .../texteditor/plaintexteditorfactory.cpp | 15 +- .../texteditor/texteditoractionhandler.cpp | 65 +++++---- .../texteditor/texteditoractionhandler.h | 9 +- src/plugins/texteditor/texteditorplugin.cpp | 30 ++-- src/plugins/texteditor/texteditorplugin.h | 15 +- src/plugins/texteditor/texteditorsettings.cpp | 5 +- src/plugins/texteditor/textfilewizard.cpp | 3 +- src/plugins/texteditor/textfilewizard.h | 1 - src/plugins/vcsbase/basevcseditorfactory.cpp | 18 +-- src/plugins/vcsbase/basevcseditorfactory.h | 15 +- 94 files changed, 467 insertions(+), 634 deletions(-) diff --git a/src/plugins/coreplugin/basefilewizard.cpp b/src/plugins/coreplugin/basefilewizard.cpp index b6b31ea888c..17cf04615b5 100644 --- a/src/plugins/coreplugin/basefilewizard.cpp +++ b/src/plugins/coreplugin/basefilewizard.cpp @@ -346,28 +346,19 @@ void WizardEventLoop::rejected() // ---------------- BaseFileWizardPrivate struct BaseFileWizardPrivate { - explicit BaseFileWizardPrivate(const Core::BaseFileWizardParameters ¶meters, - Core::ICore *core); + explicit BaseFileWizardPrivate(const Core::BaseFileWizardParameters ¶meters) + : m_parameters(parameters), m_wizardDialog(0) + {} const Core::BaseFileWizardParameters m_parameters; QWizard *m_wizardDialog; - Core::ICore *m_core; }; -Core::BaseFileWizardPrivate::BaseFileWizardPrivate(const BaseFileWizardParameters ¶meters, - Core::ICore *core) : - m_parameters(parameters), - m_wizardDialog(0), - m_core(core) -{ -} - // ---------------- Wizard BaseFileWizard::BaseFileWizard(const BaseFileWizardParameters ¶meters, - Core::ICore *core, QObject *parent) : IWizard(parent), - m_d(new BaseFileWizardPrivate(parameters, core)) + m_d(new BaseFileWizardPrivate(parameters)) { } @@ -518,13 +509,14 @@ bool BaseFileWizard::postGenerateFiles(const GeneratedFiles &l, QString *errorMe { // File mode: open the editors in file mode and ensure editor pane const Core::GeneratedFiles::const_iterator cend = l.constEnd(); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); for (Core::GeneratedFiles::const_iterator it = l.constBegin(); it != cend; ++it) { - if (!m_d->m_core->editorManager()->openEditor(it->path(), it->editorKind())) { + if (!em->openEditor(it->path(), it->editorKind())) { *errorMessage = tr("Failed to open an editor for %1").arg(it->path()); return false; } } - m_d->m_core->editorManager()->ensureEditorManagerVisible(); + em->ensureEditorManagerVisible(); return true; } @@ -535,7 +527,6 @@ BaseFileWizard::OverwriteResult BaseFileWizard::promptOverwrite(const QString &l if (debugWizard) qDebug() << Q_FUNC_INFO << location << files; - bool existingFilesFound = false; bool oddStuffFound = false; @@ -582,7 +573,7 @@ BaseFileWizard::OverwriteResult BaseFileWizard::promptOverwrite(const QString &l const QString messageFormat = tr("The following files already exist in the directory %1:\n" "%2.\nWould you like to overwrite them?"); const QString message = messageFormat.arg(location).arg(fileNamesMsgPart); - const bool yes = (QMessageBox::question(core()->mainWindow(), + const bool yes = (QMessageBox::question(Core::ICore::instance()->mainWindow(), tr("Existing files"), message, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) @@ -590,11 +581,6 @@ BaseFileWizard::OverwriteResult BaseFileWizard::promptOverwrite(const QString &l return yes ? OverwriteOk : OverwriteCanceled; } -Core::ICore *BaseFileWizard::core() const -{ - return m_d->m_core; -} - QList BaseFileWizard::allWizards() { return ExtensionSystem::PluginManager::instance()->getObjects(); @@ -637,19 +623,18 @@ QString BaseFileWizard::buildFileName(const QString &path, QString BaseFileWizard::preferredSuffix(const QString &mimeType) const { - const QString rc = m_d->m_core->mimeDatabase()->preferredSuffixByType(mimeType); + const QString rc = Core::ICore::instance()->mimeDatabase()->preferredSuffixByType(mimeType); if (rc.isEmpty()) qWarning("%s: WARNING: Unable to find a preferred suffix for %s.", Q_FUNC_INFO, mimeType.toUtf8().constData()); return rc; } -// ------------- StandardFileWizard( +// ------------- StandardFileWizard StandardFileWizard::StandardFileWizard(const BaseFileWizardParameters ¶meters, - Core::ICore *core, QObject *parent) : - BaseFileWizard(parameters, core, parent) + BaseFileWizard(parameters, parent) { } diff --git a/src/plugins/coreplugin/basefilewizard.h b/src/plugins/coreplugin/basefilewizard.h index 40e98793cb9..5f0a1ec9b55 100644 --- a/src/plugins/coreplugin/basefilewizard.h +++ b/src/plugins/coreplugin/basefilewizard.h @@ -50,7 +50,6 @@ QT_END_NAMESPACE namespace Core { -class ICore; class IEditor; class IFileWizardExtension; @@ -69,7 +68,7 @@ public: GeneratedFile(); explicit GeneratedFile(const QString &path); GeneratedFile(const GeneratedFile &); - GeneratedFile &operator=(const GeneratedFile&); + GeneratedFile &operator=(const GeneratedFile &); ~GeneratedFile(); // Full path of the file should be created, or the suggested file name @@ -107,19 +106,19 @@ public: void setKind(IWizard::Kind k); QIcon icon() const; - void setIcon(const QIcon&); + void setIcon(const QIcon &icon); QString description() const; - void setDescription(const QString &); + void setDescription(const QString &description); QString name() const; - void setName(const QString &); + void setName(const QString &name); QString category() const; - void setCategory(const QString &); + void setCategory(const QString &category); QString trCategory() const; - void setTrCategory(const QString &); + void setTrCategory(const QString &trCategory); private: QSharedDataPointer m_d; @@ -172,7 +171,7 @@ public: protected: typedef QList WizardPageList; - explicit BaseFileWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent = 0); + explicit BaseFileWizard(const BaseFileWizardParameters ¶meters, QObject *parent = 0); // Overwrite to create the wizard dialog on the parent, adding // the extension pages. @@ -197,8 +196,6 @@ protected: OverwriteResult promptOverwrite(const QString &location, const QStringList &files, QString *errorMessage) const; - Core::ICore *core() const; - private: BaseFileWizardPrivate *m_d; }; @@ -213,7 +210,7 @@ class CORE_EXPORT StandardFileWizard : public BaseFileWizard Q_OBJECT protected: - explicit StandardFileWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent = 0); + explicit StandardFileWizard(const BaseFileWizardParameters ¶meters, QObject *parent = 0); // Implemented to create a Core::Utils::FileWizardDialog virtual QWizard *createWizardDialog(QWidget *parent, diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index 9a43b4221c3..547c0f2d40d 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -60,7 +60,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, const QString &initialCategory, QMap categories; QList pages = - CoreImpl::instance()->pluginManager()->getObjects(); + ExtensionSystem::PluginManager::instance()->getObjects(); int index = 0; foreach (IOptionsPage *page, pages) { diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index cf10f0fca66..5b8bee111e9 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -78,6 +78,11 @@ using namespace Core::Internal; enum { debugEditorManager=0 }; +static inline ExtensionSystem::PluginManager *pluginManager() +{ + return ExtensionSystem::PluginManager::instance(); +} + //===================EditorManager===================== EditorManagerPlaceHolder *EditorManagerPlaceHolder::m_current = 0; @@ -374,11 +379,12 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) : EditorManager::~EditorManager() { if (m_d->m_core) { + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); if (m_d->m_coreListener) { - m_d->m_core->pluginManager()->removeObject(m_d->m_coreListener); + pm->removeObject(m_d->m_coreListener); delete m_d->m_coreListener; } - m_d->m_core->pluginManager()->removeObject(m_d->m_openEditorsFactory); + pm->removeObject(m_d->m_openEditorsFactory); delete m_d->m_openEditorsFactory; } delete m_d; @@ -390,10 +396,11 @@ void EditorManager::init() context << m_d->m_core->uniqueIDManager()->uniqueIdentifier("QtCreator.OpenDocumentsView"); m_d->m_coreListener = new EditorClosingCoreListener(this); - m_d->m_core->pluginManager()->addObject(m_d->m_coreListener); + + pluginManager()->addObject(m_d->m_coreListener); m_d->m_openEditorsFactory = new OpenEditorsViewFactory(); - m_d->m_core->pluginManager()->addObject(m_d->m_openEditorsFactory); + pluginManager()->addObject(m_d->m_openEditorsFactory); } QSize EditorManager::minimumSizeHint() const @@ -624,7 +631,7 @@ bool EditorManager::closeEditors(const QList editorsToClose, bool askA QList acceptedEditors; //ask all core listeners to check whether the editor can be closed const QList listeners = - m_d->m_core->pluginManager()->getObjects(); + pluginManager()->getObjects(); foreach (IEditor *editor, editorsToClose) { bool editorAccepted = true; foreach (ICoreListener *listener, listeners) { @@ -740,7 +747,7 @@ EditorManager::EditorFactoryList EditorManager::editorFactories(const MimeType &mimeType, bool bestMatchOnly) const { EditorFactoryList rc; - const EditorFactoryList allFactories = m_d->m_core->pluginManager()->getObjects(); + const EditorFactoryList allFactories = pluginManager()->getObjects(); mimeTypeFactoryRecursion(m_d->m_core->mimeDatabase(), mimeType, allFactories, bestMatchOnly, &rc); if (debugEditorManager) qDebug() << Q_FUNC_INFO << mimeType.type() << " returns " << rc; @@ -767,7 +774,7 @@ IEditor *EditorManager::createEditor(const QString &editorKind, factories = editorFactories(mimeType, true); } else { // Find by editor kind - const EditorFactoryList allFactories = m_d->m_core->pluginManager()->getObjects(); + const EditorFactoryList allFactories = pluginManager()->getObjects(); const EditorFactoryList::const_iterator acend = allFactories.constEnd(); for (EditorFactoryList::const_iterator ait = allFactories.constBegin(); ait != acend; ++ait) { if (editorKind == (*ait)->kind()) { diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 4f369e23c41..565b8589345 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -44,12 +44,6 @@ class QSettings; template class QList; QT_END_NAMESPACE -namespace ExtensionSystem { - -class PluginManager; - -} // namespace ExtensionSystem - namespace Core { class ActionManager; @@ -87,7 +81,6 @@ public: virtual FileManager *fileManager() const = 0; virtual UniqueIDManager *uniqueIDManager() const = 0; virtual MessageManager *messageManager() const = 0; - virtual ExtensionSystem::PluginManager *pluginManager() const = 0; virtual EditorManager *editorManager() const = 0; virtual ProgressManager *progressManager() const = 0; virtual ScriptManager *scriptManager() const = 0; diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 664dcb89613..5742eb1a125 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -698,8 +698,8 @@ void MainWindow::openFile() static QList getNonEditorFileFactories() { - const ICore *core = CoreImpl::instance(); - const QList allFileFactories = core->pluginManager()->getObjects(); + const QList allFileFactories = + ExtensionSystem::PluginManager::instance()->getObjects(); QList nonEditorFileFactories; foreach (IFileFactory *factory, allFileFactories) { if (!qobject_cast(factory)) diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp index ecdcc110197..99db1ca123a 100644 --- a/src/plugins/cppeditor/cppclasswizard.cpp +++ b/src/plugins/cppeditor/cppclasswizard.cpp @@ -42,9 +42,6 @@ #include #include -#include -#include -#include #include #include @@ -124,8 +121,8 @@ CppClassWizardParameters CppClassWizardDialog::parameters() const // ========= CppClassWizard ========= CppClassWizard::CppClassWizard(const Core::BaseFileWizardParameters ¶meters, - Core::ICore *core, QObject *parent) : - Core::BaseFileWizard(parameters, core, parent) + QObject *parent) + : Core::BaseFileWizard(parameters, parent) { } diff --git a/src/plugins/cppeditor/cppclasswizard.h b/src/plugins/cppeditor/cppclasswizard.h index b117dc7ad09..987b6232d43 100644 --- a/src/plugins/cppeditor/cppclasswizard.h +++ b/src/plugins/cppeditor/cppclasswizard.h @@ -40,16 +40,13 @@ #include #include -QT_BEGIN_NAMESPACE -class QCheckBox; -class QComboBox; -QT_END_NAMESPACE - namespace Core { namespace Utils { - class NewClassWidget; -} -} + +class NewClassWidget; + +} // namespace Utils +} // namespace Core namespace CppEditor { namespace Internal { @@ -75,7 +72,8 @@ private: }; -struct CppClassWizardParameters { +struct CppClassWizardParameters +{ QString className; QString headerFile; QString sourceFile; @@ -83,9 +81,10 @@ struct CppClassWizardParameters { QString path; }; -class CppClassWizardDialog : public QWizard { - Q_DISABLE_COPY(CppClassWizardDialog) +class CppClassWizardDialog : public QWizard +{ Q_OBJECT + Q_DISABLE_COPY(CppClassWizardDialog) public: explicit CppClassWizardDialog(const QString &sourceSuffix, const QString &headerSuffix, @@ -104,7 +103,7 @@ class CppClassWizard : public Core::BaseFileWizard Q_OBJECT public: explicit CppClassWizard(const Core::BaseFileWizardParameters ¶meters, - Core::ICore *core, QObject *parent = 0); + QObject *parent = 0); protected: virtual QWizard *createWizardDialog(QWidget *parent, diff --git a/src/plugins/cppeditor/cppeditoractionhandler.cpp b/src/plugins/cppeditor/cppeditoractionhandler.cpp index f8f2510523b..0037f117562 100644 --- a/src/plugins/cppeditor/cppeditoractionhandler.cpp +++ b/src/plugins/cppeditor/cppeditoractionhandler.cpp @@ -38,10 +38,9 @@ using namespace CppEditor::Internal; -CPPEditorActionHandler::CPPEditorActionHandler(Core::ICore *core, - const QString &context, +CPPEditorActionHandler::CPPEditorActionHandler(const QString &context, uint optionalActions) - : TextEditor::TextEditorActionHandler(core, context, optionalActions) + : TextEditor::TextEditorActionHandler(context, optionalActions) { } CPPEditorActionHandler::~CPPEditorActionHandler() diff --git a/src/plugins/cppeditor/cppeditoractionhandler.h b/src/plugins/cppeditor/cppeditoractionhandler.h index 12428c3343e..d98d7f76588 100644 --- a/src/plugins/cppeditor/cppeditoractionhandler.h +++ b/src/plugins/cppeditor/cppeditoractionhandler.h @@ -44,8 +44,7 @@ class CPPEditorActionHandler : public TextEditor::TextEditorActionHandler Q_OBJECT public: - CPPEditorActionHandler(Core::ICore *core, - const QString &context, + CPPEditorActionHandler(const QString &context, uint optionalActions = None); virtual ~CPPEditorActionHandler(); diff --git a/src/plugins/cppeditor/cppfilewizard.cpp b/src/plugins/cppeditor/cppfilewizard.cpp index d65fed17669..795d9248c12 100644 --- a/src/plugins/cppeditor/cppfilewizard.cpp +++ b/src/plugins/cppeditor/cppfilewizard.cpp @@ -46,9 +46,8 @@ enum { debugWizard = 0 }; CppFileWizard::CppFileWizard(const BaseFileWizardParameters ¶meters, FileType type, - Core::ICore *core, QObject *parent) : - Core::StandardFileWizard(parameters, core, parent), + Core::StandardFileWizard(parameters, parent), m_type(type) { } diff --git a/src/plugins/cppeditor/cppfilewizard.h b/src/plugins/cppeditor/cppfilewizard.h index 51c91d9465c..e6328f2d32d 100644 --- a/src/plugins/cppeditor/cppfilewizard.h +++ b/src/plugins/cppeditor/cppfilewizard.h @@ -48,9 +48,9 @@ class CppFileWizard : public Core::StandardFileWizard public: typedef Core::BaseFileWizardParameters BaseFileWizardParameters; - explicit CppFileWizard(const BaseFileWizardParameters ¶meters, - FileType type, - Core::ICore *core, QObject *parent = 0); + CppFileWizard(const BaseFileWizardParameters ¶meters, + FileType type, + QObject *parent = 0); protected: static QString toAlphaNum(const QString &s); diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index f2309edb9ac..3d09e02fc02 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -40,6 +40,7 @@ #include "cppfilewizard.h" #include "cpphoverhandler.h" +#include #include #include #include @@ -47,7 +48,6 @@ #include #include #include -#include #include #include #include @@ -211,8 +211,7 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess am->actionContainer(CppEditor::Constants::M_CONTEXT)->addAction(cmd); am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd); - m_actionHandler = new CPPEditorActionHandler(core, - CppEditor::Constants::C_CPPEDITOR, + m_actionHandler = new CPPEditorActionHandler(CppEditor::Constants::C_CPPEDITOR, TextEditor::TextEditorActionHandler::Format | TextEditor::TextEditorActionHandler::UnCommentSelection | TextEditor::TextEditorActionHandler::UnCollapseAll); diff --git a/src/plugins/designer/cpp/formclasswizard.cpp b/src/plugins/designer/cpp/formclasswizard.cpp index b4e618490d4..77d002f2d72 100644 --- a/src/plugins/designer/cpp/formclasswizard.cpp +++ b/src/plugins/designer/cpp/formclasswizard.cpp @@ -48,8 +48,8 @@ enum { debugFormClassWizard = 0 }; using namespace Designer; using namespace Designer::Internal; -FormClassWizard::FormClassWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent) : - Core::BaseFileWizard(parameters, core, parent) +FormClassWizard::FormClassWizard(const BaseFileWizardParameters ¶meters, QObject *parent) + : Core::BaseFileWizard(parameters, parent) { } diff --git a/src/plugins/designer/cpp/formclasswizard.h b/src/plugins/designer/cpp/formclasswizard.h index 39b99c92037..f7b693440f3 100644 --- a/src/plugins/designer/cpp/formclasswizard.h +++ b/src/plugins/designer/cpp/formclasswizard.h @@ -38,10 +38,6 @@ #include -QT_BEGIN_NAMESPACE -class QWizard; -QT_END_NAMESPACE - namespace Designer { namespace Internal { @@ -55,7 +51,7 @@ class FormClassWizard : public Core::BaseFileWizard public: typedef Core::BaseFileWizardParameters BaseFileWizardParameters; - FormClassWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent); + FormClassWizard(const BaseFileWizardParameters ¶meters, QObject *parent); QString headerSuffix() const; QString sourceSuffix() const; diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index 6215fedff04..efd9a3b64ef 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -127,21 +127,20 @@ void FormEditorPlugin::extensionsInitialized() bool FormEditorPlugin::initializeTemplates(QString *error) { Q_UNUSED(error); - Core::ICore *core = Core::ICore::instance(); FormWizard::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); wizardParameters.setCategory(QLatin1String("Qt")); wizardParameters.setTrCategory(tr("Qt")); const QString formFileType = QLatin1String(Constants::FORM_FILE_TYPE); wizardParameters.setName(tr("Qt Designer Form")); wizardParameters.setDescription(tr("This creates a new Qt Designer form file.")); - m_formWizard = new FormWizard(wizardParameters, core, this); + m_formWizard = new FormWizard(wizardParameters, this); addObject(m_formWizard); #ifdef CPP_ENABLED wizardParameters.setKind(Core::IWizard::ClassWizard); wizardParameters.setName(tr("Qt Designer Form Class")); wizardParameters.setDescription(tr("This creates a new Qt Designer form class.")); - m_formClassWizard = new FormClassWizard(wizardParameters, core, this); + m_formClassWizard = new FormClassWizard(wizardParameters, this); addObject(m_formClassWizard); #endif return true; diff --git a/src/plugins/designer/formwizard.cpp b/src/plugins/designer/formwizard.cpp index 4bb492ce354..d69c2abbbbc 100644 --- a/src/plugins/designer/formwizard.cpp +++ b/src/plugins/designer/formwizard.cpp @@ -36,8 +36,6 @@ #include "formwindoweditor.h" #include "designerconstants.h" -#include - #include #include @@ -46,8 +44,8 @@ enum { debugFormWizard = 0 }; using namespace Designer; using namespace Designer::Internal; -FormWizard::FormWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent) : - Core::BaseFileWizard(parameters, core, parent) +FormWizard::FormWizard(const BaseFileWizardParameters ¶meters, QObject *parent) + : Core::BaseFileWizard(parameters, parent) { } @@ -55,7 +53,7 @@ QWizard *FormWizard::createWizardDialog(QWidget *parent, const QString &defaultPath, const WizardPageList &extensionPages) const { - FormFileWizardDialog *wizardDialog = new FormFileWizardDialog(core(), extensionPages, parent); + FormFileWizardDialog *wizardDialog = new FormFileWizardDialog(extensionPages, parent); wizardDialog->setPath(defaultPath); return wizardDialog; } diff --git a/src/plugins/designer/formwizard.h b/src/plugins/designer/formwizard.h index b49fea1eb7a..588189dbb64 100644 --- a/src/plugins/designer/formwizard.h +++ b/src/plugins/designer/formwizard.h @@ -36,15 +36,9 @@ #include -QT_BEGIN_NAMESPACE -class QWizard; -QT_END_NAMESPACE - namespace Designer { namespace Internal { -class FormFileWizardDialog; - class FormWizard : public Core::BaseFileWizard { Q_DISABLE_COPY(FormWizard) @@ -53,7 +47,7 @@ class FormWizard : public Core::BaseFileWizard public: typedef Core::BaseFileWizardParameters BaseFileWizardParameters; - explicit FormWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent); + FormWizard(const BaseFileWizardParameters ¶meters, QObject *parent); protected: virtual QWizard *createWizardDialog(QWidget *parent, diff --git a/src/plugins/designer/formwizarddialog.cpp b/src/plugins/designer/formwizarddialog.cpp index 67ed8160198..d7905a56545 100644 --- a/src/plugins/designer/formwizarddialog.cpp +++ b/src/plugins/designer/formwizarddialog.cpp @@ -50,12 +50,10 @@ namespace Designer { namespace Internal { // ----------------- FormWizardDialog -FormWizardDialog::FormWizardDialog(Core::ICore *core, - const WizardPageList &extensionPages, - QWidget *parent) : - QWizard(parent), - m_formPage(new FormTemplateWizardPagePage), - m_core(core) +FormWizardDialog::FormWizardDialog(const WizardPageList &extensionPages, + QWidget *parent) + : QWizard(parent), + m_formPage(new FormTemplateWizardPagePage) { init(extensionPages); } @@ -82,10 +80,9 @@ QString FormWizardDialog::templateContents() const } // ----------------- FormFileWizardDialog -FormFileWizardDialog::FormFileWizardDialog(Core::ICore *core, - const WizardPageList &extensionPages, - QWidget *parent) : - FormWizardDialog(core, extensionPages, parent), +FormFileWizardDialog::FormFileWizardDialog(const WizardPageList &extensionPages, + QWidget *parent) + : FormWizardDialog(extensionPages, parent), m_filePage(new Core::Utils::FileWizardPage) { setPage(FilePageId, m_filePage); diff --git a/src/plugins/designer/formwizarddialog.h b/src/plugins/designer/formwizarddialog.h index 52aaed4cd02..0ecd7274b1d 100644 --- a/src/plugins/designer/formwizarddialog.h +++ b/src/plugins/designer/formwizarddialog.h @@ -37,10 +37,9 @@ #include namespace Core { - class ICore; - namespace Utils { - class FileWizardPage; - } +namespace Utils { + class FileWizardPage; +} } namespace Designer { @@ -58,8 +57,7 @@ class FormWizardDialog : public QWizard public: typedef QList WizardPageList; - explicit FormWizardDialog(Core::ICore *core, - const WizardPageList &extensionPages, + explicit FormWizardDialog(const WizardPageList &extensionPages, QWidget *parent = 0); QString templateContents() const; @@ -68,7 +66,6 @@ private: void init(const WizardPageList &extensionPages); FormTemplateWizardPagePage *m_formPage; - Core::ICore *m_core; mutable QString m_templateContents; }; @@ -82,8 +79,7 @@ class FormFileWizardDialog : public FormWizardDialog Q_OBJECT public: - explicit FormFileWizardDialog(Core::ICore *core, - const WizardPageList &extensionPages, + explicit FormFileWizardDialog(const WizardPageList &extensionPages, QWidget *parent = 0); QString path() const; diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 9856de8e4ee..fe2394c019d 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -97,10 +97,10 @@ static QString formatCommand(const QString &binary, const QStringList &args) } // ---------------- GitClient -GitClient::GitClient(GitPlugin* plugin, Core::ICore *core) : - m_msgWait(tr("Waiting for data...")), +GitClient::GitClient(GitPlugin* plugin) + : m_msgWait(tr("Waiting for data...")), m_plugin(plugin), - m_core(core) + m_core(Core::ICore::instance()) { if (QSettings *s = m_core->settings()) m_settings.fromSettings(s); diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index aa4ad97015a..c920ffc1b32 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -68,7 +68,7 @@ class GitClient : public QObject Q_OBJECT public: - explicit GitClient(GitPlugin *plugin, Core::ICore *core); + explicit GitClient(GitPlugin *plugin); ~GitClient(); bool managesDirectory(const QString &) const { return false; } diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index a49ba12b42e..f00f6d711ef 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -233,7 +233,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *error_message) Q_UNUSED(error_message); m_core = Core::ICore::instance(); - m_gitClient = new GitClient(this, m_core); + m_gitClient = new GitClient(this); // Create the globalcontext list to register actions accordingly QList globalcontext; globalcontext << m_core->uniqueIDManager()-> @@ -250,7 +250,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *error_message) static const char *describeSlot = SLOT(show(QString,QString)); const int editorCount = sizeof(editorParameters)/sizeof(VCSBase::VCSBaseEditorParameters); for (int i = 0; i < editorCount; i++) { - m_editorFactories.push_back(new GitEditorFactory(editorParameters + i, m_core, m_gitClient, describeSlot)); + m_editorFactories.push_back(new GitEditorFactory(editorParameters + i, m_gitClient, describeSlot)); addObject(m_editorFactories.back()); } @@ -622,7 +622,7 @@ void GitPlugin::startCommit() Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const CommitData &cd) { - Core::IEditor *editor = m_core->editorManager()->openEditor(fileName, QLatin1String(Constants::GITSUBMITEDITOR_KIND)); + Core::IEditor *editor = m_core->editorManager()->openEditor(fileName, QLatin1String(Constants::GITSUBMITEDITOR_KIND)); if (Git::Constants::debug) qDebug() << Q_FUNC_INFO << fileName << editor; m_core->editorManager()->ensureEditorManagerVisible(); diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index 75a868232e2..de096457e67 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -211,7 +211,7 @@ bool PerforcePlugin::initialize(const QStringList &arguments, QString *errorMess static const char *describeSlot = SLOT(describe(QString,QString)); const int editorCount = sizeof(editorParameters)/sizeof(VCSBase::VCSBaseEditorParameters); for (int i = 0; i < editorCount; i++) { - m_editorFactories.push_back(new PerforceEditorFactory(editorParameters + i, core, this, describeSlot)); + m_editorFactories.push_back(new PerforceEditorFactory(editorParameters + i, this, describeSlot)); addObject(m_editorFactories.back()); } @@ -596,7 +596,8 @@ void PerforcePlugin::annotate(const QString &fileName) CommandToWindow|StdErrToWindow|ErrorToWindow, codec); if (!result.error) { const QFileInfo fi(fileName); - showOutputInEditor(tr("p4 annotate %1").arg(fi.fileName()), result.stdOut, VCSBase::AnnotateOutput, codec); + showOutputInEditor(tr("p4 annotate %1").arg(fi.fileName()), + result.stdOut, VCSBase::AnnotateOutput, codec); } } @@ -623,7 +624,8 @@ void PerforcePlugin::filelog(const QString &fileName) CommandToWindow|StdErrToWindow|ErrorToWindow, codec); if (!result.error) { const QFileInfo fi(fileName); - showOutputInEditor(tr("p4 filelog %1").arg(fi.fileName()), result.stdOut, VCSBase::LogOutput, codec); + showOutputInEditor(tr("p4 filelog %1").arg(fi.fileName()), + result.stdOut, VCSBase::LogOutput, codec); } } diff --git a/src/plugins/projectexplorer/allprojectsfilter.cpp b/src/plugins/projectexplorer/allprojectsfilter.cpp index 07e34399b0b..cb1457f8366 100644 --- a/src/plugins/projectexplorer/allprojectsfilter.cpp +++ b/src/plugins/projectexplorer/allprojectsfilter.cpp @@ -43,8 +43,7 @@ using namespace QuickOpen; using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; -AllProjectsFilter::AllProjectsFilter(ProjectExplorerPlugin *pe, ICore *core) - : BaseFileFilter(core) +AllProjectsFilter::AllProjectsFilter(ProjectExplorerPlugin *pe) { m_projectExplorer = pe; connect(m_projectExplorer, SIGNAL(fileListChanged()), diff --git a/src/plugins/projectexplorer/allprojectsfilter.h b/src/plugins/projectexplorer/allprojectsfilter.h index 8de2de425e6..f94d51ea1bb 100644 --- a/src/plugins/projectexplorer/allprojectsfilter.h +++ b/src/plugins/projectexplorer/allprojectsfilter.h @@ -36,13 +36,10 @@ #include -#include -#include -#include #include +#include #include - namespace ProjectExplorer { class ProjectExplorerPlugin; @@ -54,7 +51,7 @@ class AllProjectsFilter : public QuickOpen::BaseFileFilter Q_OBJECT public: - AllProjectsFilter(ProjectExplorerPlugin *pe, Core::ICore *core); + explicit AllProjectsFilter(ProjectExplorerPlugin *pe); QString trName() const { return tr("Files in any project"); } QString name() const { return "Files in any project"; } QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; } diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp index 26998982614..84af045f050 100644 --- a/src/plugins/projectexplorer/allprojectsfind.cpp +++ b/src/plugins/projectexplorer/allprojectsfind.cpp @@ -47,8 +47,8 @@ using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; using namespace TextEditor; -AllProjectsFind::AllProjectsFind(ProjectExplorerPlugin *plugin, Core::ICore *core, SearchResultWindow *resultWindow) - : BaseFileFind(core, resultWindow), +AllProjectsFind::AllProjectsFind(ProjectExplorerPlugin *plugin, SearchResultWindow *resultWindow) + : BaseFileFind(resultWindow), m_plugin(plugin), m_configWidget(0) { diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h index 48d1457b546..1b93842c691 100644 --- a/src/plugins/projectexplorer/allprojectsfind.h +++ b/src/plugins/projectexplorer/allprojectsfind.h @@ -34,15 +34,11 @@ #ifndef ALLPROJECTSFIND_H #define ALLPROJECTSFIND_H -#include #include #include #include #include -#include -#include -#include namespace ProjectExplorer { @@ -56,7 +52,7 @@ class AllProjectsFind : public TextEditor::BaseFileFind Q_OBJECT public: - AllProjectsFind(ProjectExplorerPlugin *plugin, Core::ICore *core, Find::SearchResultWindow *resultWindow); + AllProjectsFind(ProjectExplorerPlugin *plugin, Find::SearchResultWindow *resultWindow); QString name() const; diff --git a/src/plugins/projectexplorer/currentprojectfilter.cpp b/src/plugins/projectexplorer/currentprojectfilter.cpp index 4b9e585cc13..496aeb326c0 100644 --- a/src/plugins/projectexplorer/currentprojectfilter.cpp +++ b/src/plugins/projectexplorer/currentprojectfilter.cpp @@ -36,20 +36,18 @@ #include "project.h" #include "session.h" -#include -#include +#include #include -#include +#include +#include using namespace Core; using namespace QuickOpen; using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; -CurrentProjectFilter::CurrentProjectFilter(ProjectExplorerPlugin *pe, - ICore *core) - : BaseFileFilter(core), - m_project(0) +CurrentProjectFilter::CurrentProjectFilter(ProjectExplorerPlugin *pe) + : BaseFileFilter(), m_project(0) { m_projectExplorer = pe; @@ -73,12 +71,12 @@ void CurrentProjectFilter::currentProjectChanged(ProjectExplorer::Project *proje { if (project == m_project) return; - if (m_project) { + if (m_project) disconnect(m_project, SIGNAL(fileListChanged()), this, SLOT(refreshInternally())); - } - if (project) { + + if (project) connect(project, SIGNAL(fileListChanged()), this, SLOT(refreshInternally())); - } + m_project = project; refreshInternally(); } diff --git a/src/plugins/projectexplorer/currentprojectfilter.h b/src/plugins/projectexplorer/currentprojectfilter.h index 92ae4b68635..25b2a12f576 100644 --- a/src/plugins/projectexplorer/currentprojectfilter.h +++ b/src/plugins/projectexplorer/currentprojectfilter.h @@ -54,7 +54,7 @@ class CurrentProjectFilter : public QuickOpen::BaseFileFilter Q_OBJECT public: - CurrentProjectFilter(ProjectExplorerPlugin *pe, Core::ICore *core); + CurrentProjectFilter(ProjectExplorerPlugin *pe); QString trName() const { return tr("Files in current project"); } QString name() const { return "Files in current project"; } QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; } diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index cf1d81c3bc7..e453d0c6a49 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -47,8 +47,8 @@ using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; using namespace TextEditor; -CurrentProjectFind::CurrentProjectFind(ProjectExplorerPlugin *plugin, Core::ICore *core, SearchResultWindow *resultWindow) - : BaseFileFind(core, resultWindow), +CurrentProjectFind::CurrentProjectFind(ProjectExplorerPlugin *plugin, SearchResultWindow *resultWindow) + : BaseFileFind(resultWindow), m_plugin(plugin), m_configWidget(0) { diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h index 5c08be0f2fc..8690911277a 100644 --- a/src/plugins/projectexplorer/currentprojectfind.h +++ b/src/plugins/projectexplorer/currentprojectfind.h @@ -34,7 +34,6 @@ #ifndef CURRENTPROJECTFIND_H #define CURRENTPROJECTFIND_H -#include #include #include #include @@ -51,7 +50,7 @@ namespace Internal { class CurrentProjectFind : public TextEditor::BaseFileFind { public: - CurrentProjectFind(ProjectExplorerPlugin *plugin, Core::ICore *core, Find::SearchResultWindow *resultWindow); + CurrentProjectFind(ProjectExplorerPlugin *plugin, Find::SearchResultWindow *resultWindow); QString name() const; diff --git a/src/plugins/projectexplorer/pluginfilefactory.cpp b/src/plugins/projectexplorer/pluginfilefactory.cpp index de7153c4015..55b38f681bf 100644 --- a/src/plugins/projectexplorer/pluginfilefactory.cpp +++ b/src/plugins/projectexplorer/pluginfilefactory.cpp @@ -46,10 +46,9 @@ using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; -ProjectFileFactory::ProjectFileFactory(const Core::ICore* core, IProjectManager *manager) : - m_mimeTypes(manager->mimeType()), +ProjectFileFactory::ProjectFileFactory(IProjectManager *manager) + : m_mimeTypes(manager->mimeType()), m_kind(Constants::FILE_FACTORY_KIND), - m_core(core), m_manager(manager) { } @@ -70,7 +69,7 @@ Core::IFile *ProjectFileFactory::open(const QString &fileName) ProjectExplorerPlugin *pe = ProjectExplorerPlugin::instance(); if (!pe->openProject(fileName)) { - m_core->messageManager()->printToOutputPane(tr("Could not open the following project: '%1'").arg(fileName)); + Core::ICore::instance()->messageManager()->printToOutputPane(tr("Could not open the following project: '%1'").arg(fileName)); } else if (pe->session()) { SessionManager *session = pe->session(); if (session->projects().count() == 1) @@ -81,21 +80,21 @@ Core::IFile *ProjectFileFactory::open(const QString &fileName) return fIFace; } -QList ProjectFileFactory::createFactories(const Core::ICore* core, - QString *filterString) +QList ProjectFileFactory::createFactories(QString *filterString) { // Register factories for all project managers QList rc; - QList projectManagers = core->pluginManager()->getObjects(); + QList projectManagers = + ExtensionSystem::PluginManager::instance()->getObjects(); const QString filterSeparator = QLatin1String(";;"); filterString->clear(); foreach (IProjectManager *manager, projectManagers) { - rc.push_back(new ProjectFileFactory(core, manager)); + rc.push_back(new ProjectFileFactory(manager)); if (!filterString->isEmpty()) *filterString += filterSeparator; const QString mimeType = manager->mimeType(); - const QString pFilterString = core->mimeDatabase()->findByType(mimeType).filterString(); + const QString pFilterString = Core::ICore::instance()->mimeDatabase()->findByType(mimeType).filterString(); *filterString += pFilterString; } return rc; diff --git a/src/plugins/projectexplorer/pluginfilefactory.h b/src/plugins/projectexplorer/pluginfilefactory.h index 035eb50e665..e23be0e9f9f 100644 --- a/src/plugins/projectexplorer/pluginfilefactory.h +++ b/src/plugins/projectexplorer/pluginfilefactory.h @@ -35,16 +35,14 @@ #define PLUGINFILEFACTORY_H #include + #include #include -namespace Core { - class ICore; -} - namespace ProjectExplorer { - class IProjectManager; - class ProjectExplorerPlugin; + +class IProjectManager; +class ProjectExplorerPlugin; namespace Internal { @@ -53,20 +51,20 @@ namespace Internal { class ProjectFileFactory : public Core::IFileFactory { Q_OBJECT - explicit ProjectFileFactory(const Core::ICore* core, ProjectExplorer::IProjectManager *manager); -public: + explicit ProjectFileFactory(ProjectExplorer::IProjectManager *manager); + +public: virtual QStringList mimeTypes() const; bool canOpen(const QString &fileName); QString kind() const; Core::IFile *open(const QString &fileName); - static QList createFactories(const Core::ICore* core, QString *filterString); + static QList createFactories(QString *filterString); private: const QStringList m_mimeTypes; const QString m_kind; - const Core::ICore* m_core; ProjectExplorer::IProjectManager *m_manager; }; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index f4f5efc52be..027e9876d89 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -152,15 +152,15 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er Q_UNUSED(arguments); Q_UNUSED(error); - m_core = Core::ICore::instance(); - Core::ActionManager *am = m_core->actionManager(); + Core::ICore *core = Core::ICore::instance(); + Core::ActionManager *am = core->actionManager(); addObject(this); - connect(m_core->fileManager(), SIGNAL(currentFileChanged(const QString&)), + connect(core->fileManager(), SIGNAL(currentFileChanged(const QString&)), this, SLOT(setCurrentFile(const QString&))); - m_session = new SessionManager(m_core, this); + m_session = new SessionManager(core, this); connect(m_session, SIGNAL(projectAdded(ProjectExplorer::Project *)), this, SIGNAL(fileListChanged())); @@ -171,13 +171,13 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er connect(m_session, SIGNAL(startupProjectChanged(ProjectExplorer::Project *)), this, SLOT(startupProjectChanged())); - m_proWindow = new ProjectWindow(m_core); + m_proWindow = new ProjectWindow; QList globalcontext; globalcontext.append(Core::Constants::C_GLOBAL_ID); QList pecontext; - pecontext << m_core->uniqueIDManager()->uniqueIdentifier(Constants::C_PROJECTEXPLORER); + pecontext << core->uniqueIDManager()->uniqueIdentifier(Constants::C_PROJECTEXPLORER); Core::BaseMode *mode = new Core::BaseMode; mode->setName(tr("Projects")); @@ -199,15 +199,15 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er addAutoReleasedObject(new CoreListenerCheckingForRunningBuild(m_buildManager)); - m_outputPane = new OutputPane(m_core); + m_outputPane = new OutputPane(core); addAutoReleasedObject(m_outputPane); connect(m_session, SIGNAL(projectRemoved(ProjectExplorer::Project *)), m_outputPane, SLOT(projectRemoved())); - AllProjectsFilter *allProjectsFilter = new AllProjectsFilter(this, m_core); + AllProjectsFilter *allProjectsFilter = new AllProjectsFilter(this); addAutoReleasedObject(allProjectsFilter); - CurrentProjectFilter *currentProjectFilter = new CurrentProjectFilter(this, m_core); + CurrentProjectFilter *currentProjectFilter = new CurrentProjectFilter(this); addAutoReleasedObject(currentProjectFilter); addAutoReleasedObject(new BuildSettingsPanelFactory); @@ -218,18 +218,19 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er ProcessStepFactory *processStepFactory = new ProcessStepFactory; addAutoReleasedObject(processStepFactory); - AllProjectsFind *allProjectsFind = new AllProjectsFind(this, m_core, - m_core->pluginManager()->getObject()); + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + AllProjectsFind *allProjectsFind = new AllProjectsFind(this, + pm->getObject()); addAutoReleasedObject(allProjectsFind); - CurrentProjectFind *currentProjectFind = new CurrentProjectFind(this, m_core, - m_core->pluginManager()->getObject()); + CurrentProjectFind *currentProjectFind = new CurrentProjectFind(this, + pm->getObject()); addAutoReleasedObject(currentProjectFind); addAutoReleasedObject(new ApplicationRunConfigurationRunner); addAutoReleasedObject(new CustomExecutableRunConfigurationFactory); - addAutoReleasedObject(new ProjectFileWizardExtension(m_core)); + addAutoReleasedObject(new ProjectFileWizardExtension); // context menus Core::ActionContainer *msessionContextMenu = @@ -255,7 +256,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er am->actionContainer(Core::Constants::MENU_BAR); // mode manager (for fancy actions) - Core::ModeManager *modeManager = m_core->modeManager(); + Core::ModeManager *modeManager = core->modeManager(); // build menu Core::ActionContainer *mbuild = @@ -585,13 +586,13 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er m_renameFileAction->setEnabled(false); m_renameFileAction->setVisible(false); - connect(m_core, SIGNAL(saveSettingsRequested()), + connect(core, SIGNAL(saveSettingsRequested()), this, SLOT(savePersistentSettings())); - addAutoReleasedObject(new ProjectTreeWidgetFactory(m_core)); - addAutoReleasedObject(new FolderNavigationWidgetFactory(m_core)); + addAutoReleasedObject(new ProjectTreeWidgetFactory(core)); + addAutoReleasedObject(new FolderNavigationWidgetFactory(core)); - if (QSettings *s = m_core->settings()) + if (QSettings *s = core->settings()) m_recentProjects = s->value("ProjectExplorer/RecentProjects/Files", QStringList()).toStringList(); for (QStringList::iterator it = m_recentProjects.begin(); it != m_recentProjects.end(); ) { if (QFileInfo(*it).isFile()) { @@ -627,7 +628,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er updateActions(); - connect(m_core, SIGNAL(coreOpened()), this, SLOT(restoreSession())); + connect(Core::ICore::instance(), SIGNAL(coreOpened()), this, SLOT(restoreSession())); return true; } @@ -647,7 +648,7 @@ template ProjectFileFactory * ProjectExplorerPlugin::findProjectFileFactory(const QString &filename) const { // Find factory - if (const Core::MimeType mt = m_core->mimeDatabase()->findByFile(QFileInfo(filename))) + if (const Core::MimeType mt = Core::ICore::instance()->mimeDatabase()->findByFile(QFileInfo(filename))) if (ProjectFileFactory *pf = findFactory(mt.type(), m_fileFactories.constBegin(), m_fileFactories.constEnd())) return pf; qWarning("Unable to find project file factory for '%s'", filename.toUtf8().constData()); @@ -705,9 +706,9 @@ void ProjectExplorerPlugin::unloadProject() bool success = false; if (readonlycount > 0) - success = m_core->fileManager()->saveModifiedFiles(filesToSave).isEmpty(); + success = Core::ICore::instance()->fileManager()->saveModifiedFiles(filesToSave).isEmpty(); else - success = m_core->fileManager()->saveModifiedFilesSilently(filesToSave).isEmpty(); + success = Core::ICore::instance()->fileManager()->saveModifiedFilesSilently(filesToSave).isEmpty(); if (!success) return; @@ -729,7 +730,7 @@ void ProjectExplorerPlugin::clearSession() void ProjectExplorerPlugin::extensionsInitialized() { - m_fileFactories = ProjectFileFactory::createFactories(m_core, &m_projectFilterString); + m_fileFactories = ProjectFileFactory::createFactories(&m_projectFilterString); foreach (ProjectFileFactory *pf, m_fileFactories) { m_profileMimeTypes += pf->mimeTypes(); addAutoReleasedObject(pf); @@ -755,7 +756,7 @@ void ProjectExplorerPlugin::newProject() defaultLocation = dir.absolutePath(); } - m_core->showNewItemDialog(tr("New Project", "Title of dialog"), + Core::ICore::instance()->showNewItemDialog(tr("New Project", "Title of dialog"), Core::BaseFileWizard::findWizardsOfKind(Core::IWizard::ProjectWizard), defaultLocation); updateActions(); @@ -805,7 +806,7 @@ void ProjectExplorerPlugin::savePersistentSettings() m_session->save(); } - QSettings *s = m_core->settings(); + QSettings *s = Core::ICore::instance()->settings(); if (s) { s->setValue("ProjectExplorer/StartupSession", m_session->file()->fileName()); s->setValue("ProjectExplorer/RecentProjects/Files", m_recentProjects); @@ -829,14 +830,14 @@ bool ProjectExplorerPlugin::openProjects(const QStringList &fileNames) if (debug) qDebug() << "ProjectExplorerPlugin - opening projects " << fileNames; - QList projectManagers = - m_core->pluginManager()->getObjects(); + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + QList projectManagers = pm->getObjects(); //QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); // bool blocked = blockSignals(true); QList openedPro; - foreach (QString fileName, fileNames) - if (const Core::MimeType mt = m_core->mimeDatabase()->findByFile(QFileInfo(fileName))) { + foreach (const QString &fileName, fileNames) { + if (const Core::MimeType mt = Core::ICore::instance()->mimeDatabase()->findByFile(QFileInfo(fileName))) { foreach (IProjectManager *manager, projectManagers) if (manager->mimeType() == mt.type()) { if (Project *pro = manager->openProject(fileName)) @@ -845,6 +846,7 @@ bool ProjectExplorerPlugin::openProjects(const QStringList &fileNames) break; } } + } //blockSignals(blocked); if (openedPro.isEmpty()) { @@ -868,7 +870,7 @@ bool ProjectExplorerPlugin::openProjects(const QStringList &fileNames) updateActions(); - m_core->modeManager()->activateMode(Core::Constants::MODE_EDIT); + Core::ICore::instance()->modeManager()->activateMode(Core::Constants::MODE_EDIT); QApplication::restoreOverrideCursor(); return true; @@ -984,7 +986,7 @@ void ProjectExplorerPlugin::restoreSession() } // update welcome page - Core::ModeManager *modeManager = m_core->modeManager(); + Core::ModeManager *modeManager = Core::ICore::instance()->modeManager(); connect(modeManager, SIGNAL(currentModeChanged(Core::IMode*)), this, SLOT(currentModeChanged(Core::IMode*))); if (Core::Internal::WelcomeMode *welcomeMode = qobject_cast(modeManager->mode(Core::Constants::MODE_WELCOME))) { updateWelcomePage(welcomeMode); @@ -992,7 +994,7 @@ void ProjectExplorerPlugin::restoreSession() connect(welcomeMode, SIGNAL(requestProject(QString)), this, SLOT(loadProject(QString))); } - m_core->openFiles(arguments); + Core::ICore::instance()->openFiles(arguments); updateActions(); } @@ -1119,6 +1121,8 @@ void ProjectExplorerPlugin::setCurrent(Project *project, QString filePath, Node else node = m_session->nodeForFile(filePath); + Core::ICore *core = Core::ICore::instance(); + bool projectChanged = false; if (m_currentProject != project) { int oldContext = -1; @@ -1133,11 +1137,11 @@ void ProjectExplorerPlugin::setCurrent(Project *project, QString filePath, Node newContext = project->projectManager()->projectContext(); newLanguageID = project->projectManager()->projectLanguage(); } - m_core->removeAdditionalContext(oldContext); - m_core->removeAdditionalContext(oldLanguageID); - m_core->addAdditionalContext(newContext); - m_core->addAdditionalContext(newLanguageID); - m_core->updateContext(); + core->removeAdditionalContext(oldContext); + core->removeAdditionalContext(oldLanguageID); + core->addAdditionalContext(newContext); + core->addAdditionalContext(newLanguageID); + core->updateContext(); m_currentProject = project; @@ -1155,16 +1159,16 @@ void ProjectExplorerPlugin::setCurrent(Project *project, QString filePath, Node qDebug() << "ProjectExplorer - currentProjectChanged(" << (project ? project->name() : "0") << ")"; // Enable the right VCS if (const Core::IFile *projectFile = project ? project->file() : static_cast(0)) { - m_core->vcsManager()->setVCSEnabled(QFileInfo(projectFile->fileName()).absolutePath()); + core->vcsManager()->setVCSEnabled(QFileInfo(projectFile->fileName()).absolutePath()); } else { - m_core->vcsManager()->setAllVCSEnabled(); + core->vcsManager()->setAllVCSEnabled(); } emit currentProjectChanged(project); updateActions(); } - m_core->fileManager()->setCurrentFile(filePath); + core->fileManager()->setCurrentFile(filePath); } void ProjectExplorerPlugin::updateActions() @@ -1225,7 +1229,7 @@ bool ProjectExplorerPlugin::saveModifiedFiles(const QList & projects) if (debug) qDebug() << "ProjectExplorerPlugin::saveModifiedFiles"; - QList modifiedFi = m_core->fileManager()->modifiedFiles(); + QList modifiedFi = Core::ICore::instance()->fileManager()->modifiedFiles(); QMap modified; QStringList allFiles; @@ -1256,7 +1260,7 @@ bool ProjectExplorerPlugin::saveModifiedFiles(const QList & projects) if (!filesToSave.isEmpty()) { bool cancelled; - m_core->fileManager()->saveModifiedFiles(filesToSave, &cancelled, + Core::ICore::instance()->fileManager()->saveModifiedFiles(filesToSave, &cancelled, tr("The following dependencies are modified, do you want to save them?")); if (cancelled) { return false; @@ -1430,7 +1434,8 @@ void ProjectExplorerPlugin::startupProjectChanged() // NBS TODO implement more than one runner IRunConfigurationRunner *ProjectExplorerPlugin::findRunner(QSharedPointer config, const QString &mode) { - const QList runners = m_core->pluginManager()->getObjects(); + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + const QList runners = pm->getObjects(); foreach (IRunConfigurationRunner *runner, runners) if (runner->canRun(config, mode)) return runner; @@ -1482,7 +1487,7 @@ void ProjectExplorerPlugin::updateRecentProjectMenu() qDebug() << "ProjectExplorerPlugin::updateRecentProjectMenu"; Core::ActionContainer *aci = - m_core->actionManager()->actionContainer(Constants::M_RECENTPROJECTS); + Core::ICore::instance()->actionManager()->actionContainer(Constants::M_RECENTPROJECTS); QMenu *menu = aci->menu(); menu->clear(); m_recentProjectsActions.clear(); @@ -1549,7 +1554,7 @@ void ProjectExplorerPlugin::addNewFile() if (!m_currentNode && m_currentNode->nodeType() == ProjectNodeType) return; const QString location = QFileInfo(m_currentNode->path()).dir().absolutePath(); - m_core->showNewItemDialog(tr("New File", "Title of dialog"), + Core::ICore::instance()->showNewItemDialog(tr("New File", "Title of dialog"), Core::BaseFileWizard::findWizardsOfKind(Core::IWizard::FileWizard) + Core::BaseFileWizard::findWizardsOfKind(Core::IWizard::ClassWizard), location); @@ -1560,14 +1565,15 @@ void ProjectExplorerPlugin::addExistingFiles() if (!m_currentNode && m_currentNode->nodeType() == ProjectNodeType) return; ProjectNode *projectNode = qobject_cast(m_currentNode); + Core::ICore *core = Core::ICore::instance(); const QString dir = QFileInfo(m_currentNode->path()).dir().absolutePath(); - QStringList fileNames = QFileDialog::getOpenFileNames(m_core->mainWindow(), tr("Add Existing Files"), dir); + QStringList fileNames = QFileDialog::getOpenFileNames(core->mainWindow(), tr("Add Existing Files"), dir); if (fileNames.isEmpty()) return; QHash fileTypeToFiles; foreach (const QString &fileName, fileNames) { - FileType fileType = typeForFileName(m_core->mimeDatabase(), QFileInfo(fileName)); + FileType fileType = typeForFileName(core->mimeDatabase(), QFileInfo(fileName)); fileTypeToFiles.insertMulti(fileType, fileName); } @@ -1578,17 +1584,17 @@ void ProjectExplorerPlugin::addExistingFiles() if (!notAdded.isEmpty()) { QString message = tr("Could not add following files to project %1:\n").arg(projectNode->name()); QString files = notAdded.join("\n"); - QMessageBox::warning(m_core->mainWindow(), tr("Add files to project failed"), + QMessageBox::warning(core->mainWindow(), tr("Add files to project failed"), message + files); foreach (const QString &file, notAdded) fileNames.removeOne(file); } - if (Core::IVersionControl *vcManager = m_core->vcsManager()->findVersionControlForDirectory(dir)) + if (Core::IVersionControl *vcManager = core->vcsManager()->findVersionControlForDirectory(dir)) if (vcManager->supportsOperation(Core::IVersionControl::AddOperation)) { const QString files = fileNames.join(QString(QLatin1Char('\n'))); QMessageBox::StandardButton button = - QMessageBox::question(m_core->mainWindow(), tr("Add to Version Control"), + QMessageBox::question(core->mainWindow(), tr("Add to Version Control"), tr("Add files\n%1\nto version control (%2)?").arg(files, vcManager->name()), QMessageBox::Yes | QMessageBox::No); if (button == QMessageBox::Yes) { @@ -1601,7 +1607,7 @@ void ProjectExplorerPlugin::addExistingFiles() if (!notAddedToVc.isEmpty()) { const QString message = tr("Could not add following files to version control (%1)\n").arg(vcManager->name()); const QString filesNotAdded = notAddedToVc.join(QString(QLatin1Char('\n'))); - QMessageBox::warning(m_core->mainWindow(), tr("Add files to version control failed"), + QMessageBox::warning(core->mainWindow(), tr("Add files to version control failed"), message + filesNotAdded); } } @@ -1612,19 +1618,22 @@ void ProjectExplorerPlugin::openFile() { if (m_currentNode) return; - m_core->editorManager()->openEditor(m_currentNode->path()); - m_core->editorManager()->ensureEditorManagerVisible(); + Core::ICore *core = Core::ICore::instance(); + core->editorManager()->openEditor(m_currentNode->path()); + core->editorManager()->ensureEditorManagerVisible(); } void ProjectExplorerPlugin::removeFile() { if (!m_currentNode && m_currentNode->nodeType() == FileNodeType) return; + FileNode *fileNode = qobject_cast(m_currentNode); + Core::ICore *core = Core::ICore::instance(); const QString filePath = m_currentNode->path(); const QString fileDir = QFileInfo(filePath).dir().absolutePath(); - RemoveFileDialog removeFileDialog(filePath, m_core->mainWindow()); + RemoveFileDialog removeFileDialog(filePath, core->mainWindow()); if (removeFileDialog.exec() == QDialog::Accepted) { const bool deleteFile = removeFileDialog.isDeleteFileChecked(); @@ -1634,13 +1643,13 @@ void ProjectExplorerPlugin::removeFile() Q_ASSERT(projectNode); if (!projectNode->removeFiles(fileNode->fileType(), QStringList(filePath))) { - QMessageBox::warning(m_core->mainWindow(), tr("Remove file failed"), + QMessageBox::warning(core->mainWindow(), tr("Remove file failed"), tr("Could not remove file %1 from project %2.").arg(filePath).arg(projectNode->name())); return; } // remove from version control - m_core->vcsManager()->showDeleteDialog(filePath); + core->vcsManager()->showDeleteDialog(filePath); // remove from file system if (deleteFile) { @@ -1649,7 +1658,7 @@ void ProjectExplorerPlugin::removeFile() if (file.exists()) { // could have been deleted by vc if (!file.remove()) - QMessageBox::warning(m_core->mainWindow(), tr("Delete file failed"), + QMessageBox::warning(core->mainWindow(), tr("Delete file failed"), tr("Could not delete file %1.").arg(filePath)); } } @@ -1753,11 +1762,12 @@ void ProjectExplorerPlugin::populateOpenWithMenu() bool anyMatches = false; const QString fileName = currentNode()->path(); - if (const Core::MimeType mt = m_core->mimeDatabase()->findByFile(QFileInfo(fileName))) { - const EditorFactoryList factories = m_core->editorManager()->editorFactories(mt, false); + Core::ICore *core = Core::ICore::instance(); + if (const Core::MimeType mt = core->mimeDatabase()->findByFile(QFileInfo(fileName))) { + const EditorFactoryList factories = core->editorManager()->editorFactories(mt, false); anyMatches = !factories.empty(); if (anyMatches) { - const QList editorsOpenForFile = m_core->editorManager()->editorsForFileName(fileName); + const QList editorsOpenForFile = core->editorManager()->editorsForFileName(fileName); // Add all suitable editors foreach (Core::IEditorFactory *editorFactory, factories) { // Add action to open with this very editor factory @@ -1792,8 +1802,9 @@ void ProjectExplorerPlugin::openWithMenuTriggered(QAction *action) qWarning() << "Editor Factory not attached to action, can't happen"<editorManager()->openEditor(currentNode()->path(), editorFactory->kind()); - m_core->editorManager()->ensureEditorManagerVisible(); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); + em->openEditor(currentNode()->path(), editorFactory->kind()); + em->ensureEditorManagerVisible(); } void ProjectExplorerPlugin::updateSessionMenu() diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 94e25159928..d21adb8abda 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -54,7 +54,6 @@ namespace Core { class IContext; -class ICore; class IMode; class IFileFactory; namespace Internal { @@ -239,7 +238,6 @@ private: QMenu *m_runConfigurationMenu; QActionGroup *m_runConfigurationActionGroup; - Core::ICore *m_core; Internal::ProjectWindow *m_proWindow; SessionManager *m_session; @@ -264,6 +262,7 @@ private: }; namespace Internal { + class CoreListenerCheckingForRunningBuild : public Core::ICoreListener { Q_OBJECT @@ -275,7 +274,8 @@ public: private: BuildManager *m_manager; }; -} + +} // namespace Internal } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp index 6b928db16b5..b897dd44ff9 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.cpp +++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp @@ -87,16 +87,16 @@ void AllProjectNodesVisitor::visitProjectNode(ProjectNode *node) } // --------- ProjectWizardContext -struct ProjectWizardContext { +struct ProjectWizardContext +{ Core::IVersionControl *versionControl; ProjectNodeList projects; ProjectWizardPage *page; }; // ---- ProjectFileWizardExtension -ProjectFileWizardExtension::ProjectFileWizardExtension(Core::ICore *core) : - m_core(core), - m_context(0) +ProjectFileWizardExtension::ProjectFileWizardExtension() + : m_context(0) { } @@ -115,7 +115,7 @@ void ProjectFileWizardExtension::firstExtensionPageShown(const QListversionControl = m_core->vcsManager()->findVersionControlForDirectory(directory); + m_context->versionControl = Core::ICore::instance()->vcsManager()->findVersionControlForDirectory(directory); m_context->page->setFilesDisplay(fileNames); @@ -175,7 +175,7 @@ bool ProjectFileWizardExtension::process(const QList &files TypeFileMap typeFileMap; foreach (const Core::GeneratedFile &generatedFile, files) { const QString path = generatedFile.path(); - typeFileMap.insert(typeForFileName(m_core->mimeDatabase(), path), path); + typeFileMap.insert(typeForFileName(Core::ICore::instance()->mimeDatabase(), path), path); } foreach (FileType type, typeFileMap.uniqueKeys()) { const QStringList files = typeFileMap.values(type); diff --git a/src/plugins/projectexplorer/projectfilewizardextension.h b/src/plugins/projectexplorer/projectfilewizardextension.h index 3008b0772e6..e4930e9ff09 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.h +++ b/src/plugins/projectexplorer/projectfilewizardextension.h @@ -36,10 +36,6 @@ #include -namespace Core { - class ICore; -} - namespace ProjectExplorer { namespace Internal { @@ -54,7 +50,7 @@ class ProjectFileWizardExtension : public Core::IFileWizardExtension { Q_OBJECT public: - explicit ProjectFileWizardExtension(Core::ICore *core); + explicit ProjectFileWizardExtension(); virtual ~ProjectFileWizardExtension(); virtual QList extensionPages(const Core::IWizard *wizard); @@ -64,7 +60,6 @@ public slots: virtual void firstExtensionPageShown(const QList &); private: - Core::ICore *m_core; ProjectWizardContext *m_context; }; diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 7015c70f775..2a5ae1a42b6 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -61,14 +61,12 @@ namespace { bool debug = false; } -ProjectWindow::ProjectWindow(Core::ICore *core, QWidget *parent) : - QWidget(parent), - m_core(core) +ProjectWindow::ProjectWindow(QWidget *parent) : QWidget(parent) { setWindowTitle(tr("Project Explorer")); setWindowIcon(QIcon(":/projectexplorer/images/projectexplorer.png")); - ExtensionSystem::PluginManager *pm = m_core->pluginManager(); + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); ProjectExplorerPlugin *projectExplorer = m_projectExplorer = pm->getObject(); m_session = projectExplorer->session(); diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index c9b387ceaa2..b7ea0b6005f 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -43,10 +43,6 @@ class QTreeWidget; class QTreeWidgetItem; QT_END_NAMESPACE -namespace Core { -class ICore; -} - namespace ProjectExplorer { class Project; @@ -56,13 +52,12 @@ class SessionManager; namespace Internal { - class ProjectWindow : public QWidget { Q_OBJECT public: - ProjectWindow(Core::ICore *core, QWidget *parent = 0); + explicit ProjectWindow(QWidget *parent = 0); ~ProjectWindow(); private slots: @@ -75,7 +70,6 @@ private slots: void handleCurrentItemChanged(QTreeWidgetItem *); private: - Core::ICore *m_core; SessionManager *m_session; ProjectExplorerPlugin *m_projectExplorer; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index e771109d066..a8fdc907cd0 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -381,9 +381,10 @@ void Qt4Project::updateCodeModel() qDebug()<<"Qt4Project::updateCodeModel()"; CppTools::CppModelManagerInterface *modelmanager = - m_manager->pluginManager()->getObject(); + ExtensionSystem::PluginManager::instance() + ->getObject(); - if (! modelmanager) + if (!modelmanager) return; QStringList allIncludePaths; @@ -644,7 +645,7 @@ void Qt4Project::newBuildConfiguration(const QString &buildConfiguration) void Qt4Project::proFileParseError(const QString &errorMessage) { - m_manager->core()->messageManager()->printToOutputPane(errorMessage); + Core::ICore::instance()->messageManager()->printToOutputPane(errorMessage); } Qt4ProFileNode *Qt4Project::rootProjectNode() const diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index 35fd609b117..8d44d81df20 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -54,13 +54,13 @@ #include #include -#include -#include -#include #include +#include +#include #include -#include +#include #include +#include #include using namespace Qt4ProjectManager; @@ -82,15 +82,14 @@ static const char* qt4FileTypes[] = { "Qt4ResourceFiles" }; -Qt4Manager::Qt4Manager(Qt4ProjectManagerPlugin *plugin, Core::ICore *core) : - m_mimeType(QLatin1String(Qt4ProjectManager::Constants::PROFILE_MIMETYPE)), +Qt4Manager::Qt4Manager(Qt4ProjectManagerPlugin *plugin) + : m_mimeType(QLatin1String(Qt4ProjectManager::Constants::PROFILE_MIMETYPE)), m_plugin(plugin), - m_core(core), m_projectExplorer(0), m_contextProject(0), m_languageID(0) { - m_languageID = m_core->uniqueIDManager()-> + m_languageID = Core::ICore::instance()->uniqueIDManager()-> uniqueIdentifier(ProjectExplorer::Constants::LANG_CXX); } @@ -116,7 +115,8 @@ void Qt4Manager::notifyChanged(const QString &name) void Qt4Manager::init() { - m_projectExplorer = m_core->pluginManager()->getObject(); + m_projectExplorer = ExtensionSystem::PluginManager::instance() + ->getObject(); } int Qt4Manager::projectContext() const @@ -143,7 +143,8 @@ ProjectExplorer::Project* Qt4Manager::openProject(const QString &fileName) QString errorMessage; - m_core->messageManager()->displayStatusBarMessage(tr("Loading project %1 ...").arg(fileName), 50000); + Core::MessageManager *messageManager = Core::ICore::instance()->messageManager(); + messageManager->displayStatusBarMessage(tr("Loading project %1 ...").arg(fileName), 50000); // TODO Make all file paths relative & remove this hack // We convert the path to an absolute one here because qt4project.cpp @@ -152,25 +153,25 @@ ProjectExplorer::Project* Qt4Manager::openProject(const QString &fileName) QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath(); if (canonicalFilePath.isEmpty()) { - m_core->messageManager()->printToOutputPane(tr("Failed opening project '%1': Project file does not exist").arg(canonicalFilePath)); - m_core->messageManager()->displayStatusBarMessage(tr("Failed opening project"), 5000); + messageManager->printToOutputPane(tr("Failed opening project '%1': Project file does not exist").arg(canonicalFilePath)); + messageManager->displayStatusBarMessage(tr("Failed opening project"), 5000); return 0; } foreach (ProjectExplorer::Project *pi, projectExplorer()->session()->projects()) { if (canonicalFilePath == pi->file()->fileName()) { - m_core->messageManager()->printToOutputPane(tr("Failed opening project '%1': Project already open").arg(canonicalFilePath)); - m_core->messageManager()->displayStatusBarMessage(tr("Failed opening project"), 5000); + messageManager->printToOutputPane(tr("Failed opening project '%1': Project already open").arg(canonicalFilePath)); + messageManager->displayStatusBarMessage(tr("Failed opening project"), 5000); return 0; } } - m_core->messageManager()->displayStatusBarMessage(tr("Opening %1 ...").arg(fileName)); + messageManager->displayStatusBarMessage(tr("Opening %1 ...").arg(fileName)); QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); Qt4Project *pro = new Qt4Project(this, canonicalFilePath); - m_core->messageManager()->displayStatusBarMessage(tr("Done opening project"), 5000); + messageManager->displayStatusBarMessage(tr("Done opening project"), 5000); return pro; } @@ -179,16 +180,6 @@ ProjectExplorer::ProjectExplorerPlugin *Qt4Manager::projectExplorer() const return m_projectExplorer; } -Core::ICore *Qt4Manager::core() const -{ - return m_core; -} - -ExtensionSystem::PluginManager *Qt4Manager::pluginManager() const -{ - return m_core->pluginManager(); -} - ProjectExplorer::Node *Qt4Manager::contextNode() const { return m_contextNode; diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.h b/src/plugins/qt4projectmanager/qt4projectmanager.h index 4bb4d6eaf18..b6fc317362e 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.h +++ b/src/plugins/qt4projectmanager/qt4projectmanager.h @@ -44,10 +44,6 @@ namespace ExtensionSystem { class PluginManager; } -namespace Core { -class ICore; -} - namespace ProjectExplorer { class Project; class ProjectExplorerPlugin; @@ -64,13 +60,12 @@ class QtVersionManager; class Qt4Project; -class Qt4Manager - : public ProjectExplorer::IProjectManager +class Qt4Manager : public ProjectExplorer::IProjectManager { Q_OBJECT public: - Qt4Manager(Internal::Qt4ProjectManagerPlugin *plugin, Core::ICore *core); + Qt4Manager(Internal::Qt4ProjectManagerPlugin *plugin); ~Qt4Manager(); void init(); @@ -80,10 +75,8 @@ public: void notifyChanged(const QString &name); ProjectExplorer::ProjectExplorerPlugin *projectExplorer() const; - ExtensionSystem::PluginManager *pluginManager() const; - Core::ICore *core() const; - //ProjectExplorer::IProjectManager + // ProjectExplorer::IProjectManager int projectContext() const; int projectLanguage() const; @@ -111,7 +104,6 @@ private: const QString m_mimeType; Internal::Qt4ProjectManagerPlugin *m_plugin; - Core::ICore *m_core; ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer; ProjectExplorer::Node *m_contextNode; diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index f5c2a78ec7f..0d90983aa88 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -48,6 +48,7 @@ #include "profilereader.h" #include "gdbmacrosbuildstep.h" +#include #include #include #include @@ -59,9 +60,9 @@ #include #include -#include +#include +#include #include -#include #ifdef WITH_TESTS #include @@ -95,33 +96,37 @@ static Core::Command *createSeparator(Core::ActionManager *am, return am->registerAction(tmpaction, name, context); } */ -bool Qt4ProjectManagerPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage) + +bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *errorMessage) { + Q_UNUSED(arguments); + Core::ICore *core = Core::ICore::instance(); if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":qt4projectmanager/Qt4ProjectManager.mimetypes.xml"), errorMessage)) return false; - m_projectExplorer = core->pluginManager()->getObject(); + m_projectExplorer = ExtensionSystem::PluginManager::instance() + ->getObject(); Core::ActionManager *am = core->actionManager(); //create and register objects - m_qt4ProjectManager = new Qt4Manager(this, core); + m_qt4ProjectManager = new Qt4Manager(this); addObject(m_qt4ProjectManager); TextEditor::TextEditorActionHandler *editorHandler - = new TextEditor::TextEditorActionHandler(core, Constants::C_PROFILEEDITOR); + = new TextEditor::TextEditorActionHandler(Constants::C_PROFILEEDITOR); m_proFileEditorFactory = new ProFileEditorFactory(m_qt4ProjectManager, editorHandler); addObject(m_proFileEditorFactory); - GuiAppWizard *guiWizard = new GuiAppWizard(core); + GuiAppWizard *guiWizard = new GuiAppWizard; addAutoReleasedObject(guiWizard); - ConsoleAppWizard *consoleWizard = new ConsoleAppWizard(core); + ConsoleAppWizard *consoleWizard = new ConsoleAppWizard; addAutoReleasedObject(consoleWizard); - LibraryWizard *libWizard = new LibraryWizard(core); + LibraryWizard *libWizard = new LibraryWizard; addAutoReleasedObject(libWizard); addAutoReleasedObject(new QMakeBuildStepFactory); diff --git a/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp b/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp index 73884791fe8..402ba7a2ffa 100644 --- a/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp @@ -58,8 +58,8 @@ static const char *mainSourceFileC = "main"; namespace Qt4ProjectManager { namespace Internal { -ConsoleAppWizard::ConsoleAppWizard(Core::ICore *core) : - QtWizard(core, tr("Qt4 Console Application"), +ConsoleAppWizard::ConsoleAppWizard() + : QtWizard(tr("Qt4 Console Application"), tr("Creates a Qt4 console application."), QIcon(":/wizards/images/console.png")) { diff --git a/src/plugins/qt4projectmanager/wizards/consoleappwizard.h b/src/plugins/qt4projectmanager/wizards/consoleappwizard.h index 36fff218dde..be080c08507 100644 --- a/src/plugins/qt4projectmanager/wizards/consoleappwizard.h +++ b/src/plugins/qt4projectmanager/wizards/consoleappwizard.h @@ -46,7 +46,7 @@ class ConsoleAppWizard : public QtWizard Q_OBJECT public: - explicit ConsoleAppWizard(Core::ICore *core); + ConsoleAppWizard(); protected: virtual QWizard *createWizardDialog(QWidget *parent, diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp index 14df3821ccd..d0a626aecce 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp @@ -70,12 +70,10 @@ static inline QStringList baseClasses() } namespace Qt4ProjectManager { - namespace Internal { -GuiAppWizard::GuiAppWizard(Core::ICore *core) : - QtWizard(core, - tr("Qt4 Gui Application"), +GuiAppWizard::GuiAppWizard() + : QtWizard(tr("Qt4 Gui Application"), tr("Creates a Qt4 Gui Application with one form."), QIcon(":/wizards/images/gui.png")) { diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizard.h b/src/plugins/qt4projectmanager/wizards/guiappwizard.h index dd7d7e7d02d..d3ce961b2f2 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizard.h +++ b/src/plugins/qt4projectmanager/wizards/guiappwizard.h @@ -47,7 +47,7 @@ class GuiAppWizard : public QtWizard Q_OBJECT public: - explicit GuiAppWizard(Core::ICore *core); + GuiAppWizard(); protected: virtual QWizard *createWizardDialog(QWidget *parent, diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp index 0bc379ecbea..0c3c6513eb3 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp +++ b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp @@ -91,7 +91,7 @@ void GuiAppWizardDialog::setBaseClasses(const QStringList &baseClasses) m_filesPage->setBaseClassName(baseClasses.front()); } -void GuiAppWizardDialog::setSuffixes(const QString &header, const QString &source, const QString &form) +void GuiAppWizardDialog::setSuffixes(const QString &header, const QString &source, const QString &form) { m_filesPage->setSuffixes(header, source, form); } diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.h b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.h index 080cf802c26..dbd2b69a421 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.h +++ b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.h @@ -37,10 +37,12 @@ #include namespace Core { - namespace Utils { - class ProjectIntroPage; - } -} +namespace Utils { + +class ProjectIntroPage; + +} // namespace Utils +} // namespace Core namespace Qt4ProjectManager { namespace Internal { @@ -50,7 +52,8 @@ class ModulesPage; class FilesPage; // Additional parameters required besides QtProjectParameters -struct GuiAppParameters { +struct GuiAppParameters +{ GuiAppParameters(); QString className; QString baseClassName; diff --git a/src/plugins/qt4projectmanager/wizards/librarywizard.cpp b/src/plugins/qt4projectmanager/wizards/librarywizard.cpp index e79cd1b6588..788563f5cc3 100644 --- a/src/plugins/qt4projectmanager/wizards/librarywizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/librarywizard.cpp @@ -50,8 +50,8 @@ namespace Qt4ProjectManager { namespace Internal { -LibraryWizard::LibraryWizard(Core::ICore *core) : - QtWizard(core, tr("C++ Library"), +LibraryWizard::LibraryWizard() + : QtWizard(tr("C++ Library"), tr("Creates a C++ Library."), QIcon(":/wizards/images/lib.png")) { @@ -69,8 +69,9 @@ QWizard *LibraryWizard::createWizardDialog(QWidget *parent, Core::GeneratedFiles LibraryWizard::generateFiles(const QWizard *w, - QString * /*errorMessage*/) const + QString *errorMessage) const { + Q_UNUSED(errorMessage); const LibraryWizardDialog *dialog = qobject_cast(w); const QtProjectParameters projectParams = dialog->parameters(); const QString projectPath = projectParams.projectPath(); diff --git a/src/plugins/qt4projectmanager/wizards/librarywizard.h b/src/plugins/qt4projectmanager/wizards/librarywizard.h index 203179d4c91..f5e6b2af845 100644 --- a/src/plugins/qt4projectmanager/wizards/librarywizard.h +++ b/src/plugins/qt4projectmanager/wizards/librarywizard.h @@ -48,7 +48,7 @@ class LibraryWizard : public QtWizard Q_OBJECT public: - explicit LibraryWizard(Core::ICore *core); + LibraryWizard(); protected: virtual QWizard *createWizardDialog(QWidget *parent, diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp index b61861a8e67..a8fd467f80e 100644 --- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp @@ -63,9 +63,8 @@ static inline Core::BaseFileWizardParameters } // -------------------- QtWizard -QtWizard::QtWizard(Core::ICore *core, const QString &name, - const QString &description, const QIcon &icon) : - Core::BaseFileWizard(wizardParameters(name, description, icon), core), +QtWizard::QtWizard(const QString &name, const QString &description, const QIcon &icon) : + Core::BaseFileWizard(wizardParameters(name, description, icon)), m_projectExplorer(ExtensionSystem::PluginManager::instance()->getObject()) { } @@ -103,7 +102,7 @@ bool QtWizard::postGenerateFiles(const Core::GeneratedFiles &l, QString *errorMe QString QtWizard::templateDir() const { - QString rc = core()->resourcePath(); + QString rc = Core::ICore::instance()->resourcePath(); rc += QLatin1String("/templates/qt4project"); return rc; } diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.h b/src/plugins/qt4projectmanager/wizards/qtwizard.h index 9858251a9df..dd031ef7e01 100644 --- a/src/plugins/qt4projectmanager/wizards/qtwizard.h +++ b/src/plugins/qt4projectmanager/wizards/qtwizard.h @@ -38,13 +38,8 @@ #include -QT_BEGIN_NAMESPACE -class QTextStream; -class QDir; -QT_END_NAMESPACE - namespace ProjectExplorer { - class ProjectExplorerPlugin; +class ProjectExplorerPlugin; } namespace Qt4ProjectManager { @@ -60,14 +55,11 @@ namespace Internal { class QtWizard : public Core::BaseFileWizard { - Q_DISABLE_COPY(QtWizard) Q_OBJECT - -public: + Q_DISABLE_COPY(QtWizard) protected: - explicit QtWizard(Core::ICore *core, const QString &name, - const QString &description, const QIcon &icon); + QtWizard(const QString &name, const QString &description, const QIcon &icon); QString templateDir() const; diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp index 4062b69e507..a7efcc0192c 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.cpp +++ b/src/plugins/qtscripteditor/qtscripteditor.cpp @@ -57,12 +57,10 @@ ScriptEditorEditable::ScriptEditorEditable(ScriptEditor *editor, const QListduplicateFrom(this); QtScriptEditorPlugin::initializeEditor(editor); return editor; @@ -157,7 +155,7 @@ void ScriptEditor::contextMenuEvent(QContextMenuEvent *e) { QMenu *menu = createStandardContextMenu(); - if (Core::ActionContainer *mcontext = m_core->actionManager()->actionContainer(QtScriptEditor::Constants::M_CONTEXT)) { + if (Core::ActionContainer *mcontext = Core::ICore::instance()->actionManager()->actionContainer(QtScriptEditor::Constants::M_CONTEXT)) { QMenu *contextMenu = mcontext->menu(); foreach (QAction *action, contextMenu->actions()) menu->addAction(action); diff --git a/src/plugins/qtscripteditor/qtscripteditor.h b/src/plugins/qtscripteditor/qtscripteditor.h index 1dda5a95e92..d4f0ca94bb6 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.h +++ b/src/plugins/qtscripteditor/qtscripteditor.h @@ -50,7 +50,7 @@ class ScriptEditor; class ScriptEditorEditable : public TextEditor::BaseTextEditorEditable { public: - ScriptEditorEditable(ScriptEditor *, const QList&); + ScriptEditorEditable(ScriptEditor *, const QList &); QList context() const; bool duplicateSupported() const { return true; } @@ -71,9 +71,8 @@ public: typedef QList Context; ScriptEditor(const Context &context, - Core::ICore *core, - TextEditor::TextEditorActionHandler *ah, - QWidget *parent = 0); + TextEditor::TextEditorActionHandler *ah, + QWidget *parent = 0); ~ScriptEditor(); ScriptEditor *duplicate(QWidget *parent); @@ -90,7 +89,6 @@ private: virtual void indentBlock(QTextDocument *doc, QTextBlock block, QChar typedChar); const Context m_context; - Core::ICore *m_core; TextEditor::TextEditorActionHandler *m_ah; }; diff --git a/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp b/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp index bb306f1a3f2..18d57a6a7b2 100644 --- a/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp +++ b/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp @@ -35,17 +35,18 @@ #include "qtscripteditorconstants.h" #include "qtscripteditor.h" +#include #include #include -#include -#include -#include #include +#include +#include +#include -static QAction *actionFromId(Core::ICore *core, const QString &id) +static QAction *actionFromId(const QString &id) { - Core::Command *cmd = core->actionManager()->command(id); + Core::Command *cmd = Core::ICore::instance()->actionManager()->command(id); if (!cmd) return 0; return cmd->action(); @@ -54,9 +55,8 @@ static QAction *actionFromId(Core::ICore *core, const QString &id) namespace QtScriptEditor { namespace Internal { -QtScriptEditorActionHandler::QtScriptEditorActionHandler(Core::ICore *core) : - TextEditor::TextEditorActionHandler(core, - QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR), +QtScriptEditorActionHandler::QtScriptEditorActionHandler() + : TextEditor::TextEditorActionHandler(QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR), Format), m_runAction(0) { @@ -65,7 +65,7 @@ QtScriptEditorActionHandler::QtScriptEditorActionHandler(Core::ICore *core) : void QtScriptEditorActionHandler::createActions() { TextEditor::TextEditorActionHandler::createActions(); - m_runAction = actionFromId(core(), QLatin1String(QtScriptEditor::Constants::RUN)); + m_runAction = actionFromId(QLatin1String(QtScriptEditor::Constants::RUN)); connect(m_runAction, SIGNAL(triggered()), this, SLOT(run())); } @@ -88,7 +88,7 @@ void QtScriptEditorActionHandler::run() // run Stack errorStack; QString errorMessage; - if (core()->scriptManager()->runScript(script, &errorMessage, &errorStack)) + if (Core::ICore::instance()->scriptManager()->runScript(script, &errorMessage, &errorStack)) return; // try to find a suitable error line in the stack @@ -104,7 +104,7 @@ void QtScriptEditorActionHandler::run() } if (errorLineNumber) currentEditor()->gotoLine(errorLineNumber); - QMessageBox::critical(core()->mainWindow(), tr("Qt Script Error"), errorMessage); + QMessageBox::critical(Core::ICore::instance()->mainWindow(), tr("Qt Script Error"), errorMessage); } } // namespace Internal diff --git a/src/plugins/qtscripteditor/qtscripteditoractionhandler.h b/src/plugins/qtscripteditor/qtscripteditoractionhandler.h index d18ee2d25ff..c4940cfa160 100644 --- a/src/plugins/qtscripteditor/qtscripteditoractionhandler.h +++ b/src/plugins/qtscripteditor/qtscripteditoractionhandler.h @@ -44,7 +44,7 @@ class QtScriptEditorActionHandler : public TextEditor::TextEditorActionHandler Q_OBJECT public: - QtScriptEditorActionHandler(Core::ICore *core); + QtScriptEditorActionHandler(); private: virtual void createActions(); diff --git a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp index 392b627363a..9e169648f12 100644 --- a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp @@ -37,23 +37,21 @@ #include "qtscripteditorconstants.h" #include "qtscripteditorplugin.h" +#include #include #include -#include +#include using namespace QtScriptEditor::Internal; using namespace QtScriptEditor::Constants; -QtScriptEditorFactory::QtScriptEditorFactory(Core::ICore *core, - const Context &context, - QObject *parent) : - Core::IEditorFactory(parent), +QtScriptEditorFactory::QtScriptEditorFactory(const Context &context, QObject *parent) + : Core::IEditorFactory(parent), m_kind(QLatin1String(C_QTSCRIPTEDITOR)), m_mimeTypes(QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR_MIMETYPE)), m_context(context), - m_core(core), - m_actionHandler(new QtScriptEditorActionHandler(core)) + m_actionHandler(new QtScriptEditorActionHandler) { } @@ -69,7 +67,7 @@ QString QtScriptEditorFactory::kind() const Core::IFile *QtScriptEditorFactory::open(const QString &fileName) { - Core::IEditor *iface = m_core->editorManager()->openEditor(fileName, kind()); + Core::IEditor *iface = Core::ICore::instance()->editorManager()->openEditor(fileName, kind()); if (!iface) { qWarning() << "QtScriptEditorFactory::open: openEditor failed for " << fileName; return 0; @@ -79,7 +77,7 @@ Core::IFile *QtScriptEditorFactory::open(const QString &fileName) Core::IEditor *QtScriptEditorFactory::createEditor(QWidget *parent) { - ScriptEditor *rc = new ScriptEditor(m_context, m_core, m_actionHandler, parent); + ScriptEditor *rc = new ScriptEditor(m_context, m_actionHandler, parent); QtScriptEditorPlugin::initializeEditor(rc); return rc->editableInterface(); } diff --git a/src/plugins/qtscripteditor/qtscripteditorfactory.h b/src/plugins/qtscripteditor/qtscripteditorfactory.h index 08654aa0350..8048f30053d 100644 --- a/src/plugins/qtscripteditor/qtscripteditorfactory.h +++ b/src/plugins/qtscripteditor/qtscripteditorfactory.h @@ -38,10 +38,6 @@ #include -namespace Core { -class ICore; -} - namespace TextEditor { class TextEditorActionHandler; } @@ -58,13 +54,11 @@ class QtScriptEditorFactory : public Core::IEditorFactory public: typedef QList Context; - QtScriptEditorFactory(Core::ICore *core, - const Context &context, - QObject *parent); + QtScriptEditorFactory(const Context &context, QObject *parent); ~QtScriptEditorFactory(); virtual QStringList mimeTypes() const; - //EditorFactory + // IEditorFactory QString kind() const; Core::IFile *open(const QString &fileName); Core::IEditor *createEditor(QWidget *parent); @@ -74,7 +68,6 @@ private: const QStringList m_mimeTypes; const Context m_context; - Core::ICore *m_core; TextEditor::TextEditorActionHandler *m_actionHandler; }; diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp index dcf69b04b06..41a11d5a7af 100644 --- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp @@ -87,7 +87,7 @@ bool QtScriptEditorPlugin::initialize(const QStringList & /*arguments*/, QString registerActions(core); - m_editor = new QtScriptEditorFactory(core, m_context, this); + m_editor = new QtScriptEditorFactory(m_context, this); addObject(m_editor); Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); @@ -98,7 +98,7 @@ bool QtScriptEditorPlugin::initialize(const QStringList & /*arguments*/, QString m_wizard = new TextEditor::TextFileWizard(QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR_MIMETYPE), QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR), QLatin1String("qtscript$"), - wizardParameters, core, this); + wizardParameters, this); addObject(m_wizard); error_message->clear(); diff --git a/src/plugins/quickopen/basefilefilter.cpp b/src/plugins/quickopen/basefilefilter.cpp index 65aea6d2552..147cd5b07d1 100644 --- a/src/plugins/quickopen/basefilefilter.cpp +++ b/src/plugins/quickopen/basefilefilter.cpp @@ -33,6 +33,7 @@ #include "basefilefilter.h" +#include #include #include @@ -40,11 +41,8 @@ using namespace Core; using namespace QuickOpen; -BaseFileFilter::BaseFileFilter(ICore *core) - : m_core(core), - m_files(QStringList()), - m_fileNames(QStringList()), - m_forceNewSearchList(false) +BaseFileFilter::BaseFileFilter() + : m_forceNewSearchList(false) { } @@ -91,8 +89,9 @@ QList BaseFileFilter::matchesFor(const QString &origEntry) void BaseFileFilter::accept(QuickOpen::FilterEntry selection) const { - m_core->editorManager()->openEditor(selection.internalData.toString()); - m_core->editorManager()->ensureEditorManagerVisible(); + Core::EditorManager *em = Core::ICore::instance()->editorManager(); + em->openEditor(selection.internalData.toString()); + em->ensureEditorManagerVisible(); } void BaseFileFilter::generateFileNames() diff --git a/src/plugins/quickopen/basefilefilter.h b/src/plugins/quickopen/basefilefilter.h index ee9d302be5c..711b84c0bae 100644 --- a/src/plugins/quickopen/basefilefilter.h +++ b/src/plugins/quickopen/basefilefilter.h @@ -37,12 +37,8 @@ #include "quickopen_global.h" #include "iquickopenfilter.h" -#include - #include #include -#include -#include namespace QuickOpen { @@ -51,14 +47,13 @@ class QUICKOPEN_EXPORT BaseFileFilter : public QuickOpen::IQuickOpenFilter Q_OBJECT public: - BaseFileFilter(Core::ICore *core); + BaseFileFilter(); QList matchesFor(const QString &entry); void accept(QuickOpen::FilterEntry selection) const; protected: void generateFileNames(); - Core::ICore *m_core; QStringList m_files; QStringList m_fileNames; QStringList m_previousResultPaths; diff --git a/src/plugins/quickopen/directoryfilter.cpp b/src/plugins/quickopen/directoryfilter.cpp index 84c60dfa8c7..8b70cbd51e9 100644 --- a/src/plugins/quickopen/directoryfilter.cpp +++ b/src/plugins/quickopen/directoryfilter.cpp @@ -35,20 +35,18 @@ #include #include -#include #include #include #include -using namespace Core; +#include + using namespace QuickOpen; using namespace QuickOpen::Internal; -DirectoryFilter::DirectoryFilter(ICore *core) - : BaseFileFilter(core), - m_name(tr("Generic Directory Filter")), - m_directories(QStringList()), - m_filters(QStringList() << "*.h" << "*.cpp" << "*.ui" << "*.qrc") +DirectoryFilter::DirectoryFilter() + : m_name(tr("Generic Directory Filter")), + m_filters(QStringList() << "*.h" << "*.cpp" << "*.ui" << "*.qrc") { setIncludedByDefault(true); } diff --git a/src/plugins/quickopen/directoryfilter.h b/src/plugins/quickopen/directoryfilter.h index abe167d61d3..f156e01b45f 100644 --- a/src/plugins/quickopen/directoryfilter.h +++ b/src/plugins/quickopen/directoryfilter.h @@ -45,9 +45,6 @@ #include #include -#include -#include - namespace QuickOpen { namespace Internal { @@ -56,7 +53,7 @@ class DirectoryFilter : public BaseFileFilter Q_OBJECT public: - DirectoryFilter(Core::ICore *core); + DirectoryFilter(); QString trName() const { return m_name; } QString name() const { return m_name; } QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Medium; } diff --git a/src/plugins/quickopen/quickopenplugin.cpp b/src/plugins/quickopen/quickopenplugin.cpp index f0354c0ba6c..3c080cd8384 100644 --- a/src/plugins/quickopen/quickopenplugin.cpp +++ b/src/plugins/quickopen/quickopenplugin.cpp @@ -136,7 +136,6 @@ void QuickOpenPlugin::startSettingsLoad() void QuickOpenPlugin::loadSettings() { - Core::ICore *core = Core::ICore::instance(); QSettings settings; settings.beginGroup("QuickOpen"); m_refreshTimer.setInterval(settings.value("RefreshInterval", 60).toInt()*60000); @@ -150,7 +149,7 @@ void QuickOpenPlugin::loadSettings() settings.beginGroup("CustomFilters"); QList customFilters; foreach (const QString &key, settings.childKeys()) { - IQuickOpenFilter *filter = new DirectoryFilter(core); + IQuickOpenFilter *filter = new DirectoryFilter; filter->restoreState(settings.value(key).toByteArray()); m_filters.append(filter); customFilters.append(filter); diff --git a/src/plugins/quickopen/settingspage.cpp b/src/plugins/quickopen/settingspage.cpp index 17415916342..5d1b3a24b59 100644 --- a/src/plugins/quickopen/settingspage.cpp +++ b/src/plugins/quickopen/settingspage.cpp @@ -173,7 +173,7 @@ void SettingsPage::configureFilter(QListWidgetItem *item) void SettingsPage::addCustomFilter() { - IQuickOpenFilter *filter = new DirectoryFilter(m_core); + IQuickOpenFilter *filter = new DirectoryFilter; bool needsRefresh = false; if (filter->openConfigDialog(m_page, needsRefresh)) { m_filters.append(filter); diff --git a/src/plugins/resourceeditor/resourceeditorfactory.cpp b/src/plugins/resourceeditor/resourceeditorfactory.cpp index 4a623c77f4a..658a572c394 100644 --- a/src/plugins/resourceeditor/resourceeditorfactory.cpp +++ b/src/plugins/resourceeditor/resourceeditorfactory.cpp @@ -47,14 +47,13 @@ using namespace ResourceEditor::Internal; using namespace ResourceEditor::Constants; -ResourceEditorFactory::ResourceEditorFactory(Core::ICore *core, ResourceEditorPlugin *plugin) : +ResourceEditorFactory::ResourceEditorFactory(ResourceEditorPlugin *plugin) : Core::IEditorFactory(plugin), m_mimeTypes(QStringList(QLatin1String("application/vnd.nokia.xml.qt.resource"))), m_kind(QLatin1String(C_RESOURCEEDITOR)), - m_core(core), m_plugin(plugin) { - m_context += m_core->uniqueIDManager() + m_context += Core::ICore::instance()->uniqueIDManager() ->uniqueIdentifier(QLatin1String(ResourceEditor::Constants::C_RESOURCEEDITOR)); Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance(); iconProvider->registerIconForSuffix(QIcon(":/resourceeditor/images/qt_qrc.png"), @@ -68,7 +67,7 @@ QString ResourceEditorFactory::kind() const Core::IFile *ResourceEditorFactory::open(const QString &fileName) { - Core::IEditor *iface = m_core->editorManager()->openEditor(fileName, kind()); + Core::IEditor *iface = Core::ICore::instance()->editorManager()->openEditor(fileName, kind()); if (!iface) { qWarning() << "ResourceEditorFactory::open: openEditor failed for " << fileName; return 0; @@ -78,7 +77,7 @@ Core::IFile *ResourceEditorFactory::open(const QString &fileName) Core::IEditor *ResourceEditorFactory::createEditor(QWidget *parent) { - return new ResourceEditorW(m_context, m_core, m_plugin, parent); + return new ResourceEditorW(m_context, m_plugin, parent); } QStringList ResourceEditorFactory::mimeTypes() const diff --git a/src/plugins/resourceeditor/resourceeditorfactory.h b/src/plugins/resourceeditor/resourceeditorfactory.h index 4097fdecacc..0c4ab63c909 100644 --- a/src/plugins/resourceeditor/resourceeditorfactory.h +++ b/src/plugins/resourceeditor/resourceeditorfactory.h @@ -38,10 +38,6 @@ #include -namespace Core { -class ICore; -} // namespace Core - namespace ResourceEditor { namespace Internal { @@ -54,11 +50,11 @@ class ResourceEditorFactory : public Core::IEditorFactory public: typedef QList Context; - ResourceEditorFactory(Core::ICore *core, ResourceEditorPlugin *plugin); + explicit ResourceEditorFactory(ResourceEditorPlugin *plugin); virtual QStringList mimeTypes() const; - //EditorFactory + // IEditorFactory QString kind() const; Core::IFile *open(const QString &fileName); Core::IEditor *createEditor(QWidget *parent); @@ -68,7 +64,6 @@ private: const QString m_kind; Context m_context; - Core::ICore *m_core; ResourceEditorPlugin *m_plugin; }; diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index a1d612efc2e..7e5a7dcd1f8 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -74,7 +74,7 @@ bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *err if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/resourceeditor/ResourceEditor.mimetypes.xml"), errorMessage)) return false; - m_editor = new ResourceEditorFactory(core, this); + m_editor = new ResourceEditorFactory(this); addObject(m_editor); Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); @@ -83,7 +83,7 @@ bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *err wizardParameters.setCategory(QLatin1String("Qt")); wizardParameters.setTrCategory(tr("Qt")); - m_wizard = new ResourceWizard(wizardParameters, core, this); + m_wizard = new ResourceWizard(wizardParameters, this); addObject(m_wizard); errorMessage->clear(); diff --git a/src/plugins/resourceeditor/resourceeditorw.cpp b/src/plugins/resourceeditor/resourceeditorw.cpp index db4ed089805..c8e0bbf5107 100644 --- a/src/plugins/resourceeditor/resourceeditorw.cpp +++ b/src/plugins/resourceeditor/resourceeditorw.cpp @@ -70,11 +70,9 @@ QString ResourceEditorFile::mimeType() const ResourceEditorW::ResourceEditorW(const QList &context, - Core::ICore *core, ResourceEditorPlugin *plugin, QWidget *parent) : m_context(context), - m_core(core), m_resourceEditor(new SharedTools::QrcEditor(parent)), m_resourceFile(new ResourceEditorFile(this)), m_plugin(plugin) @@ -207,7 +205,7 @@ void ResourceEditorFile::modified(Core::IFile::ReloadBehavior *behavior) break; } - switch (Core::Utils::reloadPrompt(fileName, m_parent->m_core->mainWindow())) { + switch (Core::Utils::reloadPrompt(fileName, Core::ICore::instance()->mainWindow())) { case Core::Utils::ReloadCurrent: m_parent->open(fileName); break; diff --git a/src/plugins/resourceeditor/resourceeditorw.h b/src/plugins/resourceeditor/resourceeditorw.h index 4070e155cd6..cc26250458a 100644 --- a/src/plugins/resourceeditor/resourceeditorw.h +++ b/src/plugins/resourceeditor/resourceeditorw.h @@ -40,11 +40,6 @@ #include #include - -namespace Core { - class ICore; -} - namespace SharedTools { class QrcEditor; } @@ -92,7 +87,6 @@ public: typedef QList Context; ResourceEditorW(const Context &context, - Core::ICore *core, ResourceEditorPlugin *plugin, QWidget *parent = 0); ~ResourceEditorW(); @@ -126,7 +120,6 @@ private: QString m_displayName; QString m_suggestedName; const Context m_context; - Core::ICore *m_core; QPointer m_resourceEditor; ResourceEditorFile *m_resourceFile; ResourceEditorPlugin *m_plugin; diff --git a/src/plugins/resourceeditor/resourcewizard.cpp b/src/plugins/resourceeditor/resourcewizard.cpp index b2e76ed154a..e4657fb0a95 100644 --- a/src/plugins/resourceeditor/resourcewizard.cpp +++ b/src/plugins/resourceeditor/resourcewizard.cpp @@ -38,16 +38,17 @@ using namespace ResourceEditor; using namespace ResourceEditor::Internal; -ResourceWizard::ResourceWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent) : - Core::StandardFileWizard(parameters, core, parent) +ResourceWizard::ResourceWizard(const BaseFileWizardParameters ¶meters, QObject *parent) + : Core::StandardFileWizard(parameters, parent) { } Core::GeneratedFiles ResourceWizard::generateFilesFromPath(const QString &path, const QString &name, - QString * /*errorMessage*/) const + QString *errorMessage) const { + Q_UNUSED(errorMessage); const QString suffix = preferredSuffix(QLatin1String(Constants::C_RESOURCE_MIMETYPE)); const QString fileName = Core::BaseFileWizard::buildFileName(path, name, suffix); Core::GeneratedFile file(fileName); diff --git a/src/plugins/resourceeditor/resourcewizard.h b/src/plugins/resourceeditor/resourcewizard.h index e435755b2fc..829c6eae9a9 100644 --- a/src/plugins/resourceeditor/resourcewizard.h +++ b/src/plugins/resourceeditor/resourcewizard.h @@ -45,7 +45,7 @@ class ResourceWizard : public Core::StandardFileWizard public: typedef Core::BaseFileWizardParameters BaseFileWizardParameters; - explicit ResourceWizard(const BaseFileWizardParameters ¶meters, Core::ICore *core, QObject *parent); + explicit ResourceWizard(const BaseFileWizardParameters ¶meters, QObject *parent); protected: virtual Core::GeneratedFiles diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 23f4986bc31..5a3d567f1ec 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -284,7 +284,8 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe static const char *describeSlot = SLOT(describe(QString,QString)); const int editorCount = sizeof(editorParameters)/sizeof(VCSBase::VCSBaseEditorParameters); for (int i = 0; i < editorCount; i++) { - m_editorFactories.push_back(new SubversionEditorFactory(editorParameters + i, m_coreInstance, this, describeSlot)); + m_editorFactories.push_back( + new SubversionEditorFactory(editorParameters + i, this, describeSlot)); addObject(m_editorFactories.back()); } diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 61fc6eadc17..e574140d3d8 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -49,9 +49,8 @@ using namespace Core::Utils; using namespace Find; using namespace TextEditor; -BaseFileFind::BaseFileFind(Core::ICore *core, SearchResultWindow *resultWindow) - : m_core(core), - m_resultWindow(resultWindow), +BaseFileFind::BaseFileFind(SearchResultWindow *resultWindow) + : m_resultWindow(resultWindow), m_isSearching(false), m_resultLabel(0), m_filterCombo(0), @@ -95,7 +94,8 @@ void BaseFileFind::findAll(const QString &txt, QTextDocument::FindFlags findFlag m_watcher.setFuture(Core::Utils::findInFilesRegExp(txt, files(), findFlags)); else m_watcher.setFuture(Core::Utils::findInFiles(txt, files(), findFlags)); - Core::FutureProgress *progress = m_core->progressManager()->addTask(m_watcher.future(), + Core::FutureProgress *progress = + Core::ICore::instance()->progressManager()->addTask(m_watcher.future(), "Search", Constants::TASK_SEARCH); progress->setWidget(createProgressWidget()); diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h index 2aacf2d9650..706964cf50a 100644 --- a/src/plugins/texteditor/basefilefind.h +++ b/src/plugins/texteditor/basefilefind.h @@ -36,7 +36,6 @@ #include "texteditor_global.h" -#include #include #include #include @@ -55,7 +54,7 @@ class TEXTEDITOR_EXPORT BaseFileFind : public Find::IFindFilter Q_OBJECT public: - BaseFileFind(Core::ICore *core, Find::SearchResultWindow *resultWindow); + explicit BaseFileFind(Find::SearchResultWindow *resultWindow); bool isEnabled() const; void findAll(const QString &txt, QTextDocument::FindFlags findFlags); @@ -79,7 +78,6 @@ private slots: private: QWidget *createProgressWidget(); - Core::ICore *m_core; Find::SearchResultWindow *m_resultWindow; QFutureWatcher m_watcher; bool m_isSearching; diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index c8c1020563e..b474fdd5eac 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -42,8 +42,8 @@ using namespace Find; using namespace TextEditor::Internal; -FindInFiles::FindInFiles(Core::ICore *core, SearchResultWindow *resultWindow) - : BaseFileFind(core, resultWindow), +FindInFiles::FindInFiles(SearchResultWindow *resultWindow) + : BaseFileFind(resultWindow), m_configWidget(0), m_directory(0) { diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h index e38c838f87d..e894f7eece7 100644 --- a/src/plugins/texteditor/findinfiles.h +++ b/src/plugins/texteditor/findinfiles.h @@ -36,7 +36,6 @@ #include "basefilefind.h" -#include #include #include @@ -54,12 +53,10 @@ class FindInFiles : public BaseFileFind Q_OBJECT public: - FindInFiles(Core::ICore *core, Find::SearchResultWindow *resultWindow); + explicit FindInFiles(Find::SearchResultWindow *resultWindow); QString name() const; - QKeySequence defaultShortcut() const; - void findAll(const QString &txt, QTextDocument::FindFlags findFlags); QWidget *createConfigWidget(); void writeSettings(QSettings *settings); diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 1eaccaba6e2..5d493cef404 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -36,20 +36,21 @@ #include "texteditorconstants.h" #include "ui_fontsettingspage.h" +#include #include #include #include -#include -#include -#include #include #include -#include -#include #include #include +#include #include +#include +#include +#include +#include static inline QString colorButtonStyleSheet(const QColor &bgColor) { @@ -70,10 +71,9 @@ public: FontSettingsPagePrivate(const TextEditor::FormatDescriptions &fd, const QString &name, const QString &category, - const QString &trCategory, - Core::ICore *core); + const QString &trCategory); - Core::ICore *m_core; +public: const QString m_name; const QString m_settingsGroup; const QString m_category; @@ -89,9 +89,7 @@ public: FontSettingsPagePrivate::FontSettingsPagePrivate(const TextEditor::FormatDescriptions &fd, const QString &name, const QString &category, - const QString &trCategory, - Core::ICore *core) : - m_core(core), + const QString &trCategory) : m_name(name), m_settingsGroup(Core::Utils::settingsKey(category)), m_category(category), @@ -102,9 +100,8 @@ FontSettingsPagePrivate::FontSettingsPagePrivate(const TextEditor::FormatDescrip m_curItem(-1) { bool settingsFound = false; - if (m_core) - if (const QSettings *settings = m_core->settings()) - settingsFound = m_value.fromSettings(m_settingsGroup, m_descriptions, settings); + if (const QSettings *settings = Core::ICore::instance()->settings()) + settingsFound = m_value.fromSettings(m_settingsGroup, m_descriptions, settings); if (!settingsFound) { // Apply defaults foreach (const FormatDescription &f, m_descriptions) { const QString name = f.name(); @@ -200,10 +197,9 @@ QColor FormatDescription::background() const FontSettingsPage::FontSettingsPage(const FormatDescriptions &fd, const QString &category, const QString &trCategory, - Core::ICore *core, QObject *parent) : Core::IOptionsPage(parent), - d_ptr(new FontSettingsPagePrivate(fd, tr("Font & Colors"), category, trCategory, core)) + d_ptr(new FontSettingsPagePrivate(fd, tr("Font & Colors"), category, trCategory)) { } @@ -232,7 +228,6 @@ QWidget *FontSettingsPage::createPage(QWidget *parent) QWidget *w = new QWidget(parent); d_ptr->ui.setupUi(w); - d_ptr->ui.itemListWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); foreach (const FormatDescription &d, d_ptr->m_descriptions) @@ -447,9 +442,8 @@ void FontSettingsPage::apply() if (d_ptr->m_value != d_ptr->m_lastValue) { d_ptr->m_lastValue = d_ptr->m_value; - if (d_ptr->m_core) - if (QSettings *settings = d_ptr->m_core->settings()) - d_ptr->m_value.toSettings(d_ptr->m_settingsGroup, d_ptr->m_descriptions, settings); + if (QSettings *settings = Core::ICore::instance()->settings()) + d_ptr->m_value.toSettings(d_ptr->m_settingsGroup, d_ptr->m_descriptions, settings); QTimer::singleShot(0, this, SLOT(delayedChange())); } diff --git a/src/plugins/texteditor/fontsettingspage.h b/src/plugins/texteditor/fontsettingspage.h index 6a518f518d3..bc674de3c20 100644 --- a/src/plugins/texteditor/fontsettingspage.h +++ b/src/plugins/texteditor/fontsettingspage.h @@ -38,7 +38,6 @@ #include "fontsettings.h" -#include #include #include @@ -89,7 +88,6 @@ public: FontSettingsPage(const FormatDescriptions &fd, const QString &category, const QString &trCategory, - Core::ICore *core, QObject *parent = 0); ~FontSettingsPage(); diff --git a/src/plugins/texteditor/generalsettingspage.cpp b/src/plugins/texteditor/generalsettingspage.cpp index d20763b0cab..7be7bca1f4b 100644 --- a/src/plugins/texteditor/generalsettingspage.cpp +++ b/src/plugins/texteditor/generalsettingspage.cpp @@ -37,16 +37,17 @@ #include "tabsettings.h" #include "ui_generalsettingspage.h" +#include + #include #include using namespace TextEditor; -struct GeneralSettingsPage::GeneralSettingsPagePrivate { - GeneralSettingsPagePrivate(Core::ICore *core, - const GeneralSettingsPageParameters &p); +struct GeneralSettingsPage::GeneralSettingsPagePrivate +{ + explicit GeneralSettingsPagePrivate(const GeneralSettingsPageParameters &p); - Core::ICore *m_core; const GeneralSettingsPageParameters m_parameters; Ui::generalSettingsPage m_page; TabSettings m_tabSettings; @@ -54,24 +55,21 @@ struct GeneralSettingsPage::GeneralSettingsPagePrivate { DisplaySettings m_displaySettings; }; -GeneralSettingsPage::GeneralSettingsPagePrivate::GeneralSettingsPagePrivate(Core::ICore *core, - const GeneralSettingsPageParameters &p) : - m_core(core), - m_parameters(p) +GeneralSettingsPage::GeneralSettingsPagePrivate::GeneralSettingsPagePrivate + (const GeneralSettingsPageParameters &p) + : m_parameters(p) { - if (m_core) - if (const QSettings *s = m_core->settings()) { - m_tabSettings.fromSettings(m_parameters.settingsPrefix, s); - m_storageSettings.fromSettings(m_parameters.settingsPrefix, s); - m_displaySettings.fromSettings(m_parameters.settingsPrefix, s); - } + if (const QSettings *s = Core::ICore::instance()->settings()) { + m_tabSettings.fromSettings(m_parameters.settingsPrefix, s); + m_storageSettings.fromSettings(m_parameters.settingsPrefix, s); + m_displaySettings.fromSettings(m_parameters.settingsPrefix, s); + } } -GeneralSettingsPage::GeneralSettingsPage(Core::ICore *core, - const GeneralSettingsPageParameters &p, - QObject *parent) : - Core::IOptionsPage(parent), - m_d(new GeneralSettingsPagePrivate(core, p)) +GeneralSettingsPage::GeneralSettingsPage(const GeneralSettingsPageParameters &p, + QObject *parent) + : Core::IOptionsPage(parent), + m_d(new GeneralSettingsPagePrivate(p)) { } @@ -99,9 +97,7 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent) { QWidget *w = new QWidget(parent); m_d->m_page.setupUi(w); - settingsToUI(); - return w; } @@ -112,30 +108,28 @@ void GeneralSettingsPage::apply() DisplaySettings newDisplaySettings; settingsFromUI(newTabSettings, newStorageSettings, newDisplaySettings); + Core::ICore *core = Core::ICore::instance(); if (newTabSettings != m_d->m_tabSettings) { m_d->m_tabSettings = newTabSettings; - if (m_d->m_core) - if (QSettings *s = m_d->m_core->settings()) - m_d->m_tabSettings.toSettings(m_d->m_parameters.settingsPrefix, s); + if (QSettings *s = core->settings()) + m_d->m_tabSettings.toSettings(m_d->m_parameters.settingsPrefix, s); emit tabSettingsChanged(newTabSettings); } if (newStorageSettings != m_d->m_storageSettings) { m_d->m_storageSettings = newStorageSettings; - if (m_d->m_core) - if (QSettings *s = m_d->m_core->settings()) - m_d->m_storageSettings.toSettings(m_d->m_parameters.settingsPrefix, s); + if (QSettings *s = core->settings()) + m_d->m_storageSettings.toSettings(m_d->m_parameters.settingsPrefix, s); emit storageSettingsChanged(newStorageSettings); } if (newDisplaySettings != m_d->m_displaySettings) { m_d->m_displaySettings = newDisplaySettings; - if (m_d->m_core) - if (QSettings *s = m_d->m_core->settings()) - m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); + if (QSettings *s = core->settings()) + m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); emit displaySettingsChanged(newDisplaySettings); } @@ -207,9 +201,9 @@ void GeneralSettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySe { if (newDisplaySettings != m_d->m_displaySettings) { m_d->m_displaySettings = newDisplaySettings; - if (m_d->m_core) - if (QSettings *s = m_d->m_core->settings()) - m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); + Core::ICore *core = Core::ICore::instance(); + if (QSettings *s = core->settings()) + m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); emit displaySettingsChanged(newDisplaySettings); } diff --git a/src/plugins/texteditor/generalsettingspage.h b/src/plugins/texteditor/generalsettingspage.h index eea75e2ccc8..5eb9c0811c2 100644 --- a/src/plugins/texteditor/generalsettingspage.h +++ b/src/plugins/texteditor/generalsettingspage.h @@ -36,7 +36,6 @@ #include "texteditor_global.h" -#include #include #include @@ -47,26 +46,23 @@ struct TabSettings; struct StorageSettings; struct DisplaySettings; -struct TEXTEDITOR_EXPORT GeneralSettingsPageParameters { +struct TEXTEDITOR_EXPORT GeneralSettingsPageParameters +{ QString name; QString category; QString trCategory; QString settingsPrefix; }; -class Ui_generalSettingsPage; - class TEXTEDITOR_EXPORT GeneralSettingsPage : public Core::IOptionsPage { Q_OBJECT public: - GeneralSettingsPage(Core::ICore *core, - const GeneralSettingsPageParameters &p, - QObject *parent); + GeneralSettingsPage(const GeneralSettingsPageParameters &p, QObject *parent); virtual ~GeneralSettingsPage(); - //IOptionsPage + // IOptionsPage QString name() const; QString category() const; QString trCategory() const; diff --git a/src/plugins/texteditor/plaintexteditor.cpp b/src/plugins/texteditor/plaintexteditor.cpp index b9370bca9cf..4a76df10766 100644 --- a/src/plugins/texteditor/plaintexteditor.cpp +++ b/src/plugins/texteditor/plaintexteditor.cpp @@ -45,7 +45,7 @@ using namespace TextEditor::Internal; PlainTextEditorEditable::PlainTextEditorEditable(PlainTextEditor *editor) :BaseTextEditorEditable(editor) { - Core::ICore *core = TextEditorPlugin::core(); + Core::ICore *core = Core::ICore::instance(); m_context << core->uniqueIDManager()-> uniqueIdentifier(Core::Constants::K_DEFAULT_TEXT_EDITOR); m_context << core->uniqueIDManager()-> @@ -55,7 +55,6 @@ PlainTextEditorEditable::PlainTextEditorEditable(PlainTextEditor *editor) PlainTextEditor::PlainTextEditor(QWidget *parent) : BaseTextEditor(parent) { - setRevisionsVisible(true); setMarksVisible(true); setRequestMarkEnabled(false); @@ -69,7 +68,6 @@ QList PlainTextEditorEditable::context() const return m_context; } - Core::IEditor *PlainTextEditorEditable::duplicate(QWidget *parent) { PlainTextEditor *newEditor = new PlainTextEditor(parent); @@ -103,8 +101,10 @@ const char *PlainTextEditorEditable::kind() const // to do in 2 steps (indenting/wrapping)} // -void PlainTextEditor::indentBlock(QTextDocument *doc, QTextBlock block, QChar /* typedChar */) +void PlainTextEditor::indentBlock(QTextDocument *doc, QTextBlock block, QChar typedChar) { + Q_UNUSED(typedChar); + // At beginning: Leave as is. if (block == doc->begin()) return; diff --git a/src/plugins/texteditor/plaintexteditorfactory.cpp b/src/plugins/texteditor/plaintexteditorfactory.cpp index 92a3a79ea4f..7c63855ec7a 100644 --- a/src/plugins/texteditor/plaintexteditorfactory.cpp +++ b/src/plugins/texteditor/plaintexteditorfactory.cpp @@ -37,19 +37,20 @@ #include "texteditorplugin.h" #include "texteditoractionhandler.h" +#include #include #include using namespace TextEditor; using namespace TextEditor::Internal; -PlainTextEditorFactory::PlainTextEditorFactory(QObject *parent) : - Core::IEditorFactory(parent), +PlainTextEditorFactory::PlainTextEditorFactory(QObject *parent) + : Core::IEditorFactory(parent), m_kind(Core::Constants::K_DEFAULT_TEXT_EDITOR) { - m_actionHandler = new TextEditorActionHandler(TextEditorPlugin::core(), - QLatin1String(TextEditor::Constants::C_TEXTEDITOR), - TextEditorActionHandler::Format); + m_actionHandler = new TextEditorActionHandler( + QLatin1String(TextEditor::Constants::C_TEXTEDITOR), + TextEditorActionHandler::Format); m_mimeTypes << QLatin1String(TextEditor::Constants::C_TEXTEDITOR_MIMETYPE_TEXT) << QLatin1String(TextEditor::Constants::C_TEXTEDITOR_MIMETYPE_XML); } @@ -66,14 +67,14 @@ QString PlainTextEditorFactory::kind() const Core::IFile *PlainTextEditorFactory::open(const QString &fileName) { - Core::ICore *core = TextEditorPlugin::core(); + Core::ICore *core = Core::ICore::instance(); Core::IEditor *iface = core->editorManager()->openEditor(fileName, kind()); return iface ? iface->file() : 0; } Core::IEditor *PlainTextEditorFactory::createEditor(QWidget *parent) { - PlainTextEditor *rc = new PlainTextEditor(parent); + PlainTextEditor *rc = new PlainTextEditor(parent); TextEditorPlugin::instance()->initializeEditor(rc); return rc->editableInterface(); } diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index e15cbfd0096..511e1d919e7 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -38,6 +38,7 @@ #include "linenumberfilter.h" #include +#include #include #include #include @@ -52,31 +53,45 @@ using namespace TextEditor; using namespace TextEditor::Internal; -TextEditorActionHandler::TextEditorActionHandler(Core::ICore *core, - const QString &context, - uint optionalActions) : - QObject(core), +TextEditorActionHandler::TextEditorActionHandler(const QString &context, + uint optionalActions) + : QObject(Core::ICore::instance()), m_optionalActions(optionalActions), m_currentEditor(0), - m_core(core), m_initialized(false) { - m_undoAction = m_redoAction = m_copyAction = m_cutAction = m_pasteAction - = m_selectAllAction = m_gotoAction = m_printAction = m_formatAction - = m_visualizeWhitespaceAction = m_cleanWhitespaceAction = m_textWrappingAction - = m_unCommentSelectionAction = m_unCollapseAllAction - = m_collapseAction = m_expandAction - = m_deleteLineAction = m_selectEncodingAction - = m_increaseFontSizeAction = m_decreaseFontSizeAction - = m_gotoBlockStartAction = m_gotoBlockStartWithSelectionAction - = m_gotoBlockEndAction = m_gotoBlockEndWithSelectionAction - = m_selectBlockUpAction = m_selectBlockDownAction - = m_moveLineUpAction = m_moveLineDownAction - = 0; + m_undoAction = 0; + m_redoAction = 0; + m_copyAction = 0; + m_cutAction = 0; + m_pasteAction = 0; + m_selectAllAction = 0; + m_gotoAction = 0; + m_printAction = 0; + m_formatAction = 0; + m_visualizeWhitespaceAction = 0; + m_cleanWhitespaceAction = 0; + m_textWrappingAction = 0; + m_unCommentSelectionAction = 0; + m_unCollapseAllAction = 0; + m_collapseAction = 0; + m_expandAction = 0; + m_deleteLineAction = 0; + m_selectEncodingAction = 0; + m_increaseFontSizeAction = 0; + m_decreaseFontSizeAction = 0; + m_gotoBlockStartAction = 0; + m_gotoBlockStartWithSelectionAction = 0; + m_gotoBlockEndAction = 0; + m_gotoBlockEndWithSelectionAction = 0; + m_selectBlockUpAction = 0; + m_selectBlockDownAction = 0; + m_moveLineUpAction = 0; + m_moveLineDownAction = 0; - m_contextId << m_core->uniqueIDManager()->uniqueIdentifier(context); + m_contextId << Core::ICore::instance()->uniqueIDManager()->uniqueIdentifier(context); - connect(m_core, SIGNAL(contextAboutToChange(Core::IContext *)), + connect(Core::ICore::instance(), SIGNAL(contextAboutToChange(Core::IContext *)), this, SLOT(updateCurrentEditor(Core::IContext *))); } @@ -111,7 +126,7 @@ void TextEditorActionHandler::createActions() m_gotoAction = registerNewAction(QLatin1String(Core::Constants::GOTO), this, SLOT(gotoAction())); m_printAction = registerNewAction(QLatin1String(Core::Constants::PRINT), this, SLOT(printAction())); - Core::ActionManager *am = m_core->actionManager(); + Core::ActionManager *am = Core::ICore::instance()->actionManager(); Core::ActionContainer *medit = am->actionContainer(Core::Constants::M_EDIT); Core::ActionContainer *advancedMenu = am->actionContainer(Core::Constants::M_EDIT_ADVANCED); @@ -248,7 +263,7 @@ QAction *TextEditorActionHandler::registerNewAction(const QString &id, const QSt return 0; QAction *result = new QAction(title, this); - m_core->actionManager()->registerAction(result, id, m_contextId); + Core::ICore::instance()->actionManager()->registerAction(result, id, m_contextId); return result; } @@ -349,7 +364,7 @@ void TextEditorActionHandler::gotoAction() void TextEditorActionHandler::printAction() { if (m_currentEditor) - m_currentEditor->print(m_core->printer()); + m_currentEditor->print(Core::ICore::instance()->printer()); } void TextEditorActionHandler::setVisualizeWhitespace(bool checked) @@ -445,9 +460,3 @@ const QPointer &TextEditorActionHandler::currentEditor() const { return m_currentEditor; } - -Core::ICore *TextEditorActionHandler::core() const -{ - return m_core; -} - diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h index ea30cad7413..172617e9a27 100644 --- a/src/plugins/texteditor/texteditoractionhandler.h +++ b/src/plugins/texteditor/texteditoractionhandler.h @@ -38,11 +38,10 @@ #include "basetexteditor.h" #include "coreplugin/icontext.h" -#include "coreplugin/icore.h" +#include #include #include -#include namespace TextEditor { @@ -62,9 +61,7 @@ public: UnCollapseAll = 4 }; - TextEditorActionHandler(Core::ICore *core, - const QString &context, - uint optionalActions = None); + TextEditorActionHandler(const QString &context, uint optionalActions = None); void setupActions(BaseTextEditor *editor); void initializeActions(); @@ -80,7 +77,6 @@ protected: QAction *registerNewAction(const QString &id, const QString &title = QString()); QAction *registerNewAction(const QString &id, QObject *receiver, const char *slot, const QString &title = QString()); - Core::ICore *core() const; enum UpdateMode { NoEditor , ReadOnlyMode, WriteMode }; UpdateMode updateMode() const; @@ -152,7 +148,6 @@ private: uint m_optionalActions; QPointer m_currentEditor; - Core::ICore *m_core; QList m_contextId; bool m_initialized; }; diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index c36d985a18b..23b96a53217 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -62,9 +62,8 @@ using namespace TextEditor::Internal; TextEditorPlugin *TextEditorPlugin::m_instance = 0; -TextEditorPlugin::TextEditorPlugin() : - m_core(0), - m_settings(0), +TextEditorPlugin::TextEditorPlugin() + : m_settings(0), m_wizard(0), m_editorFactory(0), m_lineNumberFilter(0) @@ -83,19 +82,12 @@ TextEditorPlugin *TextEditorPlugin::instance() return m_instance; } -Core::ICore *TextEditorPlugin::core() -{ - return m_instance->m_core; -} - // ExtensionSystem::PluginInterface bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMessage) { Q_UNUSED(arguments); - m_core = Core::ICore::instance(); - - if (!m_core->mimeDatabase()->addMimeTypes(QLatin1String(":/texteditor/TextEditor.mimetypes.xml"), errorMessage)) + if (!Core::ICore::instance()->mimeDatabase()->addMimeTypes(QLatin1String(":/texteditor/TextEditor.mimetypes.xml"), errorMessage)) return false; Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); @@ -106,7 +98,7 @@ bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMe m_wizard = new TextFileWizard(QLatin1String(TextEditor::Constants::C_TEXTEDITOR_MIMETYPE_TEXT), QLatin1String(Core::Constants::K_DEFAULT_TEXT_EDITOR), QLatin1String("text$"), - wizardParameters, m_core); + wizardParameters); // Add text file wizard addAutoReleasedObject(m_wizard); @@ -118,15 +110,16 @@ bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMe addAutoReleasedObject(m_editorFactory); // Goto line functionality for quick open - m_lineNumberFilter = new LineNumberFilter(m_core->editorManager()); + Core::ICore *core = Core::ICore::instance(); + m_lineNumberFilter = new LineNumberFilter(core->editorManager()); addAutoReleasedObject(m_lineNumberFilter); - int contextId = m_core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); + int contextId = core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); QList context = QList() << contextId; - Core::ActionManager *am = m_core->actionManager(); + Core::ActionManager *am = core->actionManager(); // Add shortcut for invoking automatic completion - QShortcut *completionShortcut = new QShortcut(m_core->mainWindow()); + QShortcut *completionShortcut = new QShortcut(core->mainWindow()); completionShortcut->setWhatsThis(tr("Triggers a completion in this scope")); // Make sure the shortcut still works when the completion widget is active completionShortcut->setContext(Qt::ApplicationShortcut); @@ -138,7 +131,8 @@ bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMe #endif connect(completionShortcut, SIGNAL(activated()), this, SLOT(invokeCompletion())); - addAutoReleasedObject(new FindInFiles(m_core, m_core->pluginManager()->getObject())); + addAutoReleasedObject(new FindInFiles( + ExtensionSystem::PluginManager::instance()->getObject())); return true; } @@ -172,7 +166,7 @@ void TextEditorPlugin::initializeEditor(TextEditor::PlainTextEditor *editor) void TextEditorPlugin::invokeCompletion() { - Core::IEditor *iface = m_core->editorManager()->currentEditor(); + Core::IEditor *iface = Core::ICore::instance()->editorManager()->currentEditor(); ITextEditor *editor = qobject_cast(iface); if (editor) editor->triggerCompletions(); diff --git a/src/plugins/texteditor/texteditorplugin.h b/src/plugins/texteditor/texteditorplugin.h index 65c7c3e48e8..1f0029a71aa 100644 --- a/src/plugins/texteditor/texteditorplugin.h +++ b/src/plugins/texteditor/texteditorplugin.h @@ -36,22 +36,13 @@ #include -QT_BEGIN_NAMESPACE -class QAction; -QT_END_NAMESPACE - -namespace Core { -class ICore; -class IEditor; -} - namespace TextEditor { class FontSettings; class FontSettingsPage; +class PlainTextEditor; class TextEditorSettings; class TextFileWizard; -class PlainTextEditor; namespace Internal { @@ -67,10 +58,9 @@ public: virtual ~TextEditorPlugin(); static TextEditorPlugin *instance(); - static Core::ICore *core(); // ExtensionSystem::PluginInterface - bool initialize(const QStringList &arguments, QString *); + bool initialize(const QStringList &arguments, QString *errorMessage); void extensionsInitialized(); void initializeEditor(PlainTextEditor *editor); @@ -82,7 +72,6 @@ private slots: private: static TextEditorPlugin *m_instance; - Core::ICore *m_core; TextEditorSettings *m_settings; TextFileWizard *m_wizard; PlainTextEditorFactory *m_editorFactory; diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp index 6718f20ad6c..ea61d571725 100644 --- a/src/plugins/texteditor/texteditorsettings.cpp +++ b/src/plugins/texteditor/texteditorsettings.cpp @@ -94,8 +94,7 @@ TextEditorSettings::TextEditorSettings(Internal::TextEditorPlugin *plugin, m_fontSettingsPage = new FontSettingsPage(formatDescriptions, QLatin1String("TextEditor"), - tr("Text Editor"), - plugin->core()); + tr("Text Editor")); pm->addObject(m_fontSettingsPage); // Add the GUI used to configure the tab, storage and display settings @@ -104,7 +103,7 @@ TextEditorSettings::TextEditorSettings(Internal::TextEditorPlugin *plugin, generalSettingsPageParameters.category = QLatin1String("TextEditor"); generalSettingsPageParameters.trCategory = tr("Text Editor"); generalSettingsPageParameters.settingsPrefix = QLatin1String("text"); - m_generalSettingsPage = new GeneralSettingsPage(plugin->core(), generalSettingsPageParameters, this); + m_generalSettingsPage = new GeneralSettingsPage(generalSettingsPageParameters, this); pm->addObject(m_generalSettingsPage); connect(m_fontSettingsPage, SIGNAL(changed(TextEditor::FontSettings)), diff --git a/src/plugins/texteditor/textfilewizard.cpp b/src/plugins/texteditor/textfilewizard.cpp index e755233735d..05a3b843a4d 100644 --- a/src/plugins/texteditor/textfilewizard.cpp +++ b/src/plugins/texteditor/textfilewizard.cpp @@ -41,9 +41,8 @@ TextFileWizard::TextFileWizard(const QString &mimeType, const QString &editorKind, const QString &suggestedFileName, const BaseFileWizardParameters ¶meters, - Core::ICore *core, QObject *parent) : - Core::StandardFileWizard(parameters, core, parent), + Core::StandardFileWizard(parameters, parent), m_mimeType(mimeType), m_editorKind(editorKind), m_suggestedFileName(suggestedFileName) diff --git a/src/plugins/texteditor/textfilewizard.h b/src/plugins/texteditor/textfilewizard.h index 2cf2a01b395..1ccc50166f5 100644 --- a/src/plugins/texteditor/textfilewizard.h +++ b/src/plugins/texteditor/textfilewizard.h @@ -50,7 +50,6 @@ public: const QString &editorKind, const QString &suggestedFileName, const BaseFileWizardParameters ¶meters, - Core::ICore *core, QObject *parent = 0); protected: diff --git a/src/plugins/vcsbase/basevcseditorfactory.cpp b/src/plugins/vcsbase/basevcseditorfactory.cpp index 392b9c26964..edfadc7032a 100644 --- a/src/plugins/vcsbase/basevcseditorfactory.cpp +++ b/src/plugins/vcsbase/basevcseditorfactory.cpp @@ -43,28 +43,26 @@ namespace VCSBase { -struct BaseVCSEditorFactoryPrivate { - BaseVCSEditorFactoryPrivate(const VCSBaseEditorParameters *t, Core::ICore *core); +struct BaseVCSEditorFactoryPrivate +{ + BaseVCSEditorFactoryPrivate(const VCSBaseEditorParameters *t); const VCSBaseEditorParameters *m_type; const QString m_kind; const QStringList m_mimeTypes; - Core::ICore *m_core; TextEditor::TextEditorActionHandler *m_editorHandler; }; -BaseVCSEditorFactoryPrivate::BaseVCSEditorFactoryPrivate(const VCSBaseEditorParameters *t, Core::ICore *core) : +BaseVCSEditorFactoryPrivate::BaseVCSEditorFactoryPrivate(const VCSBaseEditorParameters *t) : m_type(t), m_kind(QLatin1String(t->kind)), m_mimeTypes(QStringList(QLatin1String(t->mimeType))), - m_core(core), - m_editorHandler(new TextEditor::TextEditorActionHandler(core, t->kind)) + m_editorHandler(new TextEditor::TextEditorActionHandler(t->kind)) { } -BaseVCSEditorFactory::BaseVCSEditorFactory(const VCSBaseEditorParameters *t, - Core::ICore *core) : - m_d(new BaseVCSEditorFactoryPrivate(t, core)) +BaseVCSEditorFactory::BaseVCSEditorFactory(const VCSBaseEditorParameters *t) + : m_d(new BaseVCSEditorFactoryPrivate(t)) { } @@ -85,7 +83,7 @@ QString BaseVCSEditorFactory::kind() const Core::IFile *BaseVCSEditorFactory::open(const QString &fileName) { - Core::IEditor *iface = m_d->m_core->editorManager()->openEditor(fileName, kind()); + Core::IEditor *iface = Core::ICore::instance()->editorManager()->openEditor(fileName, kind()); return iface ? iface->file() : 0; } diff --git a/src/plugins/vcsbase/basevcseditorfactory.h b/src/plugins/vcsbase/basevcseditorfactory.h index bc10a21180d..ca6e926937a 100644 --- a/src/plugins/vcsbase/basevcseditorfactory.h +++ b/src/plugins/vcsbase/basevcseditorfactory.h @@ -41,14 +41,6 @@ #include -namespace TextEditor { - class TextEditorActionHandler; -} - -namespace Core { - class ICore; -} - namespace VCSBase { struct BaseVCSEditorFactoryPrivate; @@ -59,8 +51,7 @@ class VCSBASE_EXPORT BaseVCSEditorFactory : public Core::IEditorFactory { Q_OBJECT public: - explicit BaseVCSEditorFactory(const VCSBaseEditorParameters *type, - Core::ICore *core); + explicit BaseVCSEditorFactory(const VCSBaseEditorParameters *type); virtual ~BaseVCSEditorFactory(); virtual QStringList mimeTypes() const; @@ -85,7 +76,6 @@ class VCSEditorFactory : public BaseVCSEditorFactory { public: explicit VCSEditorFactory(const VCSBaseEditorParameters *type, - Core::ICore *core, QObject *describeReceiver = 0, const char *describeSlot = 0); @@ -98,10 +88,9 @@ private: template VCSEditorFactory::VCSEditorFactory(const VCSBaseEditorParameters *type, - Core::ICore *core, QObject *describeReceiver, const char *describeSlot) : - BaseVCSEditorFactory(type, core), + BaseVCSEditorFactory(type), m_describeReceiver(describeReceiver), m_describeSlot(describeSlot) { From a654dc0b3a88bb9e023090f898e82ed6bdacd342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 20 Jan 2009 15:38:51 +0100 Subject: [PATCH 81/81] Renamed 'Toggle Sidebar' to 'Show Sidebar' Since it's checkable now, "Show Sidebar" is more suitable. Also changed the interface a bit to allow more than just toggling. --- src/plugins/coreplugin/mainwindow.cpp | 10 +++++----- src/plugins/coreplugin/mainwindow.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 5742eb1a125..1c83700a1d6 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -203,14 +203,14 @@ MainWindow::MainWindow() : statusBar()->setProperty("p_styled", true); } -void MainWindow::toggleNavigation() +void MainWindow::setSidebarVisible(bool visible) { if (NavigationWidgetPlaceHolder::current()) { - if (m_navigationWidget->isSuppressed()) { + if (m_navigationWidget->isSuppressed() && visible) { m_navigationWidget->setShown(true); m_navigationWidget->setSuppressed(false); } else { - m_navigationWidget->setShown(!m_navigationWidget->isShown()); + m_navigationWidget->setShown(visible); } } } @@ -628,7 +628,7 @@ void MainWindow::registerDefaultActions() // Toggle Sidebar Action m_toggleSideBarAction = new QAction(QIcon(Constants::ICON_TOGGLE_SIDEBAR), - tr("Toggle Sidebar"), this); + tr("Show Sidebar"), this); m_toggleSideBarAction->setCheckable(true); cmd = am->registerAction(m_toggleSideBarAction, Constants::TOGGLE_SIDEBAR, m_globalContext); #ifdef Q_OS_MAC @@ -636,7 +636,7 @@ void MainWindow::registerDefaultActions() #else cmd->setDefaultKeySequence(QKeySequence("Alt+0")); #endif - connect(m_toggleSideBarAction, SIGNAL(triggered()), this, SLOT(toggleNavigation())); + connect(m_toggleSideBarAction, SIGNAL(triggered(bool)), this, SLOT(setSidebarVisible(bool))); m_toggleSideBarButton->setDefaultAction(cmd->action()); mwindow->addAction(cmd, Constants::G_WINDOW_PANES); m_toggleSideBarAction->setEnabled(false); diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index c7fccdefabb..e1fb1d9c662 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -158,7 +158,7 @@ private slots: void aboutQtCreator(); void aboutPlugins(); void updateFocusWidget(QWidget *old, QWidget *now); - void toggleNavigation(); + void setSidebarVisible(bool visible); void destroyVersionDialog(); private:
  • o0vb^VZHQ@j;oU!J)2K$|?h0cf?K&y}8<9 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator-vcs-pane.png b/doc/qtcreator-vcs-pane.png new file mode 100644 index 0000000000000000000000000000000000000000..faea0cf32e1a20cfceb71e79274d694cfdb04354 GIT binary patch literal 26015 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 Date: Thu, 15 Jan 2009 15:57:18 +0100 Subject: [PATCH 36/81] debugger: add configuariton to start the debugged process in a separate terminal --- src/plugins/debugger/debuggermanager.cpp | 2 +- src/plugins/debugger/debuggermanager.h | 1 + src/plugins/debugger/debuggerplugin.cpp | 4 ++++ src/plugins/debugger/gdboptionpage.ui | 10 ++++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index e2840fb7180..7b0e6c24273 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -94,7 +94,7 @@ DebuggerSettings::DebuggerSettings() m_skipKnownFrames = false; m_debugDumpers = false; m_useToolTips = false; - m_useToolTips = false; + m_useTerminal = false; m_useCustomDumpers = true; } diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index f3d76bb531e..5d5e7abd0da 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -200,6 +200,7 @@ public: bool m_debugDumpers; bool m_useFastStart; bool m_useToolTips; + bool m_useTerminal; QString m_scriptFile; }; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 3f12a029106..204345a0220 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -277,6 +277,7 @@ QWidget *GdbOptionPage::createPage(QWidget *parent) m_ui.checkBoxUseCustomDumpers->setChecked(m_settings.m_useCustomDumpers); m_ui.checkBoxFastStart->setChecked(m_settings.m_useFastStart); m_ui.checkBoxUseToolTips->setChecked(m_settings.m_useToolTips); + m_ui.checkBoxUseTerminal->setChecked(m_settings.m_useTerminal); #ifndef QT_DEBUG #if 0 @@ -315,6 +316,7 @@ void GdbOptionPage::apply() m_settings.m_useCustomDumpers = m_ui.checkBoxUseCustomDumpers->isChecked(); m_settings.m_useFastStart = m_ui.checkBoxFastStart->isChecked(); m_settings.m_useToolTips = m_ui.checkBoxUseToolTips->isChecked(); + m_settings.m_useTerminal = m_ui.checkBoxUseTerminal->isChecked(); *m_plugin->m_manager->settings() = m_settings; m_plugin->writeSettings(); @@ -897,6 +899,7 @@ void DebuggerPlugin::writeSettings() const s->setValue("UseFastStart", m->m_useFastStart); s->setValue("UseToolTips", m->m_useToolTips); + s->setValue("UseTerminal", m->m_useTerminal); s->setValue("UseCustomDumpers", m->m_useCustomDumpers); s->setValue("SkipKnowFrames", m->m_skipKnownFrames); s->setValue("DebugDumpers", m->m_debugDumpers); @@ -930,6 +933,7 @@ void DebuggerPlugin::readSettings() m->m_useCustomDumpers = s->value("UseCustomDupers", false).toBool(); m->m_useFastStart = s->value("UseFastStart", false).toBool(); m->m_useToolTips = s->value("UseToolTips", false).toBool(); + m->m_useTerminal = s->value("UseTerminal", false).toBool(); s->endGroup(); m_manager->mainWindow()->restoreState(ba); diff --git a/src/plugins/debugger/gdboptionpage.ui b/src/plugins/debugger/gdboptionpage.ui index 757ed1d7023..dcd57443350 100644 --- a/src/plugins/debugger/gdboptionpage.ui +++ b/src/plugins/debugger/gdboptionpage.ui @@ -84,6 +84,16 @@ + + + + Start debugged process in a separte terminal. + + + Start in terminal + + + From b64bc93d0dc67b15f8239425ee2b1179f1c5cce4 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Thu, 15 Jan 2009 16:01:58 +0100 Subject: [PATCH 37/81] Fixes: Documentation - adding the Qt Creator and Version Control Systems to the main page --- doc/qtcreator.qdoc | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 92c01dd1711..bbe25c23f59 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -53,6 +53,7 @@ \o \l{Build Settings} \o \l{Qt Version Management} \o \l{Writing a Simple Program with Qt Creator} + \o \l{Qt Creator and Version Control Systems} \o \l{Navigating Quickly Around Your Code with Locator} \o \l{Debugging with Qt Creator} \o \l{Tips and Tricks} From e356c0770df4c783c10b9fe8bbbc7c9827d7022e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 15 Jan 2009 16:04:52 +0100 Subject: [PATCH 38/81] Fixes: Broken image link --- doc/qtcreator.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index bbe25c23f59..68dc857c0ae 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -847,7 +847,7 @@ will be displayed. \image qtcreator-vcs-log.png - \image qtcreaotr-vcs-describe.png + \image qtcreator-vcs-describe.png \section2 Annotating Files From 58a0724980bcd97fa72fe6c6f981d2ed19793756 Mon Sep 17 00:00:00 2001 From: dt Date: Thu, 15 Jan 2009 16:06:37 +0100 Subject: [PATCH 39/81] Fixes: Fix parseOption method to be robust --- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index ac65d225b52..65bf70fe584 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -548,8 +548,15 @@ void CMakeCbpParser::parseOption() { if (attributes().hasAttribute("title")) m_projectName = attributes().value("title").toString(); - if(isStartElement()) - parseUnknownElement(); + + while (!atEnd()) { + readNext(); + if (isEndElement()) { + return; + } else if(isStartElement()) { + parseUnknownElement(); + } + } } void CMakeCbpParser::parseMakeCommand() From 3ce094e474a47b0f77ce1ffcf566f6ff36d924dc Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 16:42:10 +0100 Subject: [PATCH 40/81] fakevim: improve logic for setting the '<' mark --- src/plugins/fakevim/fakevimhandler.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 29f8c323d1f..087d225207f 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -384,6 +384,9 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) return; } + if (m_visualMode != NoVisualMode) + m_marks['>'] = m_tc.position(); + if (m_submode == ChangeSubMode) { if (!dotCommand.isEmpty()) m_dotCommand = "c" + dotCommand; @@ -615,10 +618,8 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text) } else if (key == ':') { m_mode = ExMode; m_commandBuffer.clear(); - if (m_visualMode != NoVisualMode) { + if (m_visualMode != NoVisualMode) m_commandBuffer = "'<,'>"; - leaveVisualMode(); - } m_commandHistory.append(QString()); m_commandHistoryIndex = m_commandHistory.size() - 1; updateMiniBuffer(); @@ -640,7 +641,6 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text) m_submode = FilterSubMode; } else if (key == '!' && m_visualMode == VisualLineMode) { m_mode = ExMode; - m_marks['>'] = m_tc.position(); m_commandBuffer = "'<,'>!"; m_commandHistory.append(QString()); m_commandHistoryIndex = m_commandHistory.size() - 1; @@ -1021,6 +1021,7 @@ bool FakeVimHandler::Private::handleMiniBufferModes(int key, const QString &text m_commandHistory.takeLast(); m_commandHistory.append(m_commandBuffer); handleExCommand(m_commandBuffer); + leaveVisualMode(); } } else if (key == Key_Return && isSearchMode()) { if (!m_commandBuffer.isEmpty()) { @@ -1140,7 +1141,6 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) if (cmd.startsWith("%")) cmd = "1,$" + cmd.mid(1); - m_marks['>'] = m_tc.position(); int beginLine = -1; int endLine = -1; From 14276f72ff3472f04037adeafdb94d6de37b292a Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Thu, 15 Jan 2009 16:52:12 +0100 Subject: [PATCH 41/81] Fixes: Warning on MSVC, no not temporary convert to int. RevBy: Matthias --- src/plugins/texteditor/basetexteditor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 9f145bc0801..f3d1ab07566 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -3370,9 +3370,9 @@ void BaseTextEditor::setIfdefedOutBlocks(const QList const BlockRange &range = blocks.at(rangeNumber); if (block.position() >= range.first && (block.position() <= range.last || !range.last)) { - needUpdate += TextEditDocumentLayout::setIfdefedOut(block); + needUpdate |= TextEditDocumentLayout::setIfdefedOut(block); } else { - needUpdate += TextEditDocumentLayout::clearIfdefedOut(block); + needUpdate |= TextEditDocumentLayout::clearIfdefedOut(block); } if (block.contains(range.last)) ++rangeNumber; From 0b22e71fee07ce89771d66c5032a291b0dd77a24 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 16:57:11 +0100 Subject: [PATCH 42/81] fakevim: improve behaviour of in various modes --- src/plugins/fakevim/fakevimhandler.cpp | 38 ++++++++++++++------------ 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 087d225207f..bedd2ccb38d 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -161,11 +161,11 @@ private: static int control(int key) { return key + 256; } void init(); - bool handleKey(int key, const QString &text); - bool handleInsertMode(int key, const QString &text); - bool handleCommandMode(int key, const QString &text); - bool handleRegisterMode(int key, const QString &text); - bool handleMiniBufferModes(int key, const QString &text); + bool handleKey(int key, int unmodified, const QString &text); + bool handleInsertMode(int key, int unmodified, const QString &text); + bool handleCommandMode(int key, int unmodified, const QString &text); + bool handleRegisterMode(int key, int unmodified, const QString &text); + bool handleMiniBufferModes(int key, int unmodified, const QString &text); void finishMovement(const QString &text = QString()); void search(const QString &needle, bool forward); @@ -314,6 +314,7 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent) bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev) { int key = ev->key(); + const int um = key; // keep unmodified key around // FIXME if (m_mode == PassingMode && key != Qt::Key_Control && key != Qt::Key_Shift) { @@ -342,7 +343,7 @@ bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev) && (ev->modifiers() & Qt::ShiftModifier) == 0) { key += 32; } - bool handled = handleKey(key, ev->text()); + bool handled = handleKey(key, um, ev->text()); // We fake vi-style end-of-line behaviour m_fakeEnd = (atEol() && m_mode == CommandMode); @@ -355,18 +356,18 @@ bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev) return handled; } -bool FakeVimHandler::Private::handleKey(int key, const QString &text) +bool FakeVimHandler::Private::handleKey(int key, int unmodified, const QString &text) { //qDebug() << "KEY: " << key << text << "POS: " << m_tc.position(); //qDebug() << "\nUNDO: " << m_undoStack << "\nREDO: " << m_redoStack; m_savedPosition = m_tc.position(); if (m_mode == InsertMode) - return handleInsertMode(key, text); + return handleInsertMode(key, unmodified, text); if (m_mode == CommandMode) - return handleCommandMode(key, text); + return handleCommandMode(key, unmodified, text); if (m_mode == ExMode || m_mode == SearchForwardMode || m_mode == SearchBackwardMode) - return handleMiniBufferModes(key, text); + return handleMiniBufferModes(key, unmodified, text); return false; } @@ -549,7 +550,8 @@ void FakeVimHandler::Private::showBlackMessage(const QString &msg) updateMiniBuffer(); } -bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text) +bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, + const QString &text) { bool handled = true; @@ -647,9 +649,10 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text) updateMiniBuffer(); } else if (key == '"') { m_submode = RegisterSubMode; - } else if (key == Key_Return) { + } else if (unmodified == Key_Return) { m_tc.movePosition(StartOfLine); m_tc.movePosition(Down); + moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == Key_Home) { m_tc.movePosition(StartOfLine, KeepAnchor); @@ -668,7 +671,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text) qDebug() << "REPEATING" << m_dotCommand; for (int i = count(); --i >= 0; ) foreach (QChar c, m_dotCommand) - handleKey(c.unicode(), QString(c)); + handleKey(c.unicode(), c.unicode(), QString(c)); } else if (key == '=') { m_submode = IndentSubMode; } else if (key == '%') { @@ -916,7 +919,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text) return handled; } -bool FakeVimHandler::Private::handleInsertMode(int key, const QString &text) +bool FakeVimHandler::Private::handleInsertMode(int key, int, const QString &text) { if (key == Key_Escape) { // start with '1', as one instance was already physically inserted @@ -997,7 +1000,8 @@ bool FakeVimHandler::Private::handleInsertMode(int key, const QString &text) return true; } -bool FakeVimHandler::Private::handleMiniBufferModes(int key, const QString &text) +bool FakeVimHandler::Private::handleMiniBufferModes(int key, int unmodified, + const QString &text) { Q_UNUSED(text) @@ -1016,14 +1020,14 @@ bool FakeVimHandler::Private::handleMiniBufferModes(int key, const QString &text if (!m_commandBuffer.isEmpty()) m_commandBuffer.chop(1); updateMiniBuffer(); - } else if (key == Key_Return && m_mode == ExMode) { + } else if (unmodified == Key_Return && m_mode == ExMode) { if (!m_commandBuffer.isEmpty()) { m_commandHistory.takeLast(); m_commandHistory.append(m_commandBuffer); handleExCommand(m_commandBuffer); leaveVisualMode(); } - } else if (key == Key_Return && isSearchMode()) { + } else if (unmodified == Key_Return && isSearchMode()) { if (!m_commandBuffer.isEmpty()) { m_searchHistory.takeLast(); m_searchHistory.append(m_commandBuffer); From 9d029cd4be095f31fff5de6c620297e59dd85fe7 Mon Sep 17 00:00:00 2001 From: goro Date: Thu, 15 Jan 2009 17:19:53 +0100 Subject: [PATCH 43/81] Add proper chrpath fixing --- .../shipping/prepare-linux-qt-for-shipping.sh | 50 ++++++++++++++++--- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/scripts/shipping/prepare-linux-qt-for-shipping.sh b/scripts/shipping/prepare-linux-qt-for-shipping.sh index d56a58763ea..10f4620a2cd 100755 --- a/scripts/shipping/prepare-linux-qt-for-shipping.sh +++ b/scripts/shipping/prepare-linux-qt-for-shipping.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash -workdir=/home/berlin/dev/qt-4.4.3-temp -destdir=/home/berlin/dev/qt-4.4.3-shipping -dir=qt-x11-opensource-src-4.4.3 +version=4.4.3 +workdir=/home/berlin/dev/qt-${version}-temp +destdir=/home/berlin/dev/qt-${version}-shipping +dir=qt-x11-opensource-src-${version} file_tar="${dir}.tar" file_tar_gz="${file_tar}.gz" [ -z ${MAKE} ] && MAKE=make @@ -44,7 +45,7 @@ download() { mirror=http://wftp.tu-chemnitz.de/pub/Qt/qt/source ;; esac - wget "${mirror}/${file}" || die "Download failed" + wget "${mirror}/${file_tar_gz}" || die "Download failed" } unpack() { @@ -55,7 +56,7 @@ unpack() { build() { ( - cd "${dir}" + cd "${dir}" || die "cd failed" if [ ! -f config.status ] ; then env -i PATH=${envpath} ./configure \ -prefix "${destdir}" \ @@ -75,11 +76,44 @@ build() { ret=$?; [ ${ret} = 0 ] || exit ${ret} } +fix_rpath() { + folder=$1 + pattern=$2 + rpath=$3 + ( + cd "${destdir}" || die "cd failed" + while read file ; do + echo "Fixing ${file}" + chrpath -r "${rpath}" "${file}" 2>&1 | sed 's/^/\t/' + done < <(find "${folder}" -type f -name "${pattern}") + ) + ret=$?; [ ${ret} = 0 ] || exit ${ret} +} + inst() { ( - cd "${dir}" - mkdir -p "${destdir}" - env -i "${MAKE}" install || die "make install failed" + cd "${dir}" || die "cd failed" + if [ ! -d "${destdir}" ]; then + mkdir -p "${destdir}" + env -i "${MAKE}" install || die "make install failed" + fi + + cd "${destdir}" || die "cd failed" + + # Fix files bin/* + fix_rpath bin '*' '$ORIGIN/../lib' + + # Fix files lib/*.so + fix_rpath lib '*.so.?.?.?' '$ORIGIN' + fix_rpath lib '*.so.?.?.?.debug' '$ORIGIN' + + # Fix files examples/tools/*/*/*.so + fix_rpath examples/tools '*.so' '$ORIGIN/../../../lib' + fix_rpath examples/tools '*.so.debug' '$ORIGIN/../../../lib' + + # Fix files plugins/*/*.so + fix_rpath plugins '*.so' '$ORIGIN/../../lib' + fix_rpath plugins '*.so.debug' '$ORIGIN/../../lib' ) ret=$?; [ ${ret} = 0 ] || exit ${ret} } From 30c1a046f27da5da1f119df33450da0bb54354ab Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Jan 2009 17:29:30 +0100 Subject: [PATCH 44/81] fakevim: partial implementation of :history --- src/plugins/fakevim/fakevimhandler.cpp | 39 ++++++++++++++++++++++---- src/plugins/fakevim/fakevimhandler.h | 4 +-- src/plugins/fakevim/fakevimplugin.cpp | 10 +++---- tests/manual/fakevim/main.cpp | 15 +++++++--- 4 files changed, 52 insertions(+), 16 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index bedd2ccb38d..ccaed6869a8 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -211,6 +211,7 @@ private: void enterCommandMode(); void showRedMessage(const QString &msg); void showBlackMessage(const QString &msg); + void notImplementedYet(); void updateMiniBuffer(); void updateSelection(); void quit(); @@ -550,6 +551,12 @@ void FakeVimHandler::Private::showBlackMessage(const QString &msg) updateMiniBuffer(); } +void FakeVimHandler::Private::notImplementedYet() +{ + showRedMessage("Not implemented in FakeVim"); + updateMiniBuffer(); +} + bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, const QString &text) { @@ -1084,6 +1091,7 @@ int FakeVimHandler::Private::readLineCode(QString &cmd) int mark = m_marks.value(cmd.at(0).unicode()); if (!mark) { showRedMessage(tr("E20: Mark '%1' not set").arg(cmd.at(0))); + cmd = cmd.mid(1); return -1; } cmd = cmd.mid(1); @@ -1103,8 +1111,9 @@ int FakeVimHandler::Private::readLineCode(QString &cmd) int pos = m_marks.value(cmd.at(0).unicode(), -1); //qDebug() << " MARK: " << cmd.at(0) << pos << lineForPosition(pos); if (pos == -1) { - showRedMessage(tr("E20: Mark '%1' not set").arg(cmd.at(0))); - return -1; + showRedMessage(tr("E20: Mark '%1' not set").arg(cmd.at(0))); + cmd = cmd.mid(1); + return -1; } cmd = cmd.mid(1); return lineForPosition(pos); @@ -1159,11 +1168,12 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) endLine = line; } - //qDebug() << "RANGE: " << beginLine << endLine << cmd << cmd0; + //qDebug() << "RANGE: " << beginLine << endLine << cmd << cmd0 << m_marks; static QRegExp reWrite("^w!?( (.*))?$"); static QRegExp reDelete("^d( (.*))?$"); static QRegExp reSet("^set?( (.*))?$"); + static QRegExp reHistory("^his(tory)?( (.*))?$"); if (cmd.isEmpty()) { m_tc.setPosition(positionForLine(beginLine)); @@ -1247,6 +1257,7 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) recordOperation(op); enterCommandMode(); + //qDebug() << "FILTER: " << command; showBlackMessage(tr("%1 lines filtered").arg(text.count('\n'))); } else if (cmd == "red" || cmd == "redo") { // :redo redo(); @@ -1258,7 +1269,25 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) QString info; foreach (const QString &key, m_config.keys()) info += key + ": " + m_config.value(key) + "\n"; - emit q->extraInformationChanged(info); + emit q->extraInformationChanged(editor(), info); + } else { + notImplementedYet(); + } + enterCommandMode(); + updateMiniBuffer(); + } else if (reHistory.indexIn(cmd) != -1) { // :history + QString arg = reSet.cap(3); + if (arg.isEmpty()) { + QString info; + info += "# command history\n"; + int i = 0; + foreach (const QString &item, m_commandHistory) { + ++i; + info += QString("%1 %2\n").arg(i, -8).arg(item); + } + emit q->extraInformationChanged(editor(), info); + } else { + notImplementedYet(); } enterCommandMode(); updateMiniBuffer(); @@ -1581,6 +1610,7 @@ void FakeVimHandler::Private::enterVisualMode(VisualMode visualMode) { m_visualMode = visualMode; m_marks['<'] = m_tc.position(); + m_marks['>'] = m_tc.position(); updateMiniBuffer(); updateSelection(); } @@ -1588,7 +1618,6 @@ void FakeVimHandler::Private::enterVisualMode(VisualMode visualMode) void FakeVimHandler::Private::leaveVisualMode() { m_visualMode = NoVisualMode; - m_marks['>'] = m_tc.position(); updateMiniBuffer(); updateSelection(); } diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h index aeba5ace870..bbd58781e7f 100644 --- a/src/plugins/fakevim/fakevimhandler.h +++ b/src/plugins/fakevim/fakevimhandler.h @@ -69,8 +69,8 @@ public slots: signals: void commandBufferChanged(const QString &msg); void statusDataChanged(const QString &msg); - void extraInformationChanged(const QString &msg); - void quitRequested(QWidget *); + void extraInformationChanged(QWidget *widget, const QString &msg); + void quitRequested(QWidget *widget); void selectionChanged(QWidget *widget, const QList &selection); void writeFile(const QString &fileName, const QString &contents); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index a27e988f4b4..1fed16416b6 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -114,7 +114,7 @@ private slots: void installHandler(QWidget *widget); void removeHandler(QWidget *widget); void showCommandBuffer(const QString &contents); - void showExtraInformation(const QString &msg); + void showExtraInformation(QWidget *, const QString &msg); void editorOpened(Core::IEditor *); void editorAboutToClose(Core::IEditor *); void changeSelection(QWidget *widget, @@ -200,8 +200,8 @@ void FakeVimPluginPrivate::installHandler() void FakeVimPluginPrivate::installHandler(QWidget *widget) { - connect(m_handler, SIGNAL(extraInformationChanged(QString)), - this, SLOT(showExtraInformation(QString))); + connect(m_handler, SIGNAL(extraInformationChanged(QWidget *, QString)), + this, SLOT(showExtraInformation(QWidget *, QString))); connect(m_handler, SIGNAL(commandBufferChanged(QString)), this, SLOT(showCommandBuffer(QString))); connect(m_handler, SIGNAL(quitRequested(QWidget *)), @@ -281,9 +281,9 @@ void FakeVimPluginPrivate::showCommandBuffer(const QString &contents) tr("Quit FakeVim"), m_handler, SLOT(quit())); } -void FakeVimPluginPrivate::showExtraInformation(const QString &text) +void FakeVimPluginPrivate::showExtraInformation(QWidget *widget, const QString &text) { - QMessageBox::information(0, tr("FakeVim Information"), text); + QMessageBox::information(widget, tr("FakeVim Information"), text); } void FakeVimPluginPrivate::changeSelection(QWidget *widget, diff --git a/tests/manual/fakevim/main.cpp b/tests/manual/fakevim/main.cpp index c668601e78d..dfa1350e559 100644 --- a/tests/manual/fakevim/main.cpp +++ b/tests/manual/fakevim/main.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -16,7 +17,7 @@ class Proxy : public QObject Q_OBJECT public: - Proxy(QWidget *widget) : QObject(0), m_widget(widget) {} + Proxy() : QObject(0) {} public slots: void changeSelection(QWidget *w, const QList &s) @@ -26,8 +27,11 @@ public slots: else if (QTextEdit *ed = qobject_cast(w)) ed->setExtraSelections(s); } -private: - QWidget *m_widget; + + void changeExtraInformation(QWidget *w, const QString &info) + { + QMessageBox::information(w, "Information", info); + } }; int main(int argc, char *argv[]) @@ -50,7 +54,7 @@ int main(int argc, char *argv[]) widget->resize(450, 350); widget->setFocus(); - Proxy proxy(widget); + Proxy proxy; FakeVimHandler handler; @@ -78,6 +82,9 @@ int main(int argc, char *argv[]) QObject::connect(&handler, SIGNAL(selectionChanged(QWidget*,QList)), &proxy, SLOT(changeSelection(QWidget*,QList))); + QObject::connect(&handler, + SIGNAL(extraInformationChanged(QWidget*,QString)), + &proxy, SLOT(changeExtraInformation(QWidget*,QString))); handler.addWidget(widget); if (args.size() >= 1) From ea2c57257c3a2d895d5475d0f8d4c00efa12850b Mon Sep 17 00:00:00 2001 From: Fred Emmott Date: Thu, 15 Jan 2009 19:20:36 +0000 Subject: [PATCH 45/81] Run the project cmake command in a ./qtcreator-build directory. --- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index d98539969af..d38e5a30825 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -80,9 +80,10 @@ CMakeProject::~CMakeProject() // TODO make this function work even if it is reparsing void CMakeProject::parseCMakeLists(const QDir &directory) { - createCbpFile(directory); + QDir buildDirectory(directory.absolutePath() + "/qtcreator-build"); + createCbpFile(buildDirectory); - QString cbpFile = findCbpFile(directory); + QString cbpFile = findCbpFile(buildDirectory); CMakeCbpParser cbpparser; qDebug()<<"Parsing file "< Date: Thu, 15 Jan 2009 19:29:42 +0000 Subject: [PATCH 46/81] Run all commands in ./qtcreator-build/ when using the CMake plugin. - avoid polution of the source. - required for KDE apps. --- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index d38e5a30825..bd3d7322898 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -80,10 +80,9 @@ CMakeProject::~CMakeProject() // TODO make this function work even if it is reparsing void CMakeProject::parseCMakeLists(const QDir &directory) { - QDir buildDirectory(directory.absolutePath() + "/qtcreator-build"); - createCbpFile(buildDirectory); + createCbpFile(buildDirectory(QString())); - QString cbpFile = findCbpFile(buildDirectory); + QString cbpFile = findCbpFile(buildDirectory(QString())); CMakeCbpParser cbpparser; qDebug()<<"Parsing file "< Date: Fri, 16 Jan 2009 09:56:08 +0100 Subject: [PATCH 47/81] fakevim: fix compilation with -no-stl --- src/plugins/fakevim/fakevimhandler.cpp | 36 ++++++++++++++++++++------ 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index ccaed6869a8..92c38397332 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -416,7 +417,7 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) int start = m_tc.selectionStart(); int end = m_tc.selectionEnd(); if (start > end) - std::swap(start, end); + qSwap(start, end); QTextBlock startBlock = doc->findBlock(start); indentRegion(doc->findBlock(start), doc->findBlock(end).next()); m_tc.setPosition(startBlock.position()); @@ -596,7 +597,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveToFirstNonBlankOnLine(); finishMovement(); } else { - qDebug() << "Ignored z + " << key << text; + qDebug() << "IGNORED Z_MODE " << key << text; } m_submode = NoSubMode; } else if (m_subsubmode == FtSubSubMode) { @@ -640,6 +641,14 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, updateMiniBuffer(); } else if (key == '`') { m_subsubmode = BackTickSubSubMode; + } else if (key == '#' || key == '*') { + // FIXME: That's not proper vim behaviour + m_tc.select(QTextCursor::WordUnderCursor); + QString needle = "\\<" + m_tc.selection().toPlainText() + "\\>"; + m_searchHistory.append(needle); + m_lastSearchForward = (key == '*'); + updateMiniBuffer(); + search(needle, m_lastSearchForward); } else if (key == '\'') { m_subsubmode = TickSubSubMode; } else if (key == '|') { @@ -918,7 +927,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, if (m_visualMode != NoVisualMode) leaveVisualMode(); } else { - qDebug() << "Ignored in command mode: " << key << text; + qDebug() << "IGNORED IN COMMAND MODE: " << key << text; if (text.isEmpty()) handled = false; } @@ -1296,13 +1305,22 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) } } -void FakeVimHandler::Private::search(const QString &needle, bool forward) +void FakeVimHandler::Private::search(const QString &needle0, bool forward) { - //qDebug() << "NEEDLE " << needle << "BACKWARDS" << backwards; + showBlackMessage("?/"[m_lastSearchForward ^ forward] + needle0); QTextCursor orig = m_tc; QTextDocument::FindFlags flags = QTextDocument::FindCaseSensitively; if (!forward) - flags = QTextDocument::FindBackward; + flags |= QTextDocument::FindBackward; + + // FIXME: Rough mapping of a common case + QString needle = needle0; + if (needle.startsWith("\\<") && needle.endsWith("\\>")) + flags |= QTextDocument::FindWholeWords; + needle.replace("\\<", ""); // start of word + needle.replace("\\>", ""); // end of word + + qDebug() << "NEEDLE " << needle0 << needle << "FORWARD" << forward << flags; if (forward) m_tc.movePosition(Right, MoveAnchor, 1); @@ -1311,7 +1329,8 @@ void FakeVimHandler::Private::search(const QString &needle, bool forward) if (EDITOR(find(needle, flags))) { m_tc = EDITOR(textCursor()); // the qMax seems to be needed for QPlainTextEdit only - m_tc.movePosition(Left, MoveAnchor, qMax(1, needle.size() - 1)); + //m_tc.movePosition(Left, MoveAnchor, qMax(1, needle.size() - 1)); + m_tc.setPosition(m_tc.anchor()); return; } @@ -1320,7 +1339,8 @@ void FakeVimHandler::Private::search(const QString &needle, bool forward) if (EDITOR(find(needle, flags))) { m_tc = EDITOR(textCursor()); // the qMax seems to be needed for QPlainTextEdit only - m_tc.movePosition(Left, MoveAnchor, qMax(1, needle.size() - 1)); + //m_tc.movePosition(Left, MoveAnchor, qMax(1, needle.size() - 1)); + m_tc.setPosition(m_tc.anchor()); if (forward) showRedMessage("search hit BOTTOM, continuing at TOP"); else From 43dcbae95aa0e87c1018d185ec8a4a3b218b367c Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 10:38:55 +0100 Subject: [PATCH 48/81] fix typo --- src/plugins/coreplugin/coreconstants.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index cdada0a1ccb..06d4d70085d 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -145,7 +145,7 @@ const char * const ABOUT_WORKBENCH = "QtCreator.AboutWorkbench"; const char * const ABOUT_PLUGINS = "QtCreator.AboutPlugins"; const char * const ABOUT_QT = "QtCreator.AboutQt"; const char * const S_RETURNTOEDITOR = "QtCreator.ReturnToEditor"; -const char * const OPEN_IN_EXTERNAL_EDITOR = "QtCreattor.OpenInExternalEditor"; +const char * const OPEN_IN_EXTERNAL_EDITOR = "QtCreator.OpenInExternalEditor"; // default groups const char * const G_DEFAULT_ONE = "QtCreator.Group.Default.One"; From 906a05bc1757e0a3b28e916258979db185b7c9b7 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 11:17:00 +0100 Subject: [PATCH 49/81] add a test case for std::deque --- tests/manual/gdbdebugger/simple/app.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp index a20311822f8..b719915c479 100644 --- a/tests/manual/gdbdebugger/simple/app.cpp +++ b/tests/manual/gdbdebugger/simple/app.cpp @@ -54,6 +54,7 @@ #include +#include #include #include #include @@ -444,6 +445,29 @@ void stringRefTest(const QString &refstring) Q_UNUSED(refstring); } +void testStdDeque() +{ + std::deque plist1; + plist1.push_back(new int(1)); + plist1.push_back(0); + plist1.push_back(new int(2)); + plist1.pop_back(); + plist1.pop_front(); + plist1.pop_front(); + + std::deque flist2; + flist2.push_back(1); + flist2.push_back(2); + + std::deque plist; + plist.push_back(new Foo(1)); + plist.push_back(new Foo(2)); + + std::deque flist; + flist.push_back(1); + flist.push_front(2); +} + void testStdList() { std::list plist1; @@ -911,6 +935,7 @@ int main(int argc, char *argv[]) testHidden(); testArray(); + testStdDeque(); testStdList(); testStdMap(); testStdStack(); From 3aef80df5747df29e17ef7ebb4529e7c5d80f3be Mon Sep 17 00:00:00 2001 From: dt Date: Fri, 16 Jan 2009 12:22:43 +0100 Subject: [PATCH 50/81] Fixes: Run from the context menu runs the startupProject Task: Reported on mailing list. --- .../projectexplorer/projectexplorer.cpp | 21 +++++++++++++++++-- src/plugins/projectexplorer/projectexplorer.h | 3 +++ .../projectexplorerconstants.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index c6cb624fb86..5e41913db02 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -521,6 +521,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin cmd = am->registerAction(m_runAction, Constants::RUN, globalcontext); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+R"))); mbuild->addAction(cmd, Constants::G_BUILD_RUN); + + m_runActionContextMenu = new QAction(runIcon, tr("Run"), this); + cmd = am->registerAction(m_runActionContextMenu, Constants::RUNCONTEXTMENU, globalcontext); mproject->addAction(cmd, Constants::G_PROJECT_RUN); Core::ActionContainer *mrc = am->createMenu(Constants::RUNCONFIGURATIONMENU); @@ -616,6 +619,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin connect(m_cleanAction, SIGNAL(triggered()), this, SLOT(cleanProject())); connect(m_cleanSessionAction, SIGNAL(triggered()), this, SLOT(cleanSession())); connect(m_runAction, SIGNAL(triggered()), this, SLOT(runProject())); + connect(m_runActionContextMenu, SIGNAL(triggered()), this, SLOT(runProjectContextMenu())); connect(m_cancelBuildAction, SIGNAL(triggered()), this, SLOT(cancelBuild())); connect(m_debugAction, SIGNAL(triggered()), this, SLOT(debugProject())); connect(m_dependenciesAction, SIGNAL(triggered()), this, SLOT(editDependencies())); @@ -1348,7 +1352,16 @@ void ProjectExplorerPlugin::cleanSession() void ProjectExplorerPlugin::runProject() { - Project *pro = startupProject(); + runProjectImpl(startupProject()); +} + +void ProjectExplorerPlugin::runProjectContextMenu() +{ + runProjectImpl(m_currentProject); +} + +void ProjectExplorerPlugin::runProjectImpl(Project *pro) +{ if (!pro) return; @@ -1434,10 +1447,14 @@ IRunConfigurationRunner *ProjectExplorerPlugin::findRunner(QSharedPointeractiveRunConfiguration(), ProjectExplorer::Constants::RUNMODE); + bool canRun = project && findRunner(project->activeRunConfiguration(), ProjectExplorer::Constants::RUNMODE); const bool canDebug = project && !m_debuggingRunControl && findRunner(project->activeRunConfiguration(), ProjectExplorer::Constants::DEBUGMODE); const bool building = m_buildManager->isBuilding(); m_runAction->setEnabled(canRun && !building); + + canRun = m_currentProject && findRunner(m_currentProject->activeRunConfiguration(), ProjectExplorer::Constants::RUNMODE); + m_runActionContextMenu->setEnabled(canRun && !building); + m_debugAction->setEnabled(canDebug && !building); } diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 1d270226d1a..ff58e7ba8c6 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -156,6 +156,7 @@ private slots: void restoreSession(); void loadSession(const QString &session); void runProject(); + void runProjectContextMenu(); void savePersistentSettings(); void goToTaskWindow(); @@ -188,6 +189,7 @@ private slots: void currentModeChanged(Core::IMode *mode); private: + void runProjectImpl(Project *pro); void setCurrent(Project *project, QString filePath, Node *node); QStringList allFilesWithDependencies(Project *pro); @@ -223,6 +225,7 @@ private: QAction *m_cleanAction; QAction *m_cleanSessionAction; QAction *m_runAction; + QAction *m_runActionContextMenu; QAction *m_cancelBuildAction; QAction *m_debugAction; QAction *m_dependenciesAction; diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index ef745e69c90..e65ca54d099 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -57,6 +57,7 @@ const char * const BUILDCONFIGURATIONMENU = "ProjectExplorer.BuildConfigurationM const char * const CANCELBUILD = "ProjectExplorer.CancelBuild"; const char * const RUNCONFIGURATIONMENU = "ProjectExplorer.RunConfigurationMenu"; const char * const RUN = "ProjectExplorer.Run"; +const char * const RUNCONTEXTMENU = "ProjectExplorer.RunContextMenu"; const char * const STOP = "ProjectExplorer.Stop"; const char * const DEBUG = "ProjectExplorer.Debug"; const char * const DEPENDENCIES = "ProjectExplorer.Dependencies"; From b75fa636d86579faa02612384fd00e3011efaded Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 13:10:42 +0100 Subject: [PATCH 51/81] fakevim: fix undo of 'J' --- src/plugins/debugger/gdbengine.cpp | 6 +++ src/plugins/fakevim/fakevimhandler.cpp | 63 ++++++++++++++++++++------ 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index 78d2522639b..79530908c77 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -2988,6 +2988,12 @@ void GdbEngine::runCustomDumper(const WatchData & data0, bool dumpChildren) //extraArgs[extraArgCount++] = sizeofTypeExpression(data.type); //extraArgs[extraArgCount++] = "(size_t)&(('" + data.type + "'*)0)->value"; } + } else if (outertype == "std::deque") { + // remove 'std::allocator<...>': + extraArgs[1] = "0"; + } else if (outertype == "std::stack") { + // remove 'std::allocator<...>': + extraArgs[1] = "0"; } else if (outertype == "std::map") { // We don't want the comparator and the allocator confuse gdb. // But we need the offset of the second item in the value pair. diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 92c38397332..09542b807da 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -254,11 +254,18 @@ public: void recordRemove(int position, const QString &data); void recordRemove(int position, int length); void recordMove(int position, int nestedCount); - void removeSelectedText(QTextCursor &tc); + + void recordRemoveNextChar(); + void recordInsertText(const QString &data); + void recordRemoveSelectedText(); + void recordBeginGroup(); + void recordEndGroup(); + void undo(); void redo(); QStack m_undoStack; QStack m_redoStack; + QStack m_undoGroupStack; // extra data for '.' QString m_dotCount; @@ -394,7 +401,7 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) if (!dotCommand.isEmpty()) m_dotCommand = "c" + dotCommand; m_registers[m_register] = m_tc.selectedText(); - removeSelectedText(m_tc); + recordRemoveSelectedText(); m_mode = InsertMode; m_submode = NoSubMode; } else if (m_submode == DeleteSubMode) { @@ -402,7 +409,7 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) m_dotCommand = "d" + dotCommand; recordRemove(qMin(m_tc.position(), m_tc.anchor()), m_tc.selectedText()); m_registers[m_register] = m_tc.selectedText(); - removeSelectedText(m_tc); + recordRemoveSelectedText(); m_submode = NoSubMode; if (atEol()) m_tc.movePosition(Left, MoveAnchor, 1); @@ -725,7 +732,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, int beginLine = lineForPosition(m_marks['<']); int endLine = lineForPosition(m_marks['>']); m_tc = selectRange(beginLine, endLine); - removeSelectedText(m_tc); + recordRemoveSelectedText(); } else if (key == 'D') { m_submode = DeleteSubMode; m_tc.movePosition(Down, KeepAnchor, qMax(count() - 1, 0)); @@ -772,27 +779,29 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveToFirstNonBlankOnLine(); } else if (key == 'j' || key == Key_Down) { int savedColumn = m_desiredColumn; - if (m_submode == NoSubMode || m_submode == ZSubMode || m_submode == RegisterSubMode) { + if (m_submode == NoSubMode || m_submode == ZSubMode + || m_submode == RegisterSubMode) { m_tc.movePosition(Down, KeepAnchor, count()); moveToDesiredColumn(); } else { m_tc.movePosition(StartOfLine, MoveAnchor); - m_tc.movePosition(Down, KeepAnchor, count()+1); + m_tc.movePosition(Down, KeepAnchor, count() + 1); } finishMovement(); m_desiredColumn = savedColumn; } else if (key == 'J') { - EditOperation op; + recordBeginGroup(); if (m_submode == NoSubMode) { for (int i = qMax(count(), 2) - 1; --i >= 0; ) { m_tc.movePosition(EndOfLine); - m_tc.deleteChar(); + recordRemoveNextChar(); if (!m_gflag) - m_tc.insertText(" "); + recordInsertText(" "); } if (!m_gflag) m_tc.movePosition(Left, MoveAnchor, 1); } + recordEndGroup(); } else if (key == 'k' || key == Key_Up) { int savedColumn = m_desiredColumn; if (m_submode == NoSubMode || m_submode == ZSubMode || m_submode == RegisterSubMode) { @@ -1707,13 +1716,41 @@ void FakeVimHandler::Private::redo() #endif } -void FakeVimHandler::Private::removeSelectedText(QTextCursor &tc) +void FakeVimHandler::Private::recordBeginGroup() +{ + m_undoGroupStack.push(m_undoStack.size()); +} + +void FakeVimHandler::Private::recordEndGroup() { EditOperation op; - op.m_position = qMin(tc.position(), tc.anchor()); - op.m_from = tc.selection().toPlainText(); + op.m_itemCount = m_undoStack.size() - m_undoGroupStack.pop(); recordOperation(op); - tc.removeSelectedText(); +} + +void FakeVimHandler::Private::recordRemoveSelectedText() +{ + EditOperation op; + op.m_position = qMin(m_tc.position(), m_tc.anchor()); + op.m_from = m_tc.selection().toPlainText(); + recordOperation(op); + m_tc.removeSelectedText(); +} + +void FakeVimHandler::Private::recordRemoveNextChar() +{ + m_tc.setPosition(m_tc.position(), MoveAnchor); + m_tc.movePosition(Right, KeepAnchor); + recordRemoveSelectedText(); +} + +void FakeVimHandler::Private::recordInsertText(const QString &data) +{ + EditOperation op; + op.m_position = m_tc.position(); + op.m_to = data; + recordOperation(op); + m_tc.insertText(data); } void FakeVimHandler::Private::recordOperation(const EditOperation &op) From 33da8c04109204c2de71c289d65ee890612d06a0 Mon Sep 17 00:00:00 2001 From: dt Date: Fri, 16 Jan 2009 13:25:38 +0100 Subject: [PATCH 52/81] Fixes: Gdbmacros are left even after clean. Task: 241374 Details: Clean up what we leave behind, take care to not remove anything else. We run make distclean and remove the files we copies there plus the debug and release directories. --- .../qt4projectmanager/gdbmacrosbuildstep.cpp | 157 +++++++++++------- src/plugins/qt4projectmanager/qt4project.cpp | 10 +- 2 files changed, 104 insertions(+), 63 deletions(-) diff --git a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp index 49d8ccd8a30..fcbff3f5dcc 100644 --- a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp +++ b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp @@ -62,72 +62,105 @@ bool GdbMacrosBuildStep::init(const QString &buildConfiguration) void GdbMacrosBuildStep::run(QFutureInterface & fi) { - // TODO CONFIG handling - - QString dumperPath = ExtensionSystem::PluginManager::instance()->getObject() - ->resourcePath() + "/gdbmacros/"; - QStringList files; - files << "gdbmacros.cpp" - << "gdbmacros.pro"; + QVariant v = value("clean"); + if (v.isNull() || v.toBool() == false) { + // Normal run + QString dumperPath = ExtensionSystem::PluginManager::instance()->getObject() + ->resourcePath() + "/gdbmacros/"; + QStringList files; + files << "gdbmacros.cpp" + << "gdbmacros.pro"; - QString destDir = m_buildDirectory + "/qtc-gdbmacros/"; - QDir dir; - dir.mkpath(destDir); - foreach (const QString &file, files) { - QFile destination(destDir + file); - if (destination.exists()) - destination.remove(); - QFile::copy(dumperPath + file, destDir + file); - } - - Qt4Project *qt4Project = static_cast(project()); - - QProcess qmake; - qmake.setEnvironment(qt4Project->environment(m_buildConfiguration).toStringList()); - qmake.setWorkingDirectory(destDir); - QStringList configarguments; - QStringList makeArguments; - - // Find qmake step... - QMakeStep *qmakeStep = qt4Project->qmakeStep(); - // Find out which configuration is used in this build configuration - // and what kind of CONFIG we need to pass to qmake for that - if (qmakeStep->value(m_buildConfiguration, "buildConfiguration").isValid()) { - QtVersion::QmakeBuildConfig defaultBuildConfiguration = qt4Project->qtVersion(m_buildConfiguration)->defaultBuildConfig(); - QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(qmakeStep->value(m_buildConfiguration, "buildConfiguration").toInt()); - if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) - configarguments << "CONFIG-=debug_and_release"; - if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll)) - configarguments << "CONFIG+=debug_and_release"; - if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(projectBuildConfiguration & QtVersion::DebugBuild)) - configarguments << "CONFIG+=release"; - if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (projectBuildConfiguration & QtVersion::DebugBuild)) - configarguments << "CONFIG+=debug"; - if (projectBuildConfiguration & QtVersion::BuildAll) - makeArguments << (projectBuildConfiguration & QtVersion::DebugBuild ? "debug" : "release"); - - } else { - // Old style with CONFIG+=debug_and_release - configarguments << "CONFIG+=debug_and_release"; - const MakeStep *ms = qt4Project->makeStep(); - QStringList makeargs = ms->value(m_buildConfiguration, "makeargs").toStringList(); - if (makeargs.contains("debug")) { - makeArguments << "debug"; - } else if (makeargs.contains("release")) { - makeArguments << "release"; + QString destDir = m_buildDirectory + "/qtc-gdbmacros/"; + QDir dir; + dir.mkpath(destDir); + foreach (const QString &file, files) { + QFile destination(destDir + file); + if (destination.exists()) + destination.remove(); + QFile::copy(dumperPath + file, destDir + file); } + + Qt4Project *qt4Project = static_cast(project()); + + QProcess qmake; + qmake.setEnvironment(qt4Project->environment(m_buildConfiguration).toStringList()); + qmake.setWorkingDirectory(destDir); + QStringList configarguments; + QStringList makeArguments; + + // Find qmake step... + QMakeStep *qmakeStep = qt4Project->qmakeStep(); + // Find out which configuration is used in this build configuration + // and what kind of CONFIG we need to pass to qmake for that + if (qmakeStep->value(m_buildConfiguration, "buildConfiguration").isValid()) { + QtVersion::QmakeBuildConfig defaultBuildConfiguration = qt4Project->qtVersion(m_buildConfiguration)->defaultBuildConfig(); + QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(qmakeStep->value(m_buildConfiguration, "buildConfiguration").toInt()); + if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) + configarguments << "CONFIG-=debug_and_release"; + if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll)) + configarguments << "CONFIG+=debug_and_release"; + if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(projectBuildConfiguration & QtVersion::DebugBuild)) + configarguments << "CONFIG+=release"; + if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (projectBuildConfiguration & QtVersion::DebugBuild)) + configarguments << "CONFIG+=debug"; + if (projectBuildConfiguration & QtVersion::BuildAll) + makeArguments << (projectBuildConfiguration & QtVersion::DebugBuild ? "debug" : "release"); + + } else { + // Old style with CONFIG+=debug_and_release + configarguments << "CONFIG+=debug_and_release"; + const MakeStep *ms = qt4Project->makeStep(); + QStringList makeargs = ms->value(m_buildConfiguration, "makeargs").toStringList(); + if (makeargs.contains("debug")) { + makeArguments << "debug"; + } else if (makeargs.contains("release")) { + makeArguments << "release"; + } + } + + QString mkspec = qt4Project->qtVersion(m_buildConfiguration)->mkspec(); + qmake.start(m_qmake, QStringList()<<"-spec"<qtVersion(m_buildConfiguration)->makeCommand(), makeArguments); + qmake.waitForFinished(); + + fi.reportResult(true); + } else { + // Clean step, we want to remove the directory + QString destDir = m_buildDirectory + "/qtc-gdbmacros/"; + Qt4Project *qt4Project = static_cast(project()); + + QProcess make; + make.setEnvironment(qt4Project->environment(m_buildConfiguration).toStringList()); + make.setWorkingDirectory(destDir); + make.start(qt4Project->qtVersion(m_buildConfiguration)->makeCommand(), QStringList()<<"distclean"); + make.waitForFinished(); + + QStringList files; + files << "gdbmacros.cpp" + << "gdbmacros.pro"; + + QStringList directories; + directories << "debug" + << "release"; + + foreach(const QString &file, files) { + QFile destination(destDir + file); + destination.remove(); + } + + foreach(const QString &dir, directories) { + QDir destination(destDir + dir); + destination.rmdir(destDir + dir); + } + + QDir(destDir).rmdir(destDir); + fi.reportResult(true); } - - QString mkspec = qt4Project->qtVersion(m_buildConfiguration)->mkspec(); - qmake.start(m_qmake, QStringList()<<"-spec"<qtVersion(m_buildConfiguration)->makeCommand(), makeArguments); - qmake.waitForFinished(); - - fi.reportResult(true); } QString GdbMacrosBuildStep::name() diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 7af448e2331..611d4930b40 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -610,9 +610,13 @@ void Qt4Project::addDefaultBuild() makeStep = new MakeStep(this); insertBuildStep(2, makeStep); + GdbMacrosBuildStep *gdbmacrosCleanStep = new GdbMacrosBuildStep(this); + gdbmacrosCleanStep->setValue("clean", true); + insertCleanStep(0, gdbmacrosCleanStep); + MakeStep* cleanStep = new MakeStep(this); cleanStep->setValue("clean", true); - insertCleanStep(0, cleanStep); + insertCleanStep(1, cleanStep); ProjectLoadWizard wizard(this); wizard.execDialog(); @@ -629,6 +633,10 @@ void Qt4Project::addDefaultBuild() if (v.isValid() && v.toBool()) { GdbMacrosBuildStep *gdbmacrostep = new GdbMacrosBuildStep(this); insertBuildStep(0, gdbmacrostep); + + GdbMacrosBuildStep *gdbmacrosCleanStep = new GdbMacrosBuildStep(this); + gdbmacrosCleanStep ->setValue("clean", true); + insertCleanStep(0, gdbmacrosCleanStep ); break; } } From ad2fd37b85a552513fbb4cfbbd47ff3a3092c7be Mon Sep 17 00:00:00 2001 From: dt Date: Fri, 16 Jan 2009 13:47:40 +0100 Subject: [PATCH 53/81] Fixes: Probably this needs to be for windows. Details: I haven't checked, but according to the cmake sources I need to change this. --- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 65bf70fe584..206ace17dfa 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -523,7 +523,7 @@ void CMakeCbpParser::parseTargetOption() { if (attributes().hasAttribute("output")) m_target.executable = attributes().value("output").toString(); - else if (attributes().hasAttribute("type") && attributes().value("type") == "1") + else if (attributes().hasAttribute("type") && (attributes().value("type") == "1" || attributes().value("type") == "0")) m_targetType = true; else if (attributes().hasAttribute("working_dir")) m_target.workingDirectory = attributes().value("working_dir").toString(); From 5dc72af0978c90ab80f5305fcf7ddaaba04d4abe Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 14:11:44 +0100 Subject: [PATCH 54/81] fakevim: code cosmetics --- src/plugins/fakevim/fakevimhandler.cpp | 128 ++++++++++++++----------- 1 file changed, 74 insertions(+), 54 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 09542b807da..7344e1d983c 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -191,7 +191,8 @@ private: void scrollToLineInDocument(int line); // helper functions for indenting - bool isElectricCharacter(QChar c) const { return (c == '{' || c == '}' || c == '#'); } + bool isElectricCharacter(QChar c) const + { return (c == '{' || c == '}' || c == '#'); } int indentDist() const; void indentRegion(QTextBlock first, QTextBlock last, QChar typedChar=0); void indentCurrentLine(QChar typedChar); @@ -201,6 +202,25 @@ private: void moveToNextWord(bool simple); void moveToMatchingParanthesis(); void moveToWordBoundary(bool simple, bool forward); + + // to reduce line noise + typedef QTextCursor::MoveOperation MoveOperation; + typedef QTextCursor::MoveMode MoveMode; + void moveToEndOfDocument(MoveMode m, int n = 1) + { m_tc.movePosition(QTextCursor::End, m, n); } + void moveToStartOfLine(MoveMode m, int n = 1) + { m_tc.movePosition(QTextCursor::StartOfLine, m, n); } + void moveToEndOfLine(MoveMode m, int n = 1) + { m_tc.movePosition(QTextCursor::EndOfLine, m, n); } + void moveUp(MoveMode m, int n = 1) + { m_tc.movePosition(QTextCursor::Up, m, n); } + void moveDown(MoveMode m, int n = 1) + { m_tc.movePosition(QTextCursor::Down, m, n); } + void moveRight(MoveMode m, int n = 1) + { m_tc.movePosition(QTextCursor::Right, m, n); } + void moveLeft(MoveMode m, int n = 1) + { m_tc.movePosition(QTextCursor::Left, m, n); } + void handleFfTt(int key); // helper function for handleCommand. return 1 based line index. @@ -343,7 +363,7 @@ bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev) m_tc.setVisualNavigation(true); if (m_fakeEnd) - m_tc.movePosition(Right, MoveAnchor, 1); + moveRight(MoveAnchor); if ((ev->modifiers() & Qt::ControlModifier) != 0) { key += 256; @@ -358,7 +378,7 @@ bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev) m_fakeEnd = (atEol() && m_mode == CommandMode); if (m_fakeEnd) - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor); EDITOR(setTextCursor(m_tc)); EDITOR(ensureCursorVisible()); @@ -385,7 +405,7 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) if (m_submode == FilterSubMode) { int beginLine = lineForPosition(m_tc.anchor()); int endLine = lineForPosition(m_tc.position()); - m_tc.setPosition(qMin(m_tc.anchor(), m_tc.position()), MoveAnchor); + m_tc.setPosition(qMin(m_tc.anchor(), m_tc.position())); m_mode = ExMode; m_commandBuffer = QString(".,+%1!").arg(qAbs(endLine - beginLine)); m_commandHistory.append(QString()); @@ -412,7 +432,7 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) recordRemoveSelectedText(); m_submode = NoSubMode; if (atEol()) - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor); } else if (m_submode == YankSubMode) { m_registers[m_register] = m_tc.selectedText(); m_tc.setPosition(m_savedPosition); @@ -574,23 +594,23 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, m_register = key; m_submode = NoSubMode; } else if (m_submode == ChangeSubMode && key == 'c') { - m_tc.movePosition(StartOfLine, MoveAnchor); - m_tc.movePosition(Down, KeepAnchor, count()); + moveToStartOfLine(MoveAnchor); + moveDown(KeepAnchor, count()); m_registers[m_register] = m_tc.selectedText(); finishMovement("c"); } else if (m_submode == DeleteSubMode && key == 'd') { - m_tc.movePosition(StartOfLine, MoveAnchor); - m_tc.movePosition(Down, KeepAnchor, count()); + moveToStartOfLine(MoveAnchor); + moveDown(KeepAnchor, count()); m_registers[m_register] = m_tc.selectedText(); finishMovement("d"); } else if (m_submode == YankSubMode && key == 'y') { - m_tc.movePosition(StartOfLine, MoveAnchor); - m_tc.movePosition(Down, KeepAnchor, count()); + moveToStartOfLine(MoveAnchor); + moveDown(KeepAnchor, count()); m_registers[m_register] = m_tc.selectedText(); finishMovement(); } else if (m_submode == ReplaceSubMode) { if (atEol()) - m_tc.movePosition(Left, KeepAnchor, 1); + moveLeft(KeepAnchor); else m_tc.deleteChar(); m_tc.insertText(text); @@ -659,8 +679,8 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == '\'') { m_subsubmode = TickSubSubMode; } else if (key == '|') { - m_tc.movePosition(StartOfLine, KeepAnchor); - m_tc.movePosition(Right, KeepAnchor, qMin(count(), rightDist()) - 1); + moveToStartOfLine(KeepAnchor); + moveRight(KeepAnchor, qMin(count(), rightDist()) - 1); finishMovement(); } else if (key == '!' && m_visualMode == NoVisualMode) { m_submode = FilterSubMode; @@ -673,8 +693,8 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == '"') { m_submode = RegisterSubMode; } else if (unmodified == Key_Return) { - m_tc.movePosition(StartOfLine); - m_tc.movePosition(Down); + moveToStartOfLine(MoveAnchor); + moveDown(MoveAnchor); moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == Key_Home) { @@ -682,7 +702,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, finishMovement(); } else if (key == '$' || key == Key_End) { int submode = m_submode; - m_tc.movePosition(EndOfLine, KeepAnchor); + moveToEndOfLine(KeepAnchor); finishMovement(); if (submode == NoSubMode) m_desiredColumn = -1; @@ -707,7 +727,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, updateMiniBuffer(); } else if (key == 'A') { m_mode = InsertMode; - m_tc.movePosition(EndOfLine, MoveAnchor); + moveToEndOfLine(MoveAnchor); m_lastInsertion.clear(); } else if (key == 'b') { moveToWordBoundary(false, false); @@ -719,11 +739,11 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, m_submode = ChangeSubMode; } else if (key == 'C') { m_submode = ChangeSubMode; - m_tc.movePosition(EndOfLine, KeepAnchor); + moveToEndOfLine(KeepAnchor); finishMovement(); } else if (key == 'd' && m_visualMode == NoVisualMode) { if (atEol()) - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor); m_opcount = m_mvcount; m_mvcount.clear(); m_submode = DeleteSubMode; @@ -735,8 +755,8 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, recordRemoveSelectedText(); } else if (key == 'D') { m_submode = DeleteSubMode; - m_tc.movePosition(Down, KeepAnchor, qMax(count() - 1, 0)); - m_tc.movePosition(Right, KeepAnchor, rightDist()); + moveDown(KeepAnchor, qMax(count() - 1, 0)); + moveRight(KeepAnchor, rightDist()); finishMovement(); } else if (key == 'e') { moveToWordBoundary(false, true); @@ -759,33 +779,33 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, int n = qMin(count(), leftDist()); if (m_fakeEnd && m_tc.block().length() > 1) ++n; - m_tc.movePosition(Left, KeepAnchor, n); + moveLeft(KeepAnchor, n); finishMovement(); } else if (key == 'H') { m_tc = EDITOR(cursorForPosition(QPoint(0, 0))); - m_tc.movePosition(Down, KeepAnchor, qMax(count() - 1, 0)); + moveDown(KeepAnchor, qMax(count() - 1, 0)); moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == 'i') { enterInsertMode(); updateMiniBuffer(); if (atEol()) - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor); } else if (key == 'I') { enterInsertMode(); if (m_gflag) - m_tc.movePosition(StartOfLine, KeepAnchor); + moveToStartOfLine(KeepAnchor); else moveToFirstNonBlankOnLine(); } else if (key == 'j' || key == Key_Down) { int savedColumn = m_desiredColumn; if (m_submode == NoSubMode || m_submode == ZSubMode || m_submode == RegisterSubMode) { - m_tc.movePosition(Down, KeepAnchor, count()); + moveDown(KeepAnchor, count()); moveToDesiredColumn(); } else { - m_tc.movePosition(StartOfLine, MoveAnchor); - m_tc.movePosition(Down, KeepAnchor, count() + 1); + moveToStartOfLine(MoveAnchor); + moveDown(KeepAnchor, count() + 1); } finishMovement(); m_desiredColumn = savedColumn; @@ -793,33 +813,33 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, recordBeginGroup(); if (m_submode == NoSubMode) { for (int i = qMax(count(), 2) - 1; --i >= 0; ) { - m_tc.movePosition(EndOfLine); + moveToEndOfLine(MoveAnchor); recordRemoveNextChar(); if (!m_gflag) recordInsertText(" "); } if (!m_gflag) - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor, 1); } recordEndGroup(); } else if (key == 'k' || key == Key_Up) { int savedColumn = m_desiredColumn; if (m_submode == NoSubMode || m_submode == ZSubMode || m_submode == RegisterSubMode) { - m_tc.movePosition(Up, KeepAnchor, count()); + moveUp(KeepAnchor, count()); moveToDesiredColumn(); } else { - m_tc.movePosition(StartOfLine, MoveAnchor); - m_tc.movePosition(Down, MoveAnchor); - m_tc.movePosition(Up, KeepAnchor, count()+1); + moveToStartOfLine(MoveAnchor); + moveDown(MoveAnchor); + moveUp(KeepAnchor, count() + 1); } finishMovement(); m_desiredColumn = savedColumn; } else if (key == 'l' || key == Key_Right) { - m_tc.movePosition(Right, KeepAnchor, qMin(count(), rightDist())); + moveRight(KeepAnchor, qMin(count(), rightDist())); finishMovement(); } else if (key == 'L') { m_tc = EDITOR(cursorForPosition(QPoint(0, EDITOR(height())))); - m_tc.movePosition(Up, KeepAnchor, qMax(count(), 1)); + moveUp(KeepAnchor, qMax(count(), 1)); moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == 'm') { @@ -836,12 +856,12 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, enterInsertMode(); moveToFirstNonBlankOnLine(); int numSpaces = leftDist(); - m_tc.movePosition(Up, MoveAnchor, 1); + moveUp(MoveAnchor, 1); if (key == 'o') m_tc.movePosition(Down, MoveAnchor, 1); - m_tc.movePosition(EndOfLine, MoveAnchor); + moveToEndOfLine(MoveAnchor); m_tc.insertText("\n"); - m_tc.movePosition(StartOfLine, MoveAnchor); + moveToStartOfLine(MoveAnchor); if (m_config[ConfigAutoIndent] == ConfigOn) m_tc.insertText(QString(indentDist(), ' ')); else @@ -897,24 +917,24 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, finishMovement("W"); } else if (key == 'x') { // = "dl" if (atEol()) - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor); m_submode = DeleteSubMode; - m_tc.movePosition(Right, KeepAnchor, qMin(count(), rightDist())); + moveRight(KeepAnchor, qMin(count(), rightDist())); finishMovement("l"); } else if (key == 'X') { if (leftDist() > 0) { - m_tc.movePosition(Left, KeepAnchor, qMin(count(), leftDist())); + moveLeft(KeepAnchor, qMin(count(), leftDist())); m_tc.deleteChar(); } finishMovement(); } else if (key == 'y') { if (atEol()) - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor); m_submode = YankSubMode; } else if (key == 'z') { m_submode = ZSubMode; } else if (key == '~' && !atEol()) { - m_tc.movePosition(Right, KeepAnchor, qMin(count(), rightDist())); + moveRight(KeepAnchor, qMin(count(), rightDist())); QString str = m_tc.selectedText(); for (int i = str.size(); --i >= 0; ) { QChar c = str.at(i); @@ -923,10 +943,10 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, m_tc.deleteChar(); m_tc.insertText(str); } else if (key == Key_PageDown || key == control('f')) { - m_tc.movePosition(Down, KeepAnchor, count() * (linesOnScreen() - 2)); + moveDown(KeepAnchor, count() * (linesOnScreen() - 2)); finishMovement(); } else if (key == Key_PageUp || key == control('b')) { - m_tc.movePosition(Up, KeepAnchor, count() * (linesOnScreen() - 2)); + moveUp(KeepAnchor, count() * (linesOnScreen() - 2)); finishMovement(); } else if (key == Key_Backspace || key == control('h')) { m_tc.deletePreviousChar(); @@ -955,21 +975,21 @@ bool FakeVimHandler::Private::handleInsertMode(int key, int, const QString &text data += m_lastInsertion; } recordInsert(m_tc.position() - m_lastInsertion.size(), data); - m_tc.movePosition(Left, MoveAnchor, qMin(1, leftDist())); + moveLeft(MoveAnchor, qMin(1, leftDist())); enterCommandMode(); } else if (key == Key_Left) { - m_tc.movePosition(Left, MoveAnchor, 1); + moveLeft(MoveAnchor, count()); m_lastInsertion.clear(); } else if (key == Key_Down) { m_submode = NoSubMode; - m_tc.movePosition(Down, MoveAnchor, 1); + moveDown(MoveAnchor, count()); m_lastInsertion.clear(); } else if (key == Key_Up) { m_submode = NoSubMode; - m_tc.movePosition(Up, MoveAnchor, 1); + moveUp(MoveAnchor, count()); m_lastInsertion.clear(); } else if (key == Key_Right) { - m_tc.movePosition(Right, MoveAnchor, 1); + moveRight(MoveAnchor, count()); m_lastInsertion.clear(); } else if (key == Key_Return) { m_submode = NoSubMode; @@ -983,10 +1003,10 @@ bool FakeVimHandler::Private::handleInsertMode(int key, int, const QString &text m_tc.deleteChar(); m_lastInsertion.clear(); } else if (key == Key_PageDown || key == control('f')) { - m_tc.movePosition(Down, KeepAnchor, count() * (linesOnScreen() - 2)); + moveDown(KeepAnchor, count() * (linesOnScreen() - 2)); m_lastInsertion.clear(); } else if (key == Key_PageUp || key == control('b')) { - m_tc.movePosition(Up, KeepAnchor, count() * (linesOnScreen() - 2)); + moveUp(KeepAnchor, count() * (linesOnScreen() - 2)); m_lastInsertion.clear(); } else if (key == Key_Tab && m_config[ConfigExpandTab] == ConfigOn) { QString str = QString(m_config[ConfigTabStop].toInt(), ' '); From 67e1607458afb3f251e94f7e0c88301fbce5a438 Mon Sep 17 00:00:00 2001 From: dt Date: Fri, 16 Jan 2009 15:26:34 +0100 Subject: [PATCH 55/81] Fixes: Add a button to show the qt version manager from the project settings page. Task: 235982 --- src/plugins/coreplugin/coreimpl.cpp | 1 + .../qt4projectmanager/qt4buildconfigwidget.cpp | 14 +++++++++++++- .../qt4projectmanager/qt4buildconfigwidget.h | 1 + .../qt4projectmanager/qt4buildconfigwidget.ui | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/coreimpl.cpp b/src/plugins/coreplugin/coreimpl.cpp index 68653b52fc7..63521ce6f0a 100644 --- a/src/plugins/coreplugin/coreimpl.cpp +++ b/src/plugins/coreplugin/coreimpl.cpp @@ -190,3 +190,4 @@ void CoreImpl::openFiles(const QStringList &arguments) { m_mainwindow->openFiles(arguments); } + diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp index de7141b0794..0a53b99b62d 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp @@ -38,6 +38,9 @@ #include "qt4project.h" #include "qt4projectmanager.h" #include "ui_qt4buildconfigwidget.h" +#include +#include +#include "qt4projectmanagerconstants.h" #include @@ -76,9 +79,11 @@ Qt4BuildConfigWidget::Qt4BuildConfigWidget(Qt4Project *project) connect(m_ui->importLabel, SIGNAL(linkActivated(QString)), this, SLOT(importLabelClicked())); + connect(m_ui->manageQtVersionPushButtons, SIGNAL(clicked()), + this, SLOT(manageQtVersions())); + connect(m_pro->qt4ProjectManager()->versionManager(), SIGNAL(qtVersionsChanged()), this, SLOT(setupQtVersionsComboBox())); - } Qt4BuildConfigWidget::~Qt4BuildConfigWidget() @@ -86,6 +91,13 @@ Qt4BuildConfigWidget::~Qt4BuildConfigWidget() delete m_ui; } +void Qt4BuildConfigWidget::manageQtVersions() +{ + Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); + core->showOptionsDialog(Constants::QT_CATEGORY, Constants::QTVERSION_PAGE); +} + + QString Qt4BuildConfigWidget::displayName() const { return tr("General"); diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.h b/src/plugins/qt4projectmanager/qt4buildconfigwidget.h index 5e584fa149f..47f19be95e4 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.h +++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.h @@ -64,6 +64,7 @@ private slots: void shadowBuildLineEditTextChanged(); void importLabelClicked(); void qtVersionComboBoxCurrentIndexChanged(const QString &); + void manageQtVersions(); private: Ui::Qt4BuildConfigWidget *m_ui; diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui b/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui index ab5e8858611..7ce0d1950d1 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui +++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui @@ -61,6 +61,13 @@ + + + + Manage Qt Versions + + + From deb1ee689de8c8eedbe2ac12ea3c1ddcc1c3c173 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Fri, 16 Jan 2009 15:35:49 +0100 Subject: [PATCH 56/81] Fixes: Doc - some more documentation --- doc/qtcreator.qdoc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 68dc857c0ae..70a61d0cae2 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -231,7 +231,7 @@ To deselect, use \key{Ctrl+Shift+U}. \row \i Moving lines up and down - \i + \i \row \i Completion @@ -246,7 +246,17 @@ \row \i Switch between Header and Source - \i + \i Use \key{F4}. + + \row + \i Increasing and Decreasing Font Size + \i Use \key{Ctrl+Scroll Wheel} + + \row + \i Follow Symbols under The Cursor + \i Use \key{F2} and \key{Shift+F2}. This feature works with + namespaces, classes, methods, variables, include statements, + and macros. \endtable @@ -256,12 +266,6 @@ Up/Down/Page Up/Page Down - hold ctrl to prevent the cursor from moving - F2 and Shift F2 - follows symbols under the cursor (works for namespaces, classes, methods, variables, includes, macros). - - F4 - switch header and source - - Ctrl + Scroll wheel -- used to quickly change the font size (handy for presentatiaons) - To switch to an external editor, select \gui{Open in external editor} from From 8b4f6d36dee0c3bd3c27ccee7751463a2faca0d9 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Fri, 16 Jan 2009 16:02:14 +0100 Subject: [PATCH 57/81] Fixes: Documentation - fixing all the qdoc warnings --- doc/qtcreator.qdoc | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 70a61d0cae2..00a0d087f40 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -274,15 +274,9 @@ */ -/*! - -*/ - - - /*! \contentspage index.html - \previouspage creator-editor-settings.html + \previouspage creator-code-editor.html \page creator-build-settings.html \nextpage creator-creating-project.html @@ -844,8 +838,8 @@ \section2 Viewing Versioning History and Change Details The versioning history of a file can be displayed by selecting the - \gui{Log} (for \bold{git}) or \gui{Filelog (for \bold{Perforce} and - \bold{Subversion})} option. Typically, the log output will contain the + \gui{Log} (for \bold{git}) or \gui{Filelog} (for \bold{Perforce} and + \bold{Subversion}) option. Typically, the log output will contain the date, the commit message, and a change or revision identifier. If you click on the identifier, a description of the change including the diff will be displayed. From 34583ce5c1ed2df2ab6836b8d0cacf1ee20d3ba4 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 16:15:01 +0100 Subject: [PATCH 58/81] fakevim: improve behaviour of 'cc' --- src/plugins/fakevim/fakevimhandler.cpp | 305 +++++++++++++++---------- 1 file changed, 178 insertions(+), 127 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 7344e1d983c..06bb2755a8c 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -137,17 +137,23 @@ struct EditOperation QString m_to; }; -QDebug &operator<<(QDebug &ts, const EditOperation &op) +static QDebug &operator<<(QDebug &ts, const EditOperation &op) { if (op.m_itemCount > 0) { - ts << "EDIT BLOCK WITH" << op.m_itemCount << "ITEMS"; + ts << "\n EDIT BLOCK WITH " << op.m_itemCount << " ITEMS"; } else { - ts << "EDIT AT " << op.m_position - << " FROM " << op.m_from << " TO " << op.m_to; + ts << "\n EDIT AT " << op.m_position + << "\n FROM " << op.m_from << "\n TO " << op.m_to; } return ts; } +int lineCount(const QString &text) +{ + //return text.count(QChar(ParagraphSeparator)); + return text.count(QChar('\n')); +} + class FakeVimHandler::Private { public: @@ -206,26 +212,29 @@ private: // to reduce line noise typedef QTextCursor::MoveOperation MoveOperation; typedef QTextCursor::MoveMode MoveMode; - void moveToEndOfDocument(MoveMode m, int n = 1) - { m_tc.movePosition(QTextCursor::End, m, n); } - void moveToStartOfLine(MoveMode m, int n = 1) - { m_tc.movePosition(QTextCursor::StartOfLine, m, n); } - void moveToEndOfLine(MoveMode m, int n = 1) - { m_tc.movePosition(QTextCursor::EndOfLine, m, n); } - void moveUp(MoveMode m, int n = 1) - { m_tc.movePosition(QTextCursor::Up, m, n); } - void moveDown(MoveMode m, int n = 1) - { m_tc.movePosition(QTextCursor::Down, m, n); } - void moveRight(MoveMode m, int n = 1) - { m_tc.movePosition(QTextCursor::Right, m, n); } - void moveLeft(MoveMode m, int n = 1) - { m_tc.movePosition(QTextCursor::Left, m, n); } + void moveToEndOfDocument() + { m_tc.movePosition(QTextCursor::End, MoveAnchor); } + void moveToStartOfLine() + { m_tc.movePosition(QTextCursor::StartOfLine, MoveAnchor); } + void moveToEndOfLine() + { m_tc.movePosition(QTextCursor::EndOfLine, MoveAnchor); } + void moveUp(int n = 1) + { m_tc.movePosition(QTextCursor::Up, MoveAnchor, n); } + void moveDown(int n = 1) + { m_tc.movePosition(QTextCursor::Down, MoveAnchor, n); } + void moveRight(int n = 1) + { m_tc.movePosition(QTextCursor::Right, MoveAnchor, n); } + void moveLeft(int n = 1) + { m_tc.movePosition(QTextCursor::Left, MoveAnchor, n); } + void setAnchor() { m_anchor = m_tc.position(); } + + QString selectedText() const; void handleFfTt(int key); // helper function for handleCommand. return 1 based line index. int readLineCode(QString &cmd); - QTextCursor selectRange(int beginLine, int endLine); + void selectRange(int beginLine, int endLine); void setWidget(QWidget *ob); void enterInsertMode(); @@ -250,6 +259,7 @@ public: int m_subsubdata; QString m_input; QTextCursor m_tc; + int m_anchor; QHash m_registers; int m_register; QString m_mvcount; @@ -277,9 +287,11 @@ public: void recordRemoveNextChar(); void recordInsertText(const QString &data); - void recordRemoveSelectedText(); + QString recordRemoveSelectedText(); void recordBeginGroup(); void recordEndGroup(); + int anchor() const { return m_anchor; } + int position() const { return m_tc.position(); } void undo(); void redo(); @@ -403,9 +415,9 @@ bool FakeVimHandler::Private::handleKey(int key, int unmodified, const QString & void FakeVimHandler::Private::finishMovement(const QString &dotCommand) { if (m_submode == FilterSubMode) { - int beginLine = lineForPosition(m_tc.anchor()); - int endLine = lineForPosition(m_tc.position()); - m_tc.setPosition(qMin(m_tc.anchor(), m_tc.position())); + int beginLine = lineForPosition(anchor()); + int endLine = lineForPosition(position()); + m_tc.setPosition(qMin(anchor(), position())); m_mode = ExMode; m_commandBuffer = QString(".,+%1!").arg(qAbs(endLine - beginLine)); m_commandHistory.append(QString()); @@ -420,16 +432,15 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) if (m_submode == ChangeSubMode) { if (!dotCommand.isEmpty()) m_dotCommand = "c" + dotCommand; - m_registers[m_register] = m_tc.selectedText(); - recordRemoveSelectedText(); + QString text = recordRemoveSelectedText(); + m_registers[m_register] = text; m_mode = InsertMode; m_submode = NoSubMode; } else if (m_submode == DeleteSubMode) { if (!dotCommand.isEmpty()) m_dotCommand = "d" + dotCommand; - recordRemove(qMin(m_tc.position(), m_tc.anchor()), m_tc.selectedText()); - m_registers[m_register] = m_tc.selectedText(); - recordRemoveSelectedText(); + m_registers[m_register] = recordRemoveSelectedText(); + recordEndGroup(); m_submode = NoSubMode; if (atEol()) moveLeft(MoveAnchor); @@ -594,26 +605,31 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, m_register = key; m_submode = NoSubMode; } else if (m_submode == ChangeSubMode && key == 'c') { - moveToStartOfLine(MoveAnchor); - moveDown(KeepAnchor, count()); - m_registers[m_register] = m_tc.selectedText(); + moveToStartOfLine(); + setAnchor(); + moveDown(count()); + moveLeft(); + QString text = recordRemoveSelectedText(); + m_registers[m_register] = text; + m_submode = NoSubMode; + m_mode = InsertMode; finishMovement("c"); } else if (m_submode == DeleteSubMode && key == 'd') { - moveToStartOfLine(MoveAnchor); - moveDown(KeepAnchor, count()); - m_registers[m_register] = m_tc.selectedText(); + moveToStartOfLine(); + moveDown(count()); + m_registers[m_register] = recordRemoveSelectedText(); finishMovement("d"); } else if (m_submode == YankSubMode && key == 'y') { - moveToStartOfLine(MoveAnchor); - moveDown(KeepAnchor, count()); - m_registers[m_register] = m_tc.selectedText(); + moveToStartOfLine(); + moveDown(count()); + m_registers[m_register] = selectedText(); finishMovement(); } else if (m_submode == ReplaceSubMode) { if (atEol()) moveLeft(KeepAnchor); else m_tc.deleteChar(); - m_tc.insertText(text); + recordInsertText(text); } else if (m_submode == IndentSubMode && key == '=') { indentRegion(m_tc.block(), m_tc.block().next()); finishMovement(); @@ -679,8 +695,9 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == '\'') { m_subsubmode = TickSubSubMode; } else if (key == '|') { - moveToStartOfLine(KeepAnchor); - moveRight(KeepAnchor, qMin(count(), rightDist()) - 1); + setAnchor(); + moveToStartOfLine(); + moveRight(qMin(count(), rightDist()) - 1); finishMovement(); } else if (key == '!' && m_visualMode == NoVisualMode) { m_submode = FilterSubMode; @@ -693,16 +710,16 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == '"') { m_submode = RegisterSubMode; } else if (unmodified == Key_Return) { - moveToStartOfLine(MoveAnchor); - moveDown(MoveAnchor); + moveToStartOfLine(); + moveDown(); moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == Key_Home) { - m_tc.movePosition(StartOfLine, KeepAnchor); + moveToStartOfLine(); finishMovement(); } else if (key == '$' || key == Key_End) { int submode = m_submode; - moveToEndOfLine(KeepAnchor); + moveToEndOfLine(); finishMovement(); if (submode == NoSubMode) m_desiredColumn = -1; @@ -722,12 +739,14 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, finishMovement(); } else if (key == 'a') { m_mode = InsertMode; + recordBeginGroup(); m_lastInsertion.clear(); - m_tc.movePosition(Right, MoveAnchor, 1); + moveRight(); updateMiniBuffer(); } else if (key == 'A') { m_mode = InsertMode; - moveToEndOfLine(MoveAnchor); + moveToEndOfLine(); + recordBeginGroup(); m_lastInsertion.clear(); } else if (key == 'b') { moveToWordBoundary(false, false); @@ -736,27 +755,37 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveToWordBoundary(true, false); finishMovement(); } else if (key == 'c') { + setAnchor(); + recordBeginGroup(); m_submode = ChangeSubMode; } else if (key == 'C') { - m_submode = ChangeSubMode; - moveToEndOfLine(KeepAnchor); + setAnchor(); + recordBeginGroup(); + moveToEndOfLine(); + m_registers[m_register] = recordRemoveSelectedText(); + m_mode = InsertMode; finishMovement(); } else if (key == 'd' && m_visualMode == NoVisualMode) { if (atEol()) - moveLeft(MoveAnchor); + moveLeft(); + setAnchor(); + recordBeginGroup(); m_opcount = m_mvcount; m_mvcount.clear(); m_submode = DeleteSubMode; } else if (key == 'd') { + setAnchor(); leaveVisualMode(); int beginLine = lineForPosition(m_marks['<']); int endLine = lineForPosition(m_marks['>']); - m_tc = selectRange(beginLine, endLine); + selectRange(beginLine, endLine); recordRemoveSelectedText(); } else if (key == 'D') { + setAnchor(); + recordBeginGroup(); m_submode = DeleteSubMode; - moveDown(KeepAnchor, qMax(count() - 1, 0)); - moveRight(KeepAnchor, rightDist()); + moveDown(qMax(count() - 1, 0)); + moveRight(rightDist()); finishMovement(); } else if (key == 'e') { moveToWordBoundary(false, true); @@ -775,15 +804,16 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, if (m_config[ConfigStartOfLine] == ConfigOn) moveToFirstNonBlankOnLine(); finishMovement(); - } else if (key == 'h' || key == Key_Left) { + } else if (key == 'h' || key == Key_Left + || key == Key_Backspace || key == control('h')) { int n = qMin(count(), leftDist()); if (m_fakeEnd && m_tc.block().length() > 1) ++n; - moveLeft(KeepAnchor, n); + moveLeft(n); finishMovement(); } else if (key == 'H') { m_tc = EDITOR(cursorForPosition(QPoint(0, 0))); - moveDown(KeepAnchor, qMax(count() - 1, 0)); + moveDown(qMax(count() - 1, 0)); moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == 'i') { @@ -792,20 +822,21 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, if (atEol()) moveLeft(MoveAnchor); } else if (key == 'I') { + setAnchor(); enterInsertMode(); if (m_gflag) - moveToStartOfLine(KeepAnchor); + moveToStartOfLine(); else moveToFirstNonBlankOnLine(); } else if (key == 'j' || key == Key_Down) { int savedColumn = m_desiredColumn; if (m_submode == NoSubMode || m_submode == ZSubMode || m_submode == RegisterSubMode) { - moveDown(KeepAnchor, count()); + moveDown(count()); moveToDesiredColumn(); } else { - moveToStartOfLine(MoveAnchor); - moveDown(KeepAnchor, count() + 1); + moveToStartOfLine(); + moveDown(count() + 1); } finishMovement(); m_desiredColumn = savedColumn; @@ -813,33 +844,34 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, recordBeginGroup(); if (m_submode == NoSubMode) { for (int i = qMax(count(), 2) - 1; --i >= 0; ) { - moveToEndOfLine(MoveAnchor); + moveToEndOfLine(); recordRemoveNextChar(); if (!m_gflag) recordInsertText(" "); } if (!m_gflag) - moveLeft(MoveAnchor, 1); + moveLeft(); } recordEndGroup(); } else if (key == 'k' || key == Key_Up) { int savedColumn = m_desiredColumn; - if (m_submode == NoSubMode || m_submode == ZSubMode || m_submode == RegisterSubMode) { - moveUp(KeepAnchor, count()); + if (m_submode == NoSubMode || m_submode == ZSubMode + || m_submode == RegisterSubMode) { + moveUp(count()); moveToDesiredColumn(); } else { - moveToStartOfLine(MoveAnchor); - moveDown(MoveAnchor); - moveUp(KeepAnchor, count() + 1); + moveToStartOfLine(); + moveDown(); + moveUp(count() + 1); } finishMovement(); m_desiredColumn = savedColumn; } else if (key == 'l' || key == Key_Right) { - moveRight(KeepAnchor, qMin(count(), rightDist())); + moveRight(qMin(count(), rightDist())); finishMovement(); } else if (key == 'L') { m_tc = EDITOR(cursorForPosition(QPoint(0, EDITOR(height())))); - moveUp(KeepAnchor, qMax(count(), 1)); + moveUp(qMax(count(), 1)); moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == 'm') { @@ -855,45 +887,52 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == 'o' || key == 'O') { enterInsertMode(); moveToFirstNonBlankOnLine(); + recordBeginGroup(); int numSpaces = leftDist(); - moveUp(MoveAnchor, 1); + moveUp(); if (key == 'o') - m_tc.movePosition(Down, MoveAnchor, 1); - moveToEndOfLine(MoveAnchor); - m_tc.insertText("\n"); - moveToStartOfLine(MoveAnchor); + moveDown(); + moveToEndOfLine(); + recordInsertText("\n"); + moveToStartOfLine(); if (m_config[ConfigAutoIndent] == ConfigOn) - m_tc.insertText(QString(indentDist(), ' ')); + recordInsertText(QString(indentDist(), ' ')); else - m_tc.insertText(QString(numSpaces, ' ')); + recordInsertText(QString(numSpaces, ' ')); + recordEndGroup(); } else if (key == 'p' || key == 'P') { + recordBeginGroup(); QString text = m_registers[m_register]; int n = text.count(QChar(ParagraphSeparator)); if (n > 0) { - m_tc.movePosition(StartOfLine); + moveToStartOfLine(); if (key == 'p') - m_tc.movePosition(Down); - m_tc.insertText(text); - m_tc.movePosition(Up, MoveAnchor, n); + moveDown(MoveAnchor); + recordInsertText(text); + moveUp(n); } else { if (key == 'p') - m_tc.movePosition(Right); - m_tc.insertText(text); - m_tc.movePosition(Left); + moveRight(); + recordInsertText(text); + moveLeft(); } + recordEndGroup(); m_dotCommand = "p"; } else if (key == 'r') { + recordBeginGroup(); m_submode = ReplaceSubMode; m_dotCommand = "r"; } else if (key == 'R') { + recordBeginGroup(); m_mode = InsertMode; m_submode = ReplaceSubMode; m_dotCommand = "R"; } else if (key == control('r')) { redo(); } else if (key == 's') { + recordBeginGroup(); m_submode = ChangeSubMode; - m_tc.movePosition(Right, KeepAnchor, qMin(count(), rightDist())); + moveRight(qMin(count(), rightDist())); } else if (key == 't' || key == 'T') { m_subsubmode = FtSubSubMode; m_subsubdata = key; @@ -918,38 +957,42 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == 'x') { // = "dl" if (atEol()) moveLeft(MoveAnchor); + recordBeginGroup(); m_submode = DeleteSubMode; - moveRight(KeepAnchor, qMin(count(), rightDist())); + moveRight(qMin(count(), rightDist())); finishMovement("l"); } else if (key == 'X') { if (leftDist() > 0) { - moveLeft(KeepAnchor, qMin(count(), leftDist())); - m_tc.deleteChar(); + setAnchor(); + moveLeft(qMin(count(), leftDist())); + recordRemoveSelectedText(); } finishMovement(); } else if (key == 'y') { if (atEol()) - moveLeft(MoveAnchor); + moveLeft(); + recordBeginGroup(); m_submode = YankSubMode; } else if (key == 'z') { + recordBeginGroup(); m_submode = ZSubMode; } else if (key == '~' && !atEol()) { - moveRight(KeepAnchor, qMin(count(), rightDist())); - QString str = m_tc.selectedText(); + recordBeginGroup(); + setAnchor(); + moveRight(qMin(count(), rightDist())); + QString str = recordRemoveSelectedText(); for (int i = str.size(); --i >= 0; ) { QChar c = str.at(i); str[i] = c.isUpper() ? c.toLower() : c.toUpper(); } - m_tc.deleteChar(); - m_tc.insertText(str); + recordInsertText(str); + recordEndGroup(); } else if (key == Key_PageDown || key == control('f')) { - moveDown(KeepAnchor, count() * (linesOnScreen() - 2)); + moveDown(count() * (linesOnScreen() - 2)); finishMovement(); } else if (key == Key_PageUp || key == control('b')) { - moveUp(KeepAnchor, count() * (linesOnScreen() - 2)); + moveUp(count() * (linesOnScreen() - 2)); finishMovement(); - } else if (key == Key_Backspace || key == control('h')) { - m_tc.deletePreviousChar(); } else if (key == Key_Delete) { m_tc.deleteChar(); } else if (key == Key_Escape) { @@ -975,21 +1018,23 @@ bool FakeVimHandler::Private::handleInsertMode(int key, int, const QString &text data += m_lastInsertion; } recordInsert(m_tc.position() - m_lastInsertion.size(), data); - moveLeft(MoveAnchor, qMin(1, leftDist())); + recordEndGroup(); + //qDebug() << "UNDO: " << m_undoStack; + moveLeft(qMin(1, leftDist())); enterCommandMode(); } else if (key == Key_Left) { - moveLeft(MoveAnchor, count()); + moveLeft(count()); m_lastInsertion.clear(); } else if (key == Key_Down) { m_submode = NoSubMode; - moveDown(MoveAnchor, count()); + moveDown(count()); m_lastInsertion.clear(); } else if (key == Key_Up) { m_submode = NoSubMode; - moveUp(MoveAnchor, count()); + moveUp(count()); m_lastInsertion.clear(); } else if (key == Key_Right) { - moveRight(MoveAnchor, count()); + moveRight(count()); m_lastInsertion.clear(); } else if (key == Key_Return) { m_submode = NoSubMode; @@ -1003,10 +1048,10 @@ bool FakeVimHandler::Private::handleInsertMode(int key, int, const QString &text m_tc.deleteChar(); m_lastInsertion.clear(); } else if (key == Key_PageDown || key == control('f')) { - moveDown(KeepAnchor, count() * (linesOnScreen() - 2)); + moveDown(count() * (linesOnScreen() - 2)); m_lastInsertion.clear(); } else if (key == Key_PageUp || key == control('b')) { - moveUp(KeepAnchor, count() * (linesOnScreen() - 2)); + moveUp(count() * (linesOnScreen() - 2)); m_lastInsertion.clear(); } else if (key == Key_Tab && m_config[ConfigExpandTab] == ConfigOn) { QString str = QString(m_config[ConfigTabStop].toInt(), ' '); @@ -1173,17 +1218,15 @@ int FakeVimHandler::Private::readLineCode(QString &cmd) return -1; } -QTextCursor FakeVimHandler::Private::selectRange(int beginLine, int endLine) +void FakeVimHandler::Private::selectRange(int beginLine, int endLine) { - QTextCursor tc = m_tc; - tc.setPosition(positionForLine(beginLine), MoveAnchor); + m_tc.setPosition(positionForLine(beginLine), MoveAnchor); if (endLine == linesInDocument()) { - tc.setPosition(positionForLine(endLine), KeepAnchor); - tc.movePosition(EndOfLine, KeepAnchor); + m_tc.setPosition(positionForLine(endLine), KeepAnchor); + m_tc.movePosition(EndOfLine, KeepAnchor); } else { - tc.setPosition(positionForLine(endLine + 1), KeepAnchor); + m_tc.setPosition(positionForLine(endLine + 1), KeepAnchor); } - return tc; } void FakeVimHandler::Private::handleExCommand(const QString &cmd0) @@ -1223,11 +1266,11 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) beginLine = cursorLineInDocument(); if (endLine == -1) endLine = cursorLineInDocument(); - QTextCursor tc = selectRange(beginLine, endLine); + selectRange(beginLine, endLine); QString reg = reDelete.cap(2); + QString text = recordRemoveSelectedText(); if (!reg.isEmpty()) - m_registers[reg.at(0).unicode()] = tc.selection().toPlainText(); - tc.removeSelectedText(); + m_registers[reg.at(0).unicode()] = text; } else if (reWrite.indexIn(cmd) != -1) { // :w enterCommandMode(); bool noArgs = (beginLine == -1); @@ -1245,9 +1288,8 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) if (exists && !forced && !noArgs) { showRedMessage(tr("File '%1' exists (add ! to override)").arg(fileName)); } else if (file.open(QIODevice::ReadWrite)) { - QTextCursor tc = selectRange(beginLine, endLine); - QString contents = tc.selection().toPlainText(); - emit q->writeFile(fileName, contents); + selectRange(beginLine, endLine); + emit q->writeFile(fileName, selectedText()); // check by reading back file.open(QIODevice::ReadOnly); QByteArray ba = file.readAll(); @@ -1272,10 +1314,10 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) beginLine = cursorLineInDocument(); if (endLine == -1) endLine = cursorLineInDocument(); - QTextCursor tc = selectRange(beginLine, endLine); - QString text = tc.selection().toPlainText(); - tc.removeSelectedText(); + selectRange(beginLine, endLine); QString command = cmd.mid(1).trimmed(); + recordBeginGroup(); + QString text = recordRemoveSelectedText(); QProcess proc; proc.start(cmd.mid(1)); proc.waitForStarted(); @@ -1283,7 +1325,8 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) proc.closeWriteChannel(); proc.waitForFinished(); QString result = QString::fromUtf8(proc.readAllStandardOutput()); - m_tc.insertText(result); + recordInsertText(result); + recordEndGroup(); leaveVisualMode(); m_tc.setPosition(positionForLine(beginLine)); @@ -1357,8 +1400,6 @@ void FakeVimHandler::Private::search(const QString &needle0, bool forward) EDITOR(setTextCursor(m_tc)); if (EDITOR(find(needle, flags))) { m_tc = EDITOR(textCursor()); - // the qMax seems to be needed for QPlainTextEdit only - //m_tc.movePosition(Left, MoveAnchor, qMax(1, needle.size() - 1)); m_tc.setPosition(m_tc.anchor()); return; } @@ -1367,8 +1408,6 @@ void FakeVimHandler::Private::search(const QString &needle0, bool forward) EDITOR(setTextCursor(m_tc)); if (EDITOR(find(needle, flags))) { m_tc = EDITOR(textCursor()); - // the qMax seems to be needed for QPlainTextEdit only - //m_tc.movePosition(Left, MoveAnchor, qMax(1, needle.size() - 1)); m_tc.setPosition(m_tc.anchor()); if (forward) showRedMessage("search hit BOTTOM, continuing at TOP"); @@ -1643,6 +1682,13 @@ QString FakeVimHandler::Private::lastSearchString() const return m_searchHistory.empty() ? QString() : m_searchHistory.back(); } +QString FakeVimHandler::Private::selectedText() const +{ + QTextCursor tc = m_tc; + tc.setPosition(m_anchor, KeepAnchor); + return tc.selection().toPlainText(); +} + int FakeVimHandler::Private::positionForLine(int line) const { return m_tc.block().document()->findBlockByNumber(line - 1).position(); @@ -1738,6 +1784,7 @@ void FakeVimHandler::Private::redo() void FakeVimHandler::Private::recordBeginGroup() { + //qDebug() << "PUSH"; m_undoGroupStack.push(m_undoStack.size()); } @@ -1745,22 +1792,25 @@ void FakeVimHandler::Private::recordEndGroup() { EditOperation op; op.m_itemCount = m_undoStack.size() - m_undoGroupStack.pop(); + //qDebug() << "POP " << op.m_itemCount; recordOperation(op); } -void FakeVimHandler::Private::recordRemoveSelectedText() +QString FakeVimHandler::Private::recordRemoveSelectedText() { EditOperation op; - op.m_position = qMin(m_tc.position(), m_tc.anchor()); + m_tc.setPosition(anchor(), KeepAnchor); + op.m_position = qMin(position(), anchor()); op.m_from = m_tc.selection().toPlainText(); recordOperation(op); m_tc.removeSelectedText(); + return op.m_from; } void FakeVimHandler::Private::recordRemoveNextChar() { - m_tc.setPosition(m_tc.position(), MoveAnchor); - m_tc.movePosition(Right, KeepAnchor); + m_anchor = position(); + moveRight(); recordRemoveSelectedText(); } @@ -1775,6 +1825,7 @@ void FakeVimHandler::Private::recordInsertText(const QString &data) void FakeVimHandler::Private::recordOperation(const EditOperation &op) { + qDebug() << "OP: " << op; m_undoStack.push(op); m_redoStack.clear(); } From d370b08aa8623e72b6d311bbec0fcbc97890e262 Mon Sep 17 00:00:00 2001 From: dt Date: Fri, 16 Jan 2009 16:39:08 +0100 Subject: [PATCH 59/81] Fixes: Make bold instead of mono spaced. Details: Works. --- doc/qtcreator.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 00a0d087f40..862671762c9 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -222,8 +222,8 @@ \table \row \i Block navigation - \i To navigate between blocks, e.g., from one \c{\{} to another - \c{\c}}, use \key{Ctrl+[} and \key{Ctrl+]}. + \i To navigate between blocks, e.g., from one \bold{\{} to another + \bold{\}} , use \key{Ctrl+[} and \key{Ctrl+]}. \row \i Block selection \i To select a current block, use \key{Ctrl+U}. Pressing From d78d5f564e686c2d188c099f7d7c1ccea701d0c3 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 16:42:31 +0100 Subject: [PATCH 60/81] fakevim: fix 'e' and 'E' --- src/plugins/fakevim/fakevimhandler.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 06bb2755a8c..f5677c4964a 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -433,6 +433,7 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) if (!dotCommand.isEmpty()) m_dotCommand = "c" + dotCommand; QString text = recordRemoveSelectedText(); + qDebug() << "CHANGING TO INSERT MODE" << text; m_registers[m_register] = text; m_mode = InsertMode; m_submode = NoSubMode; @@ -949,7 +950,12 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == control('v')) { enterVisualMode(VisualBlockMode); } else if (key == 'w') { - moveToNextWord(false); + // Special case: "cw" and "cW" work the same as "ce" and "cE" if the + // cursor is on a non-blank. + if (m_submode == ChangeSubMode) + moveToWordBoundary(false, true); + else + moveToNextWord(false); finishMovement("w"); } else if (key == 'W') { moveToNextWord(true); @@ -1513,15 +1519,15 @@ void FakeVimHandler::Private::moveToWordBoundary(bool simple, bool forward) int repeat = count(); QTextDocument *doc = m_tc.document(); int n = forward ? lastPositionInDocument() - 1 : 0; - int lastClass = 0; + int lastClass = -1; while (true) { - m_tc.movePosition(forward ? Right : Left, KeepAnchor, 1); + forward ? moveRight() : moveLeft(); QChar c = doc->characterAt(m_tc.position()); int thisClass = charClass(c, simple); if (thisClass != lastClass && lastClass != 0) --repeat; if (repeat == -1) { - m_tc.movePosition(forward ? Left : Right, KeepAnchor, 1); + forward ? moveLeft() : moveRight(); break; } lastClass = thisClass; @@ -1586,7 +1592,7 @@ void FakeVimHandler::Private::moveToNextWord(bool simple) if (repeat == 0) break; lastClass = thisClass; - m_tc.movePosition(Right, KeepAnchor, 1); + moveRight(); if (m_tc.position() == n) break; } @@ -1799,11 +1805,13 @@ void FakeVimHandler::Private::recordEndGroup() QString FakeVimHandler::Private::recordRemoveSelectedText() { EditOperation op; + //qDebug() << "1 POS: " << position() << " ANCHOR: " << anchor() << m_tc.anchor(); m_tc.setPosition(anchor(), KeepAnchor); op.m_position = qMin(position(), anchor()); + //qDebug() << "2 POS: " << position() << " ANCHOR: " << anchor() << m_tc.anchor(); op.m_from = m_tc.selection().toPlainText(); recordOperation(op); - m_tc.removeSelectedText(); + m_tc.deleteChar(); return op.m_from; } From 0728e78afb7228460ed440075e05f38fd371c59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Fri, 16 Jan 2009 16:30:22 +0100 Subject: [PATCH 61/81] Reintroduced a way to edit project dependencies Dependencies between projects can now be edited in the Projects mode. You can simply check for each project the projects that it depends on, and they will be built first. A message box pops up when you try to create a circular dependency. Could use some testing. --- src/plugins/bookmarks/bookmarkmanager.cpp | 2 +- .../cmakeprojectmanager/cmakeproject.cpp | 5 - .../cmakeprojectmanager/cmakeproject.h | 1 - .../projectexplorer/buildparserinterface.h | 2 +- .../projectexplorer/dependenciesdialog.cpp | 245 ------------------ .../projectexplorer/dependenciesdialog.ui | 84 ------ .../projectexplorer/dependenciespanel.cpp | 217 ++++++++++++++++ ...pendenciesdialog.h => dependenciespanel.h} | 40 +-- .../projectexplorer/dependenciespanel.ui | 44 ++++ .../editorsettingspropertiespage.h | 1 - .../projectexplorer/iprojectproperties.h | 4 +- src/plugins/projectexplorer/project.cpp | 20 +- src/plugins/projectexplorer/project.h | 43 +-- .../projectexplorer/projectexplorer.cpp | 24 +- src/plugins/projectexplorer/projectexplorer.h | 2 - .../projectexplorer/projectexplorer.pro | 6 +- src/plugins/projectexplorer/session.cpp | 65 +++-- src/plugins/projectexplorer/session.h | 13 +- src/plugins/qt4projectmanager/qt4project.cpp | 11 - .../qt4projectmanager/qt4projectmanager.cpp | 7 +- 20 files changed, 376 insertions(+), 460 deletions(-) delete mode 100644 src/plugins/projectexplorer/dependenciesdialog.cpp delete mode 100644 src/plugins/projectexplorer/dependenciesdialog.ui create mode 100644 src/plugins/projectexplorer/dependenciespanel.cpp rename src/plugins/projectexplorer/{dependenciesdialog.h => dependenciespanel.h} (73%) create mode 100644 src/plugins/projectexplorer/dependenciespanel.ui diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index 735afc37989..86b5d889dbd 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -563,7 +563,7 @@ TextEditor::ITextEditor *BookmarkManager::currentTextEditor() const } /* Returns the current session. */ -SessionManager* BookmarkManager::sessionManager() const +SessionManager *BookmarkManager::sessionManager() const { ExtensionSystem::PluginManager *pm = m_core->pluginManager(); ProjectExplorerPlugin *pe = pm->getObject(); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 0f5029c8eaf..effe432e36a 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -215,11 +215,6 @@ ProjectExplorer::IProjectManager *CMakeProject::projectManager() const return m_manager; } -QList CMakeProject::dependencies() -{ - return QList(); -} - QList CMakeProject::dependsOn() { return QList(); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index cdabdf1d084..a71ca7c8b00 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -73,7 +73,6 @@ public: virtual Core::IFile *file() const; virtual ProjectExplorer::IProjectManager *projectManager() const; - virtual QList dependencies(); //NBS TODO remove virtual QList dependsOn(); //NBS TODO implement dependsOn virtual bool isApplication() const; diff --git a/src/plugins/projectexplorer/buildparserinterface.h b/src/plugins/projectexplorer/buildparserinterface.h index 6dba4dfec00..2857926e18d 100644 --- a/src/plugins/projectexplorer/buildparserinterface.h +++ b/src/plugins/projectexplorer/buildparserinterface.h @@ -66,7 +66,7 @@ class PROJECTEXPLORER_EXPORT IBuildParserFactory Q_OBJECT public: - IBuildParserFactory() {}; + IBuildParserFactory() {} virtual ~IBuildParserFactory(); virtual bool canCreate(const QString & name) const = 0; virtual BuildParserInterface * create(const QString & name) const = 0; diff --git a/src/plugins/projectexplorer/dependenciesdialog.cpp b/src/plugins/projectexplorer/dependenciesdialog.cpp deleted file mode 100644 index 9c78de543ad..00000000000 --- a/src/plugins/projectexplorer/dependenciesdialog.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/*************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** -** Non-Open Source Usage -** -** Licensees may use this file in accordance with the Qt Beta Version -** License Agreement, Agreement version 2.2 provided with the Software or, -** alternatively, in accordance with the terms contained in a written -** agreement between you and Nokia. -** -** GNU General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the packaging -** of this file. Please review the following information to ensure GNU -** General Public Licensing requirements will be met: -** -** http://www.fsf.org/licensing/licenses/info/GPLv2.html and -** http://www.gnu.org/copyleft/gpl.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt GPL Exception -** version 1.3, included in the file GPL_EXCEPTION.txt in this package. -** -***************************************************************************/ - -#include "dependenciesdialog.h" -#include "project.h" -#include "session.h" - -#include -#include -#include -#include -#include - -namespace ProjectExplorer { -namespace Internal { - -// ------ DependencyModel - -class DependencyModel : public QAbstractTableModel { -public: - typedef ProjectExplorer::Project Project; - typedef DependenciesDialog::ProjectList ProjectList; - - DependencyModel(SessionManager *sln, const ProjectList &projectList, QObject * parent = 0); - - virtual int rowCount(const QModelIndex&) const { return m_projects.size(); } - virtual int columnCount(const QModelIndex&) const { return m_projects.size(); } - - virtual QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const; - bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole); - - virtual Qt::ItemFlags flags ( const QModelIndex & index ) const; - - QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; - - // Apply changed items - unsigned apply(SessionManager *sln) const; - - void resetDependencies(); - -private: - - struct Entry { - Entry(SessionManager *sln, Project *rootProject, Project *dependentProject); - Entry() : m_dependentProject(0), m_dependent(false), m_defaultValue(false), m_canAddDependency(false) {} - Project* m_dependentProject; - bool m_dependent; - bool m_defaultValue; - bool m_canAddDependency; - }; - - // column - typedef QVector ProjectDependencies; - typedef QList Projects; - Projects m_projects; - ProjectList m_projectList; -}; - -DependencyModel::Entry::Entry(SessionManager *sln, - Project *rootProject, - Project *dependentProject) : - m_dependentProject(dependentProject), - m_dependent(sln->hasDependency(rootProject, dependentProject)), - m_defaultValue(m_dependent), - m_canAddDependency(sln->canAddDependency(rootProject, dependentProject)) -{ -} - -DependencyModel::DependencyModel(SessionManager *sln, - const ProjectList &projectList, - QObject * parent) : - QAbstractTableModel(parent), - m_projectList(projectList) -{ - const int count = projectList.size(); - for (int p = 0; p < count; p++) { - Project *rootProject = projectList.at(p); - ProjectDependencies dependencies; - dependencies.reserve(count); - for (int d = 0; d < count ; d++) - dependencies.push_back(p == d ? Entry() : Entry(sln, rootProject, projectList.at(d))); - - m_projects += dependencies; - } -} - -QVariant DependencyModel::data ( const QModelIndex & index, int role ) const -{ - static const QVariant empty = QVariant(QString()); - // TO DO: find a checked icon - static const QVariant checked = QVariant(QString(QLatin1Char('x'))); - - const int p = index.column(); - const int d = index.row(); - switch (role) { - case Qt::EditRole: - return QVariant(m_projects[p][d].m_dependent); - case Qt::DisplayRole: - return m_projects[p][d].m_dependent ? checked : empty; - default: - break; - } - return QVariant(); -} - -bool DependencyModel::setData ( const QModelIndex & index, const QVariant & value, int role) -{ - switch (role) { - case Qt::EditRole: { - const int p = index.column(); - const int d = index.row(); - if (d == p) - return false; - Entry &e(m_projects[p][d]); - e.m_dependent = value.toBool(); - emit dataChanged(index, index); - } - return true; - default: - break; - } - return false; -} - -Qt::ItemFlags DependencyModel::flags ( const QModelIndex & index ) const -{ - const int p = index.column(); - const int d = index.row(); - - if (d == p) - return 0; - - const Entry &e(m_projects[p][d]); - Qt::ItemFlags rc = Qt::ItemIsEnabled|Qt::ItemIsUserCheckable | Qt::ItemIsSelectable; - if (e.m_canAddDependency) - rc |= Qt::ItemIsEditable; - return rc; -} - -QVariant DependencyModel::headerData ( int section, Qt::Orientation , int role ) const -{ - switch (role) { - case Qt::DisplayRole: - return QVariant(m_projectList.at(section)->name()); - default: - break; - } - return QVariant(); -} - -void DependencyModel::resetDependencies() -{ - if (const int count = m_projectList.size()) { - for (int p = 0; p < count; p++) - for (int d = 0; d < count; d++) - m_projects[p][d].m_dependent = false; - reset(); - } -} - -unsigned DependencyModel::apply(SessionManager *sln) const -{ - unsigned rc = 0; - const int count = m_projectList.size(); - for (int p = 0; p < count; p++) { - Project *rootProject = m_projectList.at(p); - for (int d = 0; d < count; d++) { - if (d != p) { - const Entry &e(m_projects[p][d]); - if (e.m_dependent != e. m_defaultValue) { - rc++; - if (e.m_dependent) { - sln->addDependency(rootProject, e.m_dependentProject); - } else { - sln->removeDependency(rootProject, e.m_dependentProject); - } - } - } - } - } - return rc; -} - -// ------ DependenciesDialog -DependenciesDialog::DependenciesDialog(QWidget *parent, SessionManager *sln) : - QDialog(parent), - m_sln(sln), - m_projectList(m_sln->projects()), - m_model(new DependencyModel(sln, m_projectList)) -{ - m_ui.setupUi(this); - m_ui.buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); - QPushButton *resetButton = m_ui.buttonBox->addButton (QDialogButtonBox::Reset); - connect(resetButton, SIGNAL(clicked()), this, SLOT(reset())); - - m_ui.dependencyTable->setModel(m_model); -} - -void DependenciesDialog::accept() -{ - m_model->apply(m_sln); - QDialog::accept(); -} - -void DependenciesDialog::reset() -{ - m_model->resetDependencies(); -} - -DependenciesDialog::~DependenciesDialog() -{ -} - -} -} diff --git a/src/plugins/projectexplorer/dependenciesdialog.ui b/src/plugins/projectexplorer/dependenciesdialog.ui deleted file mode 100644 index 31a70dae983..00000000000 --- a/src/plugins/projectexplorer/dependenciesdialog.ui +++ /dev/null @@ -1,84 +0,0 @@ - - - ProjectExplorer::Internal::DependenciesDialog - - - - 0 - 0 - 492 - 435 - - - - Project Dependencies - - - - 6 - - - 9 - - - - - QAbstractItemView::SingleSelection - - - - - - - Qt::Horizontal - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - ProjectExplorer::Internal::DependenciesDialog - accept() - - - 142 - 285 - - - 142 - 155 - - - - - buttonBox - rejected() - ProjectExplorer::Internal::DependenciesDialog - reject() - - - 142 - 285 - - - 142 - 155 - - - - - diff --git a/src/plugins/projectexplorer/dependenciespanel.cpp b/src/plugins/projectexplorer/dependenciespanel.cpp new file mode 100644 index 00000000000..bc83f7408a4 --- /dev/null +++ b/src/plugins/projectexplorer/dependenciespanel.cpp @@ -0,0 +1,217 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#include "dependenciespanel.h" +#include "project.h" +#include "session.h" + +#include + +#include +#include +#include +#include +#include +#include + +namespace ProjectExplorer { +namespace Internal { + +/// +/// DependenciesModel +/// + +class DependenciesModel : public QAbstractListModel +{ +public: + DependenciesModel(SessionManager *session, Project *project, QObject *parent = 0); + + int rowCount(const QModelIndex &index) const; + int columnCount(const QModelIndex &index) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + Qt::ItemFlags flags(const QModelIndex &index) const; + +private: + SessionManager *m_session; + Project *m_project; + QList m_projects; +}; + +DependenciesModel::DependenciesModel(SessionManager *session, + Project *project, + QObject *parent) + : QAbstractListModel(parent) + , m_session(session) + , m_project(project) + , m_projects(session->projects()) +{ + // We can't select ourselves as a dependency + m_projects.removeAll(m_project); +} + +int DependenciesModel::rowCount(const QModelIndex &index) const +{ + return index.isValid() ? 0 : m_projects.size(); +} + +int DependenciesModel::columnCount(const QModelIndex &index) const +{ + return index.isValid() ? 0 : 1; +} + +QVariant DependenciesModel::data(const QModelIndex &index, int role) const +{ + const Project *p = m_projects.at(index.row()); + + switch (role) { + case Qt::DisplayRole: + return p->name(); + case Qt::CheckStateRole: + return m_session->hasDependency(m_project, p) ? Qt::Checked : Qt::Unchecked; + case Qt::DecorationRole: + return Core::FileIconProvider::instance()->icon(QFileInfo(p->file()->fileName())); + default: + return QVariant(); + } +} + +bool DependenciesModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + qDebug() << index << value << role << value.toBool(); + + if (role == Qt::CheckStateRole) { + const Project *p = m_projects.at(index.row()); + const Qt::CheckState c = static_cast(value.toInt()); + + if (c == Qt::Checked) { + if (m_session->addDependency(m_project, p)) { + emit dataChanged(index, index); + return true; + } else { + QMessageBox::warning(0, tr("Unable to add dependency"), + tr("This would create a circular dependency.")); + } + } else if (c == Qt::Unchecked) { + if (m_session->hasDependency(m_project, p)) { + m_session->removeDependency(m_project, p); + emit dataChanged(index, index); + return true; + } + } + } + return false; +} + +Qt::ItemFlags DependenciesModel::flags(const QModelIndex &index) const +{ + Qt::ItemFlags rc = QAbstractListModel::flags(index); + if (index.column() == 0) + rc |= Qt::ItemIsUserCheckable | Qt::ItemIsEditable; + return rc; +} + +/// +/// DependenciesWidget +/// + +class DependenciesWidget : public QWidget +{ +public: + DependenciesWidget(SessionManager *session, Project *project, + QWidget *parent = 0); + +private: + Ui::DependenciesWidget m_ui; + SessionManager *m_session; + DependenciesModel *m_model; +}; + +DependenciesWidget::DependenciesWidget(SessionManager *session, + Project *project, + QWidget *parent) + : QWidget(parent) + , m_session(session) + , m_model(new DependenciesModel(session, project, this)) +{ + m_ui.setupUi(this); + m_ui.dependenciesView->setModel(m_model); + m_ui.dependenciesView->setHeaderHidden(true); +} + +/// +/// DependenciesPanel +/// + +DependenciesPanel::DependenciesPanel(SessionManager *session, Project *project) + : PropertiesPanel() + , m_widget(new DependenciesWidget(session, project)) +{ +} + +DependenciesPanel::~DependenciesPanel() +{ + delete m_widget; +} + +QString DependenciesPanel::name() const +{ + return tr("Dependencies"); +} + +QWidget *DependenciesPanel::widget() +{ + return m_widget; +} + +/// +/// DependenciesPanelFactory +/// + +DependenciesPanelFactory::DependenciesPanelFactory(SessionManager *session) + : m_session(session) +{ +} + +bool DependenciesPanelFactory::supports(Project * /* project */) +{ + return true; +} + +PropertiesPanel *DependenciesPanelFactory::createPanel(Project *project) +{ + return new DependenciesPanel(m_session, project); +} + +} // namespace Internal +} // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/dependenciesdialog.h b/src/plugins/projectexplorer/dependenciespanel.h similarity index 73% rename from src/plugins/projectexplorer/dependenciesdialog.h rename to src/plugins/projectexplorer/dependenciespanel.h index 1dd8621a1ed..73c7755620c 100644 --- a/src/plugins/projectexplorer/dependenciesdialog.h +++ b/src/plugins/projectexplorer/dependenciespanel.h @@ -34,9 +34,10 @@ #ifndef DEPENDENCIESDIALOG_H #define DEPENDENCIESDIALOG_H -#include "ui_dependenciesdialog.h" +#include "iprojectproperties.h" +#include "ui_dependenciespanel.h" -#include +#include namespace ProjectExplorer { @@ -45,27 +46,32 @@ class SessionManager; namespace Internal { -class DependencyModel; +class DependenciesWidget; -// NBS kill DependenciesDialog? -class DependenciesDialog : public QDialog +class DependenciesPanelFactory : public IPanelFactory +{ +public: + DependenciesPanelFactory(SessionManager *session); + + bool supports(Project *project); + PropertiesPanel *createPanel(Project *project); + +private: + SessionManager *m_session; +}; + + +class DependenciesPanel : public PropertiesPanel { Q_OBJECT public: - typedef QList ProjectList; - - DependenciesDialog(QWidget *parent, SessionManager *sln); - virtual ~DependenciesDialog(); - -public slots: - virtual void accept(); - void reset(); + DependenciesPanel(SessionManager *session, Project *project); + ~DependenciesPanel(); + QString name() const; + QWidget *widget(); private: - Ui::DependenciesDialog m_ui; - SessionManager *m_sln; - ProjectList m_projectList; - DependencyModel *m_model; + DependenciesWidget *m_widget; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/dependenciespanel.ui b/src/plugins/projectexplorer/dependenciespanel.ui new file mode 100644 index 00000000000..83fc95b1a3b --- /dev/null +++ b/src/plugins/projectexplorer/dependenciespanel.ui @@ -0,0 +1,44 @@ + + + ProjectExplorer::Internal::DependenciesWidget + + + + 0 + 0 + 502 + 375 + + + + Project Dependencies + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Project Dependencies: + + + + + + + + diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.h b/src/plugins/projectexplorer/editorsettingspropertiespage.h index 3be9f229c4f..45da4817675 100644 --- a/src/plugins/projectexplorer/editorsettingspropertiespage.h +++ b/src/plugins/projectexplorer/editorsettingspropertiespage.h @@ -73,7 +73,6 @@ private slots: void currentEncodingChanged(int index); private: - Ui::EditorSettingsPropertiesPage m_ui; Project *m_project; QList m_codecs; diff --git a/src/plugins/projectexplorer/iprojectproperties.h b/src/plugins/projectexplorer/iprojectproperties.h index aab3b504331..aa823f49010 100644 --- a/src/plugins/projectexplorer/iprojectproperties.h +++ b/src/plugins/projectexplorer/iprojectproperties.h @@ -39,8 +39,6 @@ #include -#include - namespace ProjectExplorer { class PropertiesPanel; @@ -57,7 +55,7 @@ class PROJECTEXPLORER_EXPORT PropertiesPanel : public Core::IContext { Q_OBJECT public: - virtual void finish() {}; + virtual void finish() {} virtual QString name() const = 0; // IContext diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 3f377b52a11..961ad1a7708 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -46,7 +46,6 @@ #include using namespace ProjectExplorer; -using ExtensionSystem::PluginManager; Project::Project() : m_activeRunConfiguration(0), @@ -54,6 +53,14 @@ Project::Project() { } +Project::~Project() +{ + qDeleteAll(m_buildSteps); + qDeleteAll(m_cleanSteps); + qDeleteAll(m_buildConfigurationValues); + delete m_editorConfiguration; +} + void Project::insertBuildStep(int position, BuildStep *step) { m_buildSteps.insert(position, step); @@ -508,14 +515,3 @@ void Project::setDisplayNameFor(const QString &buildConfiguration, const QString } emit buildConfigurationDisplayNameChanged(buildConfiguration); } - - -Project::~Project() -{ - qDeleteAll(m_buildSteps); - qDeleteAll(m_cleanSteps); - qDeleteAll(m_buildConfigurationValues); - delete m_editorConfiguration; -} - - diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 2a30a0e20f3..9a8c7bf0cbe 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -31,7 +31,6 @@ ** ***************************************************************************/ - #ifndef PROJECT_H #define PROJECT_H @@ -50,7 +49,7 @@ #include namespace Core { - class IFile; +class IFile; } namespace ProjectExplorer { @@ -68,8 +67,7 @@ class PROJECTEXPLORER_EXPORT Project Q_OBJECT public: - // Roles to be implemented by all models that are exported - // via model() + // Roles to be implemented by all models that are exported via model() enum ModelRoles { // Absolute file path FilePathRole = QFileSystemModel::FilePathRole @@ -82,12 +80,11 @@ public: virtual Core::IFile *file() const = 0; virtual IProjectManager *projectManager() const = 0; - virtual QList dependencies() = 0; //NBS TODO remove virtual QList dependsOn() = 0; //NBS TODO implement dependsOn virtual bool isApplication() const = 0; - //Build/Clean Step functions + // Build/Clean Step functions QList buildSteps() const; void insertBuildStep(int position, BuildStep *step); void removeBuildStep(int position); @@ -97,7 +94,7 @@ public: void insertCleanStep(int position, BuildStep *step); void removeCleanStep(int position); - //Build configuration + // Build configuration void addBuildConfiguration(const QString &name); void removeBuildConfiguration(const QString &name); void copyBuildConfiguration(const QString &source, const QString &dest); @@ -133,8 +130,9 @@ public: virtual BuildStepConfigWidget *createConfigWidget() = 0; virtual QList subConfigWidgets(); - // This method is called for new build configurations - // You should probably set some default values in this method + /* This method is called for new build configurations. You should probably + * set some default values in this method. + */ virtual void newBuildConfiguration(const QString &buildConfiguration) = 0; virtual ProjectNode *rootProjectNode() const = 0; @@ -150,19 +148,22 @@ signals: void buildConfigurationDisplayNameChanged(const QString &buildConfiguraiton); protected: - // This method is called when the project .user file is saved. - // Simply call writer.saveValue() for each value you want to save - // Make sure to always call your base class implementation - // Note: All the values from the project/buildsteps and buildconfigurations - // are automatically stored. + /* This method is called when the project .user file is saved. Simply call + * writer.saveValue() for each value you want to save. Make sure to always + * call your base class implementation. + * + * Note: All the values from the project/buildsteps and buildconfigurations + * are automatically stored. + */ virtual void saveSettingsImpl(PersistentSettingsWriter &writer); - // This method is called when the project is opened - // You can retrieve all the values you saved in saveSettingsImpl() - // in this method. - // Note: This function is also called if there is no .user file - // You should probably add some default build and run settings to the project - // so that it can be build and run + /* This method is called when the project is opened. You can retrieve all + * the values you saved in saveSettingsImpl() in this method. + * + * Note: This function is also called if there is no .user file. You should + * probably add some default build and run settings to the project so that + * it can be build and run. + */ virtual void restoreSettingsImpl(PersistentSettingsReader &reader); private: @@ -181,4 +182,4 @@ private: } // namespace ProjectExplorer -#endif // PROJECTINTERFACE_H +#endif // PROJECT_H diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 5e41913db02..20e4e15fc8a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -34,12 +34,13 @@ #include "applicationrunconfiguration.h" #include "allprojectsfilter.h" #include "allprojectsfind.h" -#include "currentprojectfind.h" #include "buildmanager.h" #include "buildsettingspropertiespage.h" -#include "editorsettingspropertiespage.h" +#include "currentprojectfind.h" #include "currentprojectfilter.h" #include "customexecutablerunconfiguration.h" +#include "editorsettingspropertiespage.h" +#include "dependenciespanel.h" #include "foldernavigationwidget.h" #include "iprojectmanager.h" #include "metatypedeclarations.h" @@ -215,6 +216,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin addAutoReleasedObject(new BuildSettingsPanelFactory); addAutoReleasedObject(new RunSettingsPanelFactory); addAutoReleasedObject(new EditorSettingsPanelFactory); + addAutoReleasedObject(new DependenciesPanelFactory(m_session)); ProcessStepFactory *processStepFactory = new ProcessStepFactory; addAutoReleasedObject(processStepFactory); @@ -485,11 +487,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin mbuild->addAction(cmd, Constants::G_BUILD_SESSION); msessionContextMenu->addAction(cmd, Constants::G_SESSION_BUILD); - // dependencies action - m_dependenciesAction = new QAction(tr("Edit Dependencies..."), this); - cmd = am->registerAction(m_dependenciesAction, Constants::DEPENDENCIES, globalcontext); - mbuild->addAction(cmd, Constants::G_BUILD_SESSION); - // build action m_buildAction = new QAction(tr("Build Project"), this); cmd = am->registerAction(m_buildAction, Constants::BUILD, globalcontext); @@ -622,7 +619,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin connect(m_runActionContextMenu, SIGNAL(triggered()), this, SLOT(runProjectContextMenu())); connect(m_cancelBuildAction, SIGNAL(triggered()), this, SLOT(cancelBuild())); connect(m_debugAction, SIGNAL(triggered()), this, SLOT(debugProject())); - connect(m_dependenciesAction, SIGNAL(triggered()), this, SLOT(editDependencies())); connect(m_unloadAction, SIGNAL(triggered()), this, SLOT(unloadProject())); connect(m_clearSession, SIGNAL(triggered()), this, SLOT(clearSession())); connect(m_taskAction, SIGNAL(triggered()), this, SLOT(goToTaskWindow())); @@ -701,7 +697,7 @@ void ProjectExplorerPlugin::unloadProject() QList filesToSave; filesToSave << fi; - filesToSave << m_currentProject->dependencies(); + // FIXME: What we want here is to check whether we need to safe any of the pro/pri files in this project // check the number of modified files int readonlycount = 0; @@ -1203,13 +1199,13 @@ void ProjectExplorerPlugin::updateActions() m_rebuildSessionAction->setEnabled(hasProjects && !building); m_cleanSessionAction->setEnabled(hasProjects && !building); m_cancelBuildAction->setEnabled(building); - m_dependenciesAction->setEnabled(hasProjects && !building); updateRunAction(); updateTaskActions(); } + // NBS TODO check projectOrder() // what we want here is all the projects pro depends on QStringList ProjectExplorerPlugin::allFilesWithDependencies(Project *pro) @@ -1467,14 +1463,6 @@ void ProjectExplorerPlugin::cancelBuild() m_buildManager->cancel(); } -void ProjectExplorerPlugin::editDependencies() -{ - if (debug) - qDebug() << "ProjectExplorerPlugin::editDependencies"; - - m_session->editDependencies(); -} - void ProjectExplorerPlugin::addToRecentProjects(const QString &fileName) { if (debug) diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index ff58e7ba8c6..94e25159928 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -138,7 +138,6 @@ private slots: void cleanSession(); void cancelBuild(); void debugProject(); - void editDependencies(); void loadAction(); void unloadProject(); void clearSession(); @@ -228,7 +227,6 @@ private: QAction *m_runActionContextMenu; QAction *m_cancelBuildAction; QAction *m_debugAction; - QAction *m_dependenciesAction; QAction *m_taskAction; QAction *m_addNewFileAction; QAction *m_addExistingFilesAction; diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index bbb8a4c74d9..e345ff1c1ce 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -15,7 +15,7 @@ HEADERS += projectexplorer.h \ persistentsettings.h \ projectfilewizardextension.h \ session.h \ - dependenciesdialog.h \ + dependenciespanel.h \ allprojectsfilter.h \ buildparserinterface.h \ projectexplorerconstants.h \ @@ -62,7 +62,7 @@ SOURCES += projectexplorer.cpp \ persistentsettings.cpp \ projectfilewizardextension.cpp \ session.cpp \ - dependenciesdialog.cpp \ + dependenciespanel.cpp \ allprojectsfilter.cpp \ currentprojectfilter.cpp \ scriptwrappers.cpp \ @@ -94,7 +94,7 @@ SOURCES += projectexplorer.cpp \ nodesvisitor.cpp \ projectmodels.cpp \ currentprojectfind.cpp -FORMS += dependenciesdialog.ui \ +FORMS += dependenciespanel.ui \ buildsettingspropertiespage.ui \ processstep.ui \ editorsettingspropertiespage.ui \ diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index ef848ff178b..f5b83d162cd 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -33,7 +33,6 @@ #include "session.h" -#include "dependenciesdialog.h" #include "project.h" #include "projectexplorer.h" #include "projectexplorerconstants.h" @@ -59,6 +58,7 @@ #include #include +#include #include #include @@ -118,7 +118,6 @@ private: using namespace ProjectExplorer; using Internal::SessionFile; -using Internal::DependenciesDialog; void SessionFile::sessionLoadingProgress() @@ -452,7 +451,28 @@ bool SessionManager::recursiveDependencyCheck(const QString &newDep, const QStri return true; } -bool SessionManager::hasDependency(Project *project, Project *depProject) const +/* + * TODO: The dependency management exposes an interface based on projects, but + * is internally purely string based. This is suboptimal. Probably it would be + * nicer to map the filenames to projects on load and only map it back to + * filenames when saving. + */ + +QList SessionManager::dependencies(const Project *project) const +{ + const QString &proName = project->file()->fileName(); + const QStringList &proDeps = m_file->m_depMap.value(proName); + + QList projects; + foreach (const QString &dep, proDeps) { + if (Project *pro = projectForFile(dep)) + projects += pro; + } + + return projects; +} + +bool SessionManager::hasDependency(const Project *project, const Project *depProject) const { const QString &proName = project->file()->fileName(); const QString &depName = depProject->file()->fileName(); @@ -461,7 +481,7 @@ bool SessionManager::hasDependency(Project *project, Project *depProject) const return proDeps.contains(depName); } -bool SessionManager::canAddDependency(Project *project, Project *depProject) const +bool SessionManager::canAddDependency(const Project *project, const Project *depProject) const { const QString &newDep = project->file()->fileName(); const QString &checkDep = depProject->file()->fileName(); @@ -469,7 +489,7 @@ bool SessionManager::canAddDependency(Project *project, Project *depProject) con return recursiveDependencyCheck(newDep, checkDep); } -bool SessionManager::addDependency(Project *project, Project *depProject) +bool SessionManager::addDependency(const Project *project, const Project *depProject) { const QString &proName = project->file()->fileName(); const QString &depName = depProject->file()->fileName(); @@ -487,6 +507,20 @@ bool SessionManager::addDependency(Project *project, Project *depProject) return true; } +void SessionManager::removeDependency(const Project *project, const Project *depProject) +{ + const QString &proName = project->file()->fileName(); + const QString &depName = depProject->file()->fileName(); + + QStringList proDeps = m_file->m_depMap.value(proName); + proDeps.removeAll(depName); + if (proDeps.isEmpty()) { + m_file->m_depMap.remove(proName); + } else { + m_file->m_depMap[proName] = proDeps; + } +} + void SessionManager::setStartupProject(Project *startupProject) { if (debug) @@ -505,21 +539,6 @@ Project *SessionManager::startupProject() const return m_file->m_startupProject; } -void SessionManager::removeDependency(Project *project, - Project *depProject) -{ - const QString &proName = project->file()->fileName(); - const QString &depName = depProject->file()->fileName(); - - QStringList proDeps = m_file->m_depMap.value(proName); - proDeps.removeAll(depName); - if (proDeps.isEmpty()) { - m_file->m_depMap.remove(proName); - } else { - m_file->m_depMap[proName] = proDeps; - } -} - void SessionManager::addProject(Project *project) { addProjects(QList() << project); @@ -702,12 +721,6 @@ bool SessionManager::clear() return success; } -void SessionManager::editDependencies() -{ - DependenciesDialog dlg(0, this); - dlg.exec(); -} - const QList &SessionManager::projects() const { return m_file->m_projects; diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h index 49d15b7e8df..f8768ab468b 100644 --- a/src/plugins/projectexplorer/session.h +++ b/src/plugins/projectexplorer/session.h @@ -123,16 +123,13 @@ public: void removeProject(Project *project); void removeProjects(QList remove); - void editDependencies(); void setStartupProject(Project *startupProject); - // NBS think about dependency management again. - // Probably kill these here - bool canAddDependency(Project *project, Project *depProject) const; - bool hasDependency(Project *project, Project *depProject) const; - // adds the 'requiredProject' as a dependency to 'project' - bool addDependency(Project *project, Project *depProject); - void removeDependency(Project *project, Project *depProject); + QList dependencies(const Project *project) const; + bool hasDependency(const Project *project, const Project *depProject) const; + bool canAddDependency(const Project *project, const Project *depProject) const; + bool addDependency(const Project *project, const Project *depProject); + void removeDependency(const Project *project, const Project *depProject); Core::IFile *file() const; Project *startupProject() const; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 611d4930b40..cb5d99a642b 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -569,17 +569,6 @@ QStringList Qt4Project::files(FilesMode fileMode) const return files; } -QList Qt4Project::dependencies() -{ - QList result; - // TODO profile cache is no longer -// ProFileCache *cache = m_manager->proFileCache(); -// foreach (const QString &file, cache->dependencies(m_rootProjectNode)) { -// result << cache->fileInterface(file); -// } - return result; -} - QList Qt4Project::dependsOn() { // NBS implement dependsOn diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index 792ae2aed45..c589d2eb865 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -74,7 +74,12 @@ using ProjectExplorer::ResourceType; using ProjectExplorer::UnknownFileType; // Known file types of a Qt 4 project -static const char* qt4FileTypes[] = {"CppHeaderFiles", "CppSourceFiles", "Qt4FormFiles", "Qt4ResourceFiles" }; +static const char* qt4FileTypes[] = { + "CppHeaderFiles", + "CppSourceFiles", + "Qt4FormFiles", + "Qt4ResourceFiles" +}; Qt4Manager::Qt4Manager(Qt4ProjectManagerPlugin *plugin, Core::ICore *core) : m_mimeType(QLatin1String(Qt4ProjectManager::Constants::PROFILE_MIMETYPE)), From 2b7bd51127b7b6136ff6fd7adad77732a1054bf6 Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Fri, 16 Jan 2009 16:57:00 +0100 Subject: [PATCH 62/81] Fixes: Documentation - improving clarity --- doc/qtcreator.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 00a0d087f40..29b0e3ac5f6 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -1221,8 +1221,8 @@ \bold{Keyboard Shortcuts} - Qt Creator provides a lot of useful keyboard shortcuts. A complete list can - be found \l{Keyboard Shortcuts}{here}. + Qt Creator provides a lot of useful keyboard shortcuts. Some useful + shortcuts can be found \l{Keyboard Shortcuts}{here}. \bold{Running Qt Creator from the Command Line} From ceb37c06e27a72cbe6e6bf38d231b84488eefb67 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 16:57:00 +0100 Subject: [PATCH 63/81] fakevim: fix 'ce' --- src/plugins/fakevim/fakevimhandler.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index f5677c4964a..cc014734725 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -128,6 +128,12 @@ enum VisualMode VisualBlockMode, }; +enum MoveType +{ + MoveExclusive, + MoveInclusive, +}; + struct EditOperation { EditOperation() : m_position(-1), m_itemCount(0) {} @@ -264,6 +270,7 @@ public: int m_register; QString m_mvcount; QString m_opcount; + MoveType m_moveType; bool m_fakeEnd; @@ -343,6 +350,7 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent) m_plaintextedit = 0; m_visualMode = NoVisualMode; m_desiredColumn = 0; + m_moveType = MoveInclusive; m_config[ConfigStartOfLine] = ConfigOn; m_config[ConfigTabStop] = "8"; @@ -462,6 +470,8 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) m_tc.setPosition(startBlock.position()); moveToFirstNonBlankOnLine(); m_submode = NoSubMode; + } else if (m_moveType == MoveExclusive) { + moveLeft(); // correct } m_mvcount.clear(); m_opcount.clear(); @@ -610,13 +620,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, setAnchor(); moveDown(count()); moveLeft(); - QString text = recordRemoveSelectedText(); - m_registers[m_register] = text; + m_registers[m_register] = recordRemoveSelectedText(); m_submode = NoSubMode; m_mode = InsertMode; finishMovement("c"); } else if (m_submode == DeleteSubMode && key == 'd') { moveToStartOfLine(); + setAnchor(); moveDown(count()); m_registers[m_register] = recordRemoveSelectedText(); finishMovement("d"); @@ -790,6 +800,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, finishMovement(); } else if (key == 'e') { moveToWordBoundary(false, true); + m_moveType = MoveExclusive; finishMovement(); } else if (key == 'E') { moveToWordBoundary(true, true); @@ -956,6 +967,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveToWordBoundary(false, true); else moveToNextWord(false); + m_moveType = MoveExclusive; finishMovement("w"); } else if (key == 'W') { moveToNextWord(true); @@ -1526,10 +1538,8 @@ void FakeVimHandler::Private::moveToWordBoundary(bool simple, bool forward) int thisClass = charClass(c, simple); if (thisClass != lastClass && lastClass != 0) --repeat; - if (repeat == -1) { - forward ? moveLeft() : moveRight(); + if (repeat == -1) break; - } lastClass = thisClass; if (m_tc.position() == n) break; @@ -1833,7 +1843,7 @@ void FakeVimHandler::Private::recordInsertText(const QString &data) void FakeVimHandler::Private::recordOperation(const EditOperation &op) { - qDebug() << "OP: " << op; + //qDebug() << "OP: " << op; m_undoStack.push(op); m_redoStack.clear(); } From 62c2688ce6456e0bce553c53617a8502ba753a75 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 17:38:15 +0100 Subject: [PATCH 64/81] fakevim: fix 'Y' --- src/plugins/fakevim/fakevimhandler.cpp | 60 ++++++++++++++++---------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index cc014734725..0dc84183377 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -132,6 +132,7 @@ enum MoveType { MoveExclusive, MoveInclusive, + MoveLineWise, }; struct EditOperation @@ -219,19 +220,19 @@ private: typedef QTextCursor::MoveOperation MoveOperation; typedef QTextCursor::MoveMode MoveMode; void moveToEndOfDocument() - { m_tc.movePosition(QTextCursor::End, MoveAnchor); } + { m_tc.movePosition(QTextCursor::End, QTextCursor::MoveAnchor); } void moveToStartOfLine() - { m_tc.movePosition(QTextCursor::StartOfLine, MoveAnchor); } + { m_tc.movePosition(QTextCursor::StartOfLine, QTextCursor::MoveAnchor); } void moveToEndOfLine() - { m_tc.movePosition(QTextCursor::EndOfLine, MoveAnchor); } + { m_tc.movePosition(QTextCursor::EndOfLine, QTextCursor::MoveAnchor); } void moveUp(int n = 1) - { m_tc.movePosition(QTextCursor::Up, MoveAnchor, n); } + { m_tc.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor, n); } void moveDown(int n = 1) - { m_tc.movePosition(QTextCursor::Down, MoveAnchor, n); } + { m_tc.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, n); } void moveRight(int n = 1) - { m_tc.movePosition(QTextCursor::Right, MoveAnchor, n); } + { m_tc.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, n); } void moveLeft(int n = 1) - { m_tc.movePosition(QTextCursor::Left, MoveAnchor, n); } + { m_tc.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, n); } void setAnchor() { m_anchor = m_tc.position(); } QString selectedText() const; @@ -331,7 +332,7 @@ public: QHash m_config; // for restoring cursor position - int m_savedPosition; + int m_savedYankPosition; int m_desiredColumn; }; @@ -351,6 +352,8 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent) m_visualMode = NoVisualMode; m_desiredColumn = 0; m_moveType = MoveInclusive; + m_anchor = 0; + m_savedYankPosition = 0; m_config[ConfigStartOfLine] = ConfigOn; m_config[ConfigTabStop] = "8"; @@ -383,7 +386,7 @@ bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev) m_tc.setVisualNavigation(true); if (m_fakeEnd) - moveRight(MoveAnchor); + moveRight(); if ((ev->modifiers() & Qt::ControlModifier) != 0) { key += 256; @@ -398,7 +401,7 @@ bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev) m_fakeEnd = (atEol() && m_mode == CommandMode); if (m_fakeEnd) - moveLeft(MoveAnchor); + moveLeft(); EDITOR(setTextCursor(m_tc)); EDITOR(ensureCursorVisible()); @@ -409,7 +412,6 @@ bool FakeVimHandler::Private::handleKey(int key, int unmodified, const QString & { //qDebug() << "KEY: " << key << text << "POS: " << m_tc.position(); //qDebug() << "\nUNDO: " << m_undoStack << "\nREDO: " << m_redoStack; - m_savedPosition = m_tc.position(); if (m_mode == InsertMode) return handleInsertMode(key, unmodified, text); if (m_mode == CommandMode) @@ -452,10 +454,10 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) recordEndGroup(); m_submode = NoSubMode; if (atEol()) - moveLeft(MoveAnchor); + moveLeft(); } else if (m_submode == YankSubMode) { - m_registers[m_register] = m_tc.selectedText(); - m_tc.setPosition(m_savedPosition); + m_registers[m_register] = selectedText(); + m_tc.setPosition(m_savedYankPosition); m_submode = NoSubMode; } else if (m_submode == ReplaceSubMode) { m_submode = NoSubMode; @@ -632,9 +634,10 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, finishMovement("d"); } else if (m_submode == YankSubMode && key == 'y') { moveToStartOfLine(); + setAnchor(); moveDown(count()); - m_registers[m_register] = selectedText(); - finishMovement(); + m_moveType = MoveLineWise; + finishMovement("y"); } else if (m_submode == ReplaceSubMode) { if (atEol()) moveLeft(KeepAnchor); @@ -664,7 +667,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (m_subsubmode == BackTickSubSubMode || m_subsubmode == TickSubSubMode) { if (m_marks.contains(key)) { - m_tc.setPosition(m_marks[key], MoveAnchor); + m_tc.setPosition(m_marks[key]); if (m_subsubmode == TickSubSubMode) moveToFirstNonBlankOnLine(); finishMovement(); @@ -832,7 +835,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, enterInsertMode(); updateMiniBuffer(); if (atEol()) - moveLeft(MoveAnchor); + moveLeft(); } else if (key == 'I') { setAnchor(); enterInsertMode(); @@ -915,11 +918,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == 'p' || key == 'P') { recordBeginGroup(); QString text = m_registers[m_register]; - int n = text.count(QChar(ParagraphSeparator)); + int n = lineCount(text); + //qDebug() << "REGISTERS: " << m_registers << "MOVE: " << m_moveType; + //qDebug() << "LINES: " << n << text << m_register; if (n > 0) { moveToStartOfLine(); if (key == 'p') - moveDown(MoveAnchor); + moveDown(); recordInsertText(text); moveUp(n); } else { @@ -974,7 +979,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, finishMovement("W"); } else if (key == 'x') { // = "dl" if (atEol()) - moveLeft(MoveAnchor); + moveLeft(); recordBeginGroup(); m_submode = DeleteSubMode; moveRight(qMin(count(), rightDist())); @@ -987,10 +992,18 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } finishMovement(); } else if (key == 'y') { + m_savedYankPosition = m_tc.position(); if (atEol()) moveLeft(); recordBeginGroup(); + setAnchor(); m_submode = YankSubMode; + } else if (key == 'Y') { + moveToStartOfLine(); + setAnchor(); + moveDown(count()); + m_moveType = MoveLineWise; + finishMovement(); } else if (key == 'z') { recordBeginGroup(); m_submode = ZSubMode; @@ -1296,7 +1309,7 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) beginLine = 0; if (endLine == -1) endLine = linesInDocument(); - qDebug() << "LINES: " << beginLine << endLine; + //qDebug() << "LINES: " << beginLine << endLine; bool forced = cmd.startsWith("w!"); QString fileName = reWrite.cap(2); if (fileName.isEmpty()) @@ -1802,6 +1815,9 @@ void FakeVimHandler::Private::recordBeginGroup() { //qDebug() << "PUSH"; m_undoGroupStack.push(m_undoStack.size()); + EditOperation op; + op.m_position = m_tc.position(); + recordOperation(op); } void FakeVimHandler::Private::recordEndGroup() From fc83f2bdd22b09113a748766f739abbdae3ccfa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Fri, 16 Jan 2009 17:36:17 +0100 Subject: [PATCH 65/81] Doc: Added a section about project dependencies Also made sure the glossary terms aren't wrapped, since that didn't look very nice. For the documentation about the dependencies the screenshots should be updated again. --- doc/qtcreator.qdoc | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index c6c7286b832..91c433596bb 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -333,6 +333,14 @@ remove the build step. You will still be able to debug applications, but the contents of Qt and STL data types will not be displayed properly. + \section1 Dependencies + + If you have multiple projects loaded in your session, you can configure + dependencies between them. This will affect the build order of your + projects. To do this, go the the \bold{Dependencies} tab after selecting + the project for which you want to configure the dependencies, and then use + the checkboxes to check which of the other projects is a dependency. + */ /*! @@ -1269,25 +1277,41 @@ \o Meaning \row - \o System Qt \target glossary-system-qt + \o + \raw HTML + System Qt + \endraw + \target glossary-system-qt \o The version of Qt installed on your system. This is the Qt version for the \c qmake command found in your \c PATH. \row - \o Default Qt \target glossary-default-qt + \o + \raw HTML + Default Qt + \endraw + \target glossary-default-qt \o The version of Qt configured in \gui{Tools -> Options -> Qt 4 -> Default Qt Version}. This is the Qt version used by your new projects. It defaults to System Qt. \row - \o Project Qt \target glossary-project-qt + \o + \raw HTML + Project Qt + \endraw + \target glossary-project-qt \o The version of Qt configured in \gui{Build&Run -> Build Settings -> Build Configurations}. This is the Qt version that is actually used by a particular project. It defaults to Default Qt. \row - \o Shadow Build \target glossary-shadow-build + \o + \raw HTML + Shadow Build + \endraw + \target glossary-shadow-build \o Shadow building means building a project in a separate directory, the \e{build directory}. The build directory is different from the source directory. One of the benefits of From dc7a94fc83f19ecdaf565875d5335fb76a6a7950 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 17:44:24 +0100 Subject: [PATCH 66/81] fakevim: code de-obfuscation --- src/plugins/fakevim/fakevimhandler.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 0dc84183377..9c88c93ea62 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -144,7 +144,7 @@ struct EditOperation QString m_to; }; -static QDebug &operator<<(QDebug &ts, const EditOperation &op) +QDebug &operator<<(QDebug &ts, const EditOperation &op) { if (op.m_itemCount > 0) { ts << "\n EDIT BLOCK WITH " << op.m_itemCount << " ITEMS"; @@ -1410,7 +1410,7 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) void FakeVimHandler::Private::search(const QString &needle0, bool forward) { - showBlackMessage("?/"[m_lastSearchForward ^ forward] + needle0); + showBlackMessage((forward ? '/' : '?') + needle0); QTextCursor orig = m_tc; QTextDocument::FindFlags flags = QTextDocument::FindCaseSensitively; if (!forward) @@ -1423,7 +1423,7 @@ void FakeVimHandler::Private::search(const QString &needle0, bool forward) needle.replace("\\<", ""); // start of word needle.replace("\\>", ""); // end of word - qDebug() << "NEEDLE " << needle0 << needle << "FORWARD" << forward << flags; + //qDebug() << "NEEDLE " << needle0 << needle << "FORWARD" << forward << flags; if (forward) m_tc.movePosition(Right, MoveAnchor, 1); From d55d570d668b0a3497a2b87db0116aa56250e747 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jan 2009 17:51:44 +0100 Subject: [PATCH 67/81] fakevim: compile fix for windows --- src/plugins/fakevim/fakevimhandler.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 9c88c93ea62..32663da298e 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -219,20 +219,13 @@ private: // to reduce line noise typedef QTextCursor::MoveOperation MoveOperation; typedef QTextCursor::MoveMode MoveMode; - void moveToEndOfDocument() - { m_tc.movePosition(QTextCursor::End, QTextCursor::MoveAnchor); } - void moveToStartOfLine() - { m_tc.movePosition(QTextCursor::StartOfLine, QTextCursor::MoveAnchor); } - void moveToEndOfLine() - { m_tc.movePosition(QTextCursor::EndOfLine, QTextCursor::MoveAnchor); } - void moveUp(int n = 1) - { m_tc.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor, n); } - void moveDown(int n = 1) - { m_tc.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, n); } - void moveRight(int n = 1) - { m_tc.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, n); } - void moveLeft(int n = 1) - { m_tc.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, n); } + void moveToEndOfDocument() { m_tc.movePosition(EndOfDocument, MoveAnchor); } + void moveToStartOfLine() { m_tc.movePosition(StartOfLine, MoveAnchor); } + void moveToEndOfLine() { m_tc.movePosition(EndOfLine, MoveAnchor); } + void moveUp(int n = 1) { m_tc.movePosition(Up, MoveAnchor, n); } + void moveDown(int n = 1) { m_tc.movePosition(Down, MoveAnchor, n); } + void moveRight(int n = 1) { m_tc.movePosition(Right, MoveAnchor, n); } + void moveLeft(int n = 1) { m_tc.movePosition(Left, MoveAnchor, n); } void setAnchor() { m_anchor = m_tc.position(); } QString selectedText() const; From cc5ff1ec7414b00a0b216d040ddf69de11aa4303 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 19 Jan 2009 12:39:20 +0100 Subject: [PATCH 68/81] Remove #include from icore.h, a forward declaration is sufficient. --- src/plugins/bineditor/bineditorplugin.cpp | 3 +- src/plugins/bookmarks/bookmarkmanager.cpp | 3 +- src/plugins/bookmarks/bookmarksplugin.cpp | 7 +++-- .../cmakeprojectplugin.cpp | 3 +- src/plugins/coreplugin/basefilewizard.cpp | 1 + src/plugins/coreplugin/coreplugin.cpp | 4 ++- .../coreplugin/dialogs/settingsdialog.cpp | 2 ++ .../editormanager/editormanager.cpp | 2 ++ src/plugins/coreplugin/icore.h | 30 +++++++++---------- src/plugins/coreplugin/mainwindow.cpp | 15 +++++----- src/plugins/coreplugin/modemanager.cpp | 2 ++ src/plugins/coreplugin/navigationwidget.cpp | 10 ++++--- src/plugins/coreplugin/outputpane.cpp | 3 +- src/plugins/coreplugin/viewmanager.cpp | 9 +----- src/plugins/cpaster/cpasterplugin.cpp | 3 +- src/plugins/cppeditor/cppeditor.cpp | 7 ++--- src/plugins/cppeditor/cpphoverhandler.cpp | 6 +++- src/plugins/cppeditor/cppplugin.cpp | 3 +- src/plugins/cpptools/cppmodelmanager.cpp | 3 +- src/plugins/cpptools/cpptoolsplugin.cpp | 3 +- .../designer/cpp/formclasswizardpage.cpp | 3 +- src/plugins/designer/formeditorplugin.cpp | 3 +- src/plugins/designer/formeditorw.cpp | 1 + src/plugins/designer/workbenchintegration.cpp | 1 + src/plugins/fakevim/fakevimplugin.cpp | 1 + src/plugins/find/findplugin.cpp | 4 ++- src/plugins/find/findtoolbar.cpp | 17 ++++++----- src/plugins/git/gitcommand.cpp | 1 + src/plugins/git/gitplugin.cpp | 3 +- src/plugins/perforce/perforceplugin.cpp | 1 + .../projectexplorer/projectexplorer.cpp | 9 ++---- src/plugins/projectexplorer/projectwindow.cpp | 4 +-- src/plugins/projectexplorer/taskwindow.cpp | 1 + .../qt4projectmanager/gdbmacrosbuildstep.cpp | 1 + .../qt4projectmanager/profileeditor.cpp | 7 +++-- .../profileeditorfactory.cpp | 1 + src/plugins/qt4projectmanager/qt4nodes.cpp | 1 + src/plugins/qt4projectmanager/qt4project.cpp | 6 ++-- .../qt4projectmanager/qt4runconfiguration.cpp | 1 + .../qt4projectmanager/qtversionmanager.cpp | 1 + .../qt4projectmanager/wizards/qtwizard.cpp | 1 + .../qtscripteditor/qtscripteditorplugin.cpp | 3 +- src/plugins/quickopen/quickopenplugin.cpp | 3 +- .../resourceeditor/resourceeditorplugin.cpp | 3 +- src/plugins/subversion/subversionplugin.cpp | 11 +++---- src/plugins/texteditor/basetexteditor.cpp | 1 + src/plugins/texteditor/completionsupport.cpp | 5 ++-- src/plugins/texteditor/texteditorplugin.cpp | 5 ++-- src/plugins/texteditor/texteditorsettings.cpp | 3 +- .../vcsbase/basevcssubmiteditorfactory.cpp | 1 + src/plugins/vcsbase/vcsbaseeditor.cpp | 24 +++++++-------- src/plugins/vcsbase/vcsbasesubmiteditor.cpp | 16 +++++----- 52 files changed, 150 insertions(+), 112 deletions(-) diff --git a/src/plugins/bineditor/bineditorplugin.cpp b/src/plugins/bineditor/bineditorplugin.cpp index 883459ba7d7..97b9d703764 100644 --- a/src/plugins/bineditor/bineditorplugin.cpp +++ b/src/plugins/bineditor/bineditorplugin.cpp @@ -35,12 +35,12 @@ #include "bineditor.h" #include "bineditorconstants.h" +#include #include #include #include #include #include -#include #include #include @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index 86b5d889dbd..dbe9246d977 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -37,9 +37,10 @@ #include "bookmarksplugin.h" #include "bookmarks_global.h" -#include #include +#include #include +#include #include #include #include diff --git a/src/plugins/bookmarks/bookmarksplugin.cpp b/src/plugins/bookmarks/bookmarksplugin.cpp index 55b28ec82a3..961b11bd714 100644 --- a/src/plugins/bookmarks/bookmarksplugin.cpp +++ b/src/plugins/bookmarks/bookmarksplugin.cpp @@ -35,16 +35,17 @@ #include "bookmarkmanager.h" #include "bookmarks_global.h" -#include -#include #include #include #include #include #include #include +#include +#include +#include -#include +#include #include #include diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index e1b2b1279b6..b83c4c2e30f 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -39,8 +39,9 @@ #include #include +#include -#include +#include #include diff --git a/src/plugins/coreplugin/basefilewizard.cpp b/src/plugins/coreplugin/basefilewizard.cpp index aad82af6677..b6b31ea888c 100644 --- a/src/plugins/coreplugin/basefilewizard.cpp +++ b/src/plugins/coreplugin/basefilewizard.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index 4b18570037a..b947b54827c 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -39,7 +39,9 @@ #include "modemanager.h" #include "fileiconprovider.h" -#include +#include + +#include #if !defined(QT_NO_WEBKIT) #include #include diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index 669ea09bf92..9a43b4221c3 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -34,6 +34,8 @@ #include "settingsdialog.h" #include "coreimpl.h" +#include + #include #include diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 8a135183579..75cdc7c14f8 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -53,6 +53,8 @@ #include #include +#include + #include #include diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 7244782b495..22df3bd9ee3 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -35,36 +35,36 @@ #define ICORE_H #include "core_global.h" -#include #include -#include QT_BEGIN_NAMESPACE -class QSettings; -class QStatusBar; -class QFocusEvent; class QMainWindow; class QPrinter; +class QSettings; +template class QList; QT_END_NAMESPACE +namespace ExtensionSystem { + +class PluginManager; + +} // namespace ExtensionSystem + namespace Core { -// forward declarations class ActionManager; -class IFile; -class FileManager; -class MessageManager; -class IEditor; -class UniqueIDManager; class EditorManager; +class FileManager; +class IContext; +class IWizard; +class MessageManager; +class MimeDatabase; +class ModeManager; class ProgressManager; class ScriptManager; +class UniqueIDManager; class VariableManager; -class IContext; class VCSManager; -class ModeManager; -class IWizard; -class MimeDatabase; class CORE_EXPORT ICore : public QObject { diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 9dc93c0133d..5a535b532d3 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -70,22 +70,23 @@ #include "basefilewizard.h" #include +#include -#include #include +#include #include #include -#include +#include -#include -#include #include -#include #include -#include +#include +#include #include -#include +#include #include +#include +#include /* #ifdef Q_OS_UNIX diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 579881a215d..46262e4ee55 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -46,6 +46,8 @@ #include #include +#include + #include #include diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 41b5116ba54..5c7e03e8930 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -39,14 +39,16 @@ #include #include #include +#include + +#include +#include #include #include -#include -#include #include -#include -#include +#include +#include Q_DECLARE_METATYPE(Core::INavigationWidgetFactory *) diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp index 36fc9de9cf8..dc27d837d28 100644 --- a/src/plugins/coreplugin/outputpane.cpp +++ b/src/plugins/coreplugin/outputpane.cpp @@ -42,12 +42,13 @@ #include #include +#include + #include #include #include #include #include -#include #include #include #include diff --git a/src/plugins/coreplugin/viewmanager.cpp b/src/plugins/coreplugin/viewmanager.cpp index a7a2bf9a45e..052e2dee522 100644 --- a/src/plugins/coreplugin/viewmanager.cpp +++ b/src/plugins/coreplugin/viewmanager.cpp @@ -41,19 +41,12 @@ #include #include #include +#include #include -#include -#include -#include -#include #include #include -#include -#include #include -#include -#include using namespace Core; using namespace Core::Internal; diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp index 1ab4daa0a4a..e4682ee61b1 100644 --- a/src/plugins/cpaster/cpasterplugin.cpp +++ b/src/plugins/cpaster/cpasterplugin.cpp @@ -45,10 +45,11 @@ #include #include #include +#include #include #include -#include +#include #include #include #include diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index c8e9a946b90..b41a70c218d 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -58,6 +58,7 @@ #include #include #include +#include #include #include #include @@ -65,21 +66,17 @@ #include #include -#include -#include #include #include #include #include -#include +#include #include #include #include #include #include #include -#include -#include using namespace CPlusPlus; using namespace CppEditor::Internal; diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index febf86f6510..cf1337c0cbd 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -55,11 +56,14 @@ #include #include +#include +#include +#include +#include #include #include #include #include -#include using namespace CppEditor::Internal; using namespace CPlusPlus; diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index 077bea90274..105ca5adbcd 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -63,7 +64,7 @@ static const char *sourceSuffixKeyC = "CppEditor/SourceSuffix"; using namespace CppEditor::Internal; -///////////////////////////////// CppPluginEditorFactory ////////////////////////////////// +//////////////////////////// CppPluginEditorFactory ///////////////////////////// CppPluginEditorFactory::CppPluginEditorFactory(CppPlugin *owner) : m_kind(QLatin1String(CppEditor::Constants::CPPEDITOR_KIND)), diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 49e7cbfc7db..177b40f03e4 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -51,6 +51,7 @@ #include #include +#include #include #include @@ -69,8 +70,6 @@ #include #include -//#include - using namespace CppTools; using namespace CppTools::Internal; using namespace CPlusPlus; diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp index 5ec67bf4a35..cd45cb356c4 100644 --- a/src/plugins/cpptools/cpptoolsplugin.cpp +++ b/src/plugins/cpptools/cpptoolsplugin.cpp @@ -48,8 +48,9 @@ #include #include #include +#include -#include +#include #include #include #include diff --git a/src/plugins/designer/cpp/formclasswizardpage.cpp b/src/plugins/designer/cpp/formclasswizardpage.cpp index 6cc0ced4215..6c7c72c05cf 100644 --- a/src/plugins/designer/cpp/formclasswizardpage.cpp +++ b/src/plugins/designer/cpp/formclasswizardpage.cpp @@ -37,13 +37,14 @@ #include #include +#include #include #include #include -#include #include +#include static const char *formClassWizardPageGroupC = "FormClassWizardPage"; static const char *translationKeyC = "RetranslationSupport"; diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index bc9f6a23337..051f3e567d6 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -50,8 +50,9 @@ #include #include #include +#include -#include +#include #include #ifdef CPP_ENABLED diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index e302eabb3c1..dc5cddb5e60 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include diff --git a/src/plugins/designer/workbenchintegration.cpp b/src/plugins/designer/workbenchintegration.cpp index 42043c3cd20..3db3512a716 100644 --- a/src/plugins/designer/workbenchintegration.cpp +++ b/src/plugins/designer/workbenchintegration.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include #include diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 1fed16416b6..4083af7d50b 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include diff --git a/src/plugins/find/findplugin.cpp b/src/plugins/find/findplugin.cpp index b3c417debd3..1494d89a4b3 100644 --- a/src/plugins/find/findplugin.cpp +++ b/src/plugins/find/findplugin.cpp @@ -43,9 +43,11 @@ #include #include +#include + #include -#include +#include #include Q_DECLARE_METATYPE(Find::IFindFilter*) diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp index 323fdbac58c..88d5fed220d 100644 --- a/src/plugins/find/findtoolbar.cpp +++ b/src/plugins/find/findtoolbar.cpp @@ -41,16 +41,19 @@ #include #include +#include + +#include #include -#include -#include -#include -#include -#include + #include -#include #include -#include +#include +#include +#include +#include +#include +#include Q_DECLARE_METATYPE(QStringList) Q_DECLARE_METATYPE(Find::IFindFilter*) diff --git a/src/plugins/git/gitcommand.cpp b/src/plugins/git/gitcommand.cpp index 703e42a8668..ce81be961d6 100644 --- a/src/plugins/git/gitcommand.cpp +++ b/src/plugins/git/gitcommand.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index e71ccfea45e..263474312e0 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include @@ -56,11 +57,11 @@ #include #include -#include #include #include #include #include +#include #include #include diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index 1b9c7e094d1..73008ca8225 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 20e4e15fc8a..c11d2c958ee 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -78,25 +78,20 @@ #include #include #include +#include #include #include -#include +#include #include #include #include #include #include -#include #include -#include -#include -#include -#include #include #include -#include Q_DECLARE_METATYPE(QSharedPointer); Q_DECLARE_METATYPE(Core::IEditorFactory *); diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index e6e2455cced..7015c70f775 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include @@ -60,8 +61,7 @@ namespace { bool debug = false; } -ProjectWindow::ProjectWindow(Core::ICore *core, - QWidget *parent) : +ProjectWindow::ProjectWindow(Core::ICore *core, QWidget *parent) : QWidget(parent), m_core(core) { diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index 5421b9bbe63..50f946966a1 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include diff --git a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp index fcbff3f5dcc..b299e70d3f1 100644 --- a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp +++ b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp @@ -38,6 +38,7 @@ #include "qt4project.h" #include "qt4projectmanagerconstants.h" +#include #include using namespace Qt4ProjectManager; diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp index e173bff2316..da1dc0ac2ed 100644 --- a/src/plugins/qt4projectmanager/profileeditor.cpp +++ b/src/plugins/qt4projectmanager/profileeditor.cpp @@ -42,15 +42,16 @@ #include #include +#include #include #include #include #include -#include -#include -#include #include +#include +#include +#include using namespace ExtensionSystem; using namespace Core; diff --git a/src/plugins/qt4projectmanager/profileeditorfactory.cpp b/src/plugins/qt4projectmanager/profileeditorfactory.cpp index dfe8c33232f..11704c2fb1b 100644 --- a/src/plugins/qt4projectmanager/profileeditorfactory.cpp +++ b/src/plugins/qt4projectmanager/profileeditorfactory.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index c7bf1e58035..2cc23b9ea8a 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -50,6 +50,7 @@ #include #include +#include #include diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index cb5d99a642b..0e64fc2be1e 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -51,18 +51,18 @@ #include #include #include +#include #include #include #include -#include -#include #include +#include +#include using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; using namespace ProjectExplorer; -using Core::VariableManager; enum { debug = 0 }; diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 64961844996..3953e6d9ba4 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 2becf546550..41b2366581d 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -38,6 +38,7 @@ #include "cesdkhandler.h" #include +#include #include #include diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp index 15f334cf202..d67cd1ab46e 100644 --- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp @@ -35,6 +35,7 @@ #include "qt4project.h" #include "qt4projectmanagerconstants.h" +#include #include #include diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp index 1bf230155b6..fec9d760b0d 100644 --- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -50,7 +51,7 @@ #include #include -#include +#include #include #include diff --git a/src/plugins/quickopen/quickopenplugin.cpp b/src/plugins/quickopen/quickopenplugin.cpp index fe599b215a0..80b1ca131c0 100644 --- a/src/plugins/quickopen/quickopenplugin.cpp +++ b/src/plugins/quickopen/quickopenplugin.cpp @@ -40,7 +40,7 @@ #include "directoryfilter.h" #include "settingspage.h" -#include +#include #include #include #include @@ -50,6 +50,7 @@ #include #include #include +#include #include using namespace QuickOpen; diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index 851cf8634c1..3775564cc80 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -44,10 +44,11 @@ #include #include #include +#include #include -#include +#include #include using namespace ResourceEditor::Internal; diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 811e4651415..0e3ad1c32a7 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -55,20 +55,21 @@ #include #include #include +#include #include #include -#include #include -#include +#include #include #include -#include +#include +#include #include +#include +#include #include #include -#include -#include using namespace Subversion::Internal; diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index f3d1ab07566..11c129fb10a 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include diff --git a/src/plugins/texteditor/completionsupport.cpp b/src/plugins/texteditor/completionsupport.cpp index 5c863e3afe2..43665b064e9 100644 --- a/src/plugins/texteditor/completionsupport.cpp +++ b/src/plugins/texteditor/completionsupport.cpp @@ -36,11 +36,12 @@ #include "icompletioncollector.h" #include +#include #include #include -#include -#include +#include +#include #include diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index d76bd716708..9122d791a75 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -49,12 +49,13 @@ #include #include #include +#include #include #include -#include -#include +#include #include +#include using namespace TextEditor; using namespace TextEditor::Internal; diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp index 2637b5da545..6718f20ad6c 100644 --- a/src/plugins/texteditor/texteditorsettings.cpp +++ b/src/plugins/texteditor/texteditorsettings.cpp @@ -41,9 +41,10 @@ #include "texteditorconstants.h" #include "texteditorplugin.h" +#include #include -#include +#include using namespace TextEditor; using namespace TextEditor::Constants; diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp index b662abbf409..6427a1e9fab 100644 --- a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp +++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp @@ -36,6 +36,7 @@ #include #include +#include namespace VCSBase { diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 6951d39eea5..4458765b36e 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -37,29 +37,29 @@ #include "vcsbasetextdocument.h" #include "vcsbaseconstants.h" +#include #include #include -#include +#include +#include +#include +#include #include #include -#include -#include -#include - -#include -#include -#include -#include #include +#include +#include +#include +#include #include +#include +#include #include #include -#include #include -#include #include -#include +#include namespace VCSBase { diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index a47a66ab064..9bec38c5753 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -38,21 +38,21 @@ #include #include #include - +#include #include #include #include #include -#include -#include -#include -#include -#include -#include -#include #include +#include +#include +#include +#include +#include +#include +#include enum { debug = 0 }; enum { wantToolBar = 0 }; From 8d1edf7252160846a45926475d6a3a76af14e88f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Mon, 19 Jan 2009 11:03:23 +0100 Subject: [PATCH 69/81] Have the editor list combo adjust size to contents Now the box will grow larger when files with long filenames are opened. --- .../coreplugin/editormanager/stackededitorgroup.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp index edceea70002..fee513e2e7b 100644 --- a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp +++ b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp @@ -79,6 +79,7 @@ StackedEditorGroup::StackedEditorGroup(QWidget *parent) : tl->setMargin(0); { m_editorList->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + m_editorList->setSizeAdjustPolicy(QComboBox::AdjustToContents); m_editorList->setMinimumContentsLength(20); m_proxyModel.setSourceModel(model()); m_proxyModel.sort(0); @@ -296,9 +297,9 @@ void StackedEditorGroup::setCurrentEditor(IEditor *editor) void StackedEditorGroup::checkEditorStatus() { - IEditor *editor = qobject_cast(sender()); - if (editor == currentEditor()) - updateEditorStatus(editor); + IEditor *editor = qobject_cast(sender()); + if (editor == currentEditor()) + updateEditorStatus(editor); } void StackedEditorGroup::updateEditorStatus(IEditor *editor) From 9916e4aebd7f52e09c74490ca10b8b86caab2f6a Mon Sep 17 00:00:00 2001 From: Kavindra Palaraja Date: Mon, 19 Jan 2009 13:21:22 +0100 Subject: [PATCH 70/81] Fixes: Documentation - adding in some screenshots that Eike took --- doc/qtcreator-session-manager.png | Bin 0 -> 43904 bytes doc/qtcreator-session-menu.png | Bin 0 -> 48425 bytes doc/qtcreator.qdoc | 14 ++++++-------- 3 files changed, 6 insertions(+), 8 deletions(-) create mode 100644 doc/qtcreator-session-manager.png create mode 100644 doc/qtcreator-session-menu.png diff --git a/doc/qtcreator-session-manager.png b/doc/qtcreator-session-manager.png new file mode 100644 index 0000000000000000000000000000000000000000..66f387ac5dab659b0160db05834958112db37ede GIT binary patch literal 43904 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