diff options
author | Eike Ziller <[email protected]> | 2013-05-27 17:21:01 +0200 |
---|---|---|
committer | Eike Ziller <[email protected]> | 2013-05-27 17:21:01 +0200 |
commit | d08ad0038df2366a0e9b6561e526dd846be9c5a1 (patch) | |
tree | ae641fbc2dc9056d2603bfe9b350516310943620 /src/plugins | |
parent | 1c34b266fb86a591eb9d7ef406780073e0d6a647 (diff) | |
parent | 5b648d8b6eb0fe9f2690a587116d71c71c9b4d96 (diff) |
Merge remote-tracking branch 'origin/2.8'
Diffstat (limited to 'src/plugins')
156 files changed, 575 insertions, 969 deletions
diff --git a/src/plugins/QtcPlugin.qbs b/src/plugins/QtcPlugin.qbs index e6ff4f33738..518df2a3a76 100644 --- a/src/plugins/QtcPlugin.qbs +++ b/src/plugins/QtcPlugin.qbs @@ -50,7 +50,7 @@ Product { qbs.installDir: project.ide_plugin_path + "/" + provider } - ProductModule { + Export { Depends { name: "ExtensionSystem" } } } diff --git a/src/plugins/analyzerbase/analyzerbase.qbs b/src/plugins/analyzerbase/analyzerbase.qbs index b3b062258e8..7a42610f1ba 100644 --- a/src/plugins/analyzerbase/analyzerbase.qbs +++ b/src/plugins/analyzerbase/analyzerbase.qbs @@ -44,7 +44,7 @@ QtcPlugin { "images/analyzer_start_small.png", ] - ProductModule { + Export { Depends { name: "CPlusPlus" } } } diff --git a/src/plugins/android/androidmanifesteditor.cpp b/src/plugins/android/androidmanifesteditor.cpp index 576310f08fa..4b5b340bb19 100644 --- a/src/plugins/android/androidmanifesteditor.cpp +++ b/src/plugins/android/androidmanifesteditor.cpp @@ -73,17 +73,6 @@ Core::Id AndroidManifestEditor::id() const return Constants::ANDROID_MANIFEST_EDITOR_ID; } -bool AndroidManifestEditor::duplicateSupported() const -{ - return false; -} - -Core::IEditor *AndroidManifestEditor::duplicate(QWidget *parent) -{ - Q_UNUSED(parent); - return 0; -} - bool AndroidManifestEditor::isTemporary() const { return false; diff --git a/src/plugins/android/androidmanifesteditor.h b/src/plugins/android/androidmanifesteditor.h index c8a38dc99ab..b6073d9005b 100644 --- a/src/plugins/android/androidmanifesteditor.h +++ b/src/plugins/android/androidmanifesteditor.h @@ -46,15 +46,13 @@ class AndroidManifestEditorWidget; class AndroidManifestEditor : public TextEditor::BaseTextEditor { Q_OBJECT + public: explicit AndroidManifestEditor(AndroidManifestEditorWidget *editorWidget); Core::Id id() const; - - bool duplicateSupported() const; - Core::IEditor *duplicate(QWidget *parent); - bool isTemporary() const; + private slots: void changeEditorPage(QAction *action); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp b/src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp index 50e0a5a1a18..4e72214ab25 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp @@ -47,26 +47,14 @@ namespace Internal { Project *AutotoolsManager::openProject(const QString &fileName, QString *errorString) { - QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath(); - - if (canonicalFilePath.isEmpty()) { + if (!QFileInfo(fileName).isFile()) { if (errorString) - *errorString = tr("Failed opening project '%1': Project file does not exist") - .arg(QDir::toNativeSeparators(fileName)); + *errorString = tr("Failed opening project '%1': Project is not a file") + .arg(fileName); return 0; } - // Check whether the project is already open or not. - ProjectExplorerPlugin *projectExplorer = ProjectExplorerPlugin::instance(); - foreach (Project *pi, projectExplorer->session()->projects()) { - if (canonicalFilePath == pi->document()->fileName()) { - *errorString = tr("Failed opening project '%1': Project already open") - .arg(QDir::toNativeSeparators(canonicalFilePath)); - return 0; - } - } - - return new AutotoolsProject(this, canonicalFilePath); + return new AutotoolsProject(this, fileName); } QString AutotoolsManager::mimeType() const diff --git a/src/plugins/bineditor/bineditorplugin.cpp b/src/plugins/bineditor/bineditorplugin.cpp index e2834b4ba9d..f6e401dae7e 100644 --- a/src/plugins/bineditor/bineditorplugin.cpp +++ b/src/plugins/bineditor/bineditorplugin.cpp @@ -364,12 +364,6 @@ public: QString displayName() const { return m_displayName; } void setDisplayName(const QString &title) { m_displayName = title; emit changed(); } - bool duplicateSupported() const { return false; } - IEditor *duplicate(QWidget * /* parent */) { return 0; } - - QByteArray saveState() const { return QByteArray(); } // not supported - bool restoreState(const QByteArray & /* state */) { return false; } // not supported - QWidget *toolBar() { return m_toolBar; } bool isTemporary() const { return m_editor->isMemoryView(); } diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index d7aae9ba32d..f91450d541b 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -121,7 +121,7 @@ CMakeEditorWidget::CMakeEditorWidget(QWidget *parent, CMakeEditorFactory *factor baseTextDocument()->setSyntaxHighlighter(new CMakeHighlighter); m_commentDefinition.clearCommentStyles(); - m_commentDefinition.setSingleLine(QLatin1String("#")); + m_commentDefinition.singleLine = QLatin1Char('#'); ah->setupActions(this); } diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index cadf683c6dc..63f13f62f92 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -126,8 +126,13 @@ void CMakeManager::runCMake(ProjectExplorer::Project *project) ProjectExplorer::Project *CMakeManager::openProject(const QString &fileName, QString *errorString) { - Q_UNUSED(errorString) - // TODO check whether this project is already opened + if (!QFileInfo(fileName).isFile()) { + if (errorString) + *errorString = tr("Failed opening project '%1': Project is not a file") + .arg(fileName); + return 0; + } + return new CMakeProject(this, fileName); } diff --git a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp index 9562e73bdfd..1d7da8f5b45 100644 --- a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp +++ b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp @@ -173,12 +173,12 @@ ActionContainer::OnAllDisabledBehavior ActionContainerPrivate::onAllDisabledBeha return m_onAllDisabledBehavior; } -void ActionContainerPrivate::appendGroup(const Id &groupId) +void ActionContainerPrivate::appendGroup(Id groupId) { m_groups.append(Group(groupId)); } -void ActionContainerPrivate::insertGroup(const Id &before, const Id &groupId) +void ActionContainerPrivate::insertGroup(Id before, Id groupId) { QList<Group>::iterator it = m_groups.begin(); while (it != m_groups.end()) { @@ -190,7 +190,7 @@ void ActionContainerPrivate::insertGroup(const Id &before, const Id &groupId) } } -QList<Group>::const_iterator ActionContainerPrivate::findGroup(const Id &groupId) const +QList<Group>::const_iterator ActionContainerPrivate::findGroup(Id groupId) const { QList<Group>::const_iterator it = m_groups.constBegin(); while (it != m_groups.constEnd()) { @@ -202,7 +202,7 @@ QList<Group>::const_iterator ActionContainerPrivate::findGroup(const Id &groupId } -QAction *ActionContainerPrivate::insertLocation(const Id &groupId) const +QAction *ActionContainerPrivate::insertLocation(Id groupId) const { QList<Group>::const_iterator it = findGroup(groupId); QTC_ASSERT(it != m_groups.constEnd(), return 0); @@ -230,7 +230,7 @@ QAction *ActionContainerPrivate::insertLocation(QList<Group>::const_iterator gro return 0; } -void ActionContainerPrivate::addAction(Command *command, const Id &groupId) +void ActionContainerPrivate::addAction(Command *command, Id groupId) { if (!canAddAction(command)) return; @@ -248,7 +248,7 @@ void ActionContainerPrivate::addAction(Command *command, const Id &groupId) scheduleUpdate(); } -void ActionContainerPrivate::addMenu(ActionContainer *menu, const Id &groupId) +void ActionContainerPrivate::addMenu(ActionContainer *menu, Id groupId) { ActionContainerPrivate *containerPrivate = static_cast<ActionContainerPrivate *>(menu); if (!containerPrivate->canBeAddedToMenu()) @@ -266,7 +266,7 @@ void ActionContainerPrivate::addMenu(ActionContainer *menu, const Id &groupId) scheduleUpdate(); } -void ActionContainerPrivate::addMenu(ActionContainer *before, ActionContainer *menu, const Id &groupId) +void ActionContainerPrivate::addMenu(ActionContainer *before, ActionContainer *menu, Id groupId) { ActionContainerPrivate *containerPrivate = static_cast<ActionContainerPrivate *>(menu); if (!containerPrivate->canBeAddedToMenu()) @@ -293,7 +293,7 @@ void ActionContainerPrivate::addMenu(ActionContainer *before, ActionContainer *m /*! \a context \a group \a outSeparator * \internal */ -Command *ActionContainerPrivate::addSeparator(const Context &context, const Id &group, QAction **outSeparator) +Command *ActionContainerPrivate::addSeparator(const Context &context, Id group, QAction **outSeparator) { static int separatorIdCount = 0; QAction *separator = new QAction(this); diff --git a/src/plugins/coreplugin/actionmanager/actioncontainer.h b/src/plugins/coreplugin/actionmanager/actioncontainer.h index 1f45dea7bcb..5115521354b 100644 --- a/src/plugins/coreplugin/actionmanager/actioncontainer.h +++ b/src/plugins/coreplugin/actionmanager/actioncontainer.h @@ -63,13 +63,13 @@ public: virtual QMenu *menu() const = 0; virtual QMenuBar *menuBar() const = 0; - virtual QAction *insertLocation(const Id &group) const = 0; - virtual void appendGroup(const Id &group) = 0; - virtual void insertGroup(const Id &before, const Id &group) = 0; - virtual void addAction(Command *action, const Id &group = Id()) = 0; - virtual void addMenu(ActionContainer *menu, const Id &group = Id()) = 0; - virtual void addMenu(ActionContainer *before, ActionContainer *menu, const Id &group = Id()) = 0; - virtual Command *addSeparator(const Context &context, const Id &group = Id(), QAction **outSeparator = 0) = 0; + virtual QAction *insertLocation(Id group) const = 0; + virtual void appendGroup(Id group) = 0; + virtual void insertGroup(Id before, Id group) = 0; + virtual void addAction(Command *action, Id group = Id()) = 0; + virtual void addMenu(ActionContainer *menu, Id group = Id()) = 0; + virtual void addMenu(ActionContainer *before, ActionContainer *menu, Id group = Id()) = 0; + virtual Command *addSeparator(const Context &context, Id group = Id(), QAction **outSeparator = 0) = 0; // This clears this menu and submenus from all actions and submenus. // It does not destroy the submenus and commands, just removes them from their parents. diff --git a/src/plugins/coreplugin/actionmanager/actioncontainer_p.h b/src/plugins/coreplugin/actionmanager/actioncontainer_p.h index f085dffd032..f0f360e7570 100644 --- a/src/plugins/coreplugin/actionmanager/actioncontainer_p.h +++ b/src/plugins/coreplugin/actionmanager/actioncontainer_p.h @@ -56,13 +56,13 @@ public: void setOnAllDisabledBehavior(OnAllDisabledBehavior behavior); ActionContainer::OnAllDisabledBehavior onAllDisabledBehavior() const; - QAction *insertLocation(const Id &groupId) const; - void appendGroup(const Id &id); - void insertGroup(const Id &before, const Id &groupId); - void addAction(Command *action, const Id &group = Id()); - void addMenu(ActionContainer *menu, const Id &group = Id()); - void addMenu(ActionContainer *before, ActionContainer *menu, const Id &group = Id()); - Command *addSeparator(const Context &context, const Id &group = Id(), QAction **outSeparator = 0); + QAction *insertLocation(Id groupId) const; + void appendGroup(Id id); + void insertGroup(Id before, Id groupId); + void addAction(Command *action, Id group = Id()); + void addMenu(ActionContainer *menu, Id group = Id()); + void addMenu(ActionContainer *before, ActionContainer *menu, Id group = Id()); + Command *addSeparator(const Context &context, Id group = Id(), QAction **outSeparator = 0); virtual void clear(); Id id() const; @@ -92,7 +92,7 @@ private slots: void itemDestroyed(); private: - QList<Group>::const_iterator findGroup(const Id &groupId) const; + QList<Group>::const_iterator findGroup(Id groupId) const; QAction *insertLocation(QList<Group>::const_iterator group) const; OnAllDisabledBehavior m_onAllDisabledBehavior; diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 2a71ba62972..b9d11a1f562 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -177,7 +177,7 @@ ActionManager *ActionManager::instance() Add your menu to some other menu or a menu bar via the ActionManager::actionContainer and ActionContainer::addMenu methods. */ -ActionContainer *ActionManager::createMenu(const Id &id) +ActionContainer *ActionManager::createMenu(Id id) { const ActionManagerPrivate::IdContainerMap::const_iterator it = m_instance->d->m_idContainerMap.constFind(id); if (it != m_instance->d->m_idContainerMap.constEnd()) @@ -202,7 +202,7 @@ ActionContainer *ActionManager::createMenu(const Id &id) or to add menus to the menu bar. The ActionManager owns the returned ActionContainer. */ -ActionContainer *ActionManager::createMenuBar(const Id &id) +ActionContainer *ActionManager::createMenuBar(Id id) { const ActionManagerPrivate::IdContainerMap::const_iterator it = m_instance->d->m_idContainerMap.constFind(id); if (it != m_instance->d->m_idContainerMap.constEnd()) @@ -231,7 +231,7 @@ ActionContainer *ActionManager::createMenuBar(const Id &id) A scriptable action can be called from a script without the need for the user to interact with it. */ -Command *ActionManager::registerAction(QAction *action, const Id &id, const Context &context, bool scriptable) +Command *ActionManager::registerAction(QAction *action, Id id, const Context &context, bool scriptable) { Action *a = m_instance->d->overridableAction(id); if (a) { @@ -253,7 +253,7 @@ Command *ActionManager::registerAction(QAction *action, const Id &id, const Cont A scriptable shortcut can be called from a script without the need for the user to interact with it. */ -Command *ActionManager::registerShortcut(QShortcut *shortcut, const Id &id, const Context &context, bool scriptable) +Command *ActionManager::registerShortcut(QShortcut *shortcut, Id id, const Context &context, bool scriptable) { QTC_CHECK(!context.isEmpty()); Shortcut *sc = 0; @@ -297,7 +297,7 @@ Command *ActionManager::registerShortcut(QShortcut *shortcut, const Id &id, cons \sa ActionManager::registerAction() */ -Command *ActionManager::command(const Id &id) +Command *ActionManager::command(Id id) { const ActionManagerPrivate::IdCmdMap::const_iterator it = m_instance->d->m_idCmdMap.constFind(id); if (it == m_instance->d->m_idCmdMap.constEnd()) { @@ -316,7 +316,7 @@ Command *ActionManager::command(const Id &id) \sa ActionManager::createMenu() \sa ActionManager::createMenuBar() */ -ActionContainer *ActionManager::actionContainer(const Id &id) +ActionContainer *ActionManager::actionContainer(Id id) { const ActionManagerPrivate::IdContainerMap::const_iterator it = m_instance->d->m_idContainerMap.constFind(id); if (it == m_instance->d->m_idContainerMap.constEnd()) { @@ -348,7 +348,7 @@ QList<Command *> ActionManager::commands() filters. If the user removes such an action, it also has to be unregistered from the action manager, to make it disappear from shortcut settings etc. */ -void ActionManager::unregisterAction(QAction *action, const Id &id) +void ActionManager::unregisterAction(QAction *action, Id id) { Action *a = 0; CommandPrivate *c = m_instance->d->m_idCmdMap.value(id, 0); @@ -379,7 +379,7 @@ void ActionManager::unregisterAction(QAction *action, const Id &id) a corresponding shortcut also has to be unregistered from the action manager, to make it disappear from shortcut settings etc. */ -void ActionManager::unregisterShortcut(const Core::Id &id) +void ActionManager::unregisterShortcut(Id id) { Shortcut *sc = 0; CommandPrivate *c = m_instance->d->m_idCmdMap.value(id, 0); @@ -525,7 +525,7 @@ void ActionManagerPrivate::showShortcutPopup(const QString &shortcut) m_presentationLabelTimer.start(); } -Action *ActionManagerPrivate::overridableAction(const Id &id) +Action *ActionManagerPrivate::overridableAction(Id id) { Action *a = 0; if (CommandPrivate *c = m_idCmdMap.value(id, 0)) { diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.h b/src/plugins/coreplugin/actionmanager/actionmanager.h index 7a0a4c8fafb..e459d0061b4 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.h +++ b/src/plugins/coreplugin/actionmanager/actionmanager.h @@ -58,19 +58,19 @@ class CORE_EXPORT ActionManager : public QObject public: static ActionManager *instance(); - static ActionContainer *createMenu(const Id &id); - static ActionContainer *createMenuBar(const Id &id); + static ActionContainer *createMenu(Id id); + static ActionContainer *createMenuBar(Id id); - static Command *registerAction(QAction *action, const Id &id, const Context &context, bool scriptable = false); - static Command *registerShortcut(QShortcut *shortcut, const Id &id, const Context &context, bool scriptable = false); + static Command *registerAction(QAction *action, Id id, const Context &context, bool scriptable = false); + static Command *registerShortcut(QShortcut *shortcut, Id id, const Context &context, bool scriptable = false); - static Command *command(const Id &id); - static ActionContainer *actionContainer(const Id &id); + static Command *command(Id id); + static ActionContainer *actionContainer(Id id); static QList<Command *> commands(); - static void unregisterAction(QAction *action, const Id &id); - static void unregisterShortcut(const Id &id); + static void unregisterAction(QAction *action, Id id); + static void unregisterShortcut(Id id); static void setPresentationModeEnabled(bool enabled); static bool isPresentationModeEnabled(); diff --git a/src/plugins/coreplugin/actionmanager/actionmanager_p.h b/src/plugins/coreplugin/actionmanager/actionmanager_p.h index 62f783c8d60..3a0b3320120 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager_p.h +++ b/src/plugins/coreplugin/actionmanager/actionmanager_p.h @@ -72,7 +72,7 @@ public: void showShortcutPopup(const QString &shortcut); bool hasContext(const Context &context) const; - Action *overridableAction(const Id &id); + Action *overridableAction(Id id); public slots: void containerDestroyed(); diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs index fc98dfaa4c1..d48f09016e4 100644 --- a/src/plugins/coreplugin/coreplugin.qbs +++ b/src/plugins/coreplugin/coreplugin.qbs @@ -254,7 +254,7 @@ QtcPlugin { ] } - ProductModule { + Export { Depends { name: "cpp" } Depends { name: "Aggregation" } Depends { name: "Utils" } diff --git a/src/plugins/coreplugin/editormanager/ieditor.h b/src/plugins/coreplugin/editormanager/ieditor.h index ad915eb02e5..d4203131362 100644 --- a/src/plugins/coreplugin/editormanager/ieditor.h +++ b/src/plugins/coreplugin/editormanager/ieditor.h @@ -42,8 +42,8 @@ class IDocument; class CORE_EXPORT IEditor : public IContext { Q_OBJECT -public: +public: IEditor(QObject *parent = 0) : IContext(parent) {} virtual ~IEditor() {} @@ -54,11 +54,11 @@ public: virtual QString displayName() const = 0; virtual void setDisplayName(const QString &title) = 0; - virtual bool duplicateSupported() const = 0; - virtual IEditor *duplicate(QWidget *parent) = 0; + virtual bool duplicateSupported() const { return false; } + virtual IEditor *duplicate(QWidget * /*parent*/) { return 0; } - virtual QByteArray saveState() const = 0; - virtual bool restoreState(const QByteArray &state) = 0; + virtual QByteArray saveState() const { return QByteArray(); } + virtual bool restoreState(const QByteArray &/*state*/) { return true; } virtual int currentLine() const { return 0; } virtual int currentColumn() const { return 0; } diff --git a/src/plugins/coreplugin/mimetypemagicdialog.cpp b/src/plugins/coreplugin/mimetypemagicdialog.cpp index 9444b9c7440..5ba467e0aff 100644 --- a/src/plugins/coreplugin/mimetypemagicdialog.cpp +++ b/src/plugins/coreplugin/mimetypemagicdialog.cpp @@ -45,18 +45,6 @@ MimeTypeMagicDialog::MimeTypeMagicDialog(QWidget *parent) : connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(validateAccept())); } -void MimeTypeMagicDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui.retranslateUi(this); - break; - default: - break; - } -} - void MimeTypeMagicDialog::applyRecommended(bool checked) { if (checked) { diff --git a/src/plugins/coreplugin/mimetypemagicdialog.h b/src/plugins/coreplugin/mimetypemagicdialog.h index 24673bf16e8..b2cced80461 100644 --- a/src/plugins/coreplugin/mimetypemagicdialog.h +++ b/src/plugins/coreplugin/mimetypemagicdialog.h @@ -62,9 +62,6 @@ public: void setMagicData(const MagicData &data); MagicData magicData() const; -protected: - void changeEvent(QEvent *e); - private slots: void applyRecommended(bool checked); void validateAccept(); diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp index 330737ca0ca..37c47799e1e 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp +++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp @@ -51,6 +51,10 @@ #include <QStyle> #include <QStyleOption> #include <QTimer> +#include <QVariant> + +static const char kSettingsGroup[] = "Progress"; +static const char kDetailsPinned[] = "DetailsPinned"; using namespace Core; using namespace Core::Internal; @@ -283,8 +287,18 @@ ProgressManagerPrivate::~ProgressManagerPrivate() cleanup(); } +void ProgressManagerPrivate::readSettings() +{ + QSettings *settings = ICore::settings(); + settings->beginGroup(QLatin1String(kSettingsGroup)); + m_progressViewPinned = settings->value(QLatin1String(kDetailsPinned), true).toBool(); + settings->endGroup(); +} + void ProgressManagerPrivate::init() { + readSettings(); + m_statusBarWidgetContainer = new Core::StatusBarWidget; m_statusBarWidget = new QWidget; QHBoxLayout *layout = new QHBoxLayout(m_statusBarWidget); @@ -658,6 +672,11 @@ void ProgressManagerPrivate::progressDetailsToggled(bool checked) { m_progressViewPinned = checked; updateVisibility(); + + QSettings *settings = ICore::settings(); + settings->beginGroup(QLatin1String(kSettingsGroup)); + settings->setValue(QLatin1String(kDetailsPinned), m_progressViewPinned); + settings->endGroup(); } ToggleButton::ToggleButton(QWidget *parent) diff --git a/src/plugins/coreplugin/progressmanager/progressmanager_p.h b/src/plugins/coreplugin/progressmanager/progressmanager_p.h index 44b572d0f28..dabd525a792 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager_p.h +++ b/src/plugins/coreplugin/progressmanager/progressmanager_p.h @@ -87,6 +87,7 @@ private slots: void slotRemoveTask(); private: + void readSettings(); void initInternal(); void stopFadeOfSummaryProgress(); diff --git a/src/plugins/coreplugin/removefiledialog.cpp b/src/plugins/coreplugin/removefiledialog.cpp index bf72c6e1207..c643ad5be37 100644 --- a/src/plugins/coreplugin/removefiledialog.cpp +++ b/src/plugins/coreplugin/removefiledialog.cpp @@ -59,15 +59,3 @@ bool RemoveFileDialog::isDeleteFileChecked() const { return m_ui->deleteFileCheckBox->isChecked(); } - -void RemoveFileDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - m_ui->retranslateUi(this); - break; - default: - break; - } -} diff --git a/src/plugins/coreplugin/removefiledialog.h b/src/plugins/coreplugin/removefiledialog.h index 9f5c6edb6ef..ebe5c86bec2 100644 --- a/src/plugins/coreplugin/removefiledialog.h +++ b/src/plugins/coreplugin/removefiledialog.h @@ -51,9 +51,6 @@ public: void setDeleteFileVisible(bool visible); bool isDeleteFileChecked() const; -protected: - virtual void changeEvent(QEvent *e); - private: Ui::RemoveFileDialog *m_ui; }; diff --git a/src/plugins/cpptools/cpptools.qbs b/src/plugins/cpptools/cpptools.qbs index 059a3dfc7e2..6f7114b3703 100644 --- a/src/plugins/cpptools/cpptools.qbs +++ b/src/plugins/cpptools/cpptools.qbs @@ -123,7 +123,7 @@ QtcPlugin { cpp.defines: outer.concat(['SRCDIR="' + FileInfo.path(filePath) + '"']) } - ProductModule { + Export { Depends { name: "CPlusPlus" } } } diff --git a/src/plugins/debugger/debugger.qbs b/src/plugins/debugger/debugger.qbs index 77cedce2d96..688805e2141 100644 --- a/src/plugins/debugger/debugger.qbs +++ b/src/plugins/debugger/debugger.qbs @@ -303,7 +303,7 @@ QtcPlugin { ] } - ProductModule { + Export { Depends { name: "cpp" } Depends { name: "QtcSsh" } cpp.includePaths: ["."] diff --git a/src/plugins/debugger/debuggercore.h b/src/plugins/debugger/debuggercore.h index ec5bd3c4f39..18787baa8bb 100644 --- a/src/plugins/debugger/debuggercore.h +++ b/src/plugins/debugger/debuggercore.h @@ -123,6 +123,7 @@ public: virtual Utils::SavedAction *action(int code) const = 0; virtual bool boolSetting(int code) const = 0; virtual QString stringSetting(int code) const = 0; + virtual QStringList stringListSetting(int code) const = 0; virtual void setThreads(const QStringList &list, int index) = 0; virtual DebuggerToolTipManager *toolTipManager() const = 0; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 36079eb1ee1..f90354e2b78 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -604,7 +604,7 @@ private: const char m_wordWidth; }; -bool fillParameters(DebuggerStartParameters *sp, const Kit *kit /* = 0 */, QString *errorMessage /* = 0 */) +bool fillParameters(DebuggerStartParameters *sp, const Kit *kit, QString *errorMessage /* = 0 */) { if (!kit) { // This code can only be reached when starting via the command line @@ -667,7 +667,9 @@ bool fillParameters(DebuggerStartParameters *sp, const Kit *kit /* = 0 */, QStri IDevice::ConstPtr device = DeviceKitInformation::device(kit); if (device) { sp->connParams = device->sshParameters(); - sp->remoteChannel = sp->connParams.host + QLatin1Char(':') + QString::number(sp->connParams.port); + // Could have been set from command line. + if (sp->remoteChannel.isEmpty()) + sp->remoteChannel = sp->connParams.host + QLatin1Char(':') + QString::number(sp->connParams.port); } return true; } @@ -1191,6 +1193,7 @@ public slots: SavedAction *action(int code) const; bool boolSetting(int code) const; QString stringSetting(int code) const; + QStringList stringListSetting(int code) const; void showModuleSymbols(const QString &moduleName, const Symbols &symbols); void showModuleSections(const QString &moduleName, const Sections §ions); @@ -3307,6 +3310,11 @@ QString DebuggerPluginPrivate::stringSetting(int code) const return m_debuggerSettings->item(code)->value().toString(); } +QStringList DebuggerPluginPrivate::stringListSetting(int code) const +{ + return m_debuggerSettings->item(code)->value().toStringList(); +} + void DebuggerPluginPrivate::showModuleSymbols(const QString &moduleName, const Symbols &symbols) { diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 9f18893ff5d..1e45604c9ab 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -444,8 +444,8 @@ static bool fixupEngineTypes(DebuggerStartParameters &sp, RunConfiguration *rc, if (const Target *target = rc->target()) if (!fillParameters(&sp, target->kit(), errorMessage)) return false; - const bool useCppDebugger = aspect->useCppDebugger(); - const bool useQmlDebugger = aspect->useQmlDebugger(); + const bool useCppDebugger = aspect->useCppDebugger() && (sp.languages & CppLanguage); + const bool useQmlDebugger = aspect->useQmlDebugger() && (sp.languages & QmlLanguage); if (useQmlDebugger) { if (useCppDebugger) { sp.masterEngineType = QmlCppEngineType; diff --git a/src/plugins/debugger/debuggerstartparameters.h b/src/plugins/debugger/debuggerstartparameters.h index f492dbd3962..0e5f818f763 100644 --- a/src/plugins/debugger/debuggerstartparameters.h +++ b/src/plugins/debugger/debuggerstartparameters.h @@ -141,7 +141,7 @@ public: namespace Internal { -bool fillParameters(DebuggerStartParameters *sp, const ProjectExplorer::Kit *kit = 0, QString *errorMessage = 0); +bool fillParameters(DebuggerStartParameters *sp, const ProjectExplorer::Kit *kit, QString *errorMessage = 0); } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 2b8e213d1ce..b9ce9a083ab 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1592,7 +1592,7 @@ void GdbEngine::handleStop1(const GdbMi &data) if (!m_systemDumpersLoaded) { m_systemDumpersLoaded = true; - if (debuggerCore()->boolSetting(LoadGdbDumpers)) + if (m_gdbVersion >= 70400 && debuggerCore()->boolSetting(LoadGdbDumpers)) postCommand("importPlainDumpers"); } diff --git a/src/plugins/debugger/images/qml/app-on-top.png b/src/plugins/debugger/images/qml/app-on-top.png Binary files differindex ddec5400c69..e89026d1943 100644 --- a/src/plugins/debugger/images/qml/app-on-top.png +++ b/src/plugins/debugger/images/qml/app-on-top.png diff --git a/src/plugins/debugger/images/qml/apply-on-save.png b/src/plugins/debugger/images/qml/apply-on-save.png Binary files differindex 666382c06dd..19e75ab66d0 100644 --- a/src/plugins/debugger/images/qml/apply-on-save.png +++ b/src/plugins/debugger/images/qml/apply-on-save.png diff --git a/src/plugins/debugger/images/qml/select.png b/src/plugins/debugger/images/qml/select.png Binary files differindex 672285582b5..b120f79024d 100644 --- a/src/plugins/debugger/images/qml/select.png +++ b/src/plugins/debugger/images/qml/select.png diff --git a/src/plugins/debugger/images/qml/zoom.png b/src/plugins/debugger/images/qml/zoom.png Binary files differindex ebae877310c..7f54ec11911 100644 --- a/src/plugins/debugger/images/qml/zoom.png +++ b/src/plugins/debugger/images/qml/zoom.png diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 5786fda6d13..119382b8781 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -664,7 +664,67 @@ void LldbEngine::updateWatchData(const WatchData &data, const WatchUpdateFlags & Q_UNUSED(data); Q_UNUSED(flags); WatchHandler *handler = watchHandler(); - runCommand(Command("updateData").arg("expanded", handler->expansionRequests())); + + Command cmd("updateData"); + cmd.arg("expanded", handler->expansionRequests()); + cmd.arg("typeformats", handler->typeFormatRequests()); + cmd.arg("formats", handler->individualFormatRequests()); + + QList<QByteArray> watcherData; +// const QString fileName = stackHandler()->currentFrame().file; +// if (!fileName.isEmpty()) { +// const QString function = stackHandler()->currentFrame().function; +// typedef DebuggerToolTipManager::ExpressionInamePair ExpressionInamePair; +// typedef DebuggerToolTipManager::ExpressionInamePairs ExpressionInamePairs; + +// // Re-create tooltip items that are not filters on existing local variables in +// // the tooltip model. +// ExpressionInamePairs toolTips = DebuggerToolTipManager::instance() +// ->treeWidgetExpressions(fileName, objectName(), function); + +// const QString currentExpression = tooltipExpression(); +// if (!currentExpression.isEmpty()) { +// int currentIndex = -1; +// for (int i = 0; i < toolTips.size(); ++i) { +// if (toolTips.at(i).first == currentExpression) { +// currentIndex = i; +// break; +// } +// } +// if (currentIndex < 0) +// toolTips.push_back(ExpressionInamePair(currentExpression, tooltipIName(currentExpression))); +// } + +// foreach (const ExpressionInamePair &p, toolTips) { +// if (p.second.startsWith("tooltip")) { +// QHash<QByteArray, QByteArray> hash; +// hash["exp"] = p.first.toLatin1(); +// hash["id"] = p.second; +// watcherData.append(Command::toData(hash)); +// } +// } +// } + + QHashIterator<QByteArray, int> it(handler->watcherNames()); + while (it.hasNext()) { + it.next(); + QHash<QByteArray, QByteArray> hash; + hash["exp"] = '\'' + it.key() + '\''; + hash["id"] = "'watch." + QByteArray::number(it.value()) + '\''; + watcherData.append(Command::toData(hash)); + } + cmd.args.append("'watchers':" + Command::toData(watcherData) + ','); + + const static bool alwaysVerbose = !qgetenv("QTC_DEBUGGER_PYTHON_VERBOSE").isEmpty(); + cmd.arg("passexeptions", alwaysVerbose); + cmd.arg("fancy", debuggerCore()->boolSetting(UseDebuggingHelpers)); + cmd.arg("autoderef", debuggerCore()->boolSetting(AutoDerefPointers)); + cmd.arg("dyntype", debuggerCore()->boolSetting(UseDynamicType)); + //cmd.arg("partial", ??) + //cmd.arg("tooltipOnly", ??) + //cmd.arg("resultvarname", m_resultVarName); + + runCommand(cmd); } void LldbEngine::handleLldbError(QProcess::ProcessError error) @@ -1047,6 +1107,30 @@ const LldbEngine::Command &LldbEngine::Command::argHelper(const char *name, cons return *this; } +QByteArray LldbEngine::Command::toData(const QList<QByteArray> &value) +{ + QByteArray res; + foreach (const QByteArray &item, value) { + if (!res.isEmpty()) + res.append(','); + res += item; + } + return '[' + res + ']'; +} + +QByteArray LldbEngine::Command::toData(const QHash<QByteArray, QByteArray> &value) +{ + QByteArray res; + QHashIterator<QByteArray, QByteArray> it(value); + while (it.hasNext()) { + it.next(); + if (!res.isEmpty()) + res.append(','); + res += '\'' + it.key() + "':" + it.value(); + } + return '{' + res + '}'; +} + const LldbEngine::Command &LldbEngine::Command::arg(const char *name, int value) const { return argHelper(name, QByteArray::number(value)); diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h index 71ff6681790..818ee91ca64 100644 --- a/src/plugins/debugger/lldb/lldbengine.h +++ b/src/plugins/debugger/lldb/lldbengine.h @@ -78,6 +78,9 @@ private: const Command &beginGroup(const char *name = 0) const; void endGroup() const; + static QByteArray toData(const QList<QByteArray> &value); + static QByteArray toData(const QHash<QByteArray, QByteArray> &value); + QByteArray function; mutable QByteArray args; private: diff --git a/src/plugins/debugger/loadcoredialog.cpp b/src/plugins/debugger/loadcoredialog.cpp index 283d490b957..8d4a4879da5 100644 --- a/src/plugins/debugger/loadcoredialog.cpp +++ b/src/plugins/debugger/loadcoredialog.cpp @@ -289,6 +289,7 @@ int AttachCoreDialog::exec() { connect(d->selectRemoteCoreButton, SIGNAL(clicked()), SLOT(selectRemoteCoreFile())); connect(d->remoteCoreFileName, SIGNAL(textChanged(QString)), SLOT(changed())); + connect(d->localExecFileName, SIGNAL(changed(QString)), SLOT(changed())); connect(d->localCoreFileName, SIGNAL(changed(QString)), SLOT(changed())); connect(d->forceLocalCheckBox, SIGNAL(stateChanged(int)), SLOT(changed())); connect(d->kitChooser, SIGNAL(activated(int)), SLOT(changed())); diff --git a/src/plugins/debugger/procinterrupt.cpp b/src/plugins/debugger/procinterrupt.cpp index e93b3260146..0ad32373af7 100644 --- a/src/plugins/debugger/procinterrupt.cpp +++ b/src/plugins/debugger/procinterrupt.cpp @@ -103,6 +103,7 @@ bool Debugger::Internal::interruptProcess(int pID, int engineType, QString *erro // GDB: not supported const bool useDebugBreakApi= true; Q_UNUSED(engineExecutableIs64Bit) + Q_UNUSED(engineType) #else // Qt-Creator compiled 32 bit: diff --git a/src/plugins/designer/formwindoweditor.cpp b/src/plugins/designer/formwindoweditor.cpp index 53e25edb0d5..6ed794e19cb 100644 --- a/src/plugins/designer/formwindoweditor.cpp +++ b/src/plugins/designer/formwindoweditor.cpp @@ -215,16 +215,6 @@ void FormWindowEditor::setDisplayName(const QString &title) emit changed(); } -bool FormWindowEditor::duplicateSupported() const -{ - return false; -} - -Core::IEditor *FormWindowEditor::duplicate(QWidget *) -{ - return 0; -} - QByteArray FormWindowEditor::saveState() const { return d->m_textEditor.saveState(); diff --git a/src/plugins/designer/formwindoweditor.h b/src/plugins/designer/formwindoweditor.h index ffac23ea5fd..05f8f786fa7 100644 --- a/src/plugins/designer/formwindoweditor.h +++ b/src/plugins/designer/formwindoweditor.h @@ -74,9 +74,6 @@ public: virtual QString displayName() const; virtual void setDisplayName(const QString &title); - virtual bool duplicateSupported() const; - virtual IEditor *duplicate(QWidget *parent); - virtual QByteArray saveState() const; virtual bool restoreState(const QByteArray &state); diff --git a/src/plugins/diffeditor/diffeditoreditable.cpp b/src/plugins/diffeditor/diffeditoreditable.cpp index c1018ae14bb..50f1f0f2e76 100644 --- a/src/plugins/diffeditor/diffeditoreditable.cpp +++ b/src/plugins/diffeditor/diffeditoreditable.cpp @@ -98,17 +98,6 @@ void DiffEditorEditable::setDisplayName(const QString &title) emit changed(); } -bool DiffEditorEditable::duplicateSupported() const -{ - return false; -} - -Core::IEditor *DiffEditorEditable::duplicate(QWidget *parent) -{ - Q_UNUSED(parent) - return 0; -} - Core::Id DiffEditorEditable::id() const { return Constants::DIFF_EDITOR_ID; @@ -236,15 +225,4 @@ void DiffEditorEditable::activateEntry(int index) updateEntryToolTip(); } -QByteArray DiffEditorEditable::saveState() const -{ - return QByteArray(); -} - -bool DiffEditorEditable::restoreState(const QByteArray &state) -{ - Q_UNUSED(state) - return true; -} - } // namespace DiffEditor diff --git a/src/plugins/diffeditor/diffeditoreditable.h b/src/plugins/diffeditor/diffeditoreditable.h index 859a543e86a..8a0aff264e2 100644 --- a/src/plugins/diffeditor/diffeditoreditable.h +++ b/src/plugins/diffeditor/diffeditoreditable.h @@ -65,16 +65,12 @@ public: Core::IDocument *document(); QString displayName() const; void setDisplayName(const QString &title); - bool duplicateSupported() const; - Core::IEditor *duplicate(QWidget *parent); Core::Id id() const; bool isTemporary() const { return true; } DiffEditorWidget *editorWidget() const { return m_editorWidget; } QWidget *toolBar(); - QByteArray saveState() const; - bool restoreState(const QByteArray &state); public slots: void activateEntry(int index); diff --git a/src/plugins/diffeditor/diffeditorwidget.cpp b/src/plugins/diffeditor/diffeditorwidget.cpp index 7d9bba20014..c2579fdec8e 100644 --- a/src/plugins/diffeditor/diffeditorwidget.cpp +++ b/src/plugins/diffeditor/diffeditorwidget.cpp @@ -29,7 +29,6 @@ #include "diffeditorwidget.h" #include <QPlainTextEdit> -#include <QSplitter> #include <QVBoxLayout> #include <QPlainTextDocumentLayout> #include <QTextBlock> @@ -45,6 +44,8 @@ #include <texteditor/basetextdocument.h> #include <texteditor/texteditorsettings.h> +#include <coreplugin/minisplitter.h> + static const int BASE_LEVEL = 0; static const int FILE_LEVEL = 1; static const int CHUNK_LEVEL = 2; @@ -100,11 +101,9 @@ class DiffViewEditorEditable : public BaseTextEditor Q_OBJECT public: DiffViewEditorEditable(BaseTextEditorWidget *editorWidget) : BaseTextEditor(editorWidget) {} - virtual Core::Id id() const { return "DiffViewEditor"; } - virtual bool duplicateSupported() const { return false; } - virtual IEditor *duplicate(QWidget *parent) { Q_UNUSED(parent) return 0; } - virtual bool isTemporary() const { return false; } + Core::Id id() const { return "DiffViewEditor"; } + bool isTemporary() const { return false; } }; @@ -529,6 +528,8 @@ DiffEditorWidget::DiffEditorWidget(QWidget *parent) m_leftEditor->setReadOnly(true); m_leftEditor->setHighlightCurrentLine(false); m_leftEditor->setWordWrapMode(QTextOption::NoWrap); + connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)), + m_leftEditor, SLOT(setFontSettings(TextEditor::FontSettings))); m_leftEditor->setFontSettings(settings->fontSettings()); m_leftEditor->setCodeStyle(settings->codeStyle()); @@ -537,6 +538,8 @@ DiffEditorWidget::DiffEditorWidget(QWidget *parent) m_rightEditor->setReadOnly(true); m_rightEditor->setHighlightCurrentLine(false); m_rightEditor->setWordWrapMode(QTextOption::NoWrap); + connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)), + m_rightEditor, SLOT(setFontSettings(TextEditor::FontSettings))); m_rightEditor->setFontSettings(settings->fontSettings()); m_rightEditor->setCodeStyle(settings->codeStyle()); @@ -570,7 +573,7 @@ DiffEditorWidget::DiffEditorWidget(QWidget *parent) connect(m_rightEditor->document()->documentLayout(), SIGNAL(documentSizeChanged(QSizeF)), this, SLOT(rightDocumentSizeChanged())); - m_splitter = new QSplitter(this); + m_splitter = new Core::MiniSplitter(this); m_splitter->addWidget(m_leftEditor); m_splitter->addWidget(m_rightEditor); QVBoxLayout *l = new QVBoxLayout(this); diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.cpp b/src/plugins/genericprojectmanager/genericprojectmanager.cpp index 329eb9f682d..2ae768efa4f 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.cpp +++ b/src/plugins/genericprojectmanager/genericprojectmanager.cpp @@ -51,21 +51,14 @@ QString Manager::mimeType() const ProjectExplorer::Project *Manager::openProject(const QString &fileName, QString *errorString) { - if (!QFileInfo(fileName).isFile()) + if (!QFileInfo(fileName).isFile()) { + if (errorString) + *errorString = tr("Failed opening project '%1': Project is not a file") + .arg(fileName); return 0; - - ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance(); - foreach (ProjectExplorer::Project *pi, projectExplorer->session()->projects()) { - if (fileName == pi->document()->fileName()) { - if (errorString) - *errorString = tr("Failed opening project '%1': Project already open") - .arg(QDir::toNativeSeparators(fileName)); - return 0; - } } - GenericProject *project = new GenericProject(this, fileName); - return project; + return new GenericProject(this, fileName); } void Manager::registerProject(GenericProject *project) diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp index 40574ef1c53..e57ff1bd0fb 100644 --- a/src/plugins/git/branchdialog.cpp +++ b/src/plugins/git/branchdialog.cpp @@ -189,14 +189,9 @@ void BranchDialog::checkout() if (branchCheckoutDialog.makeStashOfCurrentBranch() || branchCheckoutDialog.moveLocalChangesToNextBranch()) { - GitClient::StashGuard stashGuard(m_repository, - currentBranch + QLatin1String("-AutoStash"), - NoPrompt); - if (stashGuard.stashingFailed()) + if (!gitClient->beginStashScope(m_repository, currentBranch + QLatin1String("-AutoStash"), NoPrompt)) return; - stashGuard.preventPop(); - stashMessage = stashGuard.stashMessage(); - + stashMessage = gitClient->stashInfo(m_repository).stashMessage(); } else if (branchCheckoutDialog.discardLocalChanges()) { gitClient->synchronousReset(m_repository); } @@ -295,9 +290,9 @@ void BranchDialog::merge() QTC_CHECK(idx != m_model->currentBranch()); // otherwise the button would not be enabled! const QString branch = m_model->branchName(idx); - GitClient::StashGuard stashGuard(m_repository, QLatin1String("merge"), AllowUnstashed); - if (!GitPlugin::instance()->gitClient()->synchronousMerge(m_repository, branch)) - stashGuard.preventPop(); + GitClient *client = GitPlugin::instance()->gitClient(); + if (client->beginStashScope(m_repository, QLatin1String("merge"), AllowUnstashed)) + client->synchronousMerge(m_repository, branch); } void BranchDialog::rebase() @@ -307,21 +302,9 @@ void BranchDialog::rebase() QTC_CHECK(idx != m_model->currentBranch()); // otherwise the button would not be enabled! const QString baseBranch = m_model->branchName(idx); - GitClient::StashGuard stashGuard(m_repository, QLatin1String("rebase")); - if (!GitPlugin::instance()->gitClient()->synchronousRebase(m_repository, baseBranch)) - stashGuard.preventPop(); -} - -void BranchDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - m_ui->retranslateUi(this); - break; - default: - break; - } + GitClient *client = GitPlugin::instance()->gitClient(); + if (client->beginStashScope(m_repository, QLatin1String("rebase"))) + client->synchronousRebase(m_repository, baseBranch); } QModelIndex BranchDialog::selectedIndex() diff --git a/src/plugins/git/branchdialog.h b/src/plugins/git/branchdialog.h index 34afa8aa559..c1b38ac6195 100644 --- a/src/plugins/git/branchdialog.h +++ b/src/plugins/git/branchdialog.h @@ -33,7 +33,6 @@ #include <QDialog> QT_BEGIN_NAMESPACE -class QPushButton; class QModelIndex; QT_END_NAMESPACE @@ -52,7 +51,8 @@ class BranchModel; * branches below. Offers to checkout/delete local branches. * */ -class BranchDialog : public QDialog { +class BranchDialog : public QDialog +{ Q_OBJECT public: @@ -74,16 +74,11 @@ private slots: void merge(); void rebase(); -protected: - void changeEvent(QEvent *e); - private: QModelIndex selectedIndex(); Ui::BranchDialog *m_ui; - BranchModel *m_model; - QString m_repository; }; diff --git a/src/plugins/git/gerrit/gerritdialog.cpp b/src/plugins/git/gerrit/gerritdialog.cpp index 7b1f55e8cf8..78438801aed 100644 --- a/src/plugins/git/gerrit/gerritdialog.cpp +++ b/src/plugins/git/gerrit/gerritdialog.cpp @@ -162,9 +162,9 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p, detailsLayout->addLayout(repoPathLayout); m_displayButton = addActionButton(QString(), SLOT(slotFetchDisplay())); - m_applyButton = addActionButton(QString(), SLOT(slotFetchApply())); + m_cherryPickButton = addActionButton(QString(), SLOT(slotFetchCherryPick())); m_checkoutButton = addActionButton(QString(), SLOT(slotFetchCheckout())); - m_refreshButton = addActionButton(tr("Refresh"), SLOT(slotRefresh())); + m_refreshButton = addActionButton(tr("&Refresh"), SLOT(slotRefresh())); connect(m_model, SIGNAL(refreshStateChanged(bool)), m_refreshButton, SLOT(setDisabled(bool))); @@ -202,13 +202,13 @@ void GerritDialog::displayRepositoryPath() if (m_repositoryChooser->path().isEmpty()) m_repositoryChooser->setPath(m_parameters->repositoryPath); if (m_parameters->promptPath) { - m_displayButton->setText(tr("Diff...")); - m_applyButton->setText(tr("Apply...")); - m_checkoutButton->setText(tr("Checkout...")); + m_displayButton->setText(tr("&Diff...")); + m_cherryPickButton->setText(tr("Cherry &Pick...")); + m_checkoutButton->setText(tr("&Checkout...")); } else { - m_displayButton->setText(tr("Diff")); - m_applyButton->setText(tr("Apply")); - m_checkoutButton->setText(tr("Checkout")); + m_displayButton->setText(tr("&Diff")); + m_cherryPickButton->setText(tr("Cherry &Pick")); + m_checkoutButton->setText(tr("&Checkout")); } } @@ -262,10 +262,10 @@ void GerritDialog::slotFetchDisplay() emit fetchDisplay(m_model->change(item->row())); } -void GerritDialog::slotFetchApply() +void GerritDialog::slotFetchCherryPick() { if (const QStandardItem *item = currentItem()) - emit fetchApply(m_model->change(item->row())); + emit fetchCherryPick(m_model->change(item->row())); } void GerritDialog::slotFetchCheckout() @@ -304,7 +304,7 @@ void GerritDialog::updateButtons() { const bool enabled = !m_fetchRunning && m_treeView->selectionModel()->currentIndex().isValid(); m_displayButton->setEnabled(enabled); - m_applyButton->setEnabled(enabled); + m_cherryPickButton->setEnabled(enabled); m_checkoutButton->setEnabled(enabled); } @@ -328,7 +328,7 @@ void GerritDialog::fetchStarted(const QSharedPointer<Gerrit::Internal::GerritCha updateButtons(); const QString toolTip = tr("Fetching \"%1\"...").arg(change->title); m_displayButton->setToolTip(toolTip); - m_applyButton->setToolTip(toolTip); + m_cherryPickButton->setToolTip(toolTip); m_checkoutButton->setToolTip(toolTip); } @@ -337,7 +337,7 @@ void GerritDialog::fetchFinished() m_fetchRunning = false; updateButtons(); m_displayButton->setToolTip(QString()); - m_applyButton->setToolTip(QString()); + m_cherryPickButton->setToolTip(QString()); m_checkoutButton->setToolTip(QString()); } diff --git a/src/plugins/git/gerrit/gerritdialog.h b/src/plugins/git/gerrit/gerritdialog.h index 2aa8d96ac1f..7d8d1275c31 100644 --- a/src/plugins/git/gerrit/gerritdialog.h +++ b/src/plugins/git/gerrit/gerritdialog.h @@ -83,7 +83,7 @@ public: signals: void fetchDisplay(const QSharedPointer<Gerrit::Internal::GerritChange> &); - void fetchApply(const QSharedPointer<Gerrit::Internal::GerritChange> &); + void fetchCherryPick(const QSharedPointer<Gerrit::Internal::GerritChange> &); void fetchCheckout(const QSharedPointer<Gerrit::Internal::GerritChange> &); public slots: @@ -98,7 +98,7 @@ private slots: void slotDoubleClicked(const QModelIndex &); void slotRefreshStateChanged(bool); void slotFetchDisplay(); - void slotFetchApply(); + void slotFetchCherryPick(); void slotFetchCheckout(); void slotRefresh(); void displayRepositoryPath(); @@ -121,7 +121,7 @@ private: Utils::PathChooser *m_repositoryChooser; QDialogButtonBox *m_buttonBox; QPushButton *m_displayButton; - QPushButton *m_applyButton; + QPushButton *m_cherryPickButton; QPushButton *m_checkoutButton; QPushButton *m_refreshButton; QLabel *m_repositoryChooserLabel; diff --git a/src/plugins/git/gerrit/gerritplugin.cpp b/src/plugins/git/gerrit/gerritplugin.cpp index e3403ca91ee..511b92cdd8b 100644 --- a/src/plugins/git/gerrit/gerritplugin.cpp +++ b/src/plugins/git/gerrit/gerritplugin.cpp @@ -79,7 +79,7 @@ namespace Internal { enum FetchMode { FetchDisplay, - FetchApply, + FetchCherryPick, FetchCheckout }; @@ -202,9 +202,9 @@ void FetchContext::processFinished(int exitCode, QProcess::ExitStatus es) m_state = WritePatchFileState; startWritePatchFile(); break; - case FetchApply: + case FetchCherryPick: case FetchCheckout: - if (m_fetchMode == FetchApply) { + if (m_fetchMode == FetchCherryPick) { cherryPick(); } else { Git::Internal::GitPlugin::instance()->gitClient()->synchronousCheckout( @@ -425,8 +425,8 @@ void GerritPlugin::openView() gd->setModal(false); connect(gd, SIGNAL(fetchDisplay(QSharedPointer<Gerrit::Internal::GerritChange>)), this, SLOT(fetchDisplay(QSharedPointer<Gerrit::Internal::GerritChange>))); - connect(gd, SIGNAL(fetchApply(QSharedPointer<Gerrit::Internal::GerritChange>)), - this, SLOT(fetchApply(QSharedPointer<Gerrit::Internal::GerritChange>))); + connect(gd, SIGNAL(fetchCherryPick(QSharedPointer<Gerrit::Internal::GerritChange>)), + this, SLOT(fetchCherryPick(QSharedPointer<Gerrit::Internal::GerritChange>))); connect(gd, SIGNAL(fetchCheckout(QSharedPointer<Gerrit::Internal::GerritChange>)), this, SLOT(fetchCheckout(QSharedPointer<Gerrit::Internal::GerritChange>))); connect(this, SIGNAL(fetchStarted(QSharedPointer<Gerrit::Internal::GerritChange>)), @@ -464,9 +464,9 @@ void GerritPlugin::fetchDisplay(const QSharedPointer<Gerrit::Internal::GerritCha fetch(change, FetchDisplay); } -void GerritPlugin::fetchApply(const QSharedPointer<Gerrit::Internal::GerritChange> &change) +void GerritPlugin::fetchCherryPick(const QSharedPointer<Gerrit::Internal::GerritChange> &change) { - fetch(change, FetchApply); + fetch(change, FetchCherryPick); } void GerritPlugin::fetchCheckout(const QSharedPointer<Gerrit::Internal::GerritChange> &change) diff --git a/src/plugins/git/gerrit/gerritplugin.h b/src/plugins/git/gerrit/gerritplugin.h index 167c9c9aa3a..aafb083dbd4 100644 --- a/src/plugins/git/gerrit/gerritplugin.h +++ b/src/plugins/git/gerrit/gerritplugin.h @@ -70,7 +70,7 @@ public: public slots: void fetchDisplay(const QSharedPointer<Gerrit::Internal::GerritChange> &change); - void fetchApply(const QSharedPointer<Gerrit::Internal::GerritChange> &change); + void fetchCherryPick(const QSharedPointer<Gerrit::Internal::GerritChange> &change); void fetchCheckout(const QSharedPointer<Gerrit::Internal::GerritChange> &change); void updateActions(bool hasTopLevel); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index e348c8de540..26b46292162 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -634,22 +634,28 @@ class ConflictHandler : public QObject { Q_OBJECT public: - ConflictHandler(QObject *parent, + ConflictHandler(VcsBase::Command *parentCommand, const QString &workingDirectory, const QString &command) - : QObject(parent), + : QObject(parentCommand), m_workingDirectory(workingDirectory), m_command(command) { + if (parentCommand) { + connect(parentCommand, SIGNAL(outputData(QByteArray)), this, SLOT(readStdOut(QByteArray))); + connect(parentCommand, SIGNAL(errorText(QString)), this, SLOT(readStdErr(QString))); + } } ~ConflictHandler() { - if (m_commit.isEmpty()) + if (m_commit.isEmpty()) { GitPlugin::instance()->gitVersionControl()->emitRepositoryChanged(m_workingDirectory); - else + GitPlugin::instance()->gitClient()->endStashScope(m_workingDirectory); + } else { GitPlugin::instance()->gitClient()->handleMergeConflicts( m_workingDirectory, m_commit, m_command); + } } void readStdOutString(const QString &data) @@ -676,45 +682,6 @@ private: QString m_commit; }; -class RebaseManager : public QObject -{ - Q_OBJECT - -public: - RebaseManager(GitClient::StashGuard &stashGuard, QObject *parent) : - QObject(parent), - m_stashGuard(&stashGuard) - { - } - - ~RebaseManager() - { - delete m_stashGuard; - } - -public slots: - void readStdErr(const QString &error) - { - // rebase conflict is output to stdOut - QRegExp conflictedCommit(QLatin1String("Could not apply ([^\\n]*)")); - conflictedCommit.indexIn(error); - m_commit = conflictedCommit.cap(1); - } - - void finished(bool ok, int exitCode, const QVariant &workingDirectory) - { - Q_UNUSED(ok); - if (exitCode != 0 && !m_commit.isEmpty()) { - m_stashGuard->preventPop(); - GitPlugin::instance()->gitClient()->handleMergeConflicts( - workingDirectory.toString(), m_commit, QLatin1String("rebase")); - } - } - -private: - QString m_commit; - GitClient::StashGuard *m_stashGuard; -}; Core::IEditor *locateEditor(const char *property, const QString &entry) { @@ -2142,6 +2109,23 @@ QProcessEnvironment GitClient::processEnvironment() const return environment; } +bool GitClient::beginStashScope(const QString &workingDirectory, const QString &keyword, StashFlag flag) +{ + StashInfo &stashInfo = m_stashInfo[workingDirectory]; + return stashInfo.init(workingDirectory, keyword, flag); +} + +GitClient::StashInfo &GitClient::stashInfo(const QString &workingDirectory) +{ + QTC_CHECK(m_stashInfo.contains(workingDirectory)); + return m_stashInfo[workingDirectory]; +} + +void GitClient::endStashScope(const QString &workingDirectory) +{ + m_stashInfo[workingDirectory].end(); +} + bool GitClient::isValidRevision(const QString &revision) const { if (revision.length() < 1) @@ -2339,9 +2323,7 @@ void GitClient::continuePreviousGitCommand(const QString &workingDirectory, VcsBase::Command *command = createCommand(workingDirectory, 0, true); command->addJob(arguments, -1); command->execute(); - ConflictHandler *handler = new ConflictHandler(command, workingDirectory, gitCommand); - connect(command, SIGNAL(outputData(QByteArray)), handler, SLOT(readStdOut(QByteArray))); - connect(command, SIGNAL(errorText(QString)), handler, SLOT(readStdErr(QString))); + new ConflictHandler(command, workingDirectory, gitCommand); } else { GitPlugin::instance()->startCommit(); } @@ -2880,7 +2862,8 @@ QString GitClient::synchronousTrackingBranch(const QString &workingDirectory, co return remote + QLatin1Char('/') + rBranch; } -void GitClient::handleMergeConflicts(const QString &workingDir, const QString &commit, const QString &abortCommand) +void GitClient::handleMergeConflicts(const QString &workingDir, const QString &commit, + const QString &abortCommand) { QString message = commit.isEmpty() ? tr("Conflicts detected") : tr("Conflicts detected with commit %1").arg(commit); @@ -3006,8 +2989,7 @@ bool GitClient::synchronousCherryPick(const QString &workingDirectory, const QSt return executeAndHandleConflicts(workingDirectory, arguments, command); } -void GitClient::interactiveRebase(const QString &workingDirectory, const QString &commit, - StashGuard &stashGuard, bool fixup) +void GitClient::interactiveRebase(const QString &workingDirectory, const QString &commit, bool fixup) { QStringList arguments; arguments << QLatin1String("rebase") << QLatin1String("-i"); @@ -3021,10 +3003,7 @@ void GitClient::interactiveRebase(const QString &workingDirectory, const QString command->addJob(arguments, -1); command->execute(); command->setCookie(workingDirectory); - RebaseManager *rebaseManager = new RebaseManager(stashGuard, command); - connect(command, SIGNAL(errorText(QString)), rebaseManager, SLOT(readStdErr(QString))); - connect(command, SIGNAL(finished(bool,int,QVariant)), - rebaseManager, SLOT(finished(bool,int,QVariant))); + new ConflictHandler(command, workingDirectory, QLatin1String("rebase")); if (fixup) m_disableEditor = false; } @@ -3299,50 +3278,45 @@ unsigned GitClient::synchronousGitVersion(QString *errorMessage) const return version(major, minor, patch); } -GitClient::StashGuard::StashGuard(const QString &workingDirectory, const QString &keyword, - StashFlag flag) : - pop(true), - workingDir(workingDirectory), - flags(flag) +GitClient::StashInfo::StashInfo() : + m_client(GitPlugin::instance()->gitClient()) { - client = GitPlugin::instance()->gitClient(); - QString errorMessage; - if (flags & NoPrompt) - executeStash(keyword, &errorMessage); - else - stashPrompt(keyword, &errorMessage); - - if (stashResult == StashFailed) - VcsBase::VcsBaseOutputWindow::instance()->appendError(errorMessage); } -GitClient::StashGuard::~StashGuard() -{ - if (pop && stashResult == Stashed) { - QString stashName; - if (client->stashNameFromMessage(workingDir, message, &stashName)) - client->stashPop(workingDir, stashName); - } -} - -void GitClient::StashGuard::stashPrompt(const QString &keyword, QString *errorMessage) +bool GitClient::StashInfo::init(const QString &workingDirectory, const QString &keyword, + StashFlag flag) { + m_workingDir = workingDirectory; + m_flags = flag; + QString errorMessage; QString statusOutput; - switch (client->gitStatus(workingDir, StatusMode(NoUntracked | NoSubmodules), - &statusOutput, errorMessage)) { + switch (m_client->gitStatus(m_workingDir, StatusMode(NoUntracked | NoSubmodules), + &statusOutput, &errorMessage)) { case GitClient::StatusChanged: + if (m_flags & NoPrompt) + executeStash(keyword, &errorMessage); + else + stashPrompt(keyword, statusOutput, &errorMessage); break; case GitClient::StatusUnchanged: - stashResult = StashUnchanged; - return; + m_stashResult = StashUnchanged; + break; case GitClient::StatusFailed: - stashResult = StashFailed; - return; + m_stashResult = StashFailed; + break; } + if (m_stashResult == StashFailed) + VcsBase::VcsBaseOutputWindow::instance()->appendError(errorMessage); + return !stashingFailed(); +} + +void GitClient::StashInfo::stashPrompt(const QString &keyword, const QString &statusOutput, + QString *errorMessage) +{ QMessageBox msgBox(QMessageBox::Question, tr("Uncommitted Changes Found"), tr("What would you like to do with local changes in:") - + QLatin1String("\n\n\"") + workingDir + QLatin1Char('\"'), + + QLatin1String("\n\n\"") + m_workingDir + QLatin1Char('\"'), QMessageBox::NoButton, Core::ICore::mainWindow()); msgBox.setDetailedText(statusOutput); @@ -3354,7 +3328,7 @@ void GitClient::StashGuard::stashPrompt(const QString &keyword, QString *errorMe discardButton->setToolTip(tr("Discard (reset) local changes and continue.")); QPushButton *ignoreButton = 0; - if (flags & AllowUnstashed) { + if (m_flags & AllowUnstashed) { ignoreButton = msgBox.addButton(QMessageBox::Ignore); ignoreButton->setToolTip(tr("Continue with local changes in working directory.")); } @@ -3365,46 +3339,50 @@ void GitClient::StashGuard::stashPrompt(const QString &keyword, QString *errorMe msgBox.exec(); if (msgBox.clickedButton() == discardButton) { - if (!client->synchronousReset(workingDir, QStringList(), errorMessage)) - stashResult = StashFailed; + if (!m_client->synchronousReset(m_workingDir, QStringList(), errorMessage)) + m_stashResult = StashFailed; else - stashResult = StashUnchanged; + m_stashResult = StashUnchanged; } else if (msgBox.clickedButton() == ignoreButton) { // At your own risk, so. - stashResult = NotStashed; + m_stashResult = NotStashed; } else if (msgBox.clickedButton() == cancelButton) { - stashResult = StashCanceled; + m_stashResult = StashCanceled; } else if (msgBox.clickedButton() == stashButton) { executeStash(keyword, errorMessage); } } -void GitClient::StashGuard::executeStash(const QString &keyword, QString *errorMessage) +void GitClient::StashInfo::executeStash(const QString &keyword, QString *errorMessage) { - message = creatorStashMessage(keyword); - if (!client->executeSynchronousStash(workingDir, message, errorMessage)) - stashResult = StashFailed; + m_message = creatorStashMessage(keyword); + if (!m_client->executeSynchronousStash(m_workingDir, m_message, errorMessage)) + m_stashResult = StashFailed; else - stashResult = Stashed; + m_stashResult = Stashed; } -void GitClient::StashGuard::preventPop() +bool GitClient::StashInfo::stashingFailed() const { - pop = false; -} - -bool GitClient::StashGuard::stashingFailed() const -{ - switch (stashResult) { + switch (m_stashResult) { case StashCanceled: case StashFailed: return true; case NotStashed: - return !(flags & AllowUnstashed); + return !(m_flags & AllowUnstashed); default: return false; } } +void GitClient::StashInfo::end() +{ + if (m_stashResult == Stashed) { + QString stashName; + if (m_client->stashNameFromMessage(m_workingDir, m_message, &stashName)) + m_client->stashPop(m_workingDir, stashName); + } + m_stashResult = NotStashed; +} } // namespace Internal } // namespace Git diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index b1b81c89b0b..d71b47ac888 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -94,31 +94,28 @@ public: enum CommandInProgress { NoCommand, Revert, CherryPick, Rebase, Merge, RebaseMerge }; - class StashGuard + class StashInfo { public: + StashInfo(); enum StashResult { StashUnchanged, StashCanceled, StashFailed, Stashed, NotStashed /* User did not want it */ }; - StashGuard(const QString &workingDirectory, const QString &keyword, - StashFlag flag = Default); - ~StashGuard(); - - void preventPop(); + bool init(const QString &workingDirectory, const QString &keyword, StashFlag flag = Default); bool stashingFailed() const; - StashResult result() const { return stashResult; } - QString stashMessage() const { return message; } + void end(); + StashResult result() const { return m_stashResult; } + QString stashMessage() const { return m_message; } private: - void stashPrompt(const QString &keyword, QString *errorMessage); + void stashPrompt(const QString &keyword, const QString &statusOutput, QString *errorMessage); void executeStash(const QString &keyword, QString *errorMessage); - bool pop; - StashResult stashResult; - QString message; - QString workingDir; - GitClient *client; - StashFlag flags; + StashResult m_stashResult; + QString m_message; + QString m_workingDir; + GitClient *m_client; + StashFlag m_flags; }; static const char *stashNamePrefix; @@ -241,8 +238,7 @@ public: const QString &topicBranch = QString()); bool synchronousRevert(const QString &workingDirectory, const QString &commit); bool synchronousCherryPick(const QString &workingDirectory, const QString &commit); - void interactiveRebase(const QString &workingDirectory, const QString &commit, - StashGuard &stashGuard, bool fixup); + void interactiveRebase(const QString &workingDirectory, const QString &commit, bool fixup); void synchronousAbortCommand(const QString &workingDir, const QString &abortCommand); QString synchronousTrackingBranch(const QString &workingDirectory, const QString &branch = QString()); @@ -302,6 +298,9 @@ public: QProcessEnvironment processEnvironment() const; + bool beginStashScope(const QString &workingDirectory, const QString &keyword, StashFlag flag = Default); + StashInfo &stashInfo(const QString &workingDirectory); + void endStashScope(const QString &workingDirectory); bool isValidRevision(const QString &revision) const; void handleMergeConflicts(const QString &workingDir, const QString &commit, const QString &abortCommand); @@ -386,6 +385,7 @@ private: QSignalMapper *m_repositoryChangedSignalMapper; GitSettings *m_settings; QString m_gitQtcEditor; + QMap<QString, StashInfo> m_stashInfo; bool m_disableEditor; }; diff --git a/src/plugins/git/gitorious/gitorioushostwidget.cpp b/src/plugins/git/gitorious/gitorioushostwidget.cpp index 22622f1a708..4c67c425a84 100644 --- a/src/plugins/git/gitorious/gitorioushostwidget.cpp +++ b/src/plugins/git/gitorious/gitorioushostwidget.cpp @@ -297,17 +297,5 @@ void GitoriousHostWidget::slotError(const QString &e) m_errorClearTimer->start(); } -void GitoriousHostWidget::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace Internal } // namespace Gitorious diff --git a/src/plugins/git/gitorious/gitorioushostwidget.h b/src/plugins/git/gitorious/gitorioushostwidget.h index c00cd07dcba..a96f564caed 100644 --- a/src/plugins/git/gitorious/gitorioushostwidget.h +++ b/src/plugins/git/gitorious/gitorioushostwidget.h @@ -54,8 +54,10 @@ namespace Ui { * it receives the projects. As soon as there are projects, isValid() becomes * true. */ -class GitoriousHostWidget : public QWidget { +class GitoriousHostWidget : public QWidget +{ Q_OBJECT + public: GitoriousHostWidget(QWidget *parent = 0); ~GitoriousHostWidget(); @@ -72,9 +74,6 @@ signals: public slots: void selectRow(int); -protected: - void changeEvent(QEvent *e); - private slots: void slotBrowse(); void slotDelete(); diff --git a/src/plugins/git/gitorious/gitoriousprojectwidget.cpp b/src/plugins/git/gitorious/gitoriousprojectwidget.cpp index b374910f0e8..6c7d128dbbc 100644 --- a/src/plugins/git/gitorious/gitoriousprojectwidget.cpp +++ b/src/plugins/git/gitorious/gitoriousprojectwidget.cpp @@ -281,17 +281,5 @@ QSharedPointer<GitoriousProject> GitoriousProjectWidget::project() const return QSharedPointer<GitoriousProject>(new GitoriousProject); } -void GitoriousProjectWidget::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace Internal } // namespace Gitorious diff --git a/src/plugins/git/gitorious/gitoriousprojectwidget.h b/src/plugins/git/gitorious/gitoriousprojectwidget.h index b9dc6422355..b55aaacf106 100644 --- a/src/plugins/git/gitorious/gitoriousprojectwidget.h +++ b/src/plugins/git/gitorious/gitoriousprojectwidget.h @@ -56,8 +56,10 @@ namespace Ui { * it receives the projects. isValid() and signal validChanged are * provided for use in a QWizardPage. Host matching happens via name as the * hostIndex might change due to deleting hosts. */ -class GitoriousProjectWidget : public QWidget { +class GitoriousProjectWidget : public QWidget +{ Q_OBJECT + public: explicit GitoriousProjectWidget(int hostIndex, QWidget *parent = 0); @@ -91,9 +93,6 @@ private slots: void slotUpdateProjects(int hostIndex); void slotUpdateCheckBoxChanged(int); -protected: - void changeEvent(QEvent *e); - private: QStandardItem *itemFromIndex(const QModelIndex &idx) const; QStandardItem *currentItem() const; @@ -107,7 +106,7 @@ private: bool m_valid; }; - } // namespace Internal } // namespace Gitorious + #endif // GITORIOUSPROJECTWIDGET_H diff --git a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp index da6ecd25ea7..d90719e5c2d 100644 --- a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp +++ b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp @@ -237,17 +237,5 @@ bool GitoriousRepositoryWizardPage::isComplete() const return m_valid; } -void GitoriousRepositoryWizardPage::changeEvent(QEvent *e) -{ - QWizardPage::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace Internal } // namespace Gitorious diff --git a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.h b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.h index be6b4d39534..647887a9331 100644 --- a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.h +++ b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.h @@ -51,8 +51,10 @@ namespace Ui { // A wizard page listing Gitorious repositories in a tree, by repository type. -class GitoriousRepositoryWizardPage : public QWizardPage { +class GitoriousRepositoryWizardPage : public QWizardPage +{ Q_OBJECT + public: explicit GitoriousRepositoryWizardPage(const GitoriousProjectWizardPage *projectPage, QWidget *parent = 0); @@ -67,9 +69,6 @@ public: public slots: void slotCurrentChanged(const QModelIndex ¤t, const QModelIndex &previous); -protected: - void changeEvent(QEvent *e); - private: // return the repository (column 0) item. QStandardItem *currentItem0() const; diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index ea8ca19f4cb..4ce7508d3dc 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -769,14 +769,14 @@ void GitPlugin::startRebase() QString workingDirectory = currentState().currentDirectoryOrTopLevel(); if (workingDirectory.isEmpty() || !m_gitClient->canRebase(workingDirectory)) return; - QScopedPointer<GitClient::StashGuard> stashGuard( - new GitClient::StashGuard(workingDirectory, QLatin1String("Rebase-i"))); - if (stashGuard->stashingFailed()) + if (!m_gitClient->beginStashScope(workingDirectory, QLatin1String("Rebase-i"))) return; LogChangeDialog dialog(false); dialog.setWindowTitle(tr("Interactive Rebase")); if (dialog.runDialog(workingDirectory, QString(), false)) - m_gitClient->interactiveRebase(workingDirectory, dialog.commit(), *stashGuard.take(), false); + m_gitClient->interactiveRebase(workingDirectory, dialog.commit(), false); + else + m_gitClient->endStashScope(workingDirectory); } void GitPlugin::startChangeRelatedAction() @@ -822,12 +822,10 @@ void GitPlugin::startChangeRelatedAction() return; } - GitClient::StashGuard stashGuard(workingDirectory, command); - if (stashGuard.stashingFailed()) + if (!m_gitClient->beginStashScope(workingDirectory, command)) return; - if (!(m_gitClient->*commandFunction)(workingDirectory, change)) - stashGuard.preventPop(); + (m_gitClient->*commandFunction)(workingDirectory, change); } void GitPlugin::stageFile() @@ -1035,12 +1033,9 @@ bool GitPlugin::submitEditorAboutToClose() if (closeEditor) { cleanCommitMessageFile(); if (commitType == FixupCommit) { - QScopedPointer<GitClient::StashGuard> stashGuard( - new GitClient::StashGuard(m_submitRepository, QLatin1String("Rebase-fixup"), - NoPrompt)); - if (stashGuard->stashingFailed()) + if (!m_gitClient->beginStashScope(m_submitRepository, QLatin1String("Rebase-fixup"), NoPrompt)) return false; - m_gitClient->interactiveRebase(m_submitRepository, amendSHA1, *stashGuard.take(), true); + m_gitClient->interactiveRebase(m_submitRepository, amendSHA1, true); } else { m_gitClient->continueCommandIfNeeded(m_submitRepository); } @@ -1069,12 +1064,9 @@ void GitPlugin::pull() } } - GitClient::StashGuard stashGuard(topLevel, QLatin1String("Pull"), - rebase ? Default : AllowUnstashed); - if (stashGuard.stashingFailed()) + if (!m_gitClient->beginStashScope(topLevel, QLatin1String("Pull"), rebase ? Default : AllowUnstashed)) return; - if (!m_gitClient->synchronousPull(topLevel, rebase)) - stashGuard.preventPop(); + m_gitClient->synchronousPull(topLevel, rebase); } void GitPlugin::push() @@ -1222,8 +1214,7 @@ void GitPlugin::promptApplyPatch() void GitPlugin::applyPatch(const QString &workingDirectory, QString file) { // Ensure user has been notified about pending changes - GitClient::StashGuard stashGuard(workingDirectory, QLatin1String("Apply-Patch"), AllowUnstashed); - if (stashGuard.stashingFailed()) + if (!m_gitClient->beginStashScope(workingDirectory, QLatin1String("Apply-Patch"), AllowUnstashed)) return; // Prompt for file if (file.isEmpty()) { @@ -1231,8 +1222,10 @@ void GitPlugin::applyPatch(const QString &workingDirectory, QString file) file = QFileDialog::getOpenFileName(Core::ICore::mainWindow(), tr("Choose Patch"), QString(), filter); - if (file.isEmpty()) + if (file.isEmpty()) { + m_gitClient->endStashScope(workingDirectory); return; + } } // Run! VcsBase::VcsBaseOutputWindow *outwin = VcsBase::VcsBaseOutputWindow::instance(); @@ -1245,6 +1238,7 @@ void GitPlugin::applyPatch(const QString &workingDirectory, QString file) } else { outwin->appendError(errorMessage); } + m_gitClient->endStashScope(workingDirectory); } void GitPlugin::stash() @@ -1253,11 +1247,10 @@ void GitPlugin::stash() const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); - GitClient::StashGuard stashGuard(state.topLevel(), QString(), NoPrompt); - if (stashGuard.stashingFailed()) + QString topLevel = state.topLevel(); + if (!m_gitClient->beginStashScope(topLevel, QString(), NoPrompt)) return; - stashGuard.preventPop(); - if (stashGuard.result() == GitClient::StashGuard::Stashed && m_stashDialog) + if (m_gitClient->stashInfo(topLevel).result() == GitClient::StashInfo::Stashed && m_stashDialog) m_stashDialog->refresh(state.topLevel(), true); } diff --git a/src/plugins/git/remotedialog.cpp b/src/plugins/git/remotedialog.cpp index 4488719f73f..a027d62bf2d 100644 --- a/src/plugins/git/remotedialog.cpp +++ b/src/plugins/git/remotedialog.cpp @@ -198,17 +198,5 @@ void RemoteDialog::updateButtonState() m_ui->removeButton->setEnabled(haveSelection); } -void RemoteDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - m_ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace Internal } // namespace Git diff --git a/src/plugins/git/remotedialog.h b/src/plugins/git/remotedialog.h index 92ecdbdc94a..7a8d00900b9 100644 --- a/src/plugins/git/remotedialog.h +++ b/src/plugins/git/remotedialog.h @@ -68,7 +68,8 @@ private: // RemoteDialog: // -------------------------------------------------------------------------- -class RemoteDialog : public QDialog { +class RemoteDialog : public QDialog +{ Q_OBJECT public: @@ -86,11 +87,6 @@ public slots: void updateButtonState(); -private slots: - -protected: - void changeEvent(QEvent *e); - private: Ui::RemoteDialog *m_ui; diff --git a/src/plugins/git/stashdialog.cpp b/src/plugins/git/stashdialog.cpp index 1447230d39b..137a6ed9211 100644 --- a/src/plugins/git/stashdialog.cpp +++ b/src/plugins/git/stashdialog.cpp @@ -150,18 +150,6 @@ StashDialog::~StashDialog() delete ui; } -void StashDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - QString StashDialog::msgRepositoryLabel(const QString &repository) { return repository.isEmpty() ? diff --git a/src/plugins/git/stashdialog.h b/src/plugins/git/stashdialog.h index 37bfc77592f..15f24fc04b4 100644 --- a/src/plugins/git/stashdialog.h +++ b/src/plugins/git/stashdialog.h @@ -51,8 +51,10 @@ class StashModel; * (in case restore fails due to conflicts) on current and * delete on selection/all. */ -class StashDialog : public QDialog { +class StashDialog : public QDialog +{ Q_OBJECT + public: explicit StashDialog(QWidget *parent = 0); ~StashDialog(); @@ -62,9 +64,6 @@ public: public slots: void refresh(const QString &repository, bool force); -protected: - void changeEvent(QEvent *e); - private slots: void deleteAll(); void deleteSelection(); diff --git a/src/plugins/glsleditor/glsleditoreditable.cpp b/src/plugins/glsleditor/glsleditoreditable.cpp index f999ca68258..c5586110f0d 100644 --- a/src/plugins/glsleditor/glsleditoreditable.cpp +++ b/src/plugins/glsleditor/glsleditoreditable.cpp @@ -50,10 +50,5 @@ GLSLEditorEditable::GLSLEditorEditable(GLSLTextEditorWidget *editor) TextEditor::Constants::C_TEXTEDITOR)); } -Core::Id GLSLEditorEditable::preferredModeType() const -{ - return Core::Id(); -} - } // namespace Internal } // namespace GLSLEditor diff --git a/src/plugins/glsleditor/glsleditoreditable.h b/src/plugins/glsleditor/glsleditoreditable.h index 9ef2ec797b4..3e6ce0a5292 100644 --- a/src/plugins/glsleditor/glsleditoreditable.h +++ b/src/plugins/glsleditor/glsleditoreditable.h @@ -49,7 +49,6 @@ public: Core::Id id() const; bool isTemporary() const { return false; } bool open(QString *errorString, const QString &fileName, const QString &realFileName); - Core::Id preferredModeType() const; }; } // namespace Internal diff --git a/src/plugins/imageviewer/images/pause-small.png b/src/plugins/imageviewer/images/pause-small.png Binary files differindex 114d89b12bd..66d1f46d3db 100644 --- a/src/plugins/imageviewer/images/pause-small.png +++ b/src/plugins/imageviewer/images/pause-small.png diff --git a/src/plugins/imageviewer/images/play-small.png b/src/plugins/imageviewer/images/play-small.png Binary files differindex 011598a746f..3a7a99fb247 100644 --- a/src/plugins/imageviewer/images/play-small.png +++ b/src/plugins/imageviewer/images/play-small.png diff --git a/src/plugins/imageviewer/imageviewer.cpp b/src/plugins/imageviewer/imageviewer.cpp index 6ff625f3a64..58a4e77e8a2 100644 --- a/src/plugins/imageviewer/imageviewer.cpp +++ b/src/plugins/imageviewer/imageviewer.cpp @@ -163,38 +163,6 @@ void ImageViewer::setDisplayName(const QString &title) emit changed(); } -bool ImageViewer::duplicateSupported() const -{ - return false; -} - -Core::IEditor *ImageViewer::duplicate(QWidget *parent) -{ - Q_UNUSED(parent); - return 0; -} - -QByteArray ImageViewer::saveState() const -{ - return QByteArray(); -} - -bool ImageViewer::restoreState(const QByteArray &state) -{ - Q_UNUSED(state); - return true; -} - -int ImageViewer::currentLine() const -{ - return 0; -} - -int ImageViewer::currentColumn() const -{ - return 0; -} - bool ImageViewer::isTemporary() const { return false; diff --git a/src/plugins/imageviewer/imageviewer.h b/src/plugins/imageviewer/imageviewer.h index f2a4cdd7fd4..b5a20689217 100644 --- a/src/plugins/imageviewer/imageviewer.h +++ b/src/plugins/imageviewer/imageviewer.h @@ -60,18 +60,7 @@ public: Core::Id id() const; QString displayName() const; void setDisplayName(const QString &title); - - bool duplicateSupported() const; - IEditor *duplicate(QWidget *parent); - - QByteArray saveState() const; - bool restoreState(const QByteArray &state); - - int currentLine() const; - int currentColumn() const; - bool isTemporary() const; - QWidget *toolBar(); public slots: diff --git a/src/plugins/imageviewer/imageviewerfile.cpp b/src/plugins/imageviewer/imageviewerfile.cpp index 9334fc349a0..0f3850f8961 100644 --- a/src/plugins/imageviewer/imageviewerfile.cpp +++ b/src/plugins/imageviewer/imageviewerfile.cpp @@ -31,35 +31,15 @@ #include "imageviewerfile.h" #include "imageviewer.h" -#include <coreplugin/icore.h> -#include <coreplugin/id.h> - -#include <utils/reloadpromptutils.h> - -#include <QMap> #include <QFileInfo> -#include <QDebug> namespace ImageViewer { namespace Internal { -struct ImageViewerFilePrivate -{ - QString fileName; - QString mimeType; - ImageViewer *editor; -}; - ImageViewerFile::ImageViewerFile(ImageViewer *parent) - : Core::IDocument(parent), - d(new ImageViewerFilePrivate) -{ - d->editor = parent; -} - -ImageViewerFile::~ImageViewerFile() + : Core::IDocument(parent) { - delete d; + m_editor = parent; } Core::IDocument::ReloadBehavior ImageViewerFile::reloadBehavior(ChangeTrigger state, ChangeType type) const @@ -81,7 +61,7 @@ bool ImageViewerFile::reload(QString *errorString, emit changed(); return true; } - return d->editor->open(errorString, d->fileName, d->fileName); + return m_editor->open(errorString, m_fileName, m_fileName); } bool ImageViewerFile::save(QString *errorString, const QString &fileName, bool autoSave) @@ -94,16 +74,16 @@ bool ImageViewerFile::save(QString *errorString, const QString &fileName, bool a void ImageViewerFile::rename(const QString &newName) { - const QString oldFilename = d->fileName; - d->fileName = newName; - d->editor->setDisplayName(QFileInfo(d->fileName).fileName()); + const QString oldFilename = m_fileName; + m_fileName = newName; + m_editor->setDisplayName(QFileInfo(m_fileName).fileName()); emit fileNameChanged(oldFilename, newName); emit changed(); } QString ImageViewerFile::fileName() const { - return d->fileName; + return m_fileName; } QString ImageViewerFile::defaultPath() const @@ -118,7 +98,7 @@ QString ImageViewerFile::suggestedFileName() const QString ImageViewerFile::mimeType() const { - return d->mimeType; + return m_mimeType; } bool ImageViewerFile::isModified() const @@ -133,13 +113,13 @@ bool ImageViewerFile::isSaveAsAllowed() const void ImageViewerFile::setMimetype(const QString &mimetype) { - d->mimeType = mimetype; + m_mimeType = mimetype; emit changed(); } void ImageViewerFile::setFileName(const QString &filename) { - d->fileName = filename; + m_fileName = filename; emit changed(); } diff --git a/src/plugins/imageviewer/imageviewerfile.h b/src/plugins/imageviewer/imageviewerfile.h index e762f2a10a4..ab913de68ae 100644 --- a/src/plugins/imageviewer/imageviewerfile.h +++ b/src/plugins/imageviewer/imageviewerfile.h @@ -33,8 +33,6 @@ #include <coreplugin/idocument.h> -#include <QScopedPointer> - namespace ImageViewer { namespace Internal { @@ -43,9 +41,9 @@ class ImageViewer; class ImageViewerFile : public Core::IDocument { Q_OBJECT + public: explicit ImageViewerFile(ImageViewer *parent = 0); - ~ImageViewerFile(); bool save(QString *errorString, const QString &fileName, bool autoSave); void rename(const QString &newName); @@ -58,14 +56,16 @@ public: bool isModified() const; bool isSaveAsAllowed() const; - virtual ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const; + ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const; bool reload(QString *errorString, ReloadFlag flag, ChangeType type); void setMimetype(const QString &mimetype); void setFileName(const QString &filename); private: - struct ImageViewerFilePrivate *d; + QString m_fileName; + QString m_mimeType; + ImageViewer *m_editor; }; } // namespace Internal diff --git a/src/plugins/mercurial/revertdialog.cpp b/src/plugins/mercurial/revertdialog.cpp index 2137140361d..16b5dc06f93 100644 --- a/src/plugins/mercurial/revertdialog.cpp +++ b/src/plugins/mercurial/revertdialog.cpp @@ -43,18 +43,6 @@ RevertDialog::~RevertDialog() delete m_ui; } -void RevertDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - m_ui->retranslateUi(this); - break; - default: - break; - } -} - QString RevertDialog::revision() const { return m_ui->revisionLineEdit->text(); diff --git a/src/plugins/mercurial/revertdialog.h b/src/plugins/mercurial/revertdialog.h index 77a5d0a1329..ce9520b57dc 100644 --- a/src/plugins/mercurial/revertdialog.h +++ b/src/plugins/mercurial/revertdialog.h @@ -47,9 +47,6 @@ public: QString revision() const; -protected: - void changeEvent(QEvent *e); - private: Ui::RevertDialog *m_ui; }; diff --git a/src/plugins/mercurial/srcdestdialog.cpp b/src/plugins/mercurial/srcdestdialog.cpp index 3d80f7215b2..7ca90565457 100644 --- a/src/plugins/mercurial/srcdestdialog.cpp +++ b/src/plugins/mercurial/srcdestdialog.cpp @@ -59,15 +59,3 @@ QString SrcDestDialog::getRepositoryString() const return m_ui->localPathChooser->path(); return m_ui->urlLineEdit->text(); } - -void SrcDestDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - m_ui->retranslateUi(this); - break; - default: - break; - } -} diff --git a/src/plugins/mercurial/srcdestdialog.h b/src/plugins/mercurial/srcdestdialog.h index a9e70c14a35..ffe42d04229 100644 --- a/src/plugins/mercurial/srcdestdialog.h +++ b/src/plugins/mercurial/srcdestdialog.h @@ -45,12 +45,10 @@ class SrcDestDialog : public QDialog public: SrcDestDialog(QWidget *parent = 0); ~SrcDestDialog(); + void setPathChooserKind(Utils::PathChooser::Kind kind); QString getRepositoryString() const; -protected: - void changeEvent(QEvent *e); - private: Ui::SrcDestDialog *m_ui; }; diff --git a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp index d44da8dcd86..98badd342cf 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp @@ -894,7 +894,7 @@ bool replaceFieldHelper(ValueStringTransformation transform, if (!replacement.isEmpty()) nonEmptyReplacements = true; // Apply transformation to empty values as well. - s->replace(pos, nextPos - pos, transform(replacement)); + s->replace(pos, nextPos - pos + 1, transform(replacement)); nonEmptyReplacements = true; pos += replacement.size(); } diff --git a/src/plugins/projectexplorer/doubletabwidget.cpp b/src/plugins/projectexplorer/doubletabwidget.cpp index 0e467de3e09..08bd1eb0dc0 100644 --- a/src/plugins/projectexplorer/doubletabwidget.cpp +++ b/src/plugins/projectexplorer/doubletabwidget.cpp @@ -503,18 +503,6 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) } } -void DoubleTabWidget::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - bool DoubleTabWidget::event(QEvent *event) { if (event->type() == QEvent::ToolTip) { diff --git a/src/plugins/projectexplorer/doubletabwidget.h b/src/plugins/projectexplorer/doubletabwidget.h index 7d60b3d10c9..a7ce2d9da67 100644 --- a/src/plugins/projectexplorer/doubletabwidget.h +++ b/src/plugins/projectexplorer/doubletabwidget.h @@ -67,7 +67,6 @@ signals: protected: void paintEvent(QPaintEvent *event); void mousePressEvent(QMouseEvent *event); - void changeEvent(QEvent *e); bool event(QEvent *event); QSize minimumSizeHint() const; diff --git a/src/plugins/projectexplorer/iprojectmanager.h b/src/plugins/projectexplorer/iprojectmanager.h index a85108a7827..3b7cd301b9c 100644 --- a/src/plugins/projectexplorer/iprojectmanager.h +++ b/src/plugins/projectexplorer/iprojectmanager.h @@ -50,6 +50,7 @@ public: IProjectManager() {} virtual QString mimeType() const = 0; + // fileName is a canonical path! virtual Project *openProject(const QString &fileName, QString *errorString) = 0; }; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 29ed06b897c..ece65886ff3 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1334,6 +1334,16 @@ static inline QList<IProjectManager*> allProjectManagers() return ExtensionSystem::PluginManager::getObjects<IProjectManager>(); } +static void appendError(QString *errorString, const QString &error) +{ + if (!errorString || error.isEmpty()) + return; + + if (!errorString->isEmpty()) + errorString->append(QLatin1Char('\n')); + errorString->append(error); +} + QList<Project *> ProjectExplorerPlugin::openProjects(const QStringList &fileNames, QString *errorString) { if (debug) @@ -1343,11 +1353,29 @@ QList<Project *> ProjectExplorerPlugin::openProjects(const QStringList &fileName QList<Project*> openedPro; foreach (const QString &fileName, fileNames) { + QTC_ASSERT(!fileName.isEmpty(), continue); + + QFileInfo fi = QFileInfo(fileName); + QString canonicalFilePath = fi.canonicalFilePath(); + bool found = false; + foreach (ProjectExplorer::Project *pi, session()->projects()) { + if (canonicalFilePath == pi->document()->fileName()) { + found = true; + break; + } + } + if (found) { + appendError(errorString, tr("Failed opening project '%1': Project already open") + .arg(QDir::toNativeSeparators(fileName))); + d->m_session->reportProjectLoadingProgress(); + continue; + } + if (const Core::MimeType mt = Core::ICore::mimeDatabase()->findByFile(QFileInfo(fileName))) { foreach (IProjectManager *manager, projectManagers) { if (manager->mimeType() == mt.type()) { QString tmp; - if (Project *pro = manager->openProject(fileName, &tmp)) { + if (Project *pro = manager->openProject(canonicalFilePath, &tmp)) { if (pro->restoreSettings()) { connect(pro, SIGNAL(fileListChanged()), this, SIGNAL(fileListChanged())); d->m_session->addProject(pro); @@ -1359,16 +1387,13 @@ QList<Project *> ProjectExplorerPlugin::openProjects(const QStringList &fileName delete pro; } } - if (errorString) { - if (!errorString->isEmpty() && !tmp.isEmpty()) - errorString->append(QLatin1Char('\n')); - errorString->append(tmp); - } - d->m_session->reportProjectLoadingProgress(); + if (!tmp.isEmpty()) + appendError(errorString, tmp); break; } } } + d->m_session->reportProjectLoadingProgress(); } updateActions(); diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs index dd76e03c3f5..3b9252f26d4 100644 --- a/src/plugins/projectexplorer/projectexplorer.qbs +++ b/src/plugins/projectexplorer/projectexplorer.qbs @@ -354,7 +354,7 @@ QtcPlugin { files: ["outputparser_test.h", "outputparser_test.cpp"] } - ProductModule { + Export { Depends { name: "Qt.network" } } } diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp index 7dc9d497773..3faa2c603c1 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.cpp +++ b/src/plugins/projectexplorer/projectwelcomepage.cpp @@ -139,6 +139,8 @@ void SessionModel::cloneSession(const QString &session) void SessionModel::deleteSession(const QString &session) { + if (!m_manager->confirmSessionDelete(session)) + return; beginResetModel(); m_manager->deleteSession(session); endResetModel(); diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp index c6c4b3edacf..d6d4df06311 100644 --- a/src/plugins/projectexplorer/projectwizardpage.cpp +++ b/src/plugins/projectexplorer/projectwizardpage.cpp @@ -127,18 +127,6 @@ void ProjectWizardPage::setVersionControlIndex(int idx) m_ui->addToVersionControlComboBox->setCurrentIndex(idx); } -void ProjectWizardPage::changeEvent(QEvent *e) -{ - QWizardPage::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - m_ui->retranslateUi(this); - break; - default: - break; - } -} - // Alphabetically, and files in sub-directories first static bool generatedFilePathLessThan(const QString &filePath1, const QString &filePath2) { diff --git a/src/plugins/projectexplorer/projectwizardpage.h b/src/plugins/projectexplorer/projectwizardpage.h index f10224753e8..657dc4fa47e 100644 --- a/src/plugins/projectexplorer/projectwizardpage.h +++ b/src/plugins/projectexplorer/projectwizardpage.h @@ -69,15 +69,12 @@ public: void setProjectComoBoxVisible(bool visible); -protected: - virtual void changeEvent(QEvent *e); - private slots: void slotProjectChanged(int); void slotManageVcs(); private: - inline void setProjectToolTip(const QString &); + void setProjectToolTip(const QString &); Ui::WizardPage *m_ui; QStringList m_projectToolTips; diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 0116f3578b1..445db5f031a 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -673,6 +673,18 @@ bool SessionManager::renameSession(const QString &original, const QString &newNa return deleteSession(original); } + +/*! + \brief Shows a dialog asking the user to confirm deleting the session \p session +*/ +bool SessionManager::confirmSessionDelete(const QString &session) +{ + return QMessageBox::question(Core::ICore::mainWindow(), + tr("Delete Session"), + tr("Delete session %1?").arg(session), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes; +} + /*! \brief Deletes session name from session list and file from disk. */ diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h index 2f0a72bea77..bfbc6cf4935 100644 --- a/src/plugins/projectexplorer/session.h +++ b/src/plugins/projectexplorer/session.h @@ -73,6 +73,7 @@ public: bool createSession(const QString &session); + bool confirmSessionDelete(const QString &session); bool deleteSession(const QString &session); bool cloneSession(const QString &original, const QString &clone); diff --git a/src/plugins/projectexplorer/sessiondialog.cpp b/src/plugins/projectexplorer/sessiondialog.cpp index 8e751e89ce7..75ac0a6af23 100644 --- a/src/plugins/projectexplorer/sessiondialog.cpp +++ b/src/plugins/projectexplorer/sessiondialog.cpp @@ -244,7 +244,11 @@ void SessionDialog::clone() void SessionDialog::remove() { - m_sessionManager->deleteSession(m_ui.sessionList->currentItem()->text()); + const QString name = m_ui.sessionList->currentItem()->text(); + + if (!m_sessionManager->confirmSessionDelete(name)) + return; + m_sessionManager->deleteSession(name); m_ui.sessionList->clear(); addItems(false); markItems(); diff --git a/src/plugins/projectexplorer/targetsettingswidget.cpp b/src/plugins/projectexplorer/targetsettingswidget.cpp index 7e28a0126c5..88c53616a02 100644 --- a/src/plugins/projectexplorer/targetsettingswidget.cpp +++ b/src/plugins/projectexplorer/targetsettingswidget.cpp @@ -147,15 +147,3 @@ int TargetSettingsWidget::currentSubIndex() const { return m_targetSelector->currentSubIndex(); } - -void TargetSettingsWidget::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} diff --git a/src/plugins/projectexplorer/targetsettingswidget.h b/src/plugins/projectexplorer/targetsettingswidget.h index c48fa5ad49a..1b678c4a20e 100644 --- a/src/plugins/projectexplorer/targetsettingswidget.h +++ b/src/plugins/projectexplorer/targetsettingswidget.h @@ -49,6 +49,7 @@ namespace Ui { class TargetSettingsWidget : public QWidget { Q_OBJECT + public: explicit TargetSettingsWidget(QWidget *parent = 0); ~TargetSettingsWidget(); @@ -77,9 +78,6 @@ signals: void toolTipRequested(const QPoint &globalPosition, int targetIndex); void menuShown(int targetIndex); -protected: - void changeEvent(QEvent *e); - private: Ui::TargetSettingsWidget *ui; diff --git a/src/plugins/pythoneditor/pythoneditor.cpp b/src/plugins/pythoneditor/pythoneditor.cpp index c66e1fe393f..629e326e2f8 100644 --- a/src/plugins/pythoneditor/pythoneditor.cpp +++ b/src/plugins/pythoneditor/pythoneditor.cpp @@ -74,11 +74,6 @@ Core::Id PythonEditor::id() const return Core::Id(Constants::C_PYTHONEDITOR_ID); } -Core::Id PythonEditor::preferredModeType() const -{ - return Core::Id(); -} - bool PythonEditor::open(QString *errorString, const QString &fileName, const QString &realFileName) diff --git a/src/plugins/pythoneditor/pythoneditor.h b/src/plugins/pythoneditor/pythoneditor.h index 1ca117458fb..435fb08560d 100644 --- a/src/plugins/pythoneditor/pythoneditor.h +++ b/src/plugins/pythoneditor/pythoneditor.h @@ -50,7 +50,6 @@ public: Core::Id id() const; bool isTemporary() const { return false; } - Core::Id preferredModeType() const; /** Opens file for editing, actual work performed by base class diff --git a/src/plugins/pythoneditor/pythoneditorwidget.cpp b/src/plugins/pythoneditor/pythoneditorwidget.cpp index ddd6fe9da4a..15010ffa52a 100644 --- a/src/plugins/pythoneditor/pythoneditorwidget.cpp +++ b/src/plugins/pythoneditor/pythoneditorwidget.cpp @@ -49,9 +49,9 @@ namespace PythonEditor { EditorWidget::EditorWidget(QWidget *parent) :TextEditor::BaseTextEditorWidget(parent) { - m_commentDefinition.setMultiLineStart(QString()); - m_commentDefinition.setMultiLineEnd(QString()); - m_commentDefinition.setSingleLine(QLatin1String("#")); + m_commentDefinition.multiLineStart.clear(); + m_commentDefinition.multiLineEnd.clear(); + m_commentDefinition.singleLine = QLatin1Char('#'); setParenthesesMatchingEnabled(true); setMarksVisible(true); diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index 0f3da1fdf65..2a1126b3bdf 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -65,6 +65,7 @@ QbsBuildStep::QbsBuildStep(ProjectExplorer::BuildStepList *bsl) : m_job(0), m_parser(0) { setDisplayName(tr("Qbs Build")); + setQbsConfiguration(QVariantMap()); } QbsBuildStep::QbsBuildStep(ProjectExplorer::BuildStepList *bsl, const QbsBuildStep *other) : @@ -281,6 +282,7 @@ void QbsBuildStep::handleProcessResultReport(const qbs::ProcessResult &result) m_parser->stdOutput(line); addOutput(line, NormalOutput); } + m_parser->flush(); } void QbsBuildStep::createTaskAndOutput(ProjectExplorer::Task::TaskType type, const QString &message, @@ -379,13 +381,13 @@ void QbsBuildStepConfigWidget::updateState() const int idx = (buildVariant == QLatin1String(Constants::QBS_VARIANT_DEBUG)) ? 0 : 1; m_ui->buildVariantComboBox->setCurrentIndex(idx); - QString command = QLatin1String("qbs "); + QString command = QLatin1String("qbs build "); if (m_step->dryRun()) command += QLatin1String("--dry-run "); if (m_step->keepGoing()) command += QLatin1String("--keep-going "); command += QString::fromLatin1("--jobs %1 ").arg(m_step->maxJobs()); - command += QString::fromLatin1("build profile:%1 %2").arg(m_step->profile(), buildVariant); + command += QString::fromLatin1("profile:%1 %2").arg(m_step->profile(), buildVariant); QString summary = tr("<b>Qbs:</b> %1").arg(command); if (m_summary != summary) { diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp index 2d84008a9e2..38e8ea749eb 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp @@ -93,12 +93,15 @@ QbsManager::QbsManager(Internal::QbsProjectManagerPlugin *plugin) : int level = qbs::LoggerWarning; const QString levelEnv = QString::fromLocal8Bit(qgetenv("QBS_LOG_LEVEL")); if (!levelEnv.isEmpty()) { - int tmp = levelEnv.toInt(); - if (tmp < static_cast<int>(qbs::LoggerMinLevel)) - tmp = static_cast<int>(qbs::LoggerMinLevel); - if (tmp > static_cast<int>(qbs::LoggerMaxLevel)) - tmp = static_cast<int>(qbs::LoggerMaxLevel); - level = tmp; + bool ok = false; + int tmp = levelEnv.toInt(&ok); + if (ok) { + if (tmp < static_cast<int>(qbs::LoggerMinLevel)) + tmp = static_cast<int>(qbs::LoggerMinLevel); + if (tmp > static_cast<int>(qbs::LoggerMaxLevel)) + tmp = static_cast<int>(qbs::LoggerMaxLevel); + level = tmp; + } } m_logSink->setLogLevel(static_cast<qbs::LoggerLevel>(level)); } @@ -115,9 +118,13 @@ QString QbsManager::mimeType() const ProjectExplorer::Project *QbsManager::openProject(const QString &fileName, QString *errorString) { - Q_UNUSED(errorString); + if (!QFileInfo(fileName).isFile()) { + if (errorString) + *errorString = tr("Failed opening project '%1': Project is not a file") + .arg(fileName); + return 0; + } - // FIXME: This is way too simplistic! return new Internal::QbsProject(this, fileName); } diff --git a/src/plugins/qmldesigner/components/formeditor/transform.png b/src/plugins/qmldesigner/components/formeditor/transform.png Binary files differindex e9e7662b3a3..65483921774 100644 --- a/src/plugins/qmldesigner/components/formeditor/transform.png +++ b/src/plugins/qmldesigner/components/formeditor/transform.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/busyindicator.png b/src/plugins/qmldesigner/componentsplugin/images/busyindicator.png Binary files differindex 89d0283f260..3cf3c11ddbe 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/busyindicator.png +++ b/src/plugins/qmldesigner/componentsplugin/images/busyindicator.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/busyindicator16.png b/src/plugins/qmldesigner/componentsplugin/images/busyindicator16.png Binary files differindex 7e3b2d31587..15e7f442a6b 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/busyindicator16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/busyindicator16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/busyindicatora.png b/src/plugins/qmldesigner/componentsplugin/images/busyindicatora.png Binary files differindex 433f4d426b9..4cd7ad590a4 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/busyindicatora.png +++ b/src/plugins/qmldesigner/componentsplugin/images/busyindicatora.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/busyindicatora16.png b/src/plugins/qmldesigner/componentsplugin/images/busyindicatora16.png Binary files differindex 82de5b0a1bc..2e6083c1c81 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/busyindicatora16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/busyindicatora16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/button.png b/src/plugins/qmldesigner/componentsplugin/images/button.png Binary files differindex 828af210acd..96e45e7233a 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/button.png +++ b/src/plugins/qmldesigner/componentsplugin/images/button.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/button16.png b/src/plugins/qmldesigner/componentsplugin/images/button16.png Binary files differindex 8d95760b27a..5f550f968e5 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/button16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/button16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn.png b/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn.png Binary files differindex 17fe6ca5335..b58d81bc0e6 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn.png +++ b/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn16.png b/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn16.png Binary files differindex 0f9ac406529..9fb324bf8af 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttonrow.png b/src/plugins/qmldesigner/componentsplugin/images/buttonrow.png Binary files differindex 9cb606e6111..298be98fb43 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/buttonrow.png +++ b/src/plugins/qmldesigner/componentsplugin/images/buttonrow.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttonrow16.png b/src/plugins/qmldesigner/componentsplugin/images/buttonrow16.png Binary files differindex 82804f3c9cb..0966da85595 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/buttonrow16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/buttonrow16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/checkbox.png b/src/plugins/qmldesigner/componentsplugin/images/checkbox.png Binary files differindex f0b569f88c9..586167f65af 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/checkbox.png +++ b/src/plugins/qmldesigner/componentsplugin/images/checkbox.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/checkbox16.png b/src/plugins/qmldesigner/componentsplugin/images/checkbox16.png Binary files differindex 36387db78c5..569ec6e2f6e 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/checkbox16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/checkbox16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/combobox.png b/src/plugins/qmldesigner/componentsplugin/images/combobox.png Binary files differindex 3fd9876ada4..ba363fd3ce5 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/combobox.png +++ b/src/plugins/qmldesigner/componentsplugin/images/combobox.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/combobox16.png b/src/plugins/qmldesigner/componentsplugin/images/combobox16.png Binary files differindex 602b28229eb..09d74c8c20d 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/combobox16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/combobox16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/progressbar.png b/src/plugins/qmldesigner/componentsplugin/images/progressbar.png Binary files differindex d5382b40c65..b9c3ebf2448 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/progressbar.png +++ b/src/plugins/qmldesigner/componentsplugin/images/progressbar.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/progressbar16.png b/src/plugins/qmldesigner/componentsplugin/images/progressbar16.png Binary files differindex c4295f23442..77ce17a4783 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/progressbar16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/progressbar16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/radiobutton.png b/src/plugins/qmldesigner/componentsplugin/images/radiobutton.png Binary files differindex a4d82fa6e52..2b9aa4793b4 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/radiobutton.png +++ b/src/plugins/qmldesigner/componentsplugin/images/radiobutton.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/radiobutton16.png b/src/plugins/qmldesigner/componentsplugin/images/radiobutton16.png Binary files differindex 96670207ac2..923297a3ff4 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/radiobutton16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/radiobutton16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/slider.png b/src/plugins/qmldesigner/componentsplugin/images/slider.png Binary files differindex 746ed519323..d62d0b7af9d 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/slider.png +++ b/src/plugins/qmldesigner/componentsplugin/images/slider.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/slider16.png b/src/plugins/qmldesigner/componentsplugin/images/slider16.png Binary files differindex 10c4928b3ce..104f648fe19 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/slider16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/slider16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/sliderh.png b/src/plugins/qmldesigner/componentsplugin/images/sliderh.png Binary files differindex 87cd55678f1..c0bb24596db 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/sliderh.png +++ b/src/plugins/qmldesigner/componentsplugin/images/sliderh.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/sliderh16.png b/src/plugins/qmldesigner/componentsplugin/images/sliderh16.png Binary files differindex c4199113364..94df1a03375 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/sliderh16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/sliderh16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/tabbutton.png b/src/plugins/qmldesigner/componentsplugin/images/tabbutton.png Binary files differindex d9f5fdb3f94..28cca263260 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/tabbutton.png +++ b/src/plugins/qmldesigner/componentsplugin/images/tabbutton.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/tabbutton16.png b/src/plugins/qmldesigner/componentsplugin/images/tabbutton16.png Binary files differindex 8e279cff657..aee09a0a344 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/tabbutton16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/tabbutton16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/textarea.png b/src/plugins/qmldesigner/componentsplugin/images/textarea.png Binary files differindex 86f2969d001..388a5c5786b 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/textarea.png +++ b/src/plugins/qmldesigner/componentsplugin/images/textarea.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/textarea16.png b/src/plugins/qmldesigner/componentsplugin/images/textarea16.png Binary files differindex 899a4bca2ee..736f6468039 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/textarea16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/textarea16.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/textfield.png b/src/plugins/qmldesigner/componentsplugin/images/textfield.png Binary files differindex b0f13da50d2..a5c77b3a720 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/textfield.png +++ b/src/plugins/qmldesigner/componentsplugin/images/textfield.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/textfield16.png b/src/plugins/qmldesigner/componentsplugin/images/textfield16.png Binary files differindex 7feb8c71584..d3a8a52bd11 100644 --- a/src/plugins/qmldesigner/componentsplugin/images/textfield16.png +++ b/src/plugins/qmldesigner/componentsplugin/images/textfield16.png diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 7fe45f1b27b..50120f9fa4f 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -793,7 +793,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH return false; } - if (!warnings.isEmpty() && differenceHandler.isValidator()) { + if (!warnings.isEmpty() && differenceHandler.isValidator() && !m_rewriterView->inErrorState()) { QString title = QCoreApplication::translate("QmlDesigner::TextToModelMerger", "This .qml file contains features " "which are not supported by Qt Quick Designer"); diff --git a/src/plugins/qmljseditor/qmljseditor.qbs b/src/plugins/qmljseditor/qmljseditor.qbs index 3e140130da9..8ee25012060 100644 --- a/src/plugins/qmljseditor/qmljseditor.qbs +++ b/src/plugins/qmljseditor/qmljseditor.qbs @@ -85,7 +85,7 @@ QtcPlugin { "images/qmlfile.png", ] - ProductModule { + Export { Depends { name: "QmlJSTools" } } } diff --git a/src/plugins/qmljstools/qmljstools.qbs b/src/plugins/qmljstools/qmljstools.qbs index d787c842b1c..3848531bd52 100644 --- a/src/plugins/qmljstools/qmljstools.qbs +++ b/src/plugins/qmljstools/qmljstools.qbs @@ -78,7 +78,7 @@ QtcPlugin { files: ["qmljstools_test.cpp"] } - ProductModule { + Export { Depends { name: "CppTools" } Depends { name: "QmlDebug" } } diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanager.cpp b/src/plugins/qmlprojectmanager/qmlprojectmanager.cpp index 233a0095213..210e6436938 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectmanager.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectmanager.cpp @@ -49,22 +49,14 @@ QString Manager::mimeType() const ProjectExplorer::Project *Manager::openProject(const QString &fileName, QString *errorString) { - QFileInfo fileInfo(fileName); - ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance(); - - foreach (ProjectExplorer::Project *pi, projectExplorer->session()->projects()) { - if (fileName == pi->document()->fileName()) { - if (errorString) - *errorString = tr("Failed opening project '%1': Project already open") .arg(QDir::toNativeSeparators(fileName)); - return 0; - } + if (!QFileInfo(fileName).isFile()) { + if (errorString) + *errorString = tr("Failed opening project '%1': Project is not a file") + .arg(fileName); + return 0; } - if (fileInfo.isFile()) - return new QmlProject(this, fileName); - - *errorString = tr("Failed opening project '%1': Project file is not a file").arg(QDir::toNativeSeparators(fileName)); - return 0; + return new QmlProject(this, fileName); } void Manager::registerProject(QmlProject *project) diff --git a/src/plugins/qnx/bardescriptoreditor.cpp b/src/plugins/qnx/bardescriptoreditor.cpp index e6f2b809961..a33dab4a31d 100644 --- a/src/plugins/qnx/bardescriptoreditor.cpp +++ b/src/plugins/qnx/bardescriptoreditor.cpp @@ -118,28 +118,6 @@ void BarDescriptorEditor::setDisplayName(const QString &title) emit changed(); } -bool BarDescriptorEditor::duplicateSupported() const -{ - return false; -} - -Core::IEditor *BarDescriptorEditor::duplicate(QWidget *parent) -{ - Q_UNUSED(parent); - return 0; -} - -QByteArray BarDescriptorEditor::saveState() const -{ - return QByteArray(); // Not supported -} - -bool BarDescriptorEditor::restoreState(const QByteArray &state) -{ - Q_UNUSED(state); - return false; // Not supported -} - bool BarDescriptorEditor::isTemporary() const { return false; diff --git a/src/plugins/qnx/bardescriptoreditor.h b/src/plugins/qnx/bardescriptoreditor.h index 9697f69aa7f..b8bd6bfd9f7 100644 --- a/src/plugins/qnx/bardescriptoreditor.h +++ b/src/plugins/qnx/bardescriptoreditor.h @@ -69,15 +69,7 @@ public: Core::Id id() const; QString displayName() const; void setDisplayName(const QString &title); - - bool duplicateSupported() const; - Core::IEditor *duplicate(QWidget *parent); - - QByteArray saveState() const; - bool restoreState(const QByteArray &state); - bool isTemporary() const; - QWidget *toolBar(); EditorPage activePage() const; diff --git a/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.cpp b/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.cpp index bf2342bb35b..910a145e742 100644 --- a/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.cpp +++ b/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.cpp @@ -138,17 +138,5 @@ bool CustomWidgetPluginWizardPage::isComplete() const return m_complete; } -void CustomWidgetPluginWizardPage::changeEvent(QEvent *e) -{ - QWizardPage::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - m_ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.h b/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.h index a807be36c11..1605b2a507c 100644 --- a/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.h +++ b/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetpluginwizardpage.h @@ -45,8 +45,10 @@ namespace Ui { class CustomWidgetPluginWizardPage; } -class CustomWidgetPluginWizardPage : public QWizardPage { +class CustomWidgetPluginWizardPage : public QWizardPage +{ Q_OBJECT + public: explicit CustomWidgetPluginWizardPage(QWidget *parent = 0); virtual ~CustomWidgetPluginWizardPage(); @@ -61,9 +63,6 @@ public: // Fills the plugin fields, excluding widget list. QSharedPointer<PluginOptions> basicPluginOptions() const; -protected: - void changeEvent(QEvent *e); - private slots: void on_collectionClassEdit_textChanged(); void on_collectionHeaderEdit_textChanged(); @@ -82,4 +81,5 @@ private: } // namespace Internal } // namespace Qt4ProjectManager + #endif // CUSTOMWIDGETPLUGINWIZARDPAGE_H diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp index c9d3f0a5995..0ed797d372e 100644 --- a/src/plugins/qt4projectmanager/profileeditor.cpp +++ b/src/plugins/qt4projectmanager/profileeditor.cpp @@ -85,7 +85,7 @@ ProFileEditorWidget::ProFileEditorWidget(QWidget *parent, ProFileEditorFactory * baseTextDocument()->setSyntaxHighlighter(new ProFileHighlighter); m_commentDefinition.clearCommentStyles(); - m_commentDefinition.setSingleLine(QString(QLatin1Char('#'))); + m_commentDefinition.singleLine = QLatin1Char('#'); } void ProFileEditorWidget::unCommentSelection() diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index be93686f5a2..33926d23636 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -176,28 +176,14 @@ QString Qt4Manager::mimeType() const ProjectExplorer::Project *Qt4Manager::openProject(const QString &fileName, QString *errorString) { - // TODO Make all file paths relative & remove this hack - // We convert the path to an absolute one here because qt4project.cpp - // && profileevaluator use absolute/canonical file paths all over the place - // Correct fix would be to remove these calls ... - QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath(); - - if (canonicalFilePath.isEmpty()) { + if (!QFileInfo(fileName).isFile()) { if (errorString) - *errorString = tr("Failed opening project '%1': Project file does not exist").arg(QDir::toNativeSeparators(fileName)); + *errorString = tr("Failed opening project '%1': Project is not a file") + .arg(fileName); return 0; } - foreach (ProjectExplorer::Project *pi, projectExplorer()->session()->projects()) { - if (canonicalFilePath == pi->document()->fileName()) { - if (errorString) - *errorString = tr("Failed opening project '%1': Project already open").arg(QDir::toNativeSeparators(canonicalFilePath)); - return 0; - } - } - - Qt4Project *pro = new Qt4Project(this, canonicalFilePath); - return pro; + return new Qt4Project(this, fileName); } ProjectExplorer::ProjectExplorerPlugin *Qt4Manager::projectExplorer() const diff --git a/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp b/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp index c9d2de1af8e..f1f211370b5 100644 --- a/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp +++ b/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp @@ -133,17 +133,5 @@ void TestWizardPage::slotUpdateValid() } } -void TestWizardPage::changeEvent(QEvent *e) -{ - QWizardPage::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/wizards/testwizardpage.h b/src/plugins/qt4projectmanager/wizards/testwizardpage.h index 960043e8467..69b0ae77b4c 100644 --- a/src/plugins/qt4projectmanager/wizards/testwizardpage.h +++ b/src/plugins/qt4projectmanager/wizards/testwizardpage.h @@ -44,8 +44,10 @@ struct TestWizardParameters; /* TestWizardPage: Let's the user input test class name, slot * (for which a CLassNameValidatingLineEdit is abused) and file name. */ -class TestWizardPage : public QWizardPage { +class TestWizardPage : public QWizardPage +{ Q_OBJECT + public: explicit TestWizardPage(QWidget *parent = 0); ~TestWizardPage(); @@ -62,18 +64,15 @@ private slots: void slotFileNameEdited(); void slotUpdateValid(); -protected: - void changeEvent(QEvent *e); - private: const QString m_sourceSuffix; const bool m_lowerCaseFileNames; Ui::TestWizardPage *ui; bool m_fileNameEdited; bool m_valid; - }; } // namespace Internal } // namespace Qt4ProjectManager + #endif // TESTWIZARDPAGE_H diff --git a/src/plugins/qtsupport/qtsupport.qbs b/src/plugins/qtsupport/qtsupport.qbs index df1b1e5fd8a..841c171015b 100644 --- a/src/plugins/qtsupport/qtsupport.qbs +++ b/src/plugins/qtsupport/qtsupport.qbs @@ -109,8 +109,7 @@ QtcPlugin { "QtSupport.mimetypes.xml", ] - - ProductModule { + Export { Depends { name: "cpp" } cpp.includePaths: "../../shared" cpp.defines: [ diff --git a/src/plugins/remotelinux/remotelinux.qbs b/src/plugins/remotelinux/remotelinux.qbs index 16cd3eaa8ff..36336e6d65a 100644 --- a/src/plugins/remotelinux/remotelinux.qbs +++ b/src/plugins/remotelinux/remotelinux.qbs @@ -113,7 +113,7 @@ QtcPlugin { "images/embeddedtarget.png", ] - ProductModule { + Export { Depends { name: "Core" } Depends { name: "QtcSsh" } } diff --git a/src/plugins/resourceeditor/resourceeditorw.h b/src/plugins/resourceeditor/resourceeditorw.h index 4d7026286fe..22d71f69c88 100644 --- a/src/plugins/resourceeditor/resourceeditorw.h +++ b/src/plugins/resourceeditor/resourceeditorw.h @@ -83,15 +83,11 @@ public: // IEditor bool createNew(const QString &contents); bool open(QString *errorString, const QString &fileName, const QString &realFileName); - bool duplicateSupported() const { return false; } - Core::IEditor *duplicate(QWidget *) { return 0; } Core::IDocument *document() { return m_resourceDocument; } Core::Id id() const; QString displayName() const { return m_displayName; } void setDisplayName(const QString &title) { m_displayName = title; emit changed(); } QWidget *toolBar(); - QByteArray saveState() const { return QByteArray(); } - bool restoreState(const QByteArray &/*state*/) { return true; } void setSuggestedFileName(const QString &fileName); bool isTemporary() const { return false; } diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 3e3da710ac9..2b3f5eef3ab 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -104,39 +104,38 @@ \internal */ -using namespace TextEditor; -using namespace TextEditor::Internal; using namespace Utils; namespace TextEditor { namespace Internal { -class TextEditExtraArea : public QWidget { - BaseTextEditorWidget *textEdit; +class TextEditExtraArea : public QWidget +{ public: - TextEditExtraArea(BaseTextEditorWidget *edit):QWidget(edit) { + TextEditExtraArea(BaseTextEditorWidget *edit) + : QWidget(edit) + { textEdit = edit; setAutoFillBackground(true); } -public: +protected: QSize sizeHint() const { return QSize(textEdit->extraAreaWidth(), 0); } -protected: - void paintEvent(QPaintEvent *event){ + void paintEvent(QPaintEvent *event) { textEdit->extraAreaPaintEvent(event); } - void mousePressEvent(QMouseEvent *event){ + void mousePressEvent(QMouseEvent *event) { textEdit->extraAreaMouseEvent(event); } - void mouseMoveEvent(QMouseEvent *event){ + void mouseMoveEvent(QMouseEvent *event) { textEdit->extraAreaMouseEvent(event); } - void mouseReleaseEvent(QMouseEvent *event){ + void mouseReleaseEvent(QMouseEvent *event) { textEdit->extraAreaMouseEvent(event); } - void leaveEvent(QEvent *event){ + void leaveEvent(QEvent *event) { textEdit->extraAreaLeaveEvent(event); } void contextMenuEvent(QContextMenuEvent *event) { @@ -146,13 +145,17 @@ protected: void wheelEvent(QWheelEvent *event) { QCoreApplication::sendEvent(textEdit->viewport(), event); } + +private: + BaseTextEditorWidget *textEdit; }; } // namespace Internal -} // namespace TextEditor + +using namespace Internal; Core::IEditor *BaseTextEditorWidget::openEditorAt(const QString &fileName, int line, int column, - const Core::Id &editorKind, + Core::Id editorKind, Core::EditorManager::OpenEditorFlags flags, bool *newEditor) { @@ -294,7 +297,7 @@ void BaseTextEditorWidget::setMimeType(const QString &mt) void BaseTextEditorWidget::print(QPrinter *printer) { - const bool oldFullPage = printer->fullPage(); + const bool oldFullPage = printer->fullPage(); printer->setFullPage(true); QPrintDialog *dlg = new QPrintDialog(printer, this); dlg->setWindowTitle(tr("Print Document")); @@ -307,7 +310,7 @@ void BaseTextEditorWidget::print(QPrinter *printer) static int foldBoxWidth(const QFontMetrics &fm) { const int lineSpacing = fm.lineSpacing(); - return lineSpacing + lineSpacing%2 + 1; + return lineSpacing + lineSpacing % 2 + 1; } static void printPage(int index, QPainter *painter, const QTextDocument *doc, @@ -381,7 +384,7 @@ void BaseTextEditorWidgetPrivate::print(QPrinter *printer) QList<QTextLayout::FormatRange> formatList = srcBlock.layout()->additionalFormats(); if (backgroundIsDark) { // adjust syntax highlighting colors for better contrast - for (int i = formatList.count() - 1; i >=0; --i) { + for (int i = formatList.count() - 1; i >= 0; --i) { QTextCharFormat &format = formatList[i].format; if (format.background().color() == background) { QBrush brush = format.foreground(); @@ -423,7 +426,7 @@ void BaseTextEditorWidgetPrivate::print(QPrinter *printer) int docCopies; int pageCopies; - if (printer->collateCopies() == true){ + if (printer->collateCopies() == true) { docCopies = 1; pageCopies = printer->numCopies(); } else { @@ -631,8 +634,6 @@ const Utils::ChangeSet &BaseTextEditorWidget::changeSet() const void BaseTextEditorWidget::setChangeSet(const Utils::ChangeSet &changeSet) { - using namespace Utils; - d->m_changeSet = changeSet; foreach (const ChangeSet::EditOp &op, changeSet.operationList()) { @@ -1057,7 +1058,6 @@ void BaseTextEditorWidget::uppercaseSelection() transformSelection(&QString::toUpper); } - void BaseTextEditorWidget::lowercaseSelection() { transformSelection(&QString::toLower); @@ -1173,18 +1173,18 @@ void BaseTextEditorWidget::moveLineUpDown(bool up) d->m_refactorOverlay->setMarkers(nonAffectedMarkers + affectedMarkers); bool shouldReindent = true; - const Utils::CommentDefinition* commentDefinition(editor()->commentDefinition()); + const CommentDefinition *commentDefinition(editor()->commentDefinition()); if (commentDefinition) { QString trimmedText(text.trimmed()); if (commentDefinition->hasSingleLineStyle()) { - if (trimmedText.startsWith(commentDefinition->singleLine())) + if (trimmedText.startsWith(commentDefinition->singleLine)) shouldReindent = false; } if (shouldReindent && commentDefinition->hasMultiLineStyle()) { // Don't have any single line comments; try multi line. - if (trimmedText.startsWith(commentDefinition->multiLineStart()) - && trimmedText.endsWith(commentDefinition->multiLineEnd())) { + if (trimmedText.startsWith(commentDefinition->multiLineStart) + && trimmedText.endsWith(commentDefinition->multiLineEnd)) { shouldReindent = false; } } @@ -2825,19 +2825,6 @@ void BaseTextEditorWidgetPrivate::highlightSearchResults(const QTextBlock &block } } - -namespace TextEditor { - namespace Internal { - struct BlockSelectionData { - int selectionIndex; - int selectionStart; - int selectionEnd; - int firstColumn; - int lastColumn; - }; - } -} - void BaseTextEditorWidgetPrivate::clearBlockSelection() { if (m_inBlockSelectionMode) { @@ -6281,9 +6268,9 @@ void BaseTextEditorWidget::appendStandardContextMenuActions(QMenu *menu) BaseTextEditor::BaseTextEditor(BaseTextEditorWidget *editor) - : e(editor) + : m_editorWidget(editor) { - setWidget(e); + setWidget(m_editorWidget); using namespace Find; Aggregation::Aggregate *aggregate = new Aggregation::Aggregate; BaseTextFind *baseTextFind = new BaseTextFind(editor); @@ -6318,7 +6305,7 @@ BaseTextEditor::BaseTextEditor(BaseTextEditorWidget *editor) BaseTextEditor::~BaseTextEditor() { delete m_toolBar; - delete e; + delete m_editorWidget; } QWidget *BaseTextEditor::toolBar() @@ -6343,74 +6330,74 @@ void BaseTextEditor::insertExtraToolBarWidget(BaseTextEditor::Side side, int BaseTextEditor::currentLine() const { - return e->textCursor().blockNumber() + 1; + return m_editorWidget->textCursor().blockNumber() + 1; } int BaseTextEditor::currentColumn() const { - QTextCursor cursor = e->textCursor(); + QTextCursor cursor = m_editorWidget->textCursor(); return cursor.position() - cursor.block().position() + 1; } int BaseTextEditor::columnCount() const { - return e->columnCount(); + return m_editorWidget->columnCount(); } int BaseTextEditor::rowCount() const { - return e->rowCount(); + return m_editorWidget->rowCount(); } QRect BaseTextEditor::cursorRect(int pos) const { - QTextCursor tc = e->textCursor(); + QTextCursor tc = m_editorWidget->textCursor(); if (pos >= 0) tc.setPosition(pos); - QRect result = e->cursorRect(tc); - result.moveTo(e->viewport()->mapToGlobal(result.topLeft())); + QRect result = m_editorWidget->cursorRect(tc); + result.moveTo(m_editorWidget->viewport()->mapToGlobal(result.topLeft())); return result; } QString BaseTextEditor::selectedText() const { - if (e->textCursor().hasSelection()) - return e->textCursor().selectedText(); + if (m_editorWidget->textCursor().hasSelection()) + return m_editorWidget->textCursor().selectedText(); return QString(); } void BaseTextEditor::remove(int length) { - QTextCursor tc = e->textCursor(); + QTextCursor tc = m_editorWidget->textCursor(); tc.setPosition(tc.position() + length, QTextCursor::KeepAnchor); tc.removeSelectedText(); } void BaseTextEditor::insert(const QString &string) { - QTextCursor tc = e->textCursor(); + QTextCursor tc = m_editorWidget->textCursor(); tc.insertText(string); } void BaseTextEditor::replace(int length, const QString &string) { - QTextCursor tc = e->textCursor(); + QTextCursor tc = m_editorWidget->textCursor(); tc.setPosition(tc.position() + length, QTextCursor::KeepAnchor); tc.insertText(string); } void BaseTextEditor::setCursorPosition(int pos) { - QTextCursor tc = e->textCursor(); + QTextCursor tc = m_editorWidget->textCursor(); tc.setPosition(pos); - e->setTextCursor(tc); + m_editorWidget->setTextCursor(tc); } void BaseTextEditor::select(int toPos) { - QTextCursor tc = e->textCursor(); + QTextCursor tc = m_editorWidget->textCursor(); tc.setPosition(toPos, QTextCursor::KeepAnchor); - e->setTextCursor(tc); + m_editorWidget->setTextCursor(tc); } const CommentDefinition *BaseTextEditor::commentDefinition() const @@ -6420,16 +6407,16 @@ const CommentDefinition *BaseTextEditor::commentDefinition() const void BaseTextEditor::updateCursorPosition() { - const QTextCursor cursor = e->textCursor(); + const QTextCursor cursor = m_editorWidget->textCursor(); const QTextBlock block = cursor.block(); const int line = block.blockNumber() + 1; const int column = cursor.position() - block.position(); - m_cursorPositionLabel->setText(tr("Line: %1, Col: %2").arg(line).arg(e->tabSettings().columnAt(block.text(), column)+1), + m_cursorPositionLabel->setText(tr("Line: %1, Col: %2").arg(line).arg(m_editorWidget->tabSettings().columnAt(block.text(), column)+1), tr("Line: 9999, Col: 999")); m_contextHelpId.clear(); if (!block.isVisible()) - e->ensureCursorVisible(); + m_editorWidget->ensureCursorVisible(); } @@ -6456,8 +6443,8 @@ void BaseTextEditor::setFileEncodingLabelText(const QString &text) QString BaseTextEditor::contextHelpId() const { if (m_contextHelpId.isEmpty()) - emit const_cast<BaseTextEditor*>(this)->contextHelpIdRequested(e->editor(), - e->textCursor().position()); + emit const_cast<BaseTextEditor*>(this)->contextHelpIdRequested(m_editorWidget->editor(), + m_editorWidget->textCursor().position()); return m_contextHelpId; } @@ -6754,3 +6741,10 @@ QString TextEditor::BaseTextEditorWidget::foldReplacementText(const QTextBlock & { return QLatin1String("..."); } + +bool BaseTextEditor::open(QString *errorString, const QString &fileName, const QString &realFileName) +{ + return m_editorWidget->open(errorString, fileName, realFileName); +} + +} // namespace TextEditor diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index 9fce8894931..c109bc43960 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -126,12 +126,13 @@ class TEXTEDITOR_EXPORT BaseTextEditorWidget : public QPlainTextEdit Q_OBJECT Q_PROPERTY(int verticalBlockSelectionFirstColumn READ verticalBlockSelectionFirstColumn) Q_PROPERTY(int verticalBlockSelectionLastColumn READ verticalBlockSelectionLastColumn) + public: BaseTextEditorWidget(QWidget *parent); ~BaseTextEditorWidget(); static Core::IEditor *openEditorAt(const QString &fileName, int line, int column = 0, - const Core::Id &editorId = Core::Id(), + Core::Id editorId = Core::Id(), Core::EditorManager::OpenEditorFlags flags = Core::EditorManager::IgnoreNavigationHistory, bool *newEditor = 0); @@ -146,13 +147,10 @@ public: bool restoreState(const QByteArray &state); QString displayName() const; - // ITextEditor - void gotoLine(int line, int column = 0); - int position( - ITextEditor::PositionOperation posOp = ITextEditor::Current - , int at = -1) const; + int position(ITextEditor::PositionOperation posOp = ITextEditor::Current, + int at = -1) const; void convertPosition(int pos, int *line, int *column) const; BaseTextEditor *editor() const; @@ -164,7 +162,7 @@ public: QString mimeType() const; virtual void setMimeType(const QString &mt); - void appendMenuActionsFromContext(QMenu *menu, const Core::Id menuContextId); + void appendMenuActionsFromContext(QMenu *menu, Core::Id menuContextId); void appendStandardContextMenuActions(QMenu *menu); // Works only in conjunction with a syntax highlighter that puts @@ -217,7 +215,7 @@ public: int columnCount() const; int rowCount() const; - void setActionHack(QObject *); + void setActionHack(QObject *hack); QObject *actionHack() const; void setTextCodec(QTextCodec *codec); @@ -617,17 +615,17 @@ public: ~BaseTextEditor(); friend class BaseTextEditorWidget; - BaseTextEditorWidget *editorWidget() const { return e; } + BaseTextEditorWidget *editorWidget() const { return m_editorWidget; } // IEditor - Core::IDocument * document() { return e->editorDocument(); } - bool createNew(const QString &contents) { return e->createNew(contents); } - bool open(QString *errorString, const QString &fileName, const QString &realFileName) { return e->open(errorString, fileName, realFileName); } - QString displayName() const { return e->displayName(); } - void setDisplayName(const QString &title) { e->setDisplayName(title); emit changed(); } - - QByteArray saveState() const { return e->saveState(); } - bool restoreState(const QByteArray &state) { return e->restoreState(state); } + Core::IDocument *document() { return m_editorWidget->editorDocument(); } + bool createNew(const QString &contents) { return m_editorWidget->createNew(contents); } + bool open(QString *errorString, const QString &fileName, const QString &realFileName); + QString displayName() const { return m_editorWidget->displayName(); } + void setDisplayName(const QString &title) { m_editorWidget->setDisplayName(title); emit changed(); } + + QByteArray saveState() const { return m_editorWidget->saveState(); } + bool restoreState(const QByteArray &state) { return m_editorWidget->restoreState(state); } QWidget *toolBar(); enum Side { Left, Right }; @@ -636,25 +634,24 @@ public: // ITextEditor int currentLine() const; int currentColumn() const; - void gotoLine(int line, int column = 0) { e->gotoLine(line, column); } + void gotoLine(int line, int column = 0) { m_editorWidget->gotoLine(line, column); } int columnCount() const; int rowCount() const; int position(PositionOperation posOp = Current, int at = -1) const - { return e->position(posOp, at); } + { return m_editorWidget->position(posOp, at); } void convertPosition(int pos, int *line, int *column) const - { e->convertPosition(pos, line, column); } + { m_editorWidget->convertPosition(pos, line, column); } QRect cursorRect(int pos = -1) const; QString selectedText() const; - inline ITextMarkable *markableInterface() { return e->markableInterface(); } + ITextMarkable *markableInterface() { return m_editorWidget->markableInterface(); } QString contextHelpId() const; // from IContext - inline void setTextCodec(QTextCodec *codec, TextCodecReason = TextCodecOtherReason) { e->setTextCodec(codec); } - inline QTextCodec *textCodec() const { return e->textCodec(); } - + void setTextCodec(QTextCodec *codec, TextCodecReason = TextCodecOtherReason) { m_editorWidget->setTextCodec(codec); } + QTextCodec *textCodec() const { return m_editorWidget->textCodec(); } // ITextEditor void remove(int length); @@ -662,7 +659,7 @@ public: void replace(int length, const QString &string); void setCursorPosition(int pos); void select(int toPos); - const Utils::CommentDefinition* commentDefinition() const; + const Utils::CommentDefinition *commentDefinition() const; private slots: void updateCursorPosition(); @@ -671,7 +668,9 @@ private slots: void setFileEncodingLabelText(const QString &text); private: - BaseTextEditorWidget *e; + // Note: This is always a copy of IContext::m_widget. + BaseTextEditorWidget *m_editorWidget; + QToolBar *m_toolBar; QWidget *m_stretchWidget; QAction *m_cursorPositionLabelAction; diff --git a/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.cpp b/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.cpp index 2267f4e5484..6c1f3454ddf 100644 --- a/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.cpp +++ b/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.cpp @@ -136,15 +136,3 @@ void ManageDefinitionsDialog::invertSelection() ui.definitionsTable->selectionModel()->select(itemSelection, QItemSelectionModel::Toggle); ui.definitionsTable->setFocus(); } - -void ManageDefinitionsDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui.retranslateUi(this); - break; - default: - break; - } -} diff --git a/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.h b/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.h index af24f12b81e..054c4eb7c77 100644 --- a/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.h +++ b/src/plugins/texteditor/generichighlighter/managedefinitionsdialog.h @@ -41,14 +41,12 @@ namespace Internal { class ManageDefinitionsDialog : public QDialog { Q_OBJECT + public: explicit ManageDefinitionsDialog(const QList<HighlightDefinitionMetaData> &metaDataList, const QString &path, QWidget *parent = 0); -protected: - void changeEvent(QEvent *e); - private slots: void downloadDefinitions(); void selectAll(); diff --git a/src/plugins/texteditor/plaintexteditor.cpp b/src/plugins/texteditor/plaintexteditor.cpp index c0a8982208c..322113738f4 100644 --- a/src/plugins/texteditor/plaintexteditor.cpp +++ b/src/plugins/texteditor/plaintexteditor.cpp @@ -167,10 +167,10 @@ void PlainTextEditorWidget::configure(const Core::MimeType &mimeType) if (!definition.isNull() && definition->isValid()) { highlighter->setDefaultContext(definition->initialContext()); - m_commentDefinition.setAfterWhiteSpaces(definition->isCommentAfterWhiteSpaces()); - m_commentDefinition.setSingleLine(definition->singleLineComment()); - m_commentDefinition.setMultiLineStart(definition->multiLineCommentStart()); - m_commentDefinition.setMultiLineEnd(definition->multiLineCommentEnd()); + m_commentDefinition.isAfterWhiteSpaces = definition->isCommentAfterWhiteSpaces(); + m_commentDefinition.singleLine = definition->singleLineComment(); + m_commentDefinition.multiLineStart = definition->multiLineCommentStart(); + m_commentDefinition.multiLineEnd = definition->multiLineCommentEnd(); setCodeFoldingSupported(true); } diff --git a/src/plugins/texteditor/tabsettingswidget.cpp b/src/plugins/texteditor/tabsettingswidget.cpp index 428f76250c4..2ce5756437e 100644 --- a/src/plugins/texteditor/tabsettingswidget.cpp +++ b/src/plugins/texteditor/tabsettingswidget.cpp @@ -121,16 +121,4 @@ void TabSettingsWidget::setCodingStyleWarningVisible(bool visible) ui->codingStyleWarning->setVisible(visible); } -void TabSettingsWidget::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace TextEditor diff --git a/src/plugins/texteditor/tabsettingswidget.h b/src/plugins/texteditor/tabsettingswidget.h index d4074ba589b..802a7933ca9 100644 --- a/src/plugins/texteditor/tabsettingswidget.h +++ b/src/plugins/texteditor/tabsettingswidget.h @@ -66,9 +66,6 @@ signals: void settingsChanged(const TextEditor::TabSettings &); void codingStyleLinkClicked(TextEditor::TabSettingsWidget::CodingStyleLink link); -protected: - void changeEvent(QEvent *e); - private slots: void slotSettingsChanged(); void codingStyleLinkActivated(const QString &linkString); diff --git a/src/plugins/texteditor/texteditor.qbs b/src/plugins/texteditor/texteditor.qbs index 099937ad0e2..28451cae8df 100644 --- a/src/plugins/texteditor/texteditor.qbs +++ b/src/plugins/texteditor/texteditor.qbs @@ -268,7 +268,7 @@ QtcPlugin { ] } - ProductModule { + Export { Depends { name: "Find" } Depends { name: "Locator" } } diff --git a/src/plugins/vcsbase/basecheckoutwizardpage.cpp b/src/plugins/vcsbase/basecheckoutwizardpage.cpp index efceff420ff..9091829b269 100644 --- a/src/plugins/vcsbase/basecheckoutwizardpage.cpp +++ b/src/plugins/vcsbase/basecheckoutwizardpage.cpp @@ -230,18 +230,6 @@ void BaseCheckoutWizardPage::slotDirectoryEdited() slotChanged(); } -void BaseCheckoutWizardPage::changeEvent(QEvent *e) -{ - QWizardPage::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - d->ui.retranslateUi(this); - break; - default: - break; - } -} - bool BaseCheckoutWizardPage::isComplete() const { return d->m_valid; diff --git a/src/plugins/vcsbase/basecheckoutwizardpage.h b/src/plugins/vcsbase/basecheckoutwizardpage.h index 70cb25bd545..d68293d4ac9 100644 --- a/src/plugins/vcsbase/basecheckoutwizardpage.h +++ b/src/plugins/vcsbase/basecheckoutwizardpage.h @@ -75,8 +75,6 @@ public: bool isBranchSelectorVisible() const; protected: - void changeEvent(QEvent *e); - void setRepositoryLabel(const QString &l); void setDirectoryVisible(bool v); void setBranchSelectorVisible(bool v); diff --git a/src/plugins/vcsbase/checkoutprogresswizardpage.cpp b/src/plugins/vcsbase/checkoutprogresswizardpage.cpp index da8e500bb86..9266a309e4a 100644 --- a/src/plugins/vcsbase/checkoutprogresswizardpage.cpp +++ b/src/plugins/vcsbase/checkoutprogresswizardpage.cpp @@ -124,17 +124,5 @@ bool CheckoutProgressWizardPage::isComplete() const return m_state == Succeeded; } -void CheckoutProgressWizardPage::changeEvent(QEvent *e) -{ - QWizardPage::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - } // namespace Internal } // namespace VcsBase diff --git a/src/plugins/vcsbase/checkoutprogresswizardpage.h b/src/plugins/vcsbase/checkoutprogresswizardpage.h index fde7a6e784a..87136507ed6 100644 --- a/src/plugins/vcsbase/checkoutprogresswizardpage.h +++ b/src/plugins/vcsbase/checkoutprogresswizardpage.h @@ -64,9 +64,6 @@ private slots: void slotFailed(const QString &); void slotSucceeded(); -protected: - void changeEvent(QEvent *e); - private: Ui::CheckoutProgressWizardPage *ui; QSharedPointer<AbstractCheckoutJob> m_job; diff --git a/src/plugins/vcsbase/cleandialog.cpp b/src/plugins/vcsbase/cleandialog.cpp index fd921e2e2f2..ed8a46bd78f 100644 --- a/src/plugins/vcsbase/cleandialog.cpp +++ b/src/plugins/vcsbase/cleandialog.cpp @@ -308,18 +308,6 @@ void CleanDialog::updateSelectAllCheckBox() } } -void CleanDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - d->ui.retranslateUi(this); - break; - default: - break; - } -} - } // namespace VcsBase #include "cleandialog.moc" diff --git a/src/plugins/vcsbase/cleandialog.h b/src/plugins/vcsbase/cleandialog.h index 374131d0875..4078030c8f6 100644 --- a/src/plugins/vcsbase/cleandialog.h +++ b/src/plugins/vcsbase/cleandialog.h @@ -55,9 +55,6 @@ public: public slots: void accept(); -protected: - void changeEvent(QEvent *e); - private slots: void slotDoubleClicked(const QModelIndex &); void selectAllItems(bool checked); diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp index 2ceb8770bc6..928a8110f24 100644 --- a/src/plugins/vcsbase/submiteditorwidget.cpp +++ b/src/plugins/vcsbase/submiteditorwidget.cpp @@ -517,18 +517,6 @@ QString SubmitEditorWidget::cleanupDescription(const QString &input) const return input; } -void SubmitEditorWidget::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - d->m_ui.retranslateUi(this); - break; - default: - break; - } -} - void SubmitEditorWidget::insertTopWidget(QWidget *w) { d->m_ui.vboxLayout->insertWidget(0, w); diff --git a/src/plugins/vcsbase/submiteditorwidget.h b/src/plugins/vcsbase/submiteditorwidget.h index 1da9e9cd573..7860eb42c04 100644 --- a/src/plugins/vcsbase/submiteditorwidget.h +++ b/src/plugins/vcsbase/submiteditorwidget.h @@ -119,7 +119,6 @@ private slots: protected: virtual QString cleanupDescription(const QString &) const; - virtual void changeEvent(QEvent *e); virtual QString commitName() const; void insertTopWidget(QWidget *w); void hideDescription(); diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 105daaceaf4..ecf43b20056 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -145,8 +145,6 @@ class VcsBaseEditor : public TextEditor::BaseTextEditor public: VcsBaseEditor(VcsBaseEditorWidget *, const VcsBaseEditorParameters *type); - bool duplicateSupported() const { return false; } - Core::IEditor *duplicate(QWidget * /*parent*/) { return 0; } Core::Id id() const { return m_id; } bool isTemporary() const { return m_temporary; } diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index 3383b72f357..d71c8866f9a 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -400,16 +400,6 @@ void VcsBaseSubmitEditor::setCheckScriptWorkingDirectory(const QString &s) d->m_checkScriptWorkingDirectory = s; } -bool VcsBaseSubmitEditor::duplicateSupported() const -{ - return false; -} - -Core::IEditor *VcsBaseSubmitEditor::duplicate(QWidget * /*parent*/) -{ - return 0; -} - Core::Id VcsBaseSubmitEditor::id() const { return d->m_parameters->id; @@ -447,16 +437,6 @@ QWidget *VcsBaseSubmitEditor::toolBar() return d->m_toolWidget; } -QByteArray VcsBaseSubmitEditor::saveState() const -{ - return QByteArray(); -} - -bool VcsBaseSubmitEditor::restoreState(const QByteArray &/*state*/) -{ - return true; -} - QStringList VcsBaseSubmitEditor::checkedFiles() const { return d->m_widget->checkedFiles(); diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h index a12e9e7c625..adf27dd39bc 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.h +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h @@ -116,16 +116,11 @@ public: Core::IDocument *document(); QString displayName() const; void setDisplayName(const QString &title); - bool duplicateSupported() const; - Core::IEditor *duplicate(QWidget *parent); Core::Id id() const; bool isTemporary() const { return true; } QWidget *toolBar(); - QByteArray saveState() const; - bool restoreState(const QByteArray &state); - QStringList checkedFiles() const; void setFileModel(SubmitFileModel *m, const QString &repositoryDirectory = QString()); |