KDevelop API Documentation

parts/outputviews/appoutputviewpart.cpp

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * Copyright (C) 1999-2002 by Bernd Gehrmann * 00003 * bernd@kdevelop.org * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 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 // If a directory was specified, use it 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 // use the user's home directory 00104 m_widget->startJob(QDir::homeDirPath(), cmd); 00105 else 00106 // use the supplied directory 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"
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Oct 6 17:39:12 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003