diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index eb7115d7a5bcec591bdcb3588b3c76024683311d..6a22d4b8494b5c4d621b05aad6726bea3d6f2ee6 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -95,6 +95,14 @@ ProjectExplorer::Environment CMakeBuildConfiguration::baseEnvironment() const return env; } +QString CMakeBuildConfiguration::baseEnvironmentText() const +{ + if (useSystemEnvironment()) + return tr("System Environment"); + else + return tr("Clear Environment"); +} + ProjectExplorer::Environment CMakeBuildConfiguration::environment() const { ProjectExplorer::Environment env = baseEnvironment(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index bdd9765bd6e07e90f9fba7dd5265db1e3906d5c8..5e424334c452f0893e38ecaad3bf6e9031ded3f4 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -51,6 +51,7 @@ public: ProjectExplorer::Environment environment() const; ProjectExplorer::Environment baseEnvironment() const; + QString baseEnvironmentText() const; void setUserEnvironmentChanges(const QList<ProjectExplorer::EnvironmentItem> &diff); QList<ProjectExplorer::EnvironmentItem> userEnvironmentChanges() const; bool useSystemEnvironment() const; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp index 581573377742a7c2690d11a61d939884fd57aa07..ce0c808532540be400acf3f7a6a7f5cdfdab6f81 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp @@ -80,6 +80,7 @@ void CMakeBuildEnvironmentWidget::init(ProjectExplorer::BuildConfiguration *bc) m_clearSystemEnvironmentCheckBox->setChecked(!m_buildConfiguration->useSystemEnvironment()); m_buildEnvironmentWidget->setBaseEnvironment(m_buildConfiguration->baseEnvironment()); + m_buildEnvironmentWidget->setBaseEnvironmentText(m_buildConfiguration->baseEnvironmentText()); m_buildEnvironmentWidget->setUserChanges(m_buildConfiguration->userEnvironmentChanges()); m_buildEnvironmentWidget->updateButtons(); } @@ -93,9 +94,11 @@ void CMakeBuildEnvironmentWidget::clearSystemEnvironmentCheckBoxClicked(bool che { m_buildConfiguration->setUseSystemEnvironment(!checked); m_buildEnvironmentWidget->setBaseEnvironment(m_buildConfiguration->baseEnvironment()); + m_buildEnvironmentWidget->setBaseEnvironmentText(m_buildConfiguration->baseEnvironmentText()); } void CMakeBuildEnvironmentWidget::environmentChanged() { m_buildEnvironmentWidget->setBaseEnvironment(m_buildConfiguration->baseEnvironment()); + m_buildEnvironmentWidget->setBaseEnvironmentText(m_buildConfiguration->baseEnvironmentText()); } diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index 0933ae548c1baa869b7a9900a82c24162b75c13d..c68f6b3015c91720ece8e47369bdb1727bc5dfc3 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -195,6 +195,18 @@ ProjectExplorer::Environment CMakeRunConfiguration::baseEnvironment() const return env; } +QString CMakeRunConfiguration::baseEnvironmentText() const +{ + if (m_baseEnvironmentBase == CMakeRunConfiguration::CleanEnvironmentBase) { + return tr("Clean Environment"); + } else if (m_baseEnvironmentBase == CMakeRunConfiguration::SystemEnvironmentBase) { + return tr("System Environment"); + } else if (m_baseEnvironmentBase == CMakeRunConfiguration::BuildEnvironmentBase) { + return tr("Build Environment"); + } + return QString(); +} + void CMakeRunConfiguration::setBaseEnvironmentBase(BaseEnvironmentBase env) { if (m_baseEnvironmentBase == env) @@ -301,6 +313,7 @@ CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration * m_environmentWidget = new ProjectExplorer::EnvironmentWidget(this, baseEnvironmentWidget); m_environmentWidget->setBaseEnvironment(m_cmakeRunConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_cmakeRunConfiguration->baseEnvironmentText()); m_environmentWidget->setUserChanges(m_cmakeRunConfiguration->userEnvironmentChanges()); vbx->addWidget(m_environmentWidget); @@ -358,6 +371,7 @@ void CMakeRunConfigurationWidget::baseEnvironmentComboBoxChanged(int index) m_cmakeRunConfiguration->setBaseEnvironmentBase(CMakeRunConfiguration::BaseEnvironmentBase(index)); m_environmentWidget->setBaseEnvironment(m_cmakeRunConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_cmakeRunConfiguration->baseEnvironmentText()); m_ignoreChange = false; } @@ -368,6 +382,7 @@ void CMakeRunConfigurationWidget::baseEnvironmentChanged() m_baseEnvironmentComboBox->setCurrentIndex(m_cmakeRunConfiguration->baseEnvironmentBase()); m_environmentWidget->setBaseEnvironment(m_cmakeRunConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_cmakeRunConfiguration->baseEnvironmentText()); } void CMakeRunConfigurationWidget::userEnvironmentChangesChanged() diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h index 1e087239f72584d502241c4cf2a4a465e469ee0c..3e646490abb86dfcaaf596ddac0208464e27e951 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h @@ -90,6 +90,8 @@ private: void setBaseEnvironmentBase(BaseEnvironmentBase env); BaseEnvironmentBase baseEnvironmentBase() const; ProjectExplorer::Environment baseEnvironment() const; + QString baseEnvironmentText() const; + void setUserEnvironmentChanges(const QList<ProjectExplorer::EnvironmentItem> &diff); QList<ProjectExplorer::EnvironmentItem> userEnvironmentChanges() const; diff --git a/src/plugins/coreplugin/actionmanager/command.cpp b/src/plugins/coreplugin/actionmanager/command.cpp index 653009203b78866386d24fed6c1eab8c60f6c7c2..4c7b2c3f303bbbc11152ac8edf7acd64e123ac1d 100644 --- a/src/plugins/coreplugin/actionmanager/command.cpp +++ b/src/plugins/coreplugin/actionmanager/command.cpp @@ -37,6 +37,7 @@ #include <QtGui/QAction> #include <QtGui/QShortcut> +#include <QtGui/QMainWindow> /*! \class Core::Command @@ -424,8 +425,11 @@ QKeySequence Action::keySequence() const OverrideableAction::OverrideableAction(int id) : Action(id), m_currentAction(0), m_active(false), - m_contextInitialized(false) + m_contextInitialized(false), + m_dummyShortcutEater(this) { + Core::ICore::instance()->mainWindow()->addAction(&m_dummyShortcutEater); + m_dummyShortcutEater.setEnabled(false); } void OverrideableAction::setAction(QAction *action) @@ -465,9 +469,11 @@ bool OverrideableAction::setCurrentContext(const QList<int> &context) m_active = true; return true; } + // no active/delegate action, "visible" action is not enabled/visible if (hasAttribute(CA_Hide)) m_action->setVisible(false); m_action->setEnabled(false); + m_dummyShortcutEater.setEnabled(false); m_active = false; return false; } @@ -521,6 +527,9 @@ void OverrideableAction::actionChanged() m_action->setEnabled(m_currentAction->isEnabled()); m_action->setVisible(m_currentAction->isVisible()); + + m_dummyShortcutEater.setShortcuts(m_action->shortcuts()); + m_dummyShortcutEater.setEnabled(!m_action->isEnabled()); } bool OverrideableAction::isActive() const diff --git a/src/plugins/coreplugin/actionmanager/command_p.h b/src/plugins/coreplugin/actionmanager/command_p.h index 176866dfeeb7a3ffc48621f5c8188a591e661922..1c89fd7b7fb0af5bcd0a9107c2918f58da4a7941 100644 --- a/src/plugins/coreplugin/actionmanager/command_p.h +++ b/src/plugins/coreplugin/actionmanager/command_p.h @@ -153,6 +153,7 @@ private: QMap<int, QPointer<QAction> > m_contextActionMap; bool m_active; bool m_contextInitialized; + QAction m_dummyShortcutEater; }; } // namespace Internal diff --git a/src/plugins/coreplugin/editmode.cpp b/src/plugins/coreplugin/editmode.cpp index a02c434cd6d286a6ce1871fb630cb32a5f512c04..8a6fef9569edf16c791d077a73da8d28c22f7e6d 100644 --- a/src/plugins/coreplugin/editmode.cpp +++ b/src/plugins/coreplugin/editmode.cpp @@ -68,7 +68,7 @@ EditMode::EditMode(EditorManager *editorManager) : MiniSplitter *splitter = new MiniSplitter; splitter->setOrientation(Qt::Vertical); splitter->insertWidget(0, rightPaneSplitter); - splitter->insertWidget(1, new Core::OutputPanePlaceHolder(this)); + splitter->insertWidget(1, new Core::OutputPanePlaceHolder(this, splitter)); splitter->setStretchFactor(0, 3); splitter->setStretchFactor(1, 0); diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp index 40ade6d492dd8a0c9c930ef50fd260d42a092449..6f1541b7db5b5be5f2af2ce725b5332a25855cf3 100644 --- a/src/plugins/coreplugin/outputpane.cpp +++ b/src/plugins/coreplugin/outputpane.cpp @@ -43,6 +43,7 @@ #include <extensionsystem/pluginmanager.h> #include <utils/styledbar.h> +#include <utils/qtcassert.h> #include <QtCore/QDebug> @@ -51,6 +52,7 @@ #include <QtGui/QComboBox> #include <QtGui/QFocusEvent> #include <QtGui/QHBoxLayout> +#include <QtGui/QSplitter> #include <QtGui/QMenu> #include <QtGui/QPainter> #include <QtGui/QToolButton> @@ -61,9 +63,10 @@ using namespace Core::Internal; OutputPanePlaceHolder *OutputPanePlaceHolder::m_current = 0; -OutputPanePlaceHolder::OutputPanePlaceHolder(Core::IMode *mode, QWidget *parent) +OutputPanePlaceHolder::OutputPanePlaceHolder(Core::IMode *mode, QSplitter* parent) : QWidget(parent), m_mode(mode), m_closeable(true) { + m_splitter = parent; setVisible(false); setLayout(new QVBoxLayout); QSizePolicy sp; @@ -111,6 +114,40 @@ void OutputPanePlaceHolder::currentModeChanged(Core::IMode *mode) } } +void OutputPanePlaceHolder::maximizeOrMinimize(bool maximize) +{ + if (!m_splitter) + return; + int idx = m_splitter->indexOf(this); + if (idx < 0) + return; + + QList<int> sizes = m_splitter->sizes(); + + if (maximize) { + int sum; + foreach(int s, sizes) + sum += s; + for (int i = 0; i < sizes.count(); ++i) { + sizes[i] = 32; + } + sizes[idx] = sum - (sizes.count()-1) * 32; + } else { + int target = sizeHint().height(); + int space = sizes[idx] - target; + if (space > 0) { + for (int i = 0; i < sizes.count(); ++i) { + sizes[i] += space / (sizes.count()-1); + } + sizes[idx] = target; + } + } + + m_splitter->setSizes(sizes); + +} + + //// // OutputPaneManager //// @@ -138,6 +175,8 @@ void OutputPaneManager::updateStatusButtons(bool visible) int idx = m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt(); if (m_buttons.value(idx)) m_buttons.value(idx)->setChecked(visible); + m_minMaxButton->setVisible(OutputPanePlaceHolder::m_current + && OutputPanePlaceHolder::m_current->canMaximizeOrMinimize()); } OutputPaneManager::OutputPaneManager(QWidget *parent) : @@ -145,6 +184,8 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_widgetComboBox(new QComboBox), m_clearButton(new QToolButton), m_closeButton(new QToolButton), + m_minMaxAction(0), + m_minMaxButton(new QToolButton), m_nextAction(0), m_prevAction(0), m_lastIndex(-1), @@ -168,6 +209,10 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_prevAction->setText(tr("Previous Item")); connect(m_prevAction, SIGNAL(triggered()), this, SLOT(slotPrev())); + m_minMaxAction = new QAction(this); + m_minMaxAction->setText(tr("Minimize/Maximize Output Pane")); + m_minMaxButton->setArrowType(Qt::UpArrow); + m_closeButton->setIcon(QIcon(":/core/images/closebutton.png")); connect(m_closeButton, SIGNAL(clicked()), this, SLOT(slotHide())); @@ -185,6 +230,7 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_nextToolButton = new QToolButton; toolLayout->addWidget(m_nextToolButton); toolLayout->addWidget(m_opToolBarWidgets); + toolLayout->addWidget(m_minMaxButton); toolLayout->addWidget(m_closeButton); mainlayout->addWidget(m_toolBar); mainlayout->addWidget(m_outputWidgetPane, 10); @@ -248,6 +294,12 @@ void OutputPaneManager::init() cmd->setDefaultKeySequence(QKeySequence("F6")); mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup"); + cmd = am->registerAction(m_minMaxAction, "Coreplugin.OutputPane.minmax", globalcontext); + cmd->setDefaultKeySequence(QKeySequence("Ctrl+9")); + mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup"); + m_minMaxButton->setDefaultAction(cmd->action()); + connect(m_minMaxAction, SIGNAL(triggered()), this, SLOT(slotMinMax())); + QAction *sep = new QAction(this); sep->setSeparator(true); cmd = am->registerAction(sep, QLatin1String("Coreplugin.OutputPane.Sep"), globalcontext); @@ -353,6 +405,18 @@ void OutputPaneManager::shortcutTriggered() } } + +void OutputPaneManager::slotMinMax() +{ + QTC_ASSERT(OutputPanePlaceHolder::m_current, return); + + if (!OutputPanePlaceHolder::m_current->isVisible()) // easier than disabling/enabling the action + return; + bool maximize = m_minMaxButton->arrowType() == Qt::UpArrow; + OutputPanePlaceHolder::m_current->maximizeOrMinimize(maximize); + m_minMaxButton->setArrowType(maximize ? Qt::DownArrow : Qt::UpArrow); +} + void OutputPaneManager::buttonTriggered() { QPushButton *button = qobject_cast<QPushButton *>(sender()); diff --git a/src/plugins/coreplugin/outputpane.h b/src/plugins/coreplugin/outputpane.h index 1132ee970af86dc491c15669efa3a41c4b53253f..b1e8c2772ac034877224688a0646034d2f6b6fee 100644 --- a/src/plugins/coreplugin/outputpane.h +++ b/src/plugins/coreplugin/outputpane.h @@ -42,6 +42,7 @@ class QComboBox; class QToolButton; class QStackedWidget; class QMenu; +class QSplitter; QT_END_NAMESPACE namespace Core { @@ -60,16 +61,19 @@ class CORE_EXPORT OutputPanePlaceHolder : public QWidget friend class Core::Internal::OutputPaneManager; // needs to set m_visible and thus access m_current Q_OBJECT public: - OutputPanePlaceHolder(Core::IMode *mode, QWidget *parent = 0); + OutputPanePlaceHolder(Core::IMode *mode, QSplitter *parent = 0); ~OutputPanePlaceHolder(); void setCloseable(bool b); bool closeable(); static OutputPanePlaceHolder *getCurrent() { return m_current; } + inline bool canMaximizeOrMinimize() const { return m_splitter != 0; } + void maximizeOrMinimize(bool maximize); private slots: void currentModeChanged(Core::IMode *); private: Core::IMode *m_mode; + QSplitter *m_splitter; bool m_closeable; static OutputPanePlaceHolder* m_current; }; @@ -93,6 +97,7 @@ public slots: void slotNext(); void slotPrev(); void shortcutTriggered(); + void slotMinMax(); protected: void focusInEvent(QFocusEvent *e); @@ -122,6 +127,9 @@ private: QToolButton *m_clearButton; QToolButton *m_closeButton; + QAction *m_minMaxAction; + QToolButton *m_minMaxButton; + QAction *m_nextAction; QAction *m_prevAction; QToolButton *m_prevToolButton; diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 711b557f0382c5ea43d0df8bfe7c62a3f2902c32..bcc861b577764af1eaea6e20e44cab71c2cad1c3 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -79,11 +79,6 @@ static inline QString msgLogParsingFailed() return CVSPlugin::tr("Parsing of the log output failed"); } -// Timeout for normal output commands -enum { cvsShortTimeOut = 10000 }; -// Timeout for submit, update -enum { cvsLongTimeOut = 120000 }; - static const char * const CMD_ID_CVS_MENU = "CVS.Menu"; static const char * const CMD_ID_ADD = "CVS.Add"; static const char * const CMD_ID_DELETE_FILE = "CVS.Delete"; @@ -434,7 +429,7 @@ void CVSPlugin::cvsDiff(const QString &workingDir, const QStringList &files) // CVS returns the diff exit code (1 if files differ), which is // undistinguishable from a "file not found" error, unfortunately. - const CVSResponse response = runCVS(workingDir, args, cvsShortTimeOut, false, codec); + const CVSResponse response = runCVS(workingDir, args, m_settings.timeOutMS(), false, codec); switch (response.result) { case CVSResponse::NonNullExitCode: case CVSResponse::Ok: @@ -518,7 +513,7 @@ void CVSPlugin::revertCurrentFile() QTC_ASSERT(state.hasFile(), return) QStringList args; args << QLatin1String("diff") << state.relativeCurrentFile(); - const CVSResponse diffResponse = runCVS(state.currentFileTopLevel(), args, cvsShortTimeOut, false); + const CVSResponse diffResponse = runCVS(state.currentFileTopLevel(), args, m_settings.timeOutMS(), false); switch (diffResponse.result) { case CVSResponse::Ok: return; // Not modified, diff exit code 0 @@ -539,7 +534,7 @@ void CVSPlugin::revertCurrentFile() // revert args.clear(); args << QLatin1String("update") << QLatin1String("-C") << state.relativeCurrentFile(); - const CVSResponse revertResponse = runCVS(state.currentFileTopLevel(), args, cvsShortTimeOut, true); + const CVSResponse revertResponse = runCVS(state.currentFileTopLevel(), args, m_settings.timeOutMS(), true); if (revertResponse.result == CVSResponse::Ok) { fcb.setModifiedReload(true); cvsVersionControl()->emitFilesChanged(QStringList(state.currentFile())); @@ -589,7 +584,7 @@ void CVSPlugin::startCommit(const QString &workingDir, const QStringList &files) // We need the "Examining <subdir>" stderr output to tell // where we are, so, have stdout/stderr channels merged. QStringList args = QStringList(QLatin1String("status")); - const CVSResponse response = runCVS(workingDir, args, cvsShortTimeOut, false, 0, true); + const CVSResponse response = runCVS(workingDir, args, m_settings.timeOutMS(), false, 0, true); if (response.result != CVSResponse::Ok) return; // Get list of added/modified/deleted files and purge out undesired ones @@ -638,7 +633,7 @@ bool CVSPlugin::commit(const QString &messageFile, QStringList args = QStringList(QLatin1String("commit")); args << QLatin1String("-F") << messageFile; args.append(fileList); - const CVSResponse response = runCVS(m_commitRepository, args, cvsLongTimeOut, true); + const CVSResponse response = runCVS(m_commitRepository, args, m_settings.longTimeOutMS(), true); return response.result == CVSResponse::Ok ; } @@ -658,7 +653,7 @@ void CVSPlugin::filelog(const QString &workingDir, const QStringList &files) QStringList args; args << QLatin1String("log"); args.append(files); - const CVSResponse response = runCVS(workingDir, args, cvsShortTimeOut, false, codec); + const CVSResponse response = runCVS(workingDir, args, m_settings.timeOutMS(), false, codec); if (response.result != CVSResponse::Ok) return; @@ -683,7 +678,7 @@ void CVSPlugin::updateProject() QStringList args(QLatin1String("update")); args.push_back(QLatin1String("-dR")); args.append(state.relativeCurrentProject()); - const CVSResponse response = runCVS(state.currentProjectTopLevel(), args, cvsLongTimeOut, true); + const CVSResponse response = runCVS(state.currentProjectTopLevel(), args, m_settings.longTimeOutMS(), true); if (response.result == CVSResponse::Ok) cvsVersionControl()->emitRepositoryChanged(state.currentProjectTopLevel()); } @@ -703,7 +698,7 @@ void CVSPlugin::annotate(const QString &workingDir, const QString &file) const QString source = VCSBase::VCSBaseEditor::getSource(workingDir, file); QStringList args; args << QLatin1String("annotate") << file; - const CVSResponse response = runCVS(workingDir, args, cvsShortTimeOut, false, codec); + const CVSResponse response = runCVS(workingDir, args, m_settings.timeOutMS(), false, codec); if (response.result != CVSResponse::Ok) return; @@ -729,7 +724,7 @@ void CVSPlugin::projectStatus() QTC_ASSERT(state.hasProject(), return) QStringList args; args << QLatin1String("status") << state.relativeCurrentProject(); - const CVSResponse response = runCVS(state.currentProjectTopLevel(), args, cvsShortTimeOut, false); + const CVSResponse response = runCVS(state.currentProjectTopLevel(), args, m_settings.timeOutMS(), false); if (response.result == CVSResponse::Ok) showOutputInEditor(tr("Project status"), response.stdOut, VCSBase::RegularCommandOutput, state.currentProjectTopLevel(), 0); } @@ -787,7 +782,7 @@ bool CVSPlugin::describe(const QString &toplevel, const QString &file, const // Run log to obtain commit id and details QStringList args; args << QLatin1String("log") << (QLatin1String("-r") + changeNr) << file; - const CVSResponse logResponse = runCVS(toplevel, args, cvsShortTimeOut, false); + const CVSResponse logResponse = runCVS(toplevel, args, m_settings.timeOutMS(), false); if (logResponse.result != CVSResponse::Ok) { *errorMessage = logResponse.message; return false; @@ -808,7 +803,7 @@ bool CVSPlugin::describe(const QString &toplevel, const QString &file, const args.clear(); args << QLatin1String("log") << QLatin1String("-d") << (dateS + QLatin1Char('<') + nextDayS); - const CVSResponse repoLogResponse = runCVS(toplevel, args, cvsLongTimeOut, false); + const CVSResponse repoLogResponse = runCVS(toplevel, args, m_settings.longTimeOutMS(), false); if (repoLogResponse.result != CVSResponse::Ok) { *errorMessage = repoLogResponse.message; return false; @@ -844,7 +839,7 @@ bool CVSPlugin::describe(const QString &repositoryPath, // Run log QStringList args(QLatin1String("log")); args << (QLatin1String("-r") + it->revisions.front().revision) << it->file; - const CVSResponse logResponse = runCVS(repositoryPath, args, cvsShortTimeOut, false); + const CVSResponse logResponse = runCVS(repositoryPath, args, m_settings.timeOutMS(), false); if (logResponse.result != CVSResponse::Ok) { *errorMessage = logResponse.message; return false; @@ -860,7 +855,7 @@ bool CVSPlugin::describe(const QString &repositoryPath, args << m_settings.cvsDiffOptions << QLatin1String("-r") << previousRev << QLatin1String("-r") << it->revisions.front().revision << it->file; - const CVSResponse diffResponse = runCVS(repositoryPath, args, cvsShortTimeOut, false, codec); + const CVSResponse diffResponse = runCVS(repositoryPath, args, m_settings.timeOutMS(), false, codec); switch (diffResponse.result) { case CVSResponse::Ok: case CVSResponse::NonNullExitCode: // Diff exit code != 0 @@ -1037,7 +1032,7 @@ bool CVSPlugin::vcsAdd(const QString &workingDir, const QString &rawFileName) { QStringList args; args << QLatin1String("add") << rawFileName; - const CVSResponse response = runCVS(workingDir, args, cvsShortTimeOut, true); + const CVSResponse response = runCVS(workingDir, args, m_settings.timeOutMS(), true); return response.result == CVSResponse::Ok; } @@ -1045,7 +1040,7 @@ bool CVSPlugin::vcsDelete(const QString &workingDir, const QString &rawFileName) { QStringList args; args << QLatin1String("remove") << QLatin1String("-f") << rawFileName; - const CVSResponse response = runCVS(workingDir, args, cvsShortTimeOut, true); + const CVSResponse response = runCVS(workingDir, args, m_settings.timeOutMS(), true); return response.result == CVSResponse::Ok; } diff --git a/src/plugins/cvs/cvssettings.cpp b/src/plugins/cvs/cvssettings.cpp index 4169a1638e0bdb2b048233a2c3cdd38c9164014f..f5dea5094932fd80684f0edc8bb9082233136a9d 100644 --- a/src/plugins/cvs/cvssettings.cpp +++ b/src/plugins/cvs/cvssettings.cpp @@ -39,6 +39,9 @@ static const char *promptToSubmitKeyC = "PromptForSubmit"; static const char *diffOptionsKeyC = "DiffOptions"; static const char *describeByCommitIdKeyC = "DescribeByCommitId"; static const char *defaultDiffOptions = "-du"; +static const char *timeOutKeyC = "TimeOut"; + +enum { defaultTimeOutS = 30 }; static QString defaultCommand() { @@ -56,6 +59,7 @@ namespace CVS { CVSSettings::CVSSettings() : cvsCommand(defaultCommand()), cvsDiffOptions(QLatin1String(defaultDiffOptions)), + timeOutS(defaultTimeOutS), promptToSubmit(true), describeByCommitId(true) { @@ -69,6 +73,7 @@ void CVSSettings::fromSettings(QSettings *settings) cvsRoot = settings->value(QLatin1String(rootC), QString()).toString(); cvsDiffOptions = settings->value(QLatin1String(diffOptionsKeyC), QLatin1String(defaultDiffOptions)).toString(); describeByCommitId = settings->value(QLatin1String(describeByCommitIdKeyC), true).toBool(); + timeOutS = settings->value(QLatin1String(timeOutKeyC), defaultTimeOutS).toInt(); settings->endGroup(); } @@ -78,7 +83,8 @@ void CVSSettings::toSettings(QSettings *settings) const settings->setValue(QLatin1String(commandKeyC), cvsCommand); settings->setValue(QLatin1String(promptToSubmitKeyC), promptToSubmit); settings->setValue(QLatin1String(rootC), cvsRoot); - settings->setValue(QLatin1String(diffOptionsKeyC), cvsDiffOptions); + settings->setValue(QLatin1String(diffOptionsKeyC), cvsDiffOptions); + settings->setValue(QLatin1String(timeOutKeyC), timeOutS); settings->setValue(QLatin1String(describeByCommitIdKeyC), describeByCommitId); settings->endGroup(); } @@ -89,6 +95,7 @@ bool CVSSettings::equals(const CVSSettings &s) const && describeByCommitId == s.describeByCommitId && cvsCommand == s.cvsCommand && cvsRoot == s.cvsRoot + && timeOutS == s.timeOutS && cvsDiffOptions == s.cvsDiffOptions; } diff --git a/src/plugins/cvs/cvssettings.h b/src/plugins/cvs/cvssettings.h index 6f71c4a84c0ac86cf7f9bd7911fa994e826ca91d..6959b40377f455f76939c83f7f36e49c14c55101 100644 --- a/src/plugins/cvs/cvssettings.h +++ b/src/plugins/cvs/cvssettings.h @@ -46,6 +46,9 @@ struct CVSSettings void fromSettings(QSettings *); void toSettings(QSettings *) const; + inline int timeOutMS() const { return timeOutS * 10000; } + inline int longTimeOutMS() const { return timeOutS * 100000; } + // Add common options to the command line QStringList addOptions(const QStringList &args) const; @@ -54,6 +57,7 @@ struct CVSSettings QString cvsCommand; QString cvsRoot; QString cvsDiffOptions; + int timeOutS; bool promptToSubmit; bool describeByCommitId; }; diff --git a/src/plugins/cvs/settingspage.cpp b/src/plugins/cvs/settingspage.cpp index 3d29a88325b676b9f29e1182edc5aa9113b924e4..ba48750d8f1b98d0158634f11792fff0242469c3 100644 --- a/src/plugins/cvs/settingspage.cpp +++ b/src/plugins/cvs/settingspage.cpp @@ -57,6 +57,7 @@ CVSSettings SettingsPageWidget::settings() const rc.cvsCommand = m_ui.commandPathChooser->path(); rc.cvsRoot = m_ui.rootLineEdit->text(); rc.cvsDiffOptions = m_ui.diffOptionsLineEdit->text(); + rc.timeOutS = m_ui.timeOutSpinBox->value(); rc.promptToSubmit = m_ui.promptToSubmitCheckBox->isChecked(); rc.describeByCommitId = m_ui.describeByCommitIdCheckBox->isChecked(); return rc; @@ -67,6 +68,7 @@ void SettingsPageWidget::setSettings(const CVSSettings &s) m_ui.commandPathChooser->setPath(s.cvsCommand); m_ui.rootLineEdit->setText(s.cvsRoot); m_ui.diffOptionsLineEdit->setText(s.cvsDiffOptions); + m_ui.timeOutSpinBox->setValue(s.timeOutS); m_ui.promptToSubmitCheckBox->setChecked(s.promptToSubmit); m_ui.describeByCommitIdCheckBox->setChecked(s.describeByCommitId); } diff --git a/src/plugins/cvs/settingspage.ui b/src/plugins/cvs/settingspage.ui index df835685f18d386631a6226be1aceb637a94031b..601e9d28fcf6ee0b3aafacd0c90ea3f3e30f027a 100644 --- a/src/plugins/cvs/settingspage.ui +++ b/src/plugins/cvs/settingspage.ui @@ -2,6 +2,14 @@ <ui version="4.0"> <class>CVS::Internal::SettingsPage</class> <widget class="QWidget" name="CVS::Internal::SettingsPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>447</width> + <height>281</height> + </rect> + </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QGroupBox" name="miscGroupBox"> @@ -38,24 +46,24 @@ <string>Miscellaneous</string> </property> <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> + <item row="1" column="0"> <widget class="QLabel" name="diffOptionsLabel"> <property name="text"> <string>Diff Options:</string> </property> </widget> </item> - <item row="0" column="1"> + <item row="1" column="1"> <widget class="QLineEdit" name="diffOptionsLineEdit"/> </item> - <item row="1" column="0" colspan="2"> + <item row="2" column="0" colspan="2"> <widget class="QCheckBox" name="promptToSubmitCheckBox"> <property name="text"> <string>Prompt on submit</string> </property> </widget> </item> - <item row="2" column="0" colspan="2"> + <item row="3" column="0" colspan="2"> <widget class="QCheckBox" name="describeByCommitIdCheckBox"> <property name="toolTip"> <string>When checked, all files touched by a commit will be displayed when clicking on a revision number in the annotation view (retrieved via commit id). Otherwise, only the respective file will be displayed.</string> @@ -65,6 +73,26 @@ </property> </widget> </item> + <item row="0" column="0"> + <widget class="QLabel" name="timeOutLabel"> + <property name="text"> + <string>Timeout:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="timeOutSpinBox"> + <property name="suffix"> + <string>s</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>360</number> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 0d269658bcdb6e765faac30a2576f7d74a3b763d..1e91222a06b545fddb73668e0c0694139fd70656 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -895,7 +895,7 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess MiniSplitter *splitter = new MiniSplitter; splitter->addWidget(m_manager->mainWindow()); - splitter->addWidget(new OutputPanePlaceHolder(m_debugMode)); + splitter->addWidget(new OutputPanePlaceHolder(m_debugMode, splitter)); splitter->setStretchFactor(0, 10); splitter->setStretchFactor(1, 0); splitter->setOrientation(Qt::Vertical); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 147e7f74e585227ad3b38168ace2b8a5298e4b14..b7c8c006050393bf5968b2024ffc147ff6a32d6d 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4420,9 +4420,11 @@ bool GdbEngine::startGdb(const QStringList &args, const QString &gdb, const QStr postCommand(_("show version"), CB(handleShowVersion)); - postCommand(_("python execfile('%1dumper.py')").arg(dumperSourcePath), + postCommand(_("-interpreter-exec console \"python execfile('%1dumper.py')\"") + .arg(dumperSourcePath), NonCriticalResponse); - postCommand(_("python execfile('%1gdbmacros.py')").arg(dumperSourcePath), + postCommand(_("-interpreter-exec console \"python execfile('%1gdbmacros.py')\"") + .arg(dumperSourcePath), NonCriticalResponse); postCommand(_("-interpreter-exec console \"help bb\""), diff --git a/src/plugins/git/settingspage.ui b/src/plugins/git/settingspage.ui index a6b27926c1e594d6af110c27ea0904df5f19c032..4432b6a4458dbef2f909a9d3d9c1226eacdb3588 100644 --- a/src/plugins/git/settingspage.ui +++ b/src/plugins/git/settingspage.ui @@ -91,12 +91,15 @@ <item row="1" column="0"> <widget class="QLabel" name="timeoutLabel"> <property name="text"> - <string>Timeout (seconds):</string> + <string>Timeout:</string> </property> </widget> </item> <item row="1" column="1"> <widget class="QSpinBox" name="timeoutSpinBox"> + <property name="suffix"> + <string>s</string> + </property> <property name="minimum"> <number>10</number> </property> diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index f3def714224fd0bd24846132c8a4129268af01ca..b95e69596ada777239273ea14478c2ed024571ef 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -68,9 +68,6 @@ #include <QtGui/QMenu> #include <QtGui/QMessageBox> -enum { p4Timeout = 20000 }; -enum { longTimeoutFactor = 4 }; - static const VCSBase::VCSBaseEditorParameters editorParameters[] = { { VCSBase::RegularCommandOutput, @@ -895,7 +892,7 @@ PerforceResponse PerforcePlugin::synchronousProcess(const QString &workingDir, VCSBase::VCSBaseOutputWindow *outputWindow = VCSBase::VCSBaseOutputWindow::instance(); // Run, connect stderr to the output window Utils::SynchronousProcess process; - const int timeOut = (flags & LongTimeOut) ? longTimeoutFactor * p4Timeout : p4Timeout; + const int timeOut = (flags & LongTimeOut) ? m_settings.longTimeOutMS() : m_settings.timeOutMS(); process.setTimeout(timeOut); process.setStdOutCodec(outputCodec); if (flags & OverrideDiffEnvironment) @@ -983,7 +980,7 @@ PerforceResponse PerforcePlugin::fullySynchronousProcess(const QString &workingD process.closeWriteChannel(); } - const int timeOut = (flags & LongTimeOut) ? longTimeoutFactor * p4Timeout : p4Timeout; + const int timeOut = (flags & LongTimeOut) ? m_settings.longTimeOutMS() : m_settings.timeOutMS(); if (!process.waitForFinished(timeOut)) { PerforceChecker::ensureProcessStopped(process); response.error = true; diff --git a/src/plugins/perforce/perforcesettings.cpp b/src/plugins/perforce/perforcesettings.cpp index 949857d4a379c7398f9a13ac672b62a862ab7d2c..f50fbe72dc84552161eb68e9bc1bb68cb0323f6b 100644 --- a/src/plugins/perforce/perforcesettings.cpp +++ b/src/plugins/perforce/perforcesettings.cpp @@ -46,6 +46,9 @@ static const char *portKeyC = "Port"; static const char *clientKeyC = "Client"; static const char *userKeyC = "User"; static const char *promptToSubmitKeyC = "PromptForSubmit"; +static const char *timeOutKeyC = "TimeOut"; + +enum { defaultTimeOutS = 30 }; static QString defaultCommand() { @@ -62,6 +65,7 @@ namespace Internal { Settings::Settings() : defaultEnv(true), + timeOutS(defaultTimeOutS), promptToSubmit(true) { } @@ -71,7 +75,7 @@ bool Settings::equals(const Settings &rhs) const return defaultEnv == rhs.defaultEnv && p4Command == rhs.p4Command && p4Port == rhs.p4Port && p4Client == rhs.p4Client && p4User == rhs.p4User - && promptToSubmit == rhs.promptToSubmit; + && timeOutS == rhs.timeOutS && promptToSubmit == rhs.promptToSubmit; }; QStringList Settings::commonP4Arguments() const @@ -105,6 +109,7 @@ void PerforceSettings::fromSettings(QSettings *settings) m_settings.p4Port = settings->value(QLatin1String(portKeyC), QString()).toString(); m_settings.p4Client = settings->value(QLatin1String(clientKeyC), QString()).toString(); m_settings.p4User = settings->value(QLatin1String(userKeyC), QString()).toString(); + m_settings.timeOutS = settings->value(QLatin1String(timeOutKeyC), defaultTimeOutS).toInt(); m_settings.promptToSubmit = settings->value(QLatin1String(promptToSubmitKeyC), true).toBool(); settings->endGroup(); } @@ -117,6 +122,7 @@ void PerforceSettings::toSettings(QSettings *settings) const settings->setValue(QLatin1String(portKeyC), m_settings.p4Port); settings->setValue(QLatin1String(clientKeyC), m_settings.p4Client); settings->setValue(QLatin1String(userKeyC), m_settings.p4User); + settings->setValue(QLatin1String(timeOutKeyC), m_settings.timeOutS); settings->setValue(QLatin1String(promptToSubmitKeyC), m_settings.promptToSubmit); settings->endGroup(); } diff --git a/src/plugins/perforce/perforcesettings.h b/src/plugins/perforce/perforcesettings.h index 8b6e3897cd27634ced76c9b3b1b5f861ee9ec326..3df1378e28225bfebf843fe39a4991deef08d78d 100644 --- a/src/plugins/perforce/perforcesettings.h +++ b/src/plugins/perforce/perforcesettings.h @@ -58,6 +58,7 @@ struct Settings { QString p4User; QString errorString; bool defaultEnv; + int timeOutS; bool promptToSubmit; }; @@ -92,6 +93,10 @@ public: void setSettings(const Settings &s); Settings settings() const; + inline int timeOutS() const { return m_settings.timeOutS; } + inline int timeOutMS() const { return m_settings.timeOutS * 10000; } + inline int longTimeOutMS() const { return m_settings.timeOutS * 100000; } + QString topLevel() const; QString topLevelSymLinkTarget() const; diff --git a/src/plugins/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp index ede4c7012f60cd51063d85ab4cfc70e07e45d27e..456a049805a06474f8752deb92dfc1401a42d501 100644 --- a/src/plugins/perforce/settingspage.cpp +++ b/src/plugins/perforce/settingspage.cpp @@ -81,6 +81,7 @@ Settings SettingsPageWidget::settings() const settings.p4Port = m_ui.portLineEdit->text(); settings.p4User = m_ui.userLineEdit->text(); settings.p4Client= m_ui.clientLineEdit->text(); + settings.timeOutS = m_ui.timeOutSpinBox->value(); settings.promptToSubmit = m_ui.promptToSubmitCheckBox->isChecked(); return settings; } @@ -92,6 +93,7 @@ void SettingsPageWidget::setSettings(const PerforceSettings &s) m_ui.portLineEdit->setText(s.p4Port()); m_ui.clientLineEdit->setText(s.p4Client()); m_ui.userLineEdit->setText(s.p4User()); + m_ui.timeOutSpinBox->setValue(s.timeOutS()); m_ui.promptToSubmitCheckBox->setChecked(s.promptToSubmit()); } diff --git a/src/plugins/perforce/settingspage.ui b/src/plugins/perforce/settingspage.ui index 1b6c6b3a7d752e74410955796d82da774bd8e440..a81afdc3e766877a7dd36c898a3e93aa1ddae482 100644 --- a/src/plugins/perforce/settingspage.ui +++ b/src/plugins/perforce/settingspage.ui @@ -2,6 +2,14 @@ <ui version="4.0"> <class>Perforce::Internal::SettingsPage</class> <widget class="QWidget" name="Perforce::Internal::SettingsPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>437</width> + <height>407</height> + </rect> + </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QGroupBox" name="configGroupBox"> @@ -82,13 +90,33 @@ <string>Miscellaneous</string> </property> <layout class="QFormLayout" name="formLayout_2"> - <item row="0" column="0" colspan="2"> + <item row="1" column="0" colspan="2"> <widget class="QCheckBox" name="promptToSubmitCheckBox"> <property name="text"> <string>Prompt on submit</string> </property> </widget> </item> + <item row="0" column="0"> + <widget class="QLabel" name="timeOutLabel"> + <property name="text"> + <string>Timeout:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="timeOutSpinBox"> + <property name="suffix"> + <string>s</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>360</number> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp index 6415981dd0a271a005f93cbd7269f279c12166b0..14dcca1ad6260161e36c10b202caa117623e9470 100644 --- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp +++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp @@ -130,6 +130,7 @@ CustomExecutableConfigurationWidget::CustomExecutableConfigurationWidget(CustomE m_environmentWidget = new EnvironmentWidget(this, baseEnvironmentWidget); m_environmentWidget->setBaseEnvironment(rc->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(rc->baseEnvironmentText()); m_environmentWidget->setUserChanges(rc->userEnvironmentChanges()); vbox->addWidget(m_environmentWidget); @@ -168,6 +169,7 @@ void CustomExecutableConfigurationWidget::baseEnvironmentSelected(int index) m_runConfiguration->setBaseEnvironmentBase(CustomExecutableRunConfiguration::BaseEnvironmentBase(index)); m_environmentWidget->setBaseEnvironment(m_runConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_runConfiguration->baseEnvironmentText()); m_ignoreChange = false; } @@ -180,6 +182,7 @@ void CustomExecutableConfigurationWidget::baseEnvironmentChanged() m_runConfiguration->baseEnvironmentBase()); m_baseEnvironmentComboBox->setCurrentIndex(index); m_environmentWidget->setBaseEnvironment(m_runConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_runConfiguration->baseEnvironmentText()); } void CustomExecutableConfigurationWidget::userEnvironmentChangesChanged() @@ -358,6 +361,18 @@ QStringList CustomExecutableRunConfiguration::commandLineArguments() const return m_cmdArguments; } +QString CustomExecutableRunConfiguration::baseEnvironmentText() const +{ + if (m_baseEnvironmentBase == CustomExecutableRunConfiguration::CleanEnvironmentBase) { + return tr("Clean Environment"); + } else if (m_baseEnvironmentBase == CustomExecutableRunConfiguration::SystemEnvironmentBase) { + return tr("System Environment"); + } else if (m_baseEnvironmentBase == CustomExecutableRunConfiguration::BuildEnvironmentBase) { + return tr("Build Environment"); + } + return QString::null; +} + ProjectExplorer::Environment CustomExecutableRunConfiguration::baseEnvironment() const { ProjectExplorer::Environment env; diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.h b/src/plugins/projectexplorer/customexecutablerunconfiguration.h index 096a8a98278266ad7fd3744a27a9085c833f51c9..f6df16ae878b3a62e073b9fa7c1508dfcb7ed8d6 100644 --- a/src/plugins/projectexplorer/customexecutablerunconfiguration.h +++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.h @@ -112,6 +112,7 @@ private: void setBaseEnvironmentBase(BaseEnvironmentBase env); BaseEnvironmentBase baseEnvironmentBase() const; ProjectExplorer::Environment baseEnvironment() const; + QString baseEnvironmentText() const; void setUserEnvironmentChanges(const QList<ProjectExplorer::EnvironmentItem> &diff); QList<ProjectExplorer::EnvironmentItem> userEnvironmentChanges() const; diff --git a/src/plugins/projectexplorer/debugginghelper.cpp b/src/plugins/projectexplorer/debugginghelper.cpp index a075877d19d2614afd0448be671ed3b9bd9cf391..87822143d94fc94b5e7eeec44fd429f8861327ad 100644 --- a/src/plugins/projectexplorer/debugginghelper.cpp +++ b/src/plugins/projectexplorer/debugginghelper.cpp @@ -269,4 +269,3 @@ QStringList DebuggingHelperLibrary::possibleQMakeCommands() return result; #endif } - diff --git a/src/plugins/projectexplorer/environmenteditmodel.cpp b/src/plugins/projectexplorer/environmenteditmodel.cpp index e59012669fd11ccbd26825063dc941f001f2819c..5fb6e59e3e8c276e86333abc15e01e85711e4d7c 100644 --- a/src/plugins/projectexplorer/environmenteditmodel.cpp +++ b/src/plugins/projectexplorer/environmenteditmodel.cpp @@ -463,6 +463,12 @@ void EnvironmentWidget::setBaseEnvironment(const ProjectExplorer::Environment &e m_model->setBaseEnvironment(env); } +void EnvironmentWidget::setBaseEnvironmentText(const QString &text) +{ + m_baseEnvironmentText = text; + updateSummaryText(); +} + QList<EnvironmentItem> EnvironmentWidget::userChanges() const { return m_model->userChanges(); @@ -479,17 +485,20 @@ void EnvironmentWidget::updateSummaryText() QString text; const QList<EnvironmentItem> &list = m_model->userChanges(); foreach (const EnvironmentItem &item, list) { - if (!text.isEmpty()) + if (item.name != EnvironmentModel::tr("<VARIABLE>")) { text.append("<br>"); - if (item.name != EnvironmentModel::tr("<VARIABLE>")) { if (item.unset) text.append(tr("Unset <b>%1</b>").arg(item.name)); else text.append(tr("Set <b>%1</b> to <b>%2</b>").arg(item.name, item.value)); } } + if (text.isEmpty()) - text = tr("Summary: No changes to Environment"); + text.prepend(tr("Using <b>%1</b>").arg(m_baseEnvironmentText)); + else + text.prepend(tr("Using <b>%1</b> and").arg(m_baseEnvironmentText)); + m_detailsContainer->setSummaryText(text); } diff --git a/src/plugins/projectexplorer/environmenteditmodel.h b/src/plugins/projectexplorer/environmenteditmodel.h index 38b487c16678bc793c76fc5fd27152c4c6f6136d..f5625f697ab1994ddc0d597aa123d69a0d6cd839 100644 --- a/src/plugins/projectexplorer/environmenteditmodel.h +++ b/src/plugins/projectexplorer/environmenteditmodel.h @@ -109,6 +109,7 @@ public: EnvironmentWidget(QWidget *parent, QWidget *additionalDetailsWidget = 0); ~EnvironmentWidget(); + void setBaseEnvironmentText(const QString &text); void setBaseEnvironment(const ProjectExplorer::Environment &env); QList<EnvironmentItem> userChanges() const; @@ -132,6 +133,7 @@ private slots: private: EnvironmentModel *m_model; + QString m_baseEnvironmentText; Utils::DetailsWidget *m_detailsContainer; QTreeView *m_environmentTreeView; QPushButton *m_editButton; diff --git a/src/plugins/qmlinspector/qmlinspectormode.cpp b/src/plugins/qmlinspector/qmlinspectormode.cpp index 636c488defb45c1a0814038106dfa63a3f204742..69da5c2a054db15f37202036b0e37ba8246aaa1f 100644 --- a/src/plugins/qmlinspector/qmlinspectormode.cpp +++ b/src/plugins/qmlinspector/qmlinspectormode.cpp @@ -396,7 +396,7 @@ QWidget *QmlInspectorMode::createModeWindow() // right-side window with editor, output etc. Core::MiniSplitter *mainWindowSplitter = new Core::MiniSplitter; mainWindowSplitter->addWidget(createMainView()); - mainWindowSplitter->addWidget(new Core::OutputPanePlaceHolder(this)); + mainWindowSplitter->addWidget(new Core::OutputPanePlaceHolder(this, mainWindowSplitter)); mainWindowSplitter->setStretchFactor(0, 10); mainWindowSplitter->setStretchFactor(1, 0); mainWindowSplitter->setOrientation(Qt::Vertical); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index a6e92fe3417273d1b182074cec797708459a11fc..c4e113448a5f30144b052f97f08ea933a9548dab 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -114,6 +114,15 @@ Qt4Project *Qt4BuildConfiguration::qt4Project() const return static_cast<Qt4Project *>(project()); } +QString Qt4BuildConfiguration::baseEnvironmentText() const +{ + if (useSystemEnvironment()) + return tr("System Environment"); + else + return tr("Clean Environment"); + return QString::null; +} + ProjectExplorer::Environment Qt4BuildConfiguration::baseEnvironment() const { Environment env = useSystemEnvironment() ? Environment::systemEnvironment() : Environment(); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index 189b8a5558496b73cc00865a2d13ff366c0762ca..45febf077f08137b24c1c7a8a3b2ac365101fbb7 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -60,6 +60,7 @@ public: ProjectExplorer::Environment environment() const; ProjectExplorer::Environment baseEnvironment() const; + QString baseEnvironmentText() const; void setUserEnvironmentChanges(const QList<ProjectExplorer::EnvironmentItem> &diff); QList<ProjectExplorer::EnvironmentItem> userEnvironmentChanges() const; bool useSystemEnvironment() const; diff --git a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp index 59cef31c51798fe711a437c716bc122cceacf84d..fe022ea55d726c7aa333a8d589c3022f4904a811 100644 --- a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp @@ -82,6 +82,7 @@ void Qt4BuildEnvironmentWidget::init(ProjectExplorer::BuildConfiguration *bc) m_clearSystemEnvironmentCheckBox->setChecked(!m_buildConfiguration->useSystemEnvironment()); m_buildEnvironmentWidget->setBaseEnvironment(m_buildConfiguration->baseEnvironment()); + m_buildEnvironmentWidget->setBaseEnvironmentText(m_buildConfiguration->baseEnvironmentText()); m_buildEnvironmentWidget->setUserChanges(m_buildConfiguration->userEnvironmentChanges()); m_buildEnvironmentWidget->updateButtons(); } @@ -95,9 +96,11 @@ void Qt4BuildEnvironmentWidget::clearSystemEnvironmentCheckBoxClicked(bool check { m_buildConfiguration->setUseSystemEnvironment(!checked); m_buildEnvironmentWidget->setBaseEnvironment(m_buildConfiguration->baseEnvironment()); + m_buildEnvironmentWidget->setBaseEnvironmentText(m_buildConfiguration->baseEnvironmentText()); } void Qt4BuildEnvironmentWidget::environmentChanged() { m_buildEnvironmentWidget->setBaseEnvironment(m_buildConfiguration->baseEnvironment()); + m_buildEnvironmentWidget->setBaseEnvironmentText(m_buildConfiguration->baseEnvironmentText()); } diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index d5eb28df2ef89afb3b3e3a7443a2e9b70a98954d..6a9f13fef28f28b872ba75ca59482204ef36cec0 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -213,6 +213,7 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run m_environmentWidget = new ProjectExplorer::EnvironmentWidget(this, baseEnvironmentWidget); m_environmentWidget->setBaseEnvironment(m_qt4RunConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_qt4RunConfiguration->baseEnvironmentText()); m_environmentWidget->setUserChanges(m_qt4RunConfiguration->userEnvironmentChanges()); m_environmentWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); vboxTopLayout->addWidget(m_environmentWidget); @@ -271,6 +272,7 @@ void Qt4RunConfigurationWidget::baseEnvironmentSelected(int index) m_qt4RunConfiguration->setBaseEnvironmentBase(Qt4RunConfiguration::BaseEnvironmentBase(index)); m_environmentWidget->setBaseEnvironment(m_qt4RunConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_qt4RunConfiguration->baseEnvironmentText()); m_ignoreChange = false; } @@ -281,6 +283,7 @@ void Qt4RunConfigurationWidget::baseEnvironmentChanged() m_baseEnvironmentComboBox->setCurrentIndex(m_qt4RunConfiguration->baseEnvironmentBase()); m_environmentWidget->setBaseEnvironment(m_qt4RunConfiguration->baseEnvironment()); + m_environmentWidget->setBaseEnvironmentText(m_qt4RunConfiguration->baseEnvironmentText()); } void Qt4RunConfigurationWidget::userEnvironmentChangesChanged(const QList<ProjectExplorer::EnvironmentItem> &userChanges) @@ -480,6 +483,17 @@ QStringList Qt4RunConfiguration::commandLineArguments() const return m_commandLineArguments; } +QString Qt4RunConfiguration::baseEnvironmentText() const +{ + if (m_baseEnvironmentBase == Qt4RunConfiguration::CleanEnvironmentBase) + return tr("Clean Environment"); + else if (m_baseEnvironmentBase == Qt4RunConfiguration::SystemEnvironmentBase) + return tr("System Environment"); + else if (m_baseEnvironmentBase == Qt4RunConfiguration::BuildEnvironmentBase) + return tr("Build Environment"); + return QString::null; +} + ProjectExplorer::Environment Qt4RunConfiguration::baseEnvironment() const { ProjectExplorer::Environment env; diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h index f0622e4b77f7d163707523c4ecac7aa38564c9f7..ca3c4630d2d4c52a6ee7484e11015d950d4a4e84 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h @@ -123,6 +123,7 @@ private: BaseEnvironmentBase baseEnvironmentBase() const; ProjectExplorer::Environment baseEnvironment() const; + QString baseEnvironmentText() const; void setUserEnvironmentChanges(const QList<ProjectExplorer::EnvironmentItem> &diff); QList<ProjectExplorer::EnvironmentItem> userEnvironmentChanges() const; diff --git a/src/plugins/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp index e1aabc22c85ba9bcfa6a712f542df11c71c4fa63..42da8395b316924c8ac0e7e1b5dec6a645682f4a 100644 --- a/src/plugins/subversion/settingspage.cpp +++ b/src/plugins/subversion/settingspage.cpp @@ -58,6 +58,7 @@ SubversionSettings SettingsPageWidget::settings() const rc.useAuthentication = m_ui.userGroupBox->isChecked(); rc.user = m_ui.usernameLineEdit->text(); rc.password = m_ui.passwordLineEdit->text(); + rc.timeOutS = m_ui.timeOutSpinBox->value(); if (rc.user.isEmpty()) rc.useAuthentication = false; rc.promptToSubmit = m_ui.promptToSubmitCheckBox->isChecked(); @@ -70,6 +71,7 @@ void SettingsPageWidget::setSettings(const SubversionSettings &s) m_ui.usernameLineEdit->setText(s.user); m_ui.passwordLineEdit->setText(s.password); m_ui.userGroupBox->setChecked(s.useAuthentication); + m_ui.timeOutSpinBox->setValue(s.timeOutS); m_ui.promptToSubmitCheckBox->setChecked(s.promptToSubmit); } diff --git a/src/plugins/subversion/settingspage.ui b/src/plugins/subversion/settingspage.ui index e7f4b177b36991aa3ee092e40d69e0adb32094b5..efbe0cce8666014fb938d958248303e1cbe02664 100644 --- a/src/plugins/subversion/settingspage.ui +++ b/src/plugins/subversion/settingspage.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>473</width> + <width>496</width> <height>295</height> </rect> </property> @@ -72,13 +72,33 @@ <string>Miscellaneous</string> </property> <layout class="QFormLayout" name="formLayout_2"> - <item row="0" column="0" colspan="2"> + <item row="1" column="0" colspan="2"> <widget class="QCheckBox" name="promptToSubmitCheckBox"> <property name="text"> <string>Prompt on submit</string> </property> </widget> </item> + <item row="0" column="0"> + <widget class="QLabel" name="timeOutLabel"> + <property name="text"> + <string>Timeout:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="timeOutSpinBox"> + <property name="suffix"> + <string>s</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>360</number> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index cdf46123512cfb37e35b28a2e4d17d440f3bc9ea..545c5cf16ac0926814d98da2f453f7284ae29f2d 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -71,11 +71,6 @@ using namespace Subversion::Internal; -// Timeout for normal output commands -enum { subversionShortTimeOut = 10000 }; -// Timeout for submit, update -enum { subversionLongTimeOut = 120000 }; - static const char * const CMD_ID_SUBVERSION_MENU = "Subversion.Menu"; static const char * const CMD_ID_ADD = "Subversion.Add"; static const char * const CMD_ID_DELETE_FILE = "Subversion.Delete"; @@ -470,7 +465,7 @@ void SubversionPlugin::svnDiff(const QString &workingDir, const QStringList &fil QStringList args(QLatin1String("diff")); args << files; - const SubversionResponse response = runSvn(workingDir, args, subversionShortTimeOut, false, codec); + const SubversionResponse response = runSvn(workingDir, args, m_settings.timeOutMS(), false, codec); if (response.error) return; @@ -551,7 +546,7 @@ void SubversionPlugin::revertCurrentFile() QStringList args(QLatin1String("diff")); args.push_back(state.relativeCurrentFile()); - const SubversionResponse diffResponse = runSvn(state.currentFileTopLevel(), args, subversionShortTimeOut, false); + const SubversionResponse diffResponse = runSvn(state.currentFileTopLevel(), args, m_settings.timeOutMS(), false); if (diffResponse.error) return; @@ -568,7 +563,7 @@ void SubversionPlugin::revertCurrentFile() args.clear(); args << QLatin1String("revert") << state.relativeCurrentFile(); - const SubversionResponse revertResponse = runSvn(state.currentFileTopLevel(), args, subversionShortTimeOut, true); + const SubversionResponse revertResponse = runSvn(state.currentFileTopLevel(), args, m_settings.timeOutMS(), true); if (!revertResponse.error) { fcb.setModifiedReload(true); subVersionControl()->emitFilesChanged(QStringList(state.currentFile())); @@ -618,7 +613,7 @@ void SubversionPlugin::startCommit(const QString &workingDir, const QStringList QStringList args(QLatin1String("status")); args += files; - const SubversionResponse response = runSvn(workingDir, args, subversionShortTimeOut, false); + const SubversionResponse response = runSvn(workingDir, args, m_settings.timeOutMS(), false); if (response.error) return; @@ -659,7 +654,7 @@ bool SubversionPlugin::commit(const QString &messageFile, QStringList args = QStringList(QLatin1String("commit")); args << QLatin1String(nonInteractiveOptionC) << QLatin1String("--file") << messageFile; args.append(subVersionFileList); - const SubversionResponse response = runSvn(m_commitRepository, args, subversionLongTimeOut, true); + const SubversionResponse response = runSvn(m_commitRepository, args, m_settings.longTimeOutMS(), true); return !response.error ; } @@ -678,7 +673,7 @@ void SubversionPlugin::filelog(const QString &workingDir, const QStringList &fil foreach(const QString &file, files) args.append(QDir::toNativeSeparators(file)); - const SubversionResponse response = runSvn(workingDir, args, subversionShortTimeOut, false, codec); + const SubversionResponse response = runSvn(workingDir, args, m_settings.timeOutMS(), false, codec); if (response.error) return; @@ -705,7 +700,7 @@ void SubversionPlugin::updateProject() QStringList args(QLatin1String("update")); args.push_back(QLatin1String(nonInteractiveOptionC)); args.append(state.relativeCurrentProject()); - const SubversionResponse response = runSvn(state.currentProjectTopLevel(), args, subversionLongTimeOut, true); + const SubversionResponse response = runSvn(state.currentProjectTopLevel(), args, m_settings.longTimeOutMS(), true); if (!response.error) subVersionControl()->emitRepositoryChanged(state.currentProjectTopLevel()); } @@ -725,7 +720,7 @@ void SubversionPlugin::annotate(const QString &workingDir, const QString &file) args.push_back(QLatin1String("-v")); args.append(QDir::toNativeSeparators(file)); - const SubversionResponse response = runSvn(workingDir, args, subversionShortTimeOut, false, codec); + const SubversionResponse response = runSvn(workingDir, args, m_settings.timeOutMS(), false, codec); if (response.error) return; @@ -753,7 +748,7 @@ void SubversionPlugin::projectStatus() QTC_ASSERT(state.hasProject(), return); QStringList args(QLatin1String("status")); args += state.relativeCurrentProject(); - runSvn(state.currentProjectTopLevel(), args, subversionShortTimeOut, true); + runSvn(state.currentProjectTopLevel(), args, m_settings.timeOutMS(), true); } void SubversionPlugin::describe(const QString &source, const QString &changeNr) @@ -776,7 +771,7 @@ void SubversionPlugin::describe(const QString &source, const QString &changeNr) QStringList args(QLatin1String("log")); args.push_back(QLatin1String("-r")); args.push_back(changeNr); - const SubversionResponse logResponse = runSvn(topLevel, args, subversionShortTimeOut, false); + const SubversionResponse logResponse = runSvn(topLevel, args, m_settings.timeOutMS(), false); if (logResponse.error) return; description = logResponse.stdOut; @@ -790,7 +785,7 @@ void SubversionPlugin::describe(const QString &source, const QString &changeNr) args.push_back(diffArg); QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(source); - const SubversionResponse response = runSvn(topLevel, args, subversionShortTimeOut, false, codec); + const SubversionResponse response = runSvn(topLevel, args, m_settings.timeOutMS(), false, codec); if (response.error) return; description += response.stdOut; @@ -963,7 +958,7 @@ bool SubversionPlugin::vcsAdd(const QString &workingDir, const QString &rawFileN QStringList args(QLatin1String("add")); args.push_back(file); - const SubversionResponse response = runSvn(workingDir, args, subversionShortTimeOut, true); + const SubversionResponse response = runSvn(workingDir, args, m_settings.timeOutMS(), true); return !response.error; } @@ -974,7 +969,7 @@ bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFi QStringList args(QLatin1String("delete")); args.push_back(file); - const SubversionResponse response = runSvn(workingDir, args, subversionShortTimeOut, true); + const SubversionResponse response = runSvn(workingDir, args, m_settings.timeOutMS(), true); return !response.error; } diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp index 91d18c59e85e1ba90ab1c96183c7cfa7bb9aac5e..6ebc07c1e32bcd89bfbe95c9897cdb023a5b184b 100644 --- a/src/plugins/subversion/subversionsettings.cpp +++ b/src/plugins/subversion/subversionsettings.cpp @@ -41,6 +41,9 @@ static const char *authenticationKeyC = "Authentication"; static const char *userNameOptionC = "--username"; static const char *passwordOptionC = "--password"; static const char *promptToSubmitKeyC = "PromptForSubmit"; +static const char *timeOutKeyC = "TimeOut"; + +enum { defaultTimeOutS = 30 }; static QString defaultCommand() { @@ -57,6 +60,7 @@ using namespace Subversion::Internal; SubversionSettings::SubversionSettings() : svnCommand(defaultCommand()), useAuthentication(false), + timeOutS(defaultTimeOutS), promptToSubmit(true) { } @@ -68,6 +72,7 @@ void SubversionSettings::fromSettings(QSettings *settings) useAuthentication = settings->value(QLatin1String(authenticationKeyC), QVariant(false)).toBool(); user = settings->value(QLatin1String(userKeyC), QString()).toString(); password = settings->value(QLatin1String(passwordKeyC), QString()).toString(); + timeOutS = settings->value(QLatin1String(timeOutKeyC), defaultTimeOutS).toInt(); promptToSubmit = settings->value(QLatin1String(promptToSubmitKeyC), true).toBool(); settings->endGroup(); } @@ -80,6 +85,7 @@ void SubversionSettings::toSettings(QSettings *settings) const settings->setValue(QLatin1String(userKeyC), user); settings->setValue(QLatin1String(passwordKeyC), password); settings->setValue(QLatin1String(promptToSubmitKeyC), promptToSubmit); + settings->setValue(QLatin1String(timeOutKeyC), timeOutS); settings->endGroup(); } @@ -89,7 +95,8 @@ bool SubversionSettings::equals(const SubversionSettings &s) const && useAuthentication == s.useAuthentication && user == s.user && password == s.password - && promptToSubmit == s.promptToSubmit; + && timeOutS == s.timeOutS + && promptToSubmit == s.promptToSubmit; } QStringList SubversionSettings::addOptions(const QStringList &args) const diff --git a/src/plugins/subversion/subversionsettings.h b/src/plugins/subversion/subversionsettings.h index 78d44190e59e25766ba4573918eed32d17ca31e9..cec86f83cfb7d23eeea48030d90cae41f171dcf8 100644 --- a/src/plugins/subversion/subversionsettings.h +++ b/src/plugins/subversion/subversionsettings.h @@ -47,6 +47,9 @@ struct SubversionSettings void fromSettings(QSettings *); void toSettings(QSettings *) const; + inline int timeOutMS() const { return timeOutS * 10000; } + inline int longTimeOutMS() const { return timeOutS * 100000; } + // Add authentication and (maybe future) options to the // command line QStringList addOptions(const QStringList &args) const; @@ -59,6 +62,7 @@ struct SubversionSettings bool useAuthentication; QString user; QString password; + int timeOutS; bool promptToSubmit; }; diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp index ba6e835f3eb9080e31d03b494af2c7d30883f990..d3a2696195fb4a6e4d3a41b1904cbc2d159cb925 100644 --- a/src/plugins/texteditor/basetextdocument.cpp +++ b/src/plugins/texteditor/basetextdocument.cpp @@ -324,7 +324,7 @@ void BaseTextDocument::cleanWhitespace(QTextCursor& cursor, bool cleanIndentatio while (block.isValid() && block != end) { - if (inEntireDocument || block.revision() > documentLayout->lastSaveRevision) { + if (inEntireDocument || block.revision() != documentLayout->lastSaveRevision) { QString blockText = block.text(); if (int trailing = m_tabSettings.trailingWhitespaces(blockText)) {