This repository has been archived on 2022-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
modern-linbo-gui/sources/legacy/linboInfoBrowserImpl.cc

195 lines
4.7 KiB
C++

#include "linboInfoBrowserImpl.hh"
#include <unistd.h>
#include <qapplication.h>
#include <QtGui>
#include <QTextStream>
linboInfoBrowserImpl::linboInfoBrowserImpl(QWidget* parent ) : linboDialog()
{
Ui_linboInfoBrowser::setupUi((QDialog*)this);
process = new QProcess( this );
logConsole = new linboLogConsole(0);
if( parent)
myParent = parent;
connect( this->saveButton, SIGNAL(clicked()), this, SLOT(postcmd()));
// connect SLOT for finished process
connect( process, SIGNAL(finished(int, QProcess::ExitStatus) ),
this, SLOT(processFinished(int, QProcess::ExitStatus)) );
// connect stdout and stderr to linbo console
connect( process, SIGNAL(readyReadStandardOutput()),
this, SLOT(readFromStdout()) );
connect( process, SIGNAL(readyReadStandardError()),
this, SLOT(readFromStderr()) );
Qt::WindowFlags flags;
flags = Qt::Dialog | Qt::WindowStaysOnTopHint | Qt::WindowTitleHint ;
setWindowFlags( flags );
QRect qRect(QApplication::desktop()->screenGeometry());
// open in the center of our screen
int xpos=qRect.width()/2-this->width()/2;
int ypos=qRect.height()/2-this->height()/2;
this->move(xpos,ypos);
this->setFixedSize( this->width(), this->height() );
}
linboInfoBrowserImpl::~linboInfoBrowserImpl()
{
delete process;
}
void linboInfoBrowserImpl::setTextBrowser( const QString& new_consolefontcolorstdout,
const QString& new_consolefontcolorstderr,
QTextEdit* newBrowser )
{
logConsole->setLinboLogConsole( new_consolefontcolorstdout,
new_consolefontcolorstderr,
newBrowser );
}
void linboInfoBrowserImpl::setMainApp( QWidget* newMainApp ) {
if ( newMainApp ) {
myMainApp = newMainApp;
}
}
void linboInfoBrowserImpl::precmd() {
app = static_cast<linboGUIImpl*>( myMainApp );
if( app ) {
if ( app->isRoot() ) {
saveButton->setText("Speichern");
saveButton->setEnabled( true );
editor->setReadOnly( false );
// connect( this->saveButton, SIGNAL(clicked()), this, SLOT(postcmd()));
} else {
saveButton->setText("Schliessen");
saveButton->setEnabled( true );
editor->setReadOnly( true );
// connect( this->saveButton, SIGNAL(clicked()), this, SLOT(close()));
}
arguments.clear();
arguments = myLoadCommand;
QStringList processargs( arguments );
QString command = processargs.takeFirst();
process->start( command, processargs );
while( process->state() == QProcess::Running ) {
usleep( 1000 );
}
file = new QFile( filepath );
// read content
if( !file->open( QIODevice::ReadOnly ) ) {
logConsole->writeStdErr( QString("Keine passende Beschreibung im Cache.") );
}
else {
Q3TextStream ts( file );
editor->setText( ts.read() );
file->close();
}
}
}
void linboInfoBrowserImpl::postcmd() {
if( app ) {
if ( app->isRoot() ) {
if ( !file->open( QIODevice::WriteOnly ) ) {
logConsole->writeStdErr( QString("Fehler beim Speichern der Beschreibung.") );
}
else {
Q3TextStream ts( file );
ts << editor->text();
file->flush();
file->close();
arguments.clear();
arguments = mySaveCommand;
QStringList processargs( arguments );
QString command = processargs.takeFirst();
process->start( command, processargs );
while( process->state() == QProcess::Running ) {
usleep( 1000 );
}
arguments.clear();
arguments = myUploadCommand;
processargs.clear();
processargs = arguments;
command = processargs.takeFirst();
process->start( command, processargs );
while( process->state() == QProcess::Running ) {
usleep( 1000 );
}
}
}
this->close();
}
}
void linboInfoBrowserImpl::setCommand( const QStringList& newArguments ) {
myUploadCommand = newArguments;
}
void linboInfoBrowserImpl::setUploadCommand( const QStringList& newUploadCommand ) {
myUploadCommand = newUploadCommand;
}
void linboInfoBrowserImpl::setLoadCommand( const QStringList& newLoadCommand ) {
myLoadCommand = newLoadCommand;
}
void linboInfoBrowserImpl::setSaveCommand( const QStringList& newSaveCommand ) {
mySaveCommand = newSaveCommand;
}
QStringList linboInfoBrowserImpl::getCommand() {
// not needed here
return arguments;
}
void linboInfoBrowserImpl::setFilePath( const QString& newFilepath ) {
filepath = newFilepath;
}
void linboInfoBrowserImpl::readFromStdout()
{
logConsole->writeStdOut( process->readAllStandardOutput() );
}
void linboInfoBrowserImpl::readFromStderr()
{
logConsole->writeStdErr( process->readAllStandardError() );
}
void linboInfoBrowserImpl::processFinished( int retval,
QProcess::ExitStatus status) {
logConsole->writeResult( retval, status, process->error() );
app->restoreButtonsState();
}