diff options
| author | dt <qtc-commiter@nokia.com> | 2008-12-12 12:13:49 +0100 |
|---|---|---|
| committer | dt <qtc-commiter@nokia.com> | 2008-12-12 12:13:49 +0100 |
| commit | 7d24f921e3b519ceb9528a179ed88c696876a212 (patch) | |
| tree | 4ccd08aa17952bb41cfdafcbf46a1e538670fb7c /src | |
| parent | a7227782db27c9b68cb1768d3f2a4ce4237c7ee5 (diff) | |
| parent | 8e297aceddad7cb9378ac437461e160398e0f206 (diff) | |
| download | qt-creator-7d24f921e3b519ceb9528a179ed88c696876a212.tar.gz | |
Merge branch '0.9.1-beta' of git@scm.dev.nokia.troll.no:creator/mainline into 0.9.1-beta
Diffstat (limited to 'src')
42 files changed, 311 insertions, 265 deletions
diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index b31f0d2bc6..54de3c801e 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -40,7 +40,7 @@ #include <QByteArray> #include <QList> -#include <QSet> +#include <QMap> #include <QSharedPointer> #include <QString> #include <QStringList> @@ -236,6 +236,16 @@ private: QList<MacroUse> _macroUses; }; +class CPLUSPLUS_EXPORT Snapshot: public QMap<QString, Document::Ptr> +{ +public: + Snapshot() + { } + + ~Snapshot() + { } +}; + } // end of namespace CPlusPlus #endif // CPPDOCUMENT_H diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 67eb05d7f4..8b24b59f5e 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -77,7 +77,7 @@ LookupContext::LookupContext(Control *control) LookupContext::LookupContext(Symbol *symbol, Document::Ptr expressionDocument, Document::Ptr thisDocument, - const QMap<QString, Document::Ptr> &documents) + const Snapshot &documents) : _symbol(symbol), _expressionDocument(expressionDocument), _thisDocument(thisDocument), diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h index 36ea6a8298..18754bf667 100644 --- a/src/libs/cplusplus/LookupContext.h +++ b/src/libs/cplusplus/LookupContext.h @@ -57,7 +57,7 @@ public: LookupContext(Symbol *symbol, Document::Ptr expressionDocument, Document::Ptr thisDocument, - const QMap<QString, Document::Ptr> &documents); + const Snapshot &documents); LookupContext(Symbol *symbol, const LookupContext &context); @@ -87,7 +87,7 @@ public: QList<Symbol *> resolveClassOrNamespace(Name *name) const { return resolveClassOrNamespace(name, visibleScopes()); } - QMap<QString, Document::Ptr> documents() const + Snapshot snapshot() const { return _documents; } enum ResolveMode { @@ -140,7 +140,7 @@ private: Document::Ptr _thisDocument; // All documents. - QMap<QString, Document::Ptr> _documents; + Snapshot _documents; // Visible scopes. QList<Scope *> _visibleScopes; diff --git a/src/libs/cplusplus/TypeOfExpression.cpp b/src/libs/cplusplus/TypeOfExpression.cpp index 53fa7e7839..cb373cce02 100644 --- a/src/libs/cplusplus/TypeOfExpression.cpp +++ b/src/libs/cplusplus/TypeOfExpression.cpp @@ -46,9 +46,9 @@ TypeOfExpression::TypeOfExpression(): { } -void TypeOfExpression::setDocuments(const QMap<QString, Document::Ptr> &documents) +void TypeOfExpression::setSnapshot(const Snapshot &documents) { - m_documents = documents; + m_snapshot = documents; m_lookupContext = LookupContext(); } @@ -59,12 +59,12 @@ QList<TypeOfExpression::Result> TypeOfExpression::operator()(const QString &expr { QString code = expression; if (mode == Preprocess) - code = preprocessedExpression(expression, m_documents, document); + code = preprocessedExpression(expression, m_snapshot, document); Document::Ptr expressionDoc = documentForExpression(code); m_ast = extractExpressionAST(expressionDoc); m_lookupContext = LookupContext(lastVisibleSymbol, expressionDoc, - document, m_documents); + document, m_snapshot); ResolveExpression resolveExpression(m_lookupContext); return resolveExpression(m_ast); @@ -103,10 +103,12 @@ Document::Ptr TypeOfExpression::documentForExpression(const QString &expression) return doc; } -void TypeOfExpression::processEnvironment(QMap<QString, Document::Ptr> documents, +void TypeOfExpression::processEnvironment(Snapshot documents, Document::Ptr doc, Environment *env, QSet<QString> *processed) const { + if (! doc) + return; if (processed->contains(doc->fileName())) return; processed->insert(doc->fileName()); @@ -120,7 +122,7 @@ void TypeOfExpression::processEnvironment(QMap<QString, Document::Ptr> documents } QString TypeOfExpression::preprocessedExpression(const QString &expression, - QMap<QString, Document::Ptr> documents, + Snapshot documents, Document::Ptr thisDocument) const { Environment env; diff --git a/src/libs/cplusplus/TypeOfExpression.h b/src/libs/cplusplus/TypeOfExpression.h index e6a9a7f4b6..87d4113f30 100644 --- a/src/libs/cplusplus/TypeOfExpression.h +++ b/src/libs/cplusplus/TypeOfExpression.h @@ -61,7 +61,7 @@ public: * Also clears the lookup context, so can be used to make sure references * to the documents previously used are removed. */ - void setDocuments(const QMap<QString, Document::Ptr> &documents); + void setSnapshot(const Snapshot &documents); enum PreprocessMode { NoPreprocess, @@ -100,15 +100,15 @@ private: ExpressionAST *extractExpressionAST(Document::Ptr doc) const; Document::Ptr documentForExpression(const QString &expression) const; - void processEnvironment(QMap<QString, CPlusPlus::Document::Ptr> documents, + void processEnvironment(CPlusPlus::Snapshot documents, CPlusPlus::Document::Ptr doc, CPlusPlus::Environment *env, QSet<QString> *processed) const; QString preprocessedExpression(const QString &expression, - QMap<QString, CPlusPlus::Document::Ptr> documents, + CPlusPlus::Snapshot documents, CPlusPlus::Document::Ptr thisDocument) const; - QMap<QString, Document::Ptr> m_documents; + Snapshot m_snapshot; ExpressionAST *m_ast; LookupContext m_lookupContext; }; diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index 81a2228e66..100fdbe717 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -46,11 +46,12 @@ #include <QtGui/QHBoxLayout> #include <QtGui/QLineEdit> #include <QtGui/QToolButton> +#include <QtGui/QPushButton> namespace Core { namespace Utils { -#ifdef Q_OS_OSX +#ifdef Q_OS_MAC /*static*/ const char * const PathChooser::browseButtonLabel = "Choose..."; #else /*static*/ const char * const PathChooser::browseButtonLabel = "Browse..."; @@ -112,7 +113,11 @@ PathChooser::PathChooser(QWidget *parent) : hLayout->addWidget(m_d->m_lineEdit); hLayout->setSizeConstraint(QLayout::SetMinimumSize); +#ifdef Q_OS_MAC + QPushButton *browseButton = new QPushButton; +#else QToolButton *browseButton = new QToolButton; +#endif browseButton->setText(tr(browseButtonLabel)); connect(browseButton, SIGNAL(clicked()), this, SLOT(slotBrowse())); diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index bf78bf94f2..c5189e60ef 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -342,6 +342,10 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget) m_navigationComboBox = new NavComboBox(this); m_navigationWidget = 0; +#ifdef Q_OS_MAC + // this is to avoid ugly tool bar behavior + m_navigationComboBox->setMaximumWidth(130); +#endif m_toolbar = new QToolBar(this); m_toolbar->setContentsMargins(0, 0, 0, 0); diff --git a/src/plugins/coreplugin/versiondialog.cpp b/src/plugins/coreplugin/versiondialog.cpp index 0decae6cf1..e534a0d1ea 100644 --- a/src/plugins/coreplugin/versiondialog.cpp +++ b/src/plugins/coreplugin/versiondialog.cpp @@ -72,7 +72,7 @@ VersionDialog::VersionDialog(QWidget *parent) "<br/>" "Built on " __DATE__ " at " __TIME__ "<br />" #ifdef IDE_REVISION - "Using revision %5<br/>" + "From revision %5<br/>" #endif "<br/>" "<br/>" diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e3bf12757b..49b130ebc1 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -427,7 +427,9 @@ void CPPEditor::switchDeclarationDefinition() if (!m_modelManager) return; - Document::Ptr doc = m_modelManager->document(file()->fileName()); + const Snapshot snapshot = m_modelManager->snapshot(); + + Document::Ptr doc = snapshot.value(file()->fileName()); if (!doc) return; Symbol *lastSymbol = doc->findSymbolAt(line, column); @@ -445,7 +447,7 @@ void CPPEditor::switchDeclarationDefinition() if (f) { TypeOfExpression typeOfExpression; - typeOfExpression.setDocuments(m_modelManager->documents()); + typeOfExpression.setSnapshot(m_modelManager->snapshot()); QList<TypeOfExpression::Result> resolvedSymbols = typeOfExpression(QString(), doc, lastSymbol); const LookupContext &context = typeOfExpression.lookupContext(); @@ -474,10 +476,12 @@ void CPPEditor::jumpToDefinition() if (!m_modelManager) return; + const Snapshot snapshot = m_modelManager->snapshot(); + // Find the last symbol up to the cursor position int line = 0, column = 0; convertPosition(position(), &line, &column); - Document::Ptr doc = m_modelManager->document(file()->fileName()); + Document::Ptr doc = snapshot.value(file()->fileName()); if (!doc) return; @@ -503,7 +507,7 @@ void CPPEditor::jumpToDefinition() // Evaluate the type of the expression TypeOfExpression typeOfExpression; - typeOfExpression.setDocuments(m_modelManager->documents()); + typeOfExpression.setSnapshot(m_modelManager->snapshot()); QList<TypeOfExpression::Result> resolvedSymbols = typeOfExpression(expression, doc, lastSymbol); @@ -572,7 +576,7 @@ Symbol *CPPEditor::findDefinition(Symbol *lastSymbol) QualifiedNameId *q = control.qualifiedNameId(&qualifiedName[0], qualifiedName.size()); LookupContext context(&control); - const QMap<QString, Document::Ptr> documents = m_modelManager->documents(); + const Snapshot documents = m_modelManager->snapshot(); foreach (Document::Ptr doc, documents) { QList<Scope *> visibleScopes; visibleScopes.append(doc->globalSymbols()); @@ -744,7 +748,8 @@ void CPPEditor::unCommentSelection() QString endText = endBlock.text(); int endPos = end - endBlock.position(); - bool hasTrailingCharacters = !endText.mid(endPos).trimmed().isEmpty(); + bool hasTrailingCharacters = !endText.left(endPos).remove(QLatin1String("//")).trimmed().isEmpty() + && !endText.mid(endPos).trimmed().isEmpty(); if ((endPos <= endText.length() - 2 && endText.at(endPos) == QLatin1Char('*') && endText.at(endPos+1) == QLatin1Char('/'))) { diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 4606bd948f..addf5301f7 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -434,10 +434,12 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor) //if (! expression.isEmpty()) //qDebug() << "***** expression:" << expression; - if (Document::Ptr thisDocument = m_manager->document(fileName)) { + const Snapshot snapshot = m_manager->snapshot(); + + if (Document::Ptr thisDocument = snapshot.value(fileName)) { Symbol *symbol = thisDocument->findSymbolAt(line, column); - typeOfExpression.setDocuments(m_manager->documents()); + typeOfExpression.setSnapshot(m_manager->snapshot()); QList<TypeOfExpression::Result> resolvedTypes = typeOfExpression(expression, thisDocument, symbol, TypeOfExpression::Preprocess); @@ -964,8 +966,10 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) if (Function *function = symbol->type()->asFunction()) { // If the member is a function, automatically place the opening parenthesis, // except when it might take template parameters. - if (!function->returnType().isValid() - && (function->identity() && !function->identity()->isDestructorNameId())) { + const bool hasReturnType = function->returnType().isValid() || + function->returnType().isSigned() || + function->returnType().isUnsigned(); + if (! hasReturnType && (function->identity() && !function->identity()->isDestructorNameId())) { // Don't insert any magic, since the user might have just wanted to select the class } else if (function->templateParameterCount() != 0) { @@ -1034,7 +1038,7 @@ void CppCodeCompletion::cleanup() // Set empty map in order to avoid referencing old versions of the documents // until the next completion - typeOfExpression.setDocuments(QMap<QString, Document::Ptr>()); + typeOfExpression.setSnapshot(Snapshot()); } int CppCodeCompletion::findStartOfName(const TextEditor::ITextEditor *editor) diff --git a/src/plugins/cpptools/cpphoverhandler.cpp b/src/plugins/cpptools/cpphoverhandler.cpp index f3831e5394..fab0d83b31 100644 --- a/src/plugins/cpptools/cpphoverhandler.cpp +++ b/src/plugins/cpptools/cpphoverhandler.cpp @@ -165,9 +165,11 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in QTextCursor tc(edit->document()); tc.setPosition(pos); + const Snapshot documents = m_manager->snapshot(); + const int lineNumber = tc.block().blockNumber() + 1; const QString fileName = editor->file()->fileName(); - Document::Ptr doc = m_manager->document(fileName); + Document::Ptr doc = documents.value(fileName); if (doc) { foreach (Document::DiagnosticMessage m, doc->diagnosticMessages()) { if (m.line() == lineNumber) { @@ -212,7 +214,7 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in Symbol *lastSymbol = doc->findSymbolAt(line, column); TypeOfExpression typeOfExpression; - typeOfExpression.setDocuments(m_manager->documents()); + typeOfExpression.setSnapshot(documents); QList<TypeOfExpression::Result> types = typeOfExpression(expression, doc, lastSymbol); if (!types.isEmpty()) { diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 9adc892713..a02656ee8c 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -143,7 +143,7 @@ protected: private: QPointer<CppModelManager> m_modelManager; - CppModelManager::DocumentTable m_documents; + Snapshot m_snapshot; Environment env; pp m_proc; QStringList m_includePaths; @@ -160,7 +160,7 @@ private: CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager) : m_modelManager(modelManager), - m_documents(modelManager->documents()), + m_snapshot(modelManager->snapshot()), m_proc(this, env) { } @@ -340,7 +340,7 @@ void CppPreprocessor::mergeEnvironment(Document::Ptr doc, QSet<QString> *process processed->insert(fn); foreach (QString includedFile, doc->includedFiles()) { - mergeEnvironment(m_documents.value(includedFile), processed); + mergeEnvironment(m_snapshot.value(includedFile), processed); } foreach (const Macro macro, doc->definedMacros()) { @@ -386,7 +386,7 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type, } if (! contents.isEmpty()) { - Document::Ptr cachedDoc = m_documents.value(fileName); + Document::Ptr cachedDoc = m_snapshot.value(fileName); if (cachedDoc && m_currentDoc) { mergeEnvironment(cachedDoc); } else { @@ -477,11 +477,8 @@ CppModelManager::CppModelManager(QObject *parent) : CppModelManager::~CppModelManager() { } -Document::Ptr CppModelManager::document(const QString &fileName) const -{ return m_documents.value(fileName); } - -CppModelManager::DocumentTable CppModelManager::documents() const -{ return m_documents; } +Snapshot CppModelManager::snapshot() const +{ return m_snapshot; } void CppModelManager::ensureUpdated() { @@ -672,7 +669,7 @@ void CppModelManager::emitDocumentUpdated(Document::Ptr doc) void CppModelManager::onDocumentUpdated(Document::Ptr doc) { const QString fileName = doc->fileName(); - m_documents[fileName] = doc; + m_snapshot[fileName] = doc; QList<Core::IEditor *> openedEditors = m_core->editorManager()->openedEditors(); foreach (Core::IEditor *editor, openedEditors) { if (editor->file()->fileName() == fileName) { @@ -837,7 +834,7 @@ void CppModelManager::parse(QFutureInterface<void> &future, void CppModelManager::GC() { - DocumentTable documents = m_documents; + Snapshot documents = m_snapshot; QSet<QString> processed; QStringList todo = projectFiles(); @@ -868,7 +865,7 @@ void CppModelManager::GC() } emit aboutToRemoveFiles(removedFiles); - m_documents = documents; + m_snapshot = documents; } diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index 3b2f4e1999..2594705620 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -76,8 +76,7 @@ public: virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const; virtual void updateProjectInfo(const ProjectInfo &pinfo); - virtual CPlusPlus::Document::Ptr document(const QString &fileName) const; - virtual DocumentTable documents() const; + virtual CPlusPlus::Snapshot snapshot() const; virtual void GC(); QFuture<void> refreshSourceFiles(const QStringList &sourceFiles); @@ -146,7 +145,7 @@ private: Core::ICore *m_core; ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer; CppHoverHandler *m_hoverHandler; - DocumentTable m_documents; + CPlusPlus::Snapshot m_snapshot; // cache bool m_dirty; diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h index e3ad4fe961..6dc0da67ca 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.h +++ b/src/plugins/cpptools/cppmodelmanagerinterface.h @@ -46,14 +46,11 @@ namespace ProjectExplorer { namespace CppTools { -class CPPTOOLS_EXPORT CppModelManagerInterface - : public QObject +class CPPTOOLS_EXPORT CppModelManagerInterface: public QObject { Q_OBJECT public: - typedef QMap<QString, CPlusPlus::Document::Ptr> DocumentTable; // ### remove me - class ProjectInfo { public: @@ -89,8 +86,7 @@ public: virtual void GC() = 0; virtual void updateSourceFiles(const QStringList &sourceFiles) = 0; - virtual CPlusPlus::Document::Ptr document(const QString &fileName) const = 0; - virtual DocumentTable documents() const = 0; + virtual CPlusPlus::Snapshot snapshot() const = 0; virtual QList<ProjectInfo> projectInfos() const = 0; virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0; diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro index 74112379e3..170f62b5bf 100644 --- a/src/plugins/cpptools/cpptools.pro +++ b/src/plugins/cpptools/cpptools.pro @@ -6,7 +6,6 @@ include(cpptools_dependencies.pri) # DEFINES += QT_NO_CAST_FROM_ASCII DEFINES += QT_NO_CAST_TO_ASCII -unix:QMAKE_CXXFLAGS_DEBUG += -O3 INCLUDEPATH += . DEFINES += CPPTOOLS_LIBRARY CONFIG += help diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h index 4997e5cf04..494455f6d8 100644 --- a/src/plugins/cpptools/searchsymbols.h +++ b/src/plugins/cpptools/searchsymbols.h @@ -43,6 +43,7 @@ #include <QIcon> #include <QMetaType> #include <QString> +#include <QSet> #include <functional> diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index 3d67e19c6a..7308fb441c 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -58,7 +58,6 @@ SOURCES += attachexternaldialog.cpp \ gdbengine.cpp \ gdbmi.cpp \ gdboptionpage.cpp \ - gdbtypemacros.cpp \ gdbengine.h \ moduleshandler.cpp \ moduleswindow.cpp \ @@ -79,7 +78,6 @@ FORMS += attachexternaldialog.ui \ breakcondition.ui \ mode.ui \ gdboptionpage.ui \ - gdbtypemacros.ui \ startexternaldialog.ui \ RESOURCES += debugger.qrc diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 37406f70cc..d9217069c6 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -183,7 +183,6 @@ DebuggerPlugin::DebuggerPlugin() { m_pm = 0; m_generalOptionPage = 0; - m_typeMacroPage = 0; m_locationMark = 0; m_manager = 0; } @@ -202,7 +201,6 @@ void DebuggerPlugin::shutdown() //qDebug() << "DebuggerPlugin::~DebuggerPlugin"; removeObject(m_debugMode); removeObject(m_generalOptionPage); - removeObject(m_typeMacroPage); // FIXME: when using the line below, BreakWindow etc gets deleted twice. // so better leak for now... @@ -212,9 +210,6 @@ void DebuggerPlugin::shutdown() delete m_generalOptionPage; m_generalOptionPage = 0; - delete m_typeMacroPage; - m_typeMacroPage = 0; - delete m_locationMark; m_locationMark = 0; @@ -409,13 +404,10 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes mdebug->addAction(cmd); m_generalOptionPage = 0; - m_typeMacroPage = 0; // FIXME: m_generalOptionPage = new GdbOptionPage(&theGdbSettings()); addObject(m_generalOptionPage); - m_typeMacroPage = new TypeMacroPage(&theGdbSettings()); - addObject(m_typeMacroPage); m_locationMark = 0; diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h index 91ffe4dbf7..ebf12b5e12 100644 --- a/src/plugins/debugger/debuggerplugin.h +++ b/src/plugins/debugger/debuggerplugin.h @@ -54,7 +54,6 @@ namespace Internal { class DebuggerManager; class DebugMode; class GdbOptionPage; -class TypeMacroPage; class LocationMark; class DebuggerPlugin : public ExtensionSystem::IPlugin @@ -103,7 +102,6 @@ private: ExtensionSystem::PluginManager *m_pm; GdbOptionPage *m_generalOptionPage; - TypeMacroPage *m_typeMacroPage; QString m_previousMode; LocationMark *m_locationMark; diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h index 56106a7524..6b3cbb15fe 100644 --- a/src/plugins/debugger/gdbengine.h +++ b/src/plugins/debugger/gdbengine.h @@ -80,7 +80,7 @@ enum DataDumperState DataDumperUnavailable, }; -// FIXME: Move to extra file? + class GdbSettings { public: diff --git a/src/plugins/debugger/gdboptionpage.cpp b/src/plugins/debugger/gdboptionpage.cpp index e05b811889..7d6742e958 100644 --- a/src/plugins/debugger/gdboptionpage.cpp +++ b/src/plugins/debugger/gdboptionpage.cpp @@ -58,7 +58,11 @@ GdbOptionPage::GdbOptionPage(GdbSettings *settings) #if defined(Q_OS_WIN32) defaultCommand.append(".exe"); #endif + QString defaultScript = coreIFace->resourcePath() + + QLatin1String("/gdb/qt4macros"); + m_settings->m_gdbCmd = s->value("Location", defaultCommand).toString(); + m_settings->m_scriptFile= s->value("ScriptFile", defaultScript).toString(); m_settings->m_gdbEnv = s->value("Environment", "").toString(); m_settings->m_autoRun = s->value("AutoRun", true).toBool(); m_settings->m_autoQuit = s->value("AutoQuit", true).toBool(); @@ -72,36 +76,50 @@ QString GdbOptionPage::name() const QString GdbOptionPage::category() const { - return "Debugger|Gdb"; + return "Debugger"; } QString GdbOptionPage::trCategory() const { - return tr("Debugger|Gdb"); + return tr("Debugger"); } QWidget *GdbOptionPage::createPage(QWidget *parent) { QWidget *w = new QWidget(parent); m_ui.setupUi(w); - m_ui.gdbEdit->setText(m_settings->m_gdbCmd); - m_ui.envEdit->setText(m_settings->m_gdbEnv); + m_ui.gdbLocationChooser->setExpectedKind(Core::Utils::PathChooser::Command); + m_ui.gdbLocationChooser->setPromptDialogTitle(tr("Choose Gdb Location")); + m_ui.gdbLocationChooser->setPath(m_settings->m_gdbCmd); + m_ui.scriptFileChooser->setExpectedKind(Core::Utils::PathChooser::File); + m_ui.scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File")); + m_ui.scriptFileChooser->setPath(m_settings->m_scriptFile); + m_ui.environmentEdit->setText(m_settings->m_gdbEnv); m_ui.autoStartBox->setChecked(m_settings->m_autoRun); m_ui.autoQuitBox->setChecked(m_settings->m_autoQuit); - connect(m_ui.pushButtonBrowse, SIGNAL(clicked()), - this, SLOT(browse())); + + // FIXME + m_ui.autoStartBox->hide(); + m_ui.autoQuitBox->hide(); + m_ui.environmentEdit->hide(); + m_ui.labelEnvironment->hide(); + + connect(m_ui.gdbLocationChooser, SIGNAL(changed()), + this, SLOT(onGdbLocationChanged())); + connect(m_ui.scriptFileChooser, SIGNAL(changed()), + this, SLOT(onScriptFileChanged())); return w; } -void GdbOptionPage::browse() +void GdbOptionPage::onGdbLocationChanged() { - QString fileName = QFileDialog::getOpenFileName(m_ui.pushButtonBrowse, - "Browse for gdb executable"); - if (fileName.isEmpty()) - return; - m_settings->m_gdbCmd = fileName; - m_ui.gdbEdit->setText(fileName); + m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path(); +} + +void GdbOptionPage::onScriptFileChanged() +{ + m_settings->m_scriptFile = m_ui.scriptFileChooser->path(); } void GdbOptionPage::finished(bool accepted) @@ -109,10 +127,11 @@ void GdbOptionPage::finished(bool accepted) if (!accepted) return; - m_settings->m_gdbCmd = m_ui.gdbEdit->text(); - m_settings->m_gdbEnv = m_ui.envEdit->text(); + m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path(); + m_settings->m_gdbEnv = m_ui.environmentEdit->text(); m_settings->m_autoRun = m_ui.autoStartBox->isChecked(); m_settings->m_autoQuit = m_ui.autoQuitBox->isChecked(); + m_settings->m_scriptFile = m_ui.scriptFileChooser->path(); Core::ICore *coreIFace = m_pm->getObject<Core::ICore>(); if (!coreIFace || !coreIFace->settings()) diff --git a/src/plugins/debugger/gdboptionpage.h b/src/plugins/debugger/gdboptionpage.h index 1d71024bac..d306e03e20 100644 --- a/src/plugins/debugger/gdboptionpage.h +++ b/src/plugins/debugger/gdboptionpage.h @@ -35,7 +35,6 @@ #define GDBOPTIONPAGE_H #include "ui_gdboptionpage.h" -#include "ui_gdbtypemacros.h" #include <coreplugin/dialogs/ioptionspage.h> @@ -63,7 +62,8 @@ public: void finished(bool accepted); public slots: - void browse(); + void onGdbLocationChanged(); + void onScriptFileChanged(); private: ExtensionSystem::PluginManager *m_pm; @@ -72,6 +72,7 @@ private: GdbSettings *m_settings; }; +#if 0 class TypeMacroPage : public Core::IOptionsPage { Q_OBJECT @@ -87,7 +88,6 @@ public: void finished(bool accepted); private slots: - void onScriptButton(); void onAddButton(); void onDelButton(); void currentItemChanged(QTreeWidgetItem *item); @@ -100,6 +100,7 @@ private: GdbSettings *m_settings; QWidget *m_widget; }; +#endif } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/gdboptionpage.ui b/src/plugins/debugger/gdboptionpage.ui index 4b58d5d714..580f13c0d6 100644 --- a/src/plugins/debugger/gdboptionpage.ui +++ b/src/plugins/debugger/gdboptionpage.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>433</width> - <height>216</height> + <height>233</height> </rect> </property> <property name="windowTitle"> @@ -23,7 +23,7 @@ <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> - <string>Gdb Debug Options</string> + <string>Locations</string> </property> <layout class="QGridLayout"> <property name="margin"> @@ -32,46 +32,45 @@ <property name="spacing"> <number>6</number> </property> - <item row="0" column="1"> - <widget class="QLineEdit" name="gdbEdit"/> - </item> - <item row="1" column="1" colspan="2"> - <widget class="QLineEdit" name="envEdit"/> + <item row="1" column="1"> + <widget class="QLineEdit" name="environmentEdit"/> </item> <item row="0" column="0"> - <widget class="QLabel" name="label"> + <widget class="QLabel" name="labelGdbLocaltion"> + <property name="toolTip"> + <string>This is either a full abolute path leading to the gdb binary you intend to use or the name of a gdb binary that wiull be searched in your PATH.</string> + </property> <property name="text"> <string>Gdb Location:</string> </property> - <property name="buddy"> - <cstring>gdbEdit</cstring> - </property> </widget> </item> <item row="1" column="0"> - <widget class="QLabel" name="label_2"> + <widget class="QLabel" name="labelEnvironment"> <property name="text"> <string>Environment:</string> </property> <property name="buddy"> - <cstring>envEdit</cstring> + <cstring>environmentEdit</cstring> </property> </widget> </item> - <item row="0" column="2"> - <widget class="QPushButton" name="pushButtonBrowse"> - <property name="text"> - <string/> + <item row="2" column="0"> + <widget class="QLabel" name="labelGdbStartupScript"> + <property name="toolTip"> + <string>This is either empty or points to a file containing gdb commands that will be executed immediately after gdb starts up.</string> </property> - <property name="icon"> - <iconset resource="../coreplugin/core.qrc"> - <normaloff>:/qworkbench/images/fileopen.png</normaloff>:/qworkbench/images/fileopen.png</iconset> - </property> - <property name="checkable"> - <bool>false</bool> + <property name="text"> + <string>Gdb Startup Script:</string> </property> </widget> </item> + <item row="2" column="1"> + <widget class="Core::Utils::PathChooser" name="scriptFileChooser" native="true"/> + </item> + <item row="0" column="1"> + <widget class="Core::Utils::PathChooser" name="gdbLocationChooser" native="true"/> + </item> </layout> </widget> </item> @@ -104,6 +103,14 @@ </item> </layout> </widget> + <customwidgets> + <customwidget> + <class>Core::Utils::PathChooser</class> + <extends>QWidget</extends> + <header location="global">utils/pathchooser.h</header> + <container>1</container> + </customwidget> + </customwidgets> <resources> <include location="../coreplugin/core.qrc"/> </resources> diff --git a/src/plugins/debugger/gdbtypemacros.cpp b/src/plugins/debugger/gdbtypemacros.cpp index 8610d01e39..89178af268 100644 --- a/src/plugins/debugger/gdbtypemacros.cpp +++ b/src/plugins/debugger/gdbtypemacros.cpp @@ -109,6 +109,8 @@ QWidget *TypeMacroPage::createPage(QWidget *parent) m_widget = new QWidget(parent); m_ui.setupUi(m_widget); + m_ui.scriptFile->setPromptDialogTitle(tr("Select Gdb Script")); + m_ui.scriptFile->setExpectedKind(Core::Utils::PathChooser::File); connect(m_ui.addButton, SIGNAL(clicked()), this, SLOT(onAddButton())); @@ -116,8 +118,8 @@ QWidget *TypeMacroPage::createPage(QWidget *parent) connect(m_ui.delButton, SIGNAL(clicked()), this, SLOT(onDelButton())); - connect(m_ui.scriptButton, SIGNAL(clicked()), - this, SLOT(onScriptButton())); + connect(m_ui.scriptFile, SIGNAL(validChanged()), + this, SLOT(updateButtonState())); connect(m_ui.treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(currentItemChanged(QTreeWidgetItem *))); @@ -139,7 +141,7 @@ QWidget *TypeMacroPage::createPage(QWidget *parent) ++i; } - m_ui.scriptEdit->setText(m_settings->m_scriptFile); + m_ui.scriptFile->setPath(m_settings->m_scriptFile); updateButtonState(); @@ -152,7 +154,7 @@ void TypeMacroPage::finished(bool accepted) return; m_settings->m_typeMacros.clear(); - m_settings->m_scriptFile = m_ui.scriptEdit->text(); + m_settings->m_scriptFile = m_ui.scriptFile->path(); for (int i = 0; i < m_ui.treeWidget->topLevelItemCount(); ++i) { QTreeWidgetItem *item = m_ui.treeWidget->topLevelItem(i); @@ -172,13 +174,6 @@ void TypeMacroPage::finished(bool accepted) } } -void TypeMacroPage::onScriptButton() -{ - QString fileName = QFileDialog::getOpenFileName(m_widget, tr("Select Gdb Script")); - m_ui.scriptEdit->setText(fileName); - updateButtonState(); -} - void TypeMacroPage::onAddButton() { if (m_ui.typeEdit->text().isEmpty() || m_ui.macroEdit->text().isEmpty()) diff --git a/src/plugins/debugger/gdbtypemacros.ui b/src/plugins/debugger/gdbtypemacros.ui index aa7215577b..f42514e4e4 100644 --- a/src/plugins/debugger/gdbtypemacros.ui +++ b/src/plugins/debugger/gdbtypemacros.ui @@ -1,146 +1,115 @@ -<ui version="4.0" > - <author></author> - <comment></comment> - <exportmacro></exportmacro> +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>TypeMacroPage</class> - <widget class="QWidget" name="TypeMacroPage" > - <property name="geometry" > + <widget class="QWidget" name="TypeMacroPage"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>519</width> - <height>238</height> + <height>263</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>Form</string> </property> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > + <layout class="QVBoxLayout"> + <property name="spacing"> <number>6</number> </property> + <property name="margin"> + <number>9</number> + </property> <item> - <widget class="QGroupBox" name="groupBox" > - <property name="title" > - <string>Script File</string> - </property> - <layout class="QHBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QLineEdit" name="scriptEdit" /> - </item> - <item> - <widget class="QToolButton" name="scriptButton" > - <property name="minimumSize" > - <size> - <width>21</width> - <height>23</height> - </size> - </property> - <property name="text" > - <string>...</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <layout class="QGridLayout" > - <property name="margin" > + <layout class="QGridLayout"> + <property name="margin"> <number>0</number> </property> - <property name="spacing" > + <property name="spacing"> <number>6</number> </property> - <item row="0" column="0" colspan="2" > - <widget class="QTreeWidget" name="treeWidget" > - <property name="rootIsDecorated" > + <item row="0" column="0" colspan="2"> + <widget class="QTreeWidget" name="treeWidget"> + <property name="rootIsDecorated"> <bool>false</bool> </property> <column> - <property name="text" > + <property name="text"> <string>Type</string> </property> </column> <column> - <property name="text" > + <property name="text"> <string>Macro</string> </property> </column> </widget> </item> - <item row="1" column="2" > - <widget class="QToolButton" name="addButton" > - <property name="minimumSize" > + <item row="1" column="2"> + <widget class="QToolButton" name="addButton"> + <property name="minimumSize"> <size> <width>21</width> <height>23</height> </size> </property> - <property name="text" > + <property name="text"> <string>+</string> </property> - <property name="icon" > - <iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/newitem.png</iconset> + <property name="icon"> + <iconset> + <normaloff>:/gdbdebugger/images/newitem.png</normaloff>:/gdbdebugger/images/newitem.png</iconset> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QLabel" name="label_2" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> <string>Macro Name:</string> </property> </widget> </item> - <item row="3" column="0" > - <widget class="QLabel" name="label_3" > - <property name="text" > + <item row="3" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> <string>Parse as:</string> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="macroEdit" /> + <item row="2" column="1"> + <widget class="QLineEdit" name="macroEdit"/> </item> - <item row="0" column="2" > - <layout class="QVBoxLayout" > - <property name="margin" > + <item row="0" column="2"> + <layout class="QVBoxLayout"> + <property name="spacing"> <number>0</number> </property> - <property name="spacing" > + <property name="margin"> <number>0</number> </property> <item> - <widget class="QToolButton" name="delButton" > - <property name="minimumSize" > + <widget class="QToolButton" name="delButton"> + <property name="minimumSize"> <size> <width>21</width> <height>23</height> </size> </property> - <property name="text" > + <property name="text"> <string>-</string> </property> - <property name="icon" > - <iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/delete.png</iconset> + <property name="icon"> + <iconset> + <normaloff>:/gdbdebugger/images/delete.png</normaloff>:/gdbdebugger/images/delete.png</iconset> </property> </widget> </item> <item> <spacer> - <property name="orientation" > + <property name="orientation"> <enum>Qt::Vertical</enum> </property> - <property name="sizeHint" > + <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> @@ -150,25 +119,25 @@ </item> </layout> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="typeEdit" /> + <item row="1" column="1"> + <widget class="QLineEdit" name="typeEdit"/> </item> - <item row="1" column="0" > - <widget class="QLabel" name="label" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> <string>Type:</string> </property> </widget> </item> - <item row="3" column="1" > - <widget class="QComboBox" name="parseAsBox" > + <item row="3" column="1"> + <widget class="QComboBox" name="parseAsBox"> <item> - <property name="text" > + <property name="text"> <string>ASCII (char *)</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Unicode (short)</string> </property> </item> @@ -178,9 +147,8 @@ </item> </layout> </widget> - <pixmapfunction></pixmapfunction> <resources> - <include location="gdbdebugger.qrc" /> + <include location="gdbdebugger.qrc"/> </resources> <connections/> </ui> diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 6f443c92b4..5328a171ae 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -411,7 +411,7 @@ static QString niceType(QString type) "std::allocator<wchar_t> >", "std::wstring"); // std::vector - static QRegExp re1("std::vector<(.*)\\s*,std::allocator<(.*)>\\s*>"); + static QRegExp re1("std::vector<(.*), std::allocator<(.*)>\\s*>"); re1.setMinimal(true); for (int i = 0; i != 10; ++i) { if (re1.indexIn(type) == -1 || re1.cap(1) != re1.cap(2)) @@ -420,7 +420,7 @@ static QString niceType(QString type) } // std::list - static QRegExp re2("std::list<(.*)\\s*,std::allocator<(.*)>\\s*>"); + static QRegExp re2("std::list<(.*), std::allocator<(.*)>\\s*>"); re2.setMinimal(true); for (int i = 0; i != 10; ++i) { if (re2.indexIn(type) == -1 || re2.cap(1) != re2.cap(2)) @@ -428,6 +428,17 @@ static QString niceType(QString type) type.replace(re2.cap(0), "std::list<" + re2.cap(1) + ">"); } + // std::map + static QRegExp re3("std::map<(.*), (.*), std::less<(.*)\\s*>, " + "std::allocator<std::pair<const (.*), (.*)\\s*> > >"); + re3.setMinimal(true); + for (int i = 0; i != 10; ++i) { + if (re3.indexIn(type) == -1 || re3.cap(1) != re3.cap(3) + || re3.cap(1) != re3.cap(4) || re3.cap(2) != re3.cap(5)) + break; + type.replace(re3.cap(0), "std::map<" + re3.cap(1) + ", " + re3.cap(2) + ">"); + } + type.replace(" >", ">"); } return type; diff --git a/src/plugins/designer/workbenchintegration.cpp b/src/plugins/designer/workbenchintegration.cpp index 4e49218a5c..273aa2cfb8 100644 --- a/src/plugins/designer/workbenchintegration.cpp +++ b/src/plugins/designer/workbenchintegration.cpp @@ -95,7 +95,7 @@ QList<Document::Ptr> WorkbenchIntegration::findDocuments(const QString &uiFileNa QList<Document::Ptr> docList; // take all docs - CppTools::CppModelManagerInterface::DocumentTable docTable = cppModelManager->documents(); + CPlusPlus::Snapshot docTable = cppModelManager->snapshot(); foreach (Document::Ptr doc, docTable) { // we go through all documents QStringList includes = doc->includedFiles(); foreach (QString include, includes) { @@ -253,7 +253,7 @@ Document::Ptr WorkbenchIntegration::findDefinition(Function *functionDeclaration QualifiedNameId *q = control.qualifiedNameId(&qualifiedName[0], qualifiedName.size()); LookupContext context(&control); - const QMap<QString, Document::Ptr> documents = cppModelManager->documents(); + const Snapshot documents = cppModelManager->snapshot(); foreach (Document::Ptr doc, documents) { QList<Scope *> visibleScopes; visibleScopes.append(doc->globalSymbols()); diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp index e1b14cb9cc..7f0581fc3c 100644 --- a/src/plugins/git/settingspage.cpp +++ b/src/plugins/git/settingspage.cpp @@ -77,7 +77,7 @@ QString SettingsPage::name() const return tr("General"); } - QString SettingsPage::category() const +QString SettingsPage::category() const { return QLatin1String("Git"); } diff --git a/src/plugins/projectexplorer/allprojectsfilter.h b/src/plugins/projectexplorer/allprojectsfilter.h index 3315e7b2de..448483c7a7 100644 --- a/src/plugins/projectexplorer/allprojectsfilter.h +++ b/src/plugins/projectexplorer/allprojectsfilter.h @@ -55,8 +55,8 @@ class AllProjectsFilter : public QuickOpen::BaseFileFilter public: AllProjectsFilter(ProjectExplorerPlugin *pe, Core::ICore *core); - QString trName() const { return tr("File in any project"); } - QString name() const { return "File in any project"; } + QString trName() const { return tr("Files in any project"); } + QString name() const { return "Files in any project"; } QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; } void refresh(QFutureInterface<void> &future); diff --git a/src/plugins/projectexplorer/currentprojectfilter.h b/src/plugins/projectexplorer/currentprojectfilter.h index bacd3a73ea..3e5d216632 100644 --- a/src/plugins/projectexplorer/currentprojectfilter.h +++ b/src/plugins/projectexplorer/currentprojectfilter.h @@ -55,8 +55,8 @@ class CurrentProjectFilter : public QuickOpen::BaseFileFilter public: CurrentProjectFilter(ProjectExplorerPlugin *pe, Core::ICore *core); - QString trName() const { return tr("File in current project"); } - QString name() const { return "File in current project"; } + QString trName() const { return tr("Files in current project"); } + QString name() const { return "Files in current project"; } QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; } void refresh(QFutureInterface<void> &future); diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index c926320193..9e47ac404d 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -498,12 +498,8 @@ void Qt4Project::updateCodeModel() pinfo.sourceFiles = files; modelmanager->updateProjectInfo(pinfo); - - modelmanager->GC(); modelmanager->updateSourceFiles(pinfo.sourceFiles); } - - // update info } diff --git a/src/plugins/quickopen/directoryfilter.cpp b/src/plugins/quickopen/directoryfilter.cpp index afc22af054..30f7fc28fa 100644 --- a/src/plugins/quickopen/directoryfilter.cpp +++ b/src/plugins/quickopen/directoryfilter.cpp @@ -62,7 +62,7 @@ QByteArray DirectoryFilter::saveState() const out << m_directories; out << m_filters; out << shortcutString(); - out << defaultActiveState(); + out << isIncludedByDefault(); out << m_files; return value; } @@ -120,7 +120,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) m_ui.directoryList->addItems(m_directories); m_ui.fileTypeEdit->setText(m_filters.join(tr(","))); m_ui.shortcutEdit->setText(shortcutString()); - m_ui.defaultFlag->setChecked(!defaultActiveState()); + m_ui.defaultFlag->setChecked(!isIncludedByDefault()); updateOptionButtons(); if (dialog.exec() == QDialog::Accepted) { QMutexLocker locker(&m_lock); diff --git a/src/plugins/quickopen/filesystemfilter.cpp b/src/plugins/quickopen/filesystemfilter.cpp index 386523ebc4..4631a8d934 100644 --- a/src/plugins/quickopen/filesystemfilter.cpp +++ b/src/plugins/quickopen/filesystemfilter.cpp @@ -114,7 +114,7 @@ bool FileSystemFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) ui.setupUi(&dialog); ui.hiddenFilesFlag->setChecked(m_includeHidden); - ui.limitCheck->setChecked(!defaultActiveState()); + ui.limitCheck->setChecked(!isIncludedByDefault()); ui.shortcutEdit->setText(shortcutString()); if (dialog.exec() == QDialog::Accepted) { @@ -132,7 +132,7 @@ QByteArray FileSystemFilter::saveState() const QDataStream out(&value, QIODevice::WriteOnly); out << m_includeHidden; out << shortcutString(); - out << defaultActiveState(); + out << isIncludedByDefault(); return value; } diff --git a/src/plugins/quickopen/filesystemfilter.h b/src/plugins/quickopen/filesystemfilter.h index 0e895a45aa..a404da038f 100644 --- a/src/plugins/quickopen/filesystemfilter.h +++ b/src/plugins/quickopen/filesystemfilter.h @@ -56,8 +56,8 @@ class FileSystemFilter : public QuickOpen::IQuickOpenFilter public: FileSystemFilter(Core::EditorManager *editorManager, QuickOpenToolWindow *toolWindow); - QString trName() const { return tr("File in file system"); } - QString name() const { return "File in file system"; } + QString trName() const { return tr("Files in file system"); } + QString name() const { return "Files in file system"; } QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Medium; } QList<QuickOpen::FilterEntry> matchesFor(const QString &entry); void accept(QuickOpen::FilterEntry selection) const; diff --git a/src/plugins/quickopen/iquickopenfilter.cpp b/src/plugins/quickopen/iquickopenfilter.cpp index ad6441ca28..82922e3ba2 100644 --- a/src/plugins/quickopen/iquickopenfilter.cpp +++ b/src/plugins/quickopen/iquickopenfilter.cpp @@ -43,7 +43,9 @@ using namespace QuickOpen; IQuickOpenFilter::IQuickOpenFilter(QObject *parent): - QObject(parent) + QObject(parent), + m_includedByDefault(false), + m_hidden(false) { } @@ -62,7 +64,7 @@ QByteArray IQuickOpenFilter::saveState() const QByteArray value; QDataStream out(&value, QIODevice::WriteOnly); out << shortcutString(); - out << defaultActiveState(); + out << isIncludedByDefault(); return value; } @@ -91,7 +93,7 @@ bool IQuickOpenFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) QHBoxLayout *hlayout = new QHBoxLayout; QLineEdit *shortcutEdit = new QLineEdit(shortcutString()); QCheckBox *limitCheck = new QCheckBox(tr("Limit to prefix")); - limitCheck->setChecked(!defaultActiveState()); + limitCheck->setChecked(!isIncludedByDefault()); hlayout->addWidget(new QLabel(tr("Prefix:"))); hlayout->addWidget(shortcutEdit); @@ -120,12 +122,22 @@ bool IQuickOpenFilter::isConfigurable() const return true; } -bool IQuickOpenFilter::defaultActiveState() const +bool IQuickOpenFilter::isIncludedByDefault() const { - return m_default; + return m_includedByDefault; } void IQuickOpenFilter::setIncludedByDefault(bool includedByDefault) { - m_default = includedByDefault; + m_includedByDefault = includedByDefault; +} + +bool IQuickOpenFilter::isHidden() const +{ + return m_hidden; +} + +void IQuickOpenFilter::setHidden(bool hidden) +{ + m_hidden = hidden; } diff --git a/src/plugins/quickopen/iquickopenfilter.h b/src/plugins/quickopen/iquickopenfilter.h index 376b0d0fe9..d5591ac940 100644 --- a/src/plugins/quickopen/iquickopenfilter.h +++ b/src/plugins/quickopen/iquickopenfilter.h @@ -87,26 +87,25 @@ public: IQuickOpenFilter(QObject *parent = 0); virtual ~IQuickOpenFilter() {} - /* visible name */ + /* Visible name. */ virtual QString trName() const = 0; - /* internal name */ + /* Internal name. */ virtual QString name() const = 0; - /* selection list order in case of multiple active filters (high goes on top) */ + /* Selection list order in case of multiple active filters (high goes on top). */ virtual Priority priority() const = 0; - /* string to type to use this filter exclusively */ - virtual QString shortcutString() const; - void setShortcutString(const QString &shortcut); + /* String to type to use this filter exclusively. */ + QString shortcutString() const; - /* list of matches for the given user entry */ + /* List of matches for the given user entry. */ virtual QList<FilterEntry> matchesFor(const QString &entry) = 0; - /* user has selected the given entry that belongs to this filter */ + /* User has selected the given entry that belongs to this filter. */ virtual void accept(FilterEntry selection) const = 0; - /* implement to update caches on user request, if that's a long operation */ + /* Implement to update caches on user request, if that's a long operation. */ virtual void refresh(QFutureInterface<void> &future) = 0; /* Saved state is used to restore the filter at start up. */ @@ -126,9 +125,11 @@ public: * implementation returns true. */ virtual bool isConfigurable() const; - /* is this filter used also when the shortcutString is not used? */ - virtual bool defaultActiveState() const; - void setIncludedByDefault(bool includedByDefault); + /* Is this filter used also when the shortcutString is not used? */ + bool isIncludedByDefault() const; + + /* Returns whether the filter should be hidden from configuration and menus. */ + bool isHidden() const; static QString trimWildcards(const QString &str) { if (str.isEmpty()) @@ -143,9 +144,15 @@ public: return str.mid(first, last-first+1); } +protected: + void setShortcutString(const QString &shortcut); + void setIncludedByDefault(bool includedByDefault); + void setHidden(bool hidden); + private: QString m_shortcut; - bool m_default; + bool m_includedByDefault; + bool m_hidden; }; } // namespace QuickOpen diff --git a/src/plugins/quickopen/opendocumentsfilter.h b/src/plugins/quickopen/opendocumentsfilter.h index 7b24aeeca0..6957119727 100644 --- a/src/plugins/quickopen/opendocumentsfilter.h +++ b/src/plugins/quickopen/opendocumentsfilter.h @@ -54,8 +54,8 @@ class OpenDocumentsFilter : public QuickOpen::IQuickOpenFilter public: OpenDocumentsFilter(Core::EditorManager *editorManager); - QString trName() const { return tr("Open document"); } - QString name() const { return "Open document"; } + QString trName() const { return tr("Open documents"); } + QString name() const { return "Open documents"; } QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Medium; } QList<QuickOpen::FilterEntry> matchesFor(const QString &entry); void accept(QuickOpen::FilterEntry selection) const; diff --git a/src/plugins/quickopen/quickopenfiltersfilter.cpp b/src/plugins/quickopen/quickopenfiltersfilter.cpp index e8a487c7d9..519c56daec 100644 --- a/src/plugins/quickopen/quickopenfiltersfilter.cpp +++ b/src/plugins/quickopen/quickopenfiltersfilter.cpp @@ -49,7 +49,7 @@ QuickOpenFiltersFilter::QuickOpenFiltersFilter(QuickOpenPlugin *plugin, m_icon(QIcon(Core::Constants::ICON_NEXT)) { setIncludedByDefault(true); - setShortcutString(QString()); + setHidden(true); } QString QuickOpenFiltersFilter::trName() const @@ -71,8 +71,8 @@ QList<FilterEntry> QuickOpenFiltersFilter::matchesFor(const QString &entry) { QList<FilterEntry> entries; if (entry.isEmpty()) { - foreach (IQuickOpenFilter* filter, m_plugin->filter()) { - if (!filter->shortcutString().isEmpty()) { + foreach (IQuickOpenFilter *filter, m_plugin->filter()) { + if (!filter->shortcutString().isEmpty() && !filter->isHidden()) { FilterEntry entry(this, filter->shortcutString(), QVariant::fromValue(filter), diff --git a/src/plugins/quickopen/quickopentoolwindow.cpp b/src/plugins/quickopen/quickopentoolwindow.cpp index 211947be8d..9701923515 100644 --- a/src/plugins/quickopen/quickopentoolwindow.cpp +++ b/src/plugins/quickopen/quickopentoolwindow.cpp @@ -314,7 +314,7 @@ void QuickOpenToolWindow::updateFilterList() { m_filterMenu->clear(); foreach (IQuickOpenFilter *filter, m_quickOpenPlugin->filter()) { - if (!filter->shortcutString().isEmpty()) { + if (!filter->shortcutString().isEmpty() && !filter->isHidden()) { QAction *action = m_filterMenu->addAction(filter->trName(), this, SLOT(filterSelected())); action->setData(qVariantFromValue(filter)); } @@ -396,7 +396,7 @@ QList<IQuickOpenFilter*> QuickOpenToolWindow::filtersFor(const QString &text, QS searchText = text; QList<IQuickOpenFilter*> activeFilters; foreach (IQuickOpenFilter *filter, filters) - if (filter->defaultActiveState()) + if (filter->isIncludedByDefault()) activeFilters << filter; return activeFilters; } diff --git a/src/plugins/quickopen/settingspage.cpp b/src/plugins/quickopen/settingspage.cpp index 76263c731b..4b1f81fc86 100644 --- a/src/plugins/quickopen/settingspage.cpp +++ b/src/plugins/quickopen/settingspage.cpp @@ -121,8 +121,11 @@ void SettingsPage::updateFilterList() { m_ui.filterList->clear(); foreach (IQuickOpenFilter *filter, m_filters) { + if (filter->isHidden()) + continue; + QString title; - if (filter->defaultActiveState()) + if (filter->isIncludedByDefault()) title = filter->trName(); else title = tr("%1 (Prefix: %2)").arg(filter->trName()).arg(filter->shortcutString()); diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 59ee2c005a..1cff254452 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -735,12 +735,15 @@ void BaseTextEditor::moveLineUpDown(bool up) move.clearSelection(); move.insertText(text); int end = move.position(); - move.endEditBlock(); + if (hasSelection) { move.setPosition(start); move.setPosition(end, QTextCursor::KeepAnchor); } + indent(document(), move, QChar::Null); + move.endEditBlock(); + setTextCursor(move); } @@ -2514,7 +2517,7 @@ void BaseTextEditor::extraAreaMouseEvent(QMouseEvent *e) } } else if (e->button() == Qt::RightButton) { QMenu * contextMenu = new QMenu(this); - emit d->m_editable->markContextMenuRequested(editableInterface(), cursor.blockNumber(), contextMenu); + emit d->m_editable->markContextMenuRequested(editableInterface(), cursor.blockNumber() + 1, contextMenu); if (!contextMenu->isEmpty()) contextMenu->exec(e->globalPos()); delete contextMenu; @@ -2765,6 +2768,8 @@ void BaseTextEditor::handleHomeKey(bool anchor) while (character == tab || character.category() == QChar::Separator_Space) { ++pos; + if (pos == initpos) + break; character = characterAt(pos); } @@ -2952,12 +2957,13 @@ void BaseTextEditor::markBlocksAsChanged(QList<int> blockNumbers) { TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor *cursor, QChar c) { - if (!TextEditDocumentLayout::hasParentheses(cursor->block())) + QTextBlock block = cursor->block(); + if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block)) return NoMatch; - Parentheses parenList = TextEditDocumentLayout::parentheses(cursor->block()); + Parentheses parenList = TextEditDocumentLayout::parentheses(block); Parenthesis openParen, closedParen; - QTextBlock closedParenParag = cursor->block(); + QTextBlock closedParenParag = block; const int cursorPos = cursor->position() - closedParenParag.position(); int i = 0; @@ -2982,7 +2988,8 @@ TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor closedParenParag = closedParenParag.next(); if (!closedParenParag.isValid()) return NoMatch; - if (TextEditDocumentLayout::hasParentheses(closedParenParag)) { + if (TextEditDocumentLayout::hasParentheses(closedParenParag) + && !TextEditDocumentLayout::ifdefedOut(closedParenParag)) { parenList = TextEditDocumentLayout::parentheses(closedParenParag); break; } @@ -3019,12 +3026,13 @@ TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor TextBlockUserData::MatchType TextBlockUserData::checkClosedParenthesis(QTextCursor *cursor, QChar c) { - if (!TextEditDocumentLayout::hasParentheses(cursor->block())) + QTextBlock block = cursor->block(); + if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block)) return NoMatch; - Parentheses parenList = TextEditDocumentLayout::parentheses(cursor->block()); + Parentheses parenList = TextEditDocumentLayout::parentheses(block); Parenthesis openParen, closedParen; - QTextBlock openParenParag = cursor->block(); + QTextBlock openParenParag = block; const int cursorPos = cursor->position() - openParenParag.position(); int i = parenList.count() - 1; @@ -3050,7 +3058,8 @@ TextBlockUserData::MatchType TextBlockUserData::checkClosedParenthesis(QTextCurs if (!openParenParag.isValid()) return NoMatch; - if (TextEditDocumentLayout::hasParentheses(openParenParag)) { + if (TextEditDocumentLayout::hasParentheses(openParenParag) + && !TextEditDocumentLayout::ifdefedOut(openParenParag)) { parenList = TextEditDocumentLayout::parentheses(openParenParag); break; } @@ -3092,7 +3101,7 @@ bool TextBlockUserData::findPreviousOpenParenthesis(QTextCursor *cursor, bool se int ignore = 0; while (block.isValid()) { Parentheses parenList = TextEditDocumentLayout::parentheses(block); - if (!parenList.isEmpty()) { + if (!parenList.isEmpty() && !TextEditDocumentLayout::ifdefedOut(block)) { for (int i = parenList.count()-1; i >= 0; --i) { Parenthesis paren = parenList.at(i); if (block == cursor->block() && position - block.position() <= paren.pos + 1) @@ -3119,7 +3128,7 @@ bool TextBlockUserData::findNextClosingParenthesis(QTextCursor *cursor, bool sel int ignore = 0; while (block.isValid()) { Parentheses parenList = TextEditDocumentLayout::parentheses(block); - if (!parenList.isEmpty()) { + if (!parenList.isEmpty() && !TextEditDocumentLayout::ifdefedOut(block)) { for (int i = 0; i < parenList.count(); ++i) { Parenthesis paren = parenList.at(i); if (block == cursor->block() && position - block.position() >= paren.pos) @@ -3144,7 +3153,7 @@ TextBlockUserData::MatchType TextBlockUserData::matchCursorBackward(QTextCursor cursor->clearSelection(); const QTextBlock block = cursor->block(); - if (!TextEditDocumentLayout::hasParentheses(block)) + if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block)) return NoMatch; const int relPos = cursor->position() - block.position(); @@ -3166,7 +3175,7 @@ TextBlockUserData::MatchType TextBlockUserData::matchCursorForward(QTextCursor * cursor->clearSelection(); const QTextBlock block = cursor->block(); - if (!TextEditDocumentLayout::hasParentheses(block)) + if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block)) return NoMatch; const int relPos = cursor->position() - block.position(); diff --git a/src/plugins/texteditor/generalsettingspage.ui b/src/plugins/texteditor/generalsettingspage.ui index 11f6b8b997..140f94628d 100644 --- a/src/plugins/texteditor/generalsettingspage.ui +++ b/src/plugins/texteditor/generalsettingspage.ui @@ -66,6 +66,9 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="minimum"> + <number>1</number> + </property> <property name="maximum"> <number>20</number> </property> @@ -132,6 +135,9 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="minimum"> + <number>1</number> + </property> <property name="maximum"> <number>20</number> </property> |
