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 #ifndef _SO_QT_
00029 #define _SO_QT_
00030
00031 #ifndef SOQT
00032 #define SOQT
00033 #endif
00034
00035 #include <Inventor/Qt/SoXt2SoQt.h>
00036
00037 #include <qglobal.h>
00038
00039 #include <QEvent>
00040 #include <QObject>
00041 #include <QWidget>
00042 #include <QToolButton>
00043 #include <QPushButton>
00044 #include <QApplication>
00045 #include <QPointer>
00046
00047 #include <Inventor/SbLinear.h>
00048 #include <Inventor/SbString.h>
00049 #include <Inventor/Qt/SoQtDef.h>
00050 #include <Inventor/Qt/SoQtLibName.h>
00051
00052 #ifdef _WIN32
00053 #if !defined(InventorQt_EXPORTS)
00054 #ifndef OIV_DISABLE_AUTOLINK
00055 # pragma comment(lib,__INVQTLIB)
00056 #endif
00057 #endif
00058 #endif //win
00059
00060 class SbPList;
00061 class SoQtSensorHandler;
00062 class SoAction;
00063
00087 class SoQt : public QObject
00088 {
00089 Q_OBJECT
00090
00091
00092 public:
00102 SoNONUNICODE static QWidget *init(const char *appName, const char *className = "Inventor");
00103
00111 static QWidget *init(const SbString& appName, const SbString& className = "Inventor");
00112
00119 SoNONUNICODE static QWidget *threadInit(const char *appName,
00120 const char *className = "Inventor");
00121
00126 static QWidget *threadInit(const SbString& appName,
00127 const SbString& className = "Inventor");
00128
00135 static void init(QWidget *topLevelWidget);
00136
00141 static void threadInit(QWidget *topLevelWidget);
00142
00148 static void show(QWidget *widget);
00154 static void hide(QWidget *widget);
00158 static void mainLoop();
00163 static void nextEvent(XtAppContext appContext, XEvent *event);
00167 static SbGlContextHelper::Display getDisplay();
00172 static SbGlContextHelper::GLContext getAppContext();
00178 static Boolean dispatchEvent(XEvent *);
00183 static QWidget *getTopLevelWidget();
00187 static void setWidgetSize(QWidget *widget, const SbVec2s &size);
00191 static SbVec2s getWidgetSize(QWidget *widget);
00192
00200 SoNONUNICODE static void createSimpleErrorDialog(QWidget *widget, char *dialogTitle,
00201 char *errorStr1, char *errorStr2 = NULL);
00202
00208 static void createSimpleErrorDialog( QWidget *widget, const SbString& sdialogTitle,
00209 const SbString& errorStr1, const SbString& errorStr2 = "" );
00210
00270 static void finish();
00271
00275 static bool isInitialized();
00276
00282 static int getExtensionEventNumber();
00283
00284 private:
00285
00286
00287 static QPointer<QWidget> mainWidget;
00288 static QPointer<QApplication> qapplication;
00289 static QApplication *getQApp() {return qapplication;};
00290
00291
00292
00293
00294 static void addExtensionEventHandler(QWidget *w,
00295 int extensionEventType,
00296 XtEventHandler proc,
00297 XtPointer clientData);
00298 static void removeExtensionEventHandler(QWidget *w,
00299 int extensionEventType,
00300 XtEventHandler proc,
00301 XtPointer clientData);
00302
00303 static void getExtensionEventHandler(XEvent *event, QWidget *w,
00304 XtEventHandler &proc,
00305 XtPointer &clientData);
00306
00307 private:
00308
00309 static SoQtSensorHandler *sensorHandler;
00310
00311 private:
00312
00313
00314
00315 static bool commonInit(const SbString& appName, const SbString& className);
00316
00317 static void setupInventorGLDisplay();
00318
00319 static SbPList *handlerList;
00320 static int OIVExtensionEventNumber;
00321 static int s_initRefCount;
00322 static const char *s_versionString;
00323 static SbBool s_ownTopLevelWindow;
00324 static SbBool s_ownApplication;
00325 static int s_defaultArgc;
00326 static char** s_defaultArgv;
00327 };
00328
00329 #ifdef __APPLE__
00330 #define SoQtButton QToolButton
00331 #else
00332 #define SoQtButton QPushButton
00333 #endif
00334
00335 #endif // _SO_QT_
00336
00337
00338