parts/outputviews/appoutputviewpart.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include "appoutputviewpart.h"
00013
00014
#include <qwhatsthis.h>
00015
#include <qdir.h>
00016
#include <kdebug.h>
00017
#include <klocale.h>
00018
#include <kaction.h>
00019
#include <kiconloader.h>
00020
00021
#include "kdevproject.h"
00022
#include "kdevcore.h"
00023
#include "kdevmainwindow.h"
00024
#include "outputviewsfactory.h"
00025
#include "appoutputwidget.h"
00026
00027
00028 AppOutputViewPart::AppOutputViewPart(
QObject *parent,
const char *name,
const QStringList &)
00029 :
KDevAppFrontend("ApplicationOutput", "appoutput", parent, name ? name : "
AppOutputViewPart")
00030 {
00031 setInstance(OutputViewsFactory::instance());
00032
00033
m_dcop =
new KDevAppFrontendIface(
this);
00034
00035
m_widget =
new AppOutputWidget(
this);
00036
m_widget->setIcon( SmallIcon(
"openterm") );
00037
m_widget->setCaption(i18n(
"Application Output"));
00038 QWhatsThis::add(
m_widget, i18n(
"<b>Application output</b><p>"
00039
"The stdout/stderr output window is a replacement for "
00040
"terminal-based application communication. Running terminal "
00041
"applications use this instead of a terminal window."));
00042
00043
mainWindow()->
embedOutputView(
m_widget, i18n(
"Application"), i18n(
"Output of the executed user program"));
00044
00045 connect(
core(), SIGNAL(stopButtonClicked(
KDevPlugin*)),
00046
this, SLOT(
slotStopButtonClicked(
KDevPlugin*)) );
00047 connect(
m_widget, SIGNAL(
processExited(
KProcess*)),
this, SLOT(
slotProcessExited()));
00048 connect(
m_widget, SIGNAL(
processExited(
KProcess*)), SIGNAL(
processExited()));
00049 }
00050
00051
00052 AppOutputViewPart::~AppOutputViewPart()
00053 {
00054
if (
m_widget )
00055
mainWindow()->
removeView(
m_widget );
00056
delete m_widget;
00057
delete m_dcop;
00058 }
00059
00060 void AppOutputViewPart::slotStopButtonClicked(
KDevPlugin* which )
00061 {
00062
if ( which != 0 && which !=
this )
00063
return;
00064
stopApplication();
00065 }
00066
00067 void AppOutputViewPart::stopApplication()
00068 {
00069
m_widget->killJob();
00070
00071
core()->
running(
this,
false );
00072 }
00073
00074 void AppOutputViewPart::slotProcessExited()
00075 {
00076
core()->
running(
this,
false );
00077 }
00078
00084 void AppOutputViewPart::startAppCommand(
const QString &directory,
const QString &program,
bool inTerminal)
00085 {
00086
QString cmd;
00087
00088
if (inTerminal) {
00089 cmd =
"konsole";
00090
if ( !directory.isNull() ) {
00091
00092 cmd +=
" --workdir " + directory;
00093 }
00094 cmd +=
" -e /bin/sh -c '";
00095 cmd += program;
00096 cmd +=
"; echo \"";
00097 cmd += i18n(
"Press Enter to continue!");
00098 cmd +=
"\";read'";
00099 }
else
00100 cmd = program;
00101
00102
if ( directory.isNull() )
00103
00104
m_widget->startJob(QDir::homeDirPath(), cmd);
00105
else
00106
00107
m_widget->startJob(directory, cmd);
00108
00109
core()->
running(
this,
true );
00110
00111
mainWindow()->
raiseView(
m_widget);
00112 }
00113
00114
00115 bool AppOutputViewPart::isRunning()
00116 {
00117
return m_widget->isRunning();
00118 }
00119
00120
00121 void AppOutputViewPart::insertStdoutLine(
const QString &line)
00122 {
00123
m_widget->insertStdoutLine(line);
00124 }
00125
00126
00127 void AppOutputViewPart::insertStderrLine(
const QString &line)
00128 {
00129
m_widget->insertStderrLine(line);
00130 }
00131
00132 void AppOutputViewPart::clearView()
00133 {
00134
m_widget->clear();
00135 }
00136
00137
#include "appoutputviewpart.moc"
This file is part of the documentation for KDevelop Version 3.0.4.