00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <iostream.h>
00029
00030 #include "qrootapplication.h"
00031 #include "TUnixSystem.h"
00032 #include "TApplication.h"
00033 #include "TGX11.h"
00034 #include "lockguard.h"
00035
00036 extern void qt_ignore_badwindow();
00037 extern bool qt_badwindow();
00038 extern bool qt_xdnd_handle_badwindow();
00039
00040 static int qt_x11_errhandler( Display *dpy, XErrorEvent *err ){
00041
00042 if ( err->error_code == BadWindow ) {
00043 if ( err->request_code == 25 && qt_xdnd_handle_badwindow() )
00044 return 0;
00045 }
00046
00047 else if ( err->error_code == BadMatch
00048 && err->request_code == 42 ) {
00049 return 0;
00050 }
00051
00052 char errstr[256];
00053 XGetErrorText( dpy, err->error_code, errstr, 256 );
00054 qWarning( "X11 Error: %s %d\n Major opcode: %d",
00055 errstr, err->error_code, err->request_code );
00056 return 0;
00057
00058 }
00059
00060
00061 bool QRootApplication::fDebug=false;
00062 bool QRootApplication::fWarning=false;
00063
00064 void qMessageOutput( QtMsgType type, const char *msg )
00065 {
00066 switch ( type ) {
00067 case QtDebugMsg:
00068 if(QRootApplication::fDebug)
00069 fprintf( stderr, "QtRoot-Debug: \n %s\n", msg );
00070 break;
00071 case QtWarningMsg:
00072 if(QRootApplication::fWarning)
00073 fprintf( stderr, "QtRoot-Warning: \n %s\n", msg );
00074 break;
00075 case QtFatalMsg:
00076 fprintf( stderr, "QtRoot-Fatal: \n %s\n", msg );
00077 abort();
00078 }
00079 }
00080
00081
00082 QRootApplication::QRootApplication(int argc, char **argv, int poll):QApplication(argc,argv){
00083
00084
00085
00086
00087 if (poll == 0){
00088 timer = new QTimer( this );
00089 QObject::connect( timer, SIGNAL(timeout()),
00090 this, SLOT(execute()) );
00091 timer->start( 20, FALSE );
00092
00093 rtimer = new TTimer(20);
00094 rtimer->Start(20, kFALSE);
00095
00096 }
00097
00098
00099
00100 fWarning=fDebug=false;
00101 qInstallMsgHandler( qMessageOutput );
00102
00103
00104
00105
00106
00107
00108
00109
00110 setErrorHandler();
00111 }
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128 QRootApplication::~QRootApplication(){
00129
00130 }
00131
00132 void QRootApplication::execute(){
00133
00134 gSystem->InnerLoop();
00135 }
00136
00137 void QRootApplication::setErrorHandler(){
00138
00139 XSetErrorHandler( qt_x11_errhandler );
00140 }
00141
00142 void QRootApplication::quit(){
00143
00144 cout << " quit ROOT system " << endl;
00145 gSystem->Exit( 0 );
00146 }
00147
00148