Main Page | Modules | Class Hierarchy | Class List | File List | Class Members

SoQt.h

00001 /**************************************************************************\
00002  *
00003  *  This file is part of the Coin 3D visualization library.
00004  *  Copyright (C) 1998-2003 by Systems in Motion.  All rights reserved.
00005  *
00006  *  This library is free software; you can redistribute it and/or
00007  *  modify it under the terms of the GNU General Public License
00008  *  ("GPL") version 2 as published by the Free Software Foundation.
00009  *  See the file LICENSE.GPL at the root directory of this source
00010  *  distribution for additional information about the GNU GPL.
00011  *
00012  *  For using Coin with software that can not be combined with the GNU
00013  *  GPL, and for taking advantage of the additional benefits of our
00014  *  support services, please contact Systems in Motion about acquiring
00015  *  a Coin Professional Edition License.
00016  *
00017  *  See <URL:http://www.coin3d.org> for more information.
00018  *
00019  *  Systems in Motion, Teknobyen, Abels Gate 5, 7030 Trondheim, NORWAY.
00020  *  <URL:http://www.sim.no>.
00021  *
00022 \**************************************************************************/
00023 
00024 // src/Inventor/Qt/SoQt.h.  Generated from SoGui.h.in by configure.
00025 
00026 #ifndef SOQT_H
00027 #define SOQT_H
00028 
00029 #include <Inventor/Qt/SoQtBasic.h>
00030 
00031 // FIXME: use configure defines for the header files.
00032 // 20020613 mortene.
00033 
00034 #ifdef __COIN_SOQT__
00035 #include <qobject.h>
00036 #endif // __COIN_SOQT__
00037 #ifdef __COIN_SOXT__
00038 #include <X11/Intrinsic.h>
00039 #include <Xm/Xm.h>
00040 #endif // __COIN_SOXT__
00041 #ifdef __COIN_SOGTK__
00042 // Fetch stdlib.h, so NULL is defined before glib.h is (indirectly)
00043 // included. Otherwise we get a compile error with KCC on some
00044 // systems.
00045 #include <stdlib.h>
00046 #include <gtk/gtk.h>
00047 class SoGtkComponent;
00048 class SbPList;
00049 #endif // __COIN_SOGTK__
00050 #ifdef __COIN_SOWIN__
00051 #include <windows.h>
00052 #endif // __COIN_SOWIN__
00053 
00054 #include <Inventor/SbBasic.h>
00055 #include <Inventor/SbLinear.h>
00056 #include <Inventor/SbString.h>
00057 #include <Inventor/SoDB.h>
00058 #include <Inventor/errors/SoDebugError.h>
00059 
00060 // *************************************************************************
00061 
00062 class SOQT_DLL_API SoQt
00063 {
00064 
00065 public:
00066   static QWidget * init(const char * appname, const char * classname = "SoQt");
00067   static QWidget * init(int & argc, char ** argv,
00068                        const char * appname, const char * classname = "SoQt");
00069   static void init(QWidget * toplevelwidget);
00070 
00071   static void mainLoop(void);
00072   static void exitMainLoop(void);
00073   static void done(void);
00074 
00075   static QWidget * getTopLevelWidget(void);
00076   static QWidget * getShellWidget(const QWidget * w);
00077 
00078   static void show(QWidget * const widget);
00079   static void hide(QWidget * const widget);
00080 
00081   static void setWidgetSize(QWidget * const widget, const SbVec2s size);
00082   static SbVec2s getWidgetSize(const QWidget * widget);
00083 
00084   static void createSimpleErrorDialog(QWidget * widget,
00085                                       const char * title,
00086                                       const char * string1,
00087                                       const char * string2 = NULL);
00088 
00089   static void getVersionInfo(int * major = NULL,
00090                              int * minor = NULL,
00091                              int * micro = NULL);
00092   static const char * getVersionString(void);
00093 
00094   enum FatalErrors {
00095     UNSPECIFIED_ERROR = 0,
00096     NO_OPENGL_CANVAS,
00097     INTERNAL_ASSERT
00098   };
00099   typedef void FatalErrorCB(const SbString errmsg, SoQt::FatalErrors errcode,
00100                             void * userdata);
00101   static FatalErrorCB * setFatalErrorHandler(SoQt::FatalErrorCB * cb,
00102                                              void * userdata);
00103 
00104   static SbBool isDebugLibrary(void);
00105   static SbBool isCompatible(unsigned int major, unsigned int minor);
00106 
00107   enum ABIType { DLL, LIB, UNKNOWN };
00108   static ABIType getABIType(void);
00109 
00110 private:
00111   // Since the class consists solely of static functions, hide the
00112   // default constructor and the destructor so nobody can instantiate
00113   // it.
00114   SoQt(void);
00115   virtual ~SoQt();
00116 
00117 #ifndef DOXYGEN_SKIP_THIS // To avoid having it show up in Doxygen doc.
00118   friend class SoGuiP;
00119   friend class SoQtP;
00120 #endif // DOXYGEN_SKIP_THIS
00121 
00122 
00124 
00125 #ifdef __COIN_SOXT__
00126 public:
00127   static void nextEvent(XtAppContext, XEvent *);
00128   static Boolean dispatchEvent(XEvent * event);
00129   static XtAppContext getAppContext(void);
00130   static Display * getDisplay(void);
00131   static XmString encodeString(const char * const str);
00132   static char * decodeString(XmString xstring);
00133   static void getPopupArgs(Display * display, int screen,
00134                            ArgList args, int * n);
00135 
00136   static void registerColormapLoad(Widget widget, Widget shell);
00137   static void addColormapToShell(Widget widget, Widget shell);
00138   static void removeColormapFromShell(Widget widget, Widget shell);
00139 
00140   static void addExtensionEventHandler(Widget widget,
00141                                        int eventType, XtEventHandler proc,
00142                                        XtPointer clientData);
00143   static void removeExtensionEventHandler(Widget widget,
00144                                           int eventType, XtEventHandler proc,
00145                                           XtPointer clientData);
00146 
00147   static void selectBestVisual(Display * dpy, Visual * & visual,
00148                                Colormap & cmap, int & depth);
00149 
00150   static const char * getAppName(void);
00151   static const char * getAppClass(void);
00152 
00153 protected:
00154   static void getExtensionEventHandler(XEvent * event, Widget & widget,
00155                                        XtEventHandler & proc,
00156                                        XtPointer & clientData);
00157 #endif // __COIN_SOXT__
00158 
00159 #ifdef __COIN_SOWIN__
00160 public:
00161   static BOOL dispatchEvent(MSG * msg);
00162   static SbBool nextEvent(int appContext, MSG * msg);
00163   static void setInstance(HINSTANCE instance);
00164   static HINSTANCE getInstance(void);
00165   static void doIdleTasks(void);
00166 
00167 protected:
00168   friend class SoWinP;
00169 
00170   static void registerWindowClass(const char * const className);
00171   static void unRegisterWindowClass(const char * const className);
00172 
00173   static HWND createWindow(char * title, char * className,
00174                            SIZE size, HWND parent = NULL, HMENU menu = NULL);
00175 
00176   static LRESULT CALLBACK eventHandler(HWND window, UINT message,
00177                                        WPARAM wparam, LPARAM lparam);
00178 
00179 #endif // __COIN_SOWIN__
00180 
00181 #ifdef __COIN_SOGTK__
00182 public:
00183   friend class SoGtkComponent;
00184   enum SoGtkComponentAction { CREATION, DESTRUCTION, CHANGE };
00185   typedef void SoGtkComponentActionCallback(SoGtkComponent *, SoGtk::SoGtkComponentAction, void *);
00186 
00187   static void addComponentActionCallback(SoGtkComponentActionCallback *, void *);
00188   static void removeComponentActionCallback(SoGtkComponentActionCallback *, void *);
00189 
00190   static int getComponents(SbPList & components);
00191 
00192 protected:
00193   static void invokeComponentActionCallbacks(SoGtkComponent * component,
00194                                              SoGtkComponentAction action);
00195 
00196   static gint componentCreation(SoGtkComponent * component);
00197   static gint componentDestruction(SoGtkComponent * component);
00198   static gint componentChange(SoGtkComponent * component);
00199 
00200 private:
00201   static gint timerSensorCB(gpointer data);
00202   static gint idleSensorCB(gpointer data);
00203   static gint delaySensorCB(gpointer data);
00204 
00205   static GtkWidget * mainWidget;
00206   static SbPList * components;
00207   static SbPList * component_callbacks;
00208 #endif // __COIN_SOGTK__
00209 };
00210 
00211 // *************************************************************************
00212 
00213 #endif // ! SOQT_H

Generated on Sat Dec 6 22:19:05 2003 for SoQt by doxygen 1.3.4