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/SoInventorQtLibName.h>
00051
00052 #include <Inventor/SoModule.h>
00053 SO_MODULE_HEADER(SoInventorQt, __INVENTORQTDLL)
00054
00055 #ifdef _WIN32
00056 #if !defined(InventorQt_EXPORTS)
00057 #ifndef OIV_DISABLE_AUTOLINK
00058 # pragma comment(lib,__INVENTORQTLIB)
00059 #endif
00060 #endif
00061 #endif //win
00062
00063 class SbPList;
00064 class SoQtSensorHandler;
00065 class SoAction;
00066
00089 class SoQt : public QObject
00090 {
00091 Q_OBJECT
00092
00093
00094 public:
00104 SoNONUNICODE static QWidget *init(const char *appName, const char *className = "Inventor");
00105
00113 static QWidget *init(const SbString& appName, const SbString& className = "Inventor");
00114
00121 static void init( QWidget *topLevelWidget );
00122
00123 #if 1 SoDEPRECATED
00128 SoNONUNICODE static QWidget *threadInit(const char *appName,
00129 const char *className = "Inventor");
00130 SoDEPRECATED
00132 static QWidget *threadInit(const SbString& appName,
00133 const SbString& className = "Inventor");
00134 SoDEPRECATED
00136 static void threadInit(QWidget *topLevelWidget);
00137 #endif
00144 static void show(QWidget *widget);
00145
00150 static void hide(QWidget *widget);
00154 static void mainLoop();
00159 static void nextEvent(XtAppContext appContext, XEvent *event);
00163 static SbGlContextHelper::Display getDisplay();
00168 static SbGlContextHelper::GLContext getAppContext();
00174 static Boolean dispatchEvent(XEvent *);
00179 static QWidget *getTopLevelWidget();
00183 static void setWidgetSize(QWidget *widget, const SbVec2s &size);
00187 static SbVec2s getWidgetSize(QWidget *widget);
00188
00196 SoNONUNICODE static void createSimpleErrorDialog(QWidget *widget, char *dialogTitle,
00197 char *errorStr1, char *errorStr2 = NULL);
00198
00204 static void createSimpleErrorDialog( QWidget *widget, const SbString& sdialogTitle,
00205 const SbString& errorStr1, const SbString& errorStr2 = "" );
00206
00266 static void finish();
00267
00271 static bool isInitialized();
00272
00278 static int getExtensionEventNumber();
00279
00280 private:
00281
00282
00283 static QPointer<QWidget> mainWidget;
00284 static QPointer<QApplication> qapplication;
00285 static QApplication *getQApp() {return qapplication;};
00286
00287
00288
00289
00290 static void addExtensionEventHandler(QWidget *w,
00291 int extensionEventType,
00292 XtEventHandler proc,
00293 XtPointer clientData);
00294 static void removeExtensionEventHandler(QWidget *w,
00295 int extensionEventType,
00296 XtEventHandler proc,
00297 XtPointer clientData);
00298
00299 static void getExtensionEventHandler(XEvent *event, QWidget *w,
00300 XtEventHandler &proc,
00301 XtPointer &clientData);
00302
00303 private:
00304
00305 static SoQtSensorHandler *sensorHandler;
00306
00307 private:
00308
00309
00310
00311 static bool commonInit(const SbString& appName, const SbString& className);
00312
00313 static void setupInventorGLDisplay();
00314
00315 static SbPList *handlerList;
00316 static int OIVExtensionEventNumber;
00317 static int s_initRefCount;
00318 static const char *s_versionString;
00319 static SbBool s_ownTopLevelWindow;
00320 static SbBool s_ownApplication;
00321 static int s_defaultArgc;
00322 static char** s_defaultArgv;
00323 };
00324
00325 #ifdef __APPLE__
00326 #define SoQtButton QToolButton
00327 #else
00328 #define SoQtButton QPushButton
00329 #endif
00330
00331 #endif // _SO_QT_
00332
00333
00334