00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef SO_WX_COMPONENT
00025 #define SO_WX_COMPONENT
00026
00028
00029
00030
00032
00033 #include <Inventor/Wx/SoWx.h>
00034 #include <Inventor/Gui/SoGuiComponent.h>
00035
00036 #include <Inventor/SbBasic.h>
00037 #include <Inventor/SbString.h>
00038 #include <Inventor/SbDict.h>
00039
00124 class SoWxComponent : public wxEvtHandler
00125 {
00126
00127 public:
00128
00132 virtual void show();
00133
00137 virtual void hide();
00138
00144 SbBool isVisible();
00145
00149 wxWindow* getWidget() const { return m_baseWidget; }
00150
00156 SbBool isTopLevelShell() const { return m_guiComponent->isTopLevelShell(); }
00157
00162 wxWindow* getShellWidget() const { return m_guiComponent->isTopLevelShell() ? m_parentWidget : NULL; }
00163
00167 wxWindow* getParentWidget() const { return m_parentWidget; }
00168
00172 void setSize( const SbVec2s& size );
00173
00177 SbVec2s getSize();
00178
00185 virtual SbBool setFullScreen( const SbBool enable );
00186
00190 SbBool isFullScreen( void ) const;
00191
00197 void setFullScreenEnable( const SbBool enable );
00198
00203 SbBool isFullScreenEnable( void ) const;
00204
00208 inline SbGlContextHelper::Display getDisplay();
00209
00218 SoNONUNICODE void setTitle( const char* newTitle );
00219
00226 void setTitle( const SbString& newTitle );
00227
00231 SbString getTitle() const { return m_guiComponent->getTitle(); }
00232
00238 SoNONUNICODE void setIconTitle( const char* newIconTitle );
00239
00243 void setIconTitle( const SbString& newIconTitle );
00244
00248 SbString getIconTitle() const
00249 { return m_guiComponent->getIconTitle(); }
00250
00255 static SoWxComponent* getComponent( wxWindow* widget );
00256
00261 SbString getWidgetName() const { return m_guiComponent->getWidgetName(); }
00262
00267 SbString getClassName() const { return m_guiComponent->getClassName(); }
00268
00272 SbString helpFileName;
00273
00274 #ifdef _WIN32
00275
00279 UINT helpContextID;
00280 #endif
00281
00282 private:
00283
00284 virtual ~SoWxComponent();
00285
00286 void setFullScreenOn( SbBool enable ) { m_guiComponent->setFullScreen( enable ); }
00287
00288 static void finish();
00289
00290 SoGuiComponent* getGuiComponent() const;
00291
00292 private:
00293
00294 SoWxComponent( wxWindow* parent = NULL,
00295 const SbString& name = "",
00296 SbBool buildInsideParent = TRUE,
00297 SbBool sync = TRUE );
00298
00299 SoWxComponent( wxWindow* parent,
00300 const SbString& name,
00301 SbBool buildInsideParent,
00302 SbBool sync,
00303 SoGuiComponent* guiComponent );
00304
00305 void setBaseWidget( wxWindow* w );
00306
00307 void setClassName( const SbString& n ) { m_guiComponent->setClassName( n ); }
00308
00309 virtual void afterRealizeHook();
00310
00311
00312 SbBool m_firstRealize;
00313
00314 virtual SbString getDefaultWidgetName() const;
00315 virtual SbString getDefaultTitle() const;
00316 virtual SbString getDefaultIconTitle() const;
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331 void registerWidget( wxWindow* w );
00332 void unregisterWidget( wxWindow* w );
00333
00334 #ifdef _WIN32
00335 #ifdef WX_NOPORT
00336
00337 static HPALETTE _setupColorPalette( HDC );
00338 #endif // WX_NOPORT
00339
00340 static int ChoosePixelFormatOIV( HDC hdc,int pixelType, int glModes, PIXELFORMATDESCRIPTOR* pfd );
00341 #endif //_WIN32
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352 void openHelpCard( const SbString& cardName );
00353
00354
00355
00356 private:
00357
00358 void constructorCommon( wxWindow* parent, const SbString& name, SbBool buildInsideParent, SbBool sync );
00359
00360
00361 SoGuiComponent* m_guiComponent;
00362
00363 SbBool m_createdShell;
00364 wxWindow* m_parentWidget;
00365 wxWindow* m_baseWidget;
00366 wxFrame* m_fullScreen;
00367 SbVec2s m_size;
00368
00369
00370
00371 static SbDict* m_widgetDictionary;
00372
00373 SbBool m_wasNotTopLevel;
00374 };
00375
00376
00377 SbGlContextHelper::Display
00378 SoWxComponent::getDisplay()
00379 {
00380 return SoWx::getDisplay();
00381 }
00382
00383
00384 #endif // SO_WX_COMPONENT
00385
00386
00387