diff --git a/doc/doc.pri b/doc/doc.pri index 3c23ab8a951406cf8f07b57e4b0ec2a7c9265473..b5d61eedc9e3baa1edafa43a289614daa0a1a376 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -21,7 +21,11 @@ qch_docs.commands = $$HELPGENERATOR -o $$QCH_FILE $$QHP_FILE qch_docs.depends += html_docs qch_docs.files = $$QCH_FILE -linux-* { +unix:!macx { + system("mkdir -p `dirname $$QCH_FILE` && touch $$QCH_FILE") +} + +unix:!macx { qch_docs.path = /share/doc/qtcreator INSTALLS += qch_docs } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 05ae4c52b44f674862cefdf857a6a12d0e853de4..e7114fc63dce68d1dd6505b7ab2e3277979d53b1 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -84,6 +84,7 @@ void CMakeProject::parseCMakeLists() QString sourceDirectory = QFileInfo(m_fileName).absolutePath(); QString cbpFile = CMakeManager::findCbpFile(buildDirectory(activeBuildConfiguration())); + m_rootNode->setFolderName(QFileInfo(cbpFile).baseName()); CMakeCbpParser cbpparser; qDebug()<<"Parsing file "<<cbpFile; if (cbpparser.parseCbpFile(cbpFile)) { @@ -112,6 +113,7 @@ void CMakeProject::parseCMakeLists() QList<ProjectExplorer::FileNode *> fileList = cbpparser.fileList(); // Manually add the CMakeLists.txt file fileList.append(new ProjectExplorer::FileNode(sourceDirectory + "/CMakeLists.txt", ProjectExplorer::ProjectFileType, false)); + buildTree(m_rootNode, fileList); foreach (ProjectExplorer::FileNode *fn, fileList) m_files.append(fn->path()); @@ -309,6 +311,7 @@ MakeStep *CMakeProject::makeStep() const return 0; } + void CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader &reader) { Project::restoreSettingsImpl(reader); @@ -341,7 +344,6 @@ void CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader } - parseCMakeLists(); // Gets the directory from the active buildconfiguration if (!hasUserFile) { diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index 0d4b1250303df82c9455a7809355e2aa6b682d39..a4fe869ef013daf78f0f6099cdaebbdae5e088c3 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -37,6 +37,8 @@ namespace Internal { class CMakeProjectNode : public ProjectExplorer::ProjectNode { + Q_OBJECT + friend class CMakeProject; public: CMakeProjectNode(const QString &fileName); virtual bool hasTargets() const; @@ -52,10 +54,6 @@ public: virtual bool renameFile(const ProjectExplorer::FileType fileType, const QString &filePath, const QString &newFilePath); - - // TODO is protected in base class, and that's correct - using ProjectNode::addFileNodes; - using ProjectNode::addFolderNodes; }; } // namespace Internal diff --git a/src/plugins/coreplugin/html/qt.css b/src/plugins/coreplugin/html/qt.css index 7b5c7670d7a7c053800568552d80f258010087af..9e4fb05b8cdb6149bc9015dfba8dcd4d0b9ab3ae 100644 --- a/src/plugins/coreplugin/html/qt.css +++ b/src/plugins/coreplugin/html/qt.css @@ -332,36 +332,36 @@ Layout BOTTOM - Recent Projects und Recent Sessions /*Recent Projects*/ .layout_bottom .rec_proj_container{ - width:50%; - float:left; - + margin-left:50%; + } .layout_bottom .rec_proj_container .rec_proj_box{ - margin-right:10px; - - } + margin-left:10px; + + } /*Recent Sessions*/ .layout_bottom .rec_sess_container{ - - margin-left:50%; - + + width:50%; + float:left; + } .layout_bottom .rec_sess_container .rec_sess_box{ - margin-left:10px; - + margin-right:10px; + } /*Restore Session Button inlusive CSS HOVER*/ a.restore_session{ - float:right; + float:right; display:block; background-image:url(images/btn_restore_session.png); width:137px; diff --git a/src/plugins/coreplugin/html/welcome.html b/src/plugins/coreplugin/html/welcome.html index 6275a7d314977f13e3c377e10986207a6c6a7386..0e5be285775b19c9e38eae51836137803d58d3dd 100644 --- a/src/plugins/coreplugin/html/welcome.html +++ b/src/plugins/coreplugin/html/welcome.html @@ -52,11 +52,9 @@ <!-- BOTTOM - Recent Projects und Recent Sessions --> <div class="layout_bottom"> - <!-- RECENT PROJECTS --> - - <!-- RECENT SESSIONS --> + <!-- RECENT PROJECTS --> <!-- clear floating of sessions and projects --> <div class="clear_left"></div> diff --git a/src/plugins/coreplugin/icontext.h b/src/plugins/coreplugin/icontext.h index 81a6324091b572f10d254b9e155ca4b23b932e12..cbdfc36702c70baeadd7a6097258bb22d2708e74 100644 --- a/src/plugins/coreplugin/icontext.h +++ b/src/plugins/coreplugin/icontext.h @@ -51,6 +51,25 @@ public: virtual QString contextHelpId() const { return QString(); } }; +class BaseContext : public Core::IContext +{ +public: + BaseContext(QWidget *widget, const QList<int> &context, QObject *parent = 0) + : Core::IContext(parent), + m_widget(widget), + m_context(context) + { + } + + QList<int> context() const { return m_context; } + + QWidget *widget() { return m_widget; } + +private: + QWidget *m_widget; + QList<int> m_context; +}; + } // namespace Core #endif //ICONTEXT_H diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 6e2e881221c157f842499b13409662ff65670f00..55f8690af2e1574c7b9128581319cb2ab4be0a39 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -374,6 +374,17 @@ void HelpPlugin::createRightPaneSideBar() m_helpViewerForSideBar = new HelpViewer(m_helpEngine, 0); rightPaneLayout->addWidget(m_helpViewerForSideBar); + m_core->addContextObject(new Core::BaseContext(m_helpViewerForSideBar, QList<int>() + << m_core->uniqueIDManager()->uniqueIdentifier(Constants::C_HELP_SIDEBAR), + this)); + + QAction *copyActionSideBar = new QAction(this); + Core::Command *cmd = m_core->actionManager()->registerAction(copyActionSideBar, + Core::Constants::COPY, QList<int>() + << m_core->uniqueIDManager()->uniqueIdentifier(Constants::C_HELP_SIDEBAR)); + connect(copyActionSideBar, SIGNAL(triggered()), this, SLOT(copyFromSideBar())); + copyActionSideBar->setText(cmd->action()->text()); + copyActionSideBar->setIcon(cmd->action()->icon()); m_rightPaneSideBar = new QWidget; m_rightPaneSideBar->setLayout(rightPaneLayout); @@ -381,6 +392,11 @@ void HelpPlugin::createRightPaneSideBar() addAutoReleasedObject(new Core::BaseRightPaneWidget(m_rightPaneSideBar)); } +void HelpPlugin::copyFromSideBar() +{ + m_helpViewerForSideBar->copy(); +} + void HelpPlugin::rightPaneBackward() { m_helpViewerForSideBar->backward(); diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 05ccf9f8fd710a9c0feb64927433937abadbfd1e..d5a5dd9821b9fbfad62872768ee35f027ee0df61 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -64,10 +64,10 @@ class SideBarItem; namespace Help { namespace Constants { - const char * const HELPVIEWER_KIND = "Qt Help Viewer"; - const char * const C_MODE_HELP = "Help Mode"; - const int P_MODE_HELP = 70; - const char * const ID_MODE_HELP = "Help"; + const char * const C_MODE_HELP = "Help Mode"; + const char * const C_HELP_SIDEBAR = "Help Sidebar"; + const int P_MODE_HELP = 70; + const char * const ID_MODE_HELP = "Help"; } class HELP_EXPORT HelpManager : public QObject @@ -124,6 +124,7 @@ private slots: void switchToHelpMode(const QUrl &source); void switchToHelpMode(const QMap<QString, QUrl> &urls, const QString &keyword); void slotHideRightPane(); + void copyFromSideBar(); void openGettingStarted(); diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 05d962fc0529dc5b719fc5a0937c5087b68823d4..e0958b3abe43b7d250c384a5f965996915b182b4 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -386,14 +386,30 @@ void ProjectNode::addFolderNodes(const QList<FolderNode*> &subFolders, FolderNod qDebug("Project node has already a parent folder")); folder->setParentFolderNode(parentFolder); folder->setProjectNode(this); - parentFolder->m_subFolderNodes.append(folder); + + // Find the correct place to insert + if (parentFolder->m_subFolderNodes.count() == 0 || sortNodesByPath(parentFolder->m_subFolderNodes.last(), folder)) { + // empty list or greater then last node + parentFolder->m_subFolderNodes.append(folder); + } else { + // Binary Search for insertion point + int l = 0; + int r = parentFolder->m_subFolderNodes.count(); + while (l != r) { + int i = (l + r) / 2; + if (sortNodesByPath(folder, parentFolder->m_subFolderNodes.at(i))) { + r = i; + } else { + l = i + 1; + } + } + parentFolder->m_subFolderNodes.insert(l, folder); + } // project nodes have to be added via addProjectNodes QTC_ASSERT(folder->nodeType() != ProjectNodeType, qDebug("project nodes have to be added via addProjectNodes")); } - qSort(parentFolder->m_subFolderNodes.begin(), parentFolder->m_subFolderNodes.end(), - sortNodesByPath); if (emitSignals) foreach (NodesWatcher *watcher, m_watchers) @@ -461,9 +477,25 @@ void ProjectNode::addFileNodes(const QList<FileNode*> &files, FolderNode *folder file->setParentFolderNode(folder); file->setProjectNode(this); - folder->m_fileNodes.append(file); + // Now find the correct place to insert file + if (folder->m_fileNodes.count() == 0 || sortNodesByPath(folder->m_fileNodes.last(), file)) { + // empty list or greater then last node + folder->m_fileNodes.append(file); + } else { + // Binary Search for insertion point + int l = 0; + int r = folder->m_fileNodes.count(); + while (l != r) { + int i = (l + r) / 2; + if (sortNodesByPath(file, folder->m_fileNodes.at(i))) { + r = i; + } else { + l = i + 1; + } + } + folder->m_fileNodes.insert(l, file); + } } - qSort(folder->m_fileNodes.begin(), folder->m_fileNodes.end(), sortNodesByPath); if (emitSignals) foreach (NodesWatcher *watcher, m_watchers)