home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / qt3_emx.zip / examples / process / process.cpp < prev    next >
C/C++ Source or Header  |  2001-10-11  |  2KB  |  96 lines

  1. /****************************************************************************
  2. ** $Id:  qt/process.cpp   3.0.0   edited Jul 9 15:29 $
  3. **
  4. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  5. **
  6. ** This file is part of an example program for Qt.  This example
  7. ** program may be used, distributed and modified without limitation.
  8. **
  9. *****************************************************************************/
  10.  
  11. #include <qobject.h>
  12. #include <qprocess.h>
  13. #include <qvbox.h>
  14. #include <qtextview.h>
  15. #include <qpushbutton.h>
  16. #include <qapplication.h>
  17. #include <qmessagebox.h>
  18.  
  19. #include <stdlib.h>
  20.  
  21. class UicManager : public QVBox
  22. {
  23.     Q_OBJECT
  24.  
  25. public:
  26.     UicManager();
  27.     ~UicManager() {}
  28.  
  29. public slots:
  30.     void readFromStdout();
  31.     void scrollToTop();
  32.  
  33. private:
  34.     QProcess *proc;
  35.     QTextView *output;
  36.     QPushButton *quitButton;
  37. };
  38.  
  39. UicManager::UicManager()
  40. {
  41.     // Layout
  42.     output = new QTextView( this );
  43.     quitButton = new QPushButton( tr("Quit"), this );
  44.     connect( quitButton, SIGNAL(clicked()),
  45.         qApp, SLOT(quit()) );
  46.     resize( 500, 500 );
  47.  
  48.     // QProcess related code
  49.     proc = new QProcess( this );
  50.  
  51.     // Set up the command and arguments.
  52.     // On the command line you would do:
  53.     //   uic -tr i18n "small_dialog.ui"
  54.     proc->addArgument( "uic" );
  55.     proc->addArgument( "-tr" );
  56.     proc->addArgument( "i18n" );
  57.     proc->addArgument( "small_dialog.ui" );
  58.  
  59.     connect( proc, SIGNAL(readyReadStdout()),
  60.         this, SLOT(readFromStdout()) );
  61.     connect( proc, SIGNAL(processExited()),
  62.         this, SLOT(scrollToTop()) );
  63.  
  64.     if ( !proc->start() ) {
  65.     // error handling
  66.     QMessageBox::critical( 0,
  67.         tr("Fatal error"),
  68.         tr("Could not start the uic command."),
  69.         tr("Quit") );
  70.     exit( -1 );
  71.     }
  72. }
  73.  
  74. void UicManager::readFromStdout()
  75. {
  76.     // Read and process the data.
  77.     // Bear in mind that the data might be output in chunks.
  78.     output->append( proc->readStdout() );
  79. }
  80.  
  81. void UicManager::scrollToTop()
  82. {
  83.     output->setContentsPos( 0, 0 );
  84. }
  85.  
  86. int main( int argc, char **argv )
  87. {
  88.     QApplication a( argc, argv );
  89.     UicManager manager;
  90.     a.setMainWidget( &manager );
  91.     manager.show();
  92.     return a.exec();
  93. }
  94.  
  95. #include "process.moc"
  96.