Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline

This commit is contained in:
hjk
2009-01-09 15:15:41 +01:00
5 changed files with 156 additions and 139 deletions

View File

@@ -35,6 +35,9 @@
#include "projectexplorerconstants.h" #include "projectexplorerconstants.h"
#include "runconfiguration.h" #include "runconfiguration.h"
#include <coreplugin/actionmanager/actionmanagerinterface.h>
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>
#include <find/basetextfind.h> #include <find/basetextfind.h>
#include <aggregation/aggregate.h> #include <aggregation/aggregate.h>
@@ -52,70 +55,8 @@
using namespace ProjectExplorer::Internal; using namespace ProjectExplorer::Internal;
using namespace ProjectExplorer; using namespace ProjectExplorer;
bool OutputPane::hasFocus() OutputPane::OutputPane(Core::ICore *core)
{ : m_mainWidget(new QWidget)
return m_tabWidget->currentWidget() && m_tabWidget->currentWidget()->hasFocus();
}
bool OutputPane::canFocus()
{
return m_tabWidget->currentWidget();
}
void OutputPane::setFocus()
{
if (m_tabWidget->currentWidget())
m_tabWidget->currentWidget()->setFocus();
}
void OutputPane::appendOutput(const QString &/*out*/)
{
// This function is in the interface, since we can't do anything sensible here, we don't do anything here.
}
void OutputPane::appendOutput(RunControl *rc, const QString &out)
{
OutputWindow *ow = m_outputWindows.value(rc);
ow->appendOutput(out);
}
void OutputPane::showTabFor(RunControl *rc)
{
OutputWindow *ow = m_outputWindows.value(rc);
m_tabWidget->setCurrentWidget(ow);
}
void OutputPane::stopRunControl()
{
RunControl *rc = runControlForTab(m_tabWidget->currentIndex());
rc->stop();
}
void OutputPane::reRunRunControl()
{
RunControl *rc = runControlForTab(m_tabWidget->currentIndex());
if (rc->runConfiguration()->project() != 0)
rc->start();
}
void OutputPane::closeTab(int index)
{
OutputWindow *ow = static_cast<OutputWindow *>(m_tabWidget->widget(index));
RunControl *rc = m_outputWindows.key(ow);
if (rc->isRunning()) {
QString msg = tr("The application is still running. Close it first.");
QMessageBox::critical(0, tr("Unable to close"), msg);
return;
}
m_tabWidget->removeTab(index);
delete ow;
delete rc;
}
OutputPane::OutputPane()
: m_mainWidget(new QWidget)
{ {
// m_insertLineButton = new QToolButton; // m_insertLineButton = new QToolButton;
// m_insertLineButton->setIcon(QIcon(ProjectExplorer::Constants::ICON_INSERT_LINE)); // m_insertLineButton->setIcon(QIcon(ProjectExplorer::Constants::ICON_INSERT_LINE));
@@ -127,7 +68,7 @@ OutputPane::OutputPane()
QIcon runIcon(Constants::ICON_RUN); QIcon runIcon(Constants::ICON_RUN);
runIcon.addFile(Constants::ICON_RUN_SMALL); runIcon.addFile(Constants::ICON_RUN_SMALL);
//Rerun // Rerun
m_reRunButton = new QToolButton; m_reRunButton = new QToolButton;
m_reRunButton->setIcon(runIcon); m_reRunButton->setIcon(runIcon);
m_reRunButton->setToolTip(tr("Rerun this runconfiguration")); m_reRunButton->setToolTip(tr("Rerun this runconfiguration"));
@@ -136,13 +77,23 @@ OutputPane::OutputPane()
connect(m_reRunButton, SIGNAL(clicked()), connect(m_reRunButton, SIGNAL(clicked()),
this, SLOT(reRunRunControl())); this, SLOT(reRunRunControl()));
//Stop // Stop
Core::ActionManagerInterface *am = core->actionManager();
QList<int> globalcontext;
globalcontext.append(Core::Constants::C_GLOBAL_ID);
m_stopAction = new QAction(QIcon(Constants::ICON_STOP), tr("Stop"), this);
m_stopAction->setToolTip(tr("Stop"));
m_stopAction->setEnabled(false);
Core::ICommand *cmd = am->registerAction(m_stopAction, Constants::STOP, globalcontext);
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+R")));
m_stopButton = new QToolButton; m_stopButton = new QToolButton;
m_stopButton->setIcon(QIcon(Constants::ICON_STOP)); m_stopButton->setDefaultAction(cmd->action());
m_stopButton->setToolTip(tr("Stop"));
m_stopButton->setAutoRaise(true); m_stopButton->setAutoRaise(true);
m_stopButton->setEnabled(false);
connect(m_stopButton, SIGNAL(clicked()), connect(m_stopAction, SIGNAL(triggered()),
this, SLOT(stopRunControl())); this, SLOT(stopRunControl()));
// Spacer (?) // Spacer (?)
@@ -173,21 +124,57 @@ OutputPane::~OutputPane()
delete m_mainWidget; delete m_mainWidget;
} }
void OutputPane::projectRemoved() QWidget *OutputPane::outputWidget(QWidget *)
{ {
tabChanged(m_tabWidget->currentIndex()); return m_mainWidget;
} }
void OutputPane::tabChanged(int i) QList<QWidget*> OutputPane::toolBarWidgets(void) const
{ {
if (i == -1) { return QList<QWidget*>() << m_reRunButton << m_stopButton
m_stopButton->setEnabled(false); ; // << m_insertLineButton;
m_reRunButton->setEnabled(false); }
} else {
RunControl *rc = runControlForTab(i); QString OutputPane::name() const
m_stopButton->setEnabled(rc->isRunning()); {
m_reRunButton->setEnabled(!rc->isRunning() && rc->runConfiguration()->project()); return tr("Application Output");
} }
int OutputPane::priorityInStatusBar() const
{
return 60;
}
void OutputPane::clearContents()
{
OutputWindow *currentWindow = qobject_cast<OutputWindow *>(m_tabWidget->currentWidget());
if (currentWindow)
currentWindow->clear();
}
void OutputPane::visibilityChanged(bool /* b */)
{
}
bool OutputPane::hasFocus()
{
return m_tabWidget->currentWidget() && m_tabWidget->currentWidget()->hasFocus();
}
bool OutputPane::canFocus()
{
return m_tabWidget->currentWidget();
}
void OutputPane::setFocus()
{
if (m_tabWidget->currentWidget())
m_tabWidget->currentWidget()->setFocus();
}
void OutputPane::appendOutput(const QString &/*out*/)
{
// This function is in the interface, since we can't do anything sensible here, we don't do anything here.
} }
void OutputPane::createNewOutputWindow(RunControl *rc) void OutputPane::createNewOutputWindow(RunControl *rc)
@@ -199,7 +186,7 @@ void OutputPane::createNewOutputWindow(RunControl *rc)
// First look if we can reuse a tab // First look if we can reuse a tab
bool found = false; bool found = false;
for (int i=0; i<m_tabWidget->count(); ++i) { for (int i = 0; i < m_tabWidget->count(); ++i) {
RunControl *old = runControlForTab(i); RunControl *old = runControlForTab(i);
if (old->runConfiguration() == rc->runConfiguration() && !old->isRunning()) { if (old->runConfiguration() == rc->runConfiguration() && !old->isRunning()) {
// Reuse this tab // Reuse this tab
@@ -222,50 +209,16 @@ void OutputPane::createNewOutputWindow(RunControl *rc)
} }
} }
void OutputPane::runControlStarted() void OutputPane::appendOutput(RunControl *rc, const QString &out)
{ {
RunControl *rc = runControlForTab(m_tabWidget->currentIndex()); OutputWindow *ow = m_outputWindows.value(rc);
if (rc == qobject_cast<RunControl *>(sender())) { ow->appendOutput(out);
m_reRunButton->setEnabled(false);
m_stopButton->setEnabled(true);
}
} }
void OutputPane::runControlFinished() void OutputPane::showTabFor(RunControl *rc)
{ {
RunControl *rc = runControlForTab(m_tabWidget->currentIndex()); OutputWindow *ow = m_outputWindows.value(rc);
if (rc == qobject_cast<RunControl *>(sender())) { m_tabWidget->setCurrentWidget(ow);
m_reRunButton->setEnabled(rc->runConfiguration()->project());
m_stopButton->setEnabled(false);
}
}
QWidget *OutputPane::outputWidget(QWidget *)
{
return m_mainWidget;
}
QList<QWidget*> OutputPane::toolBarWidgets(void) const
{
return QList<QWidget*>() << m_reRunButton << m_stopButton
; // << m_insertLineButton;
}
QString OutputPane::name() const
{
return tr("Application Output");
}
void OutputPane::clearContents()
{
OutputWindow *currentWindow = qobject_cast<OutputWindow *>(m_tabWidget->currentWidget());
if (currentWindow)
currentWindow->clear();
}
void OutputPane::visibilityChanged(bool /* b */)
{
} }
void OutputPane::insertLine() void OutputPane::insertLine()
@@ -275,16 +228,75 @@ void OutputPane::insertLine()
currentWindow->clear(); currentWindow->clear();
} }
void OutputPane::reRunRunControl()
{
RunControl *rc = runControlForTab(m_tabWidget->currentIndex());
if (rc->runConfiguration()->project() != 0)
rc->start();
}
void OutputPane::stopRunControl()
{
RunControl *rc = runControlForTab(m_tabWidget->currentIndex());
rc->stop();
}
void OutputPane::closeTab(int index)
{
OutputWindow *ow = static_cast<OutputWindow *>(m_tabWidget->widget(index));
RunControl *rc = m_outputWindows.key(ow);
if (rc->isRunning()) {
QString msg = tr("The application is still running. Close it first.");
QMessageBox::critical(0, tr("Unable to close"), msg);
return;
}
m_tabWidget->removeTab(index);
delete ow;
delete rc;
}
void OutputPane::projectRemoved()
{
tabChanged(m_tabWidget->currentIndex());
}
void OutputPane::tabChanged(int i)
{
if (i == -1) {
m_stopAction->setEnabled(false);
m_reRunButton->setEnabled(false);
} else {
RunControl *rc = runControlForTab(i);
m_stopAction->setEnabled(rc->isRunning());
m_reRunButton->setEnabled(!rc->isRunning() && rc->runConfiguration()->project());
}
}
void OutputPane::runControlStarted()
{
RunControl *rc = runControlForTab(m_tabWidget->currentIndex());
if (rc == qobject_cast<RunControl *>(sender())) {
m_reRunButton->setEnabled(false);
m_stopAction->setEnabled(true);
}
}
void OutputPane::runControlFinished()
{
RunControl *rc = runControlForTab(m_tabWidget->currentIndex());
if (rc == qobject_cast<RunControl *>(sender())) {
m_reRunButton->setEnabled(rc->runConfiguration()->project());
m_stopAction->setEnabled(false);
}
}
RunControl* OutputPane::runControlForTab(int index) const RunControl* OutputPane::runControlForTab(int index) const
{ {
return m_outputWindows.key(qobject_cast<OutputWindow *>(m_tabWidget->widget(index))); return m_outputWindows.key(qobject_cast<OutputWindow *>(m_tabWidget->widget(index)));
} }
int OutputPane::priorityInStatusBar() const
{
return 60;
}
/*******************/ /*******************/

View File

@@ -48,6 +48,10 @@ QT_BEGIN_NAMESPACE
class QTabWidget; class QTabWidget;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace Core {
class ICore;
}
namespace ProjectExplorer { namespace ProjectExplorer {
class RunControl; class RunControl;
@@ -61,7 +65,7 @@ class OutputPane : public Core::IOutputPane
Q_OBJECT Q_OBJECT
public: public:
OutputPane(); OutputPane(Core::ICore *core);
~OutputPane(); ~OutputPane();
QWidget *outputWidget(QWidget *); QWidget *outputWidget(QWidget *);
@@ -77,9 +81,9 @@ public:
void appendOutput(const QString &out); void appendOutput(const QString &out);
// ApplicationOutputspecifics // ApplicationOutputspecifics
void createNewOutputWindow(RunControl *); void createNewOutputWindow(RunControl *rc);
void appendOutput(RunControl *, const QString &out); void appendOutput(RunControl *rc, const QString &out);
void showTabFor(RunControl *); void showTabFor(RunControl *rc);
public slots: public slots:
void projectRemoved(); void projectRemoved();
@@ -99,16 +103,17 @@ private:
QWidget *m_mainWidget; QWidget *m_mainWidget;
QTabWidget *m_tabWidget; QTabWidget *m_tabWidget;
QHash<RunControl *, OutputWindow *> m_outputWindows; QHash<RunControl *, OutputWindow *> m_outputWindows;
QAction *m_stopAction;
// QToolButton *m_insertLineButton; // QToolButton *m_insertLineButton;
QToolButton *m_reRunButton; QToolButton *m_reRunButton;
QToolButton *m_stopButton; QToolButton *m_stopButton;
}; };
class OutputWindow : public QPlainTextEdit class OutputWindow : public QPlainTextEdit
{ {
Q_OBJECT Q_OBJECT
public: public:
OutputWindow(QWidget *parent = 0); OutputWindow(QWidget *parent = 0);
~OutputWindow(); ~OutputWindow();

View File

@@ -200,7 +200,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin
addAutoReleasedObject(new CoreListenerCheckingForRunningBuild(m_buildManager)); addAutoReleasedObject(new CoreListenerCheckingForRunningBuild(m_buildManager));
m_outputPane = new OutputPane(); m_outputPane = new OutputPane(m_core);
addAutoReleasedObject(m_outputPane); addAutoReleasedObject(m_outputPane);
connect(m_session, SIGNAL(projectRemoved(ProjectExplorer::Project *)), connect(m_session, SIGNAL(projectRemoved(ProjectExplorer::Project *)),
m_outputPane, SLOT(projectRemoved())); m_outputPane, SLOT(projectRemoved()));

View File

@@ -56,6 +56,8 @@ const char * const CLEANSESSION = "ProjectExplorer.CleanSession";
const char * const BUILDCONFIGURATIONMENU = "ProjectExplorer.BuildConfigurationMenu"; const char * const BUILDCONFIGURATIONMENU = "ProjectExplorer.BuildConfigurationMenu";
const char * const CANCELBUILD = "ProjectExplorer.CancelBuild"; const char * const CANCELBUILD = "ProjectExplorer.CancelBuild";
const char * const RUNCONFIGURATIONMENU = "ProjectExplorer.RunConfigurationMenu"; const char * const RUNCONFIGURATIONMENU = "ProjectExplorer.RunConfigurationMenu";
const char * const RUN = "ProjectExplorer.Run";
const char * const STOP = "ProjectExplorer.Stop";
const char * const DEBUG = "ProjectExplorer.Debug"; const char * const DEBUG = "ProjectExplorer.Debug";
const char * const DEPENDENCIES = "ProjectExplorer.Dependencies"; const char * const DEPENDENCIES = "ProjectExplorer.Dependencies";
const char * const FINDINALLPROJECTS = "ProjectExplorer.FindInAllProjects"; const char * const FINDINALLPROJECTS = "ProjectExplorer.FindInAllProjects";
@@ -67,7 +69,7 @@ const char * const OPENFILE = "ProjectExplorer.OpenFile";
const char * const REMOVEFILE = "ProjectExplorer.RemoveFile"; const char * const REMOVEFILE = "ProjectExplorer.RemoveFile";
const char * const RENAMEFILE = "ProjectExplorer.RenameFile"; const char * const RENAMEFILE = "ProjectExplorer.RenameFile";
//Run modes // Run modes
const char * const RUNMODE = "ProjectExplorer.RunMode"; const char * const RUNMODE = "ProjectExplorer.RunMode";
const char * const DEBUGMODE = "ProjectExplorer.DebugMode"; const char * const DEBUGMODE = "ProjectExplorer.DebugMode";
@@ -76,8 +78,6 @@ const int P_ACTION_RUN = 100;
const int P_ACTION_DEBUG = 90; const int P_ACTION_DEBUG = 90;
const int P_ACTION_BUILDSESSION = 80; const int P_ACTION_BUILDSESSION = 80;
const char * const RUN = "ProjectExplorer.Run";
// context // context
const char * const C_PROJECTEXPLORER = "Project Explorer"; const char * const C_PROJECTEXPLORER = "Project Explorer";

View File

@@ -261,7 +261,7 @@ QuickOpenToolWindow::QuickOpenToolWindow(QuickOpenPlugin *qop) :
m_configureAction(new QAction(tr("Configure..."), this)), m_configureAction(new QAction(tr("Configure..."), this)),
m_fileLineEdit(new Core::Utils::FancyLineEdit) m_fileLineEdit(new Core::Utils::FancyLineEdit)
{ {
// Explcitly hide the completion list popup. // Explicitly hide the completion list popup.
m_completionList->hide(); m_completionList->hide();
setWindowTitle("Locate..."); setWindowTitle("Locate...");