Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://bitbucket.org/Coin3D/
http://www.kongsberg.com/kogt/
SoWinFullViewer.h
1 #ifndef SOWIN_FULLVIEWER_H
2 #define SOWIN_FULLVIEWER_H
3 
4 //
5 
6 /**************************************************************************\
7  * Copyright (c) Kongsberg Oil & Gas Technologies AS
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions are
12  * met:
13  *
14  * Redistributions of source code must retain the above copyright notice,
15  * this list of conditions and the following disclaimer.
16  *
17  * Redistributions in binary form must reproduce the above copyright
18  * notice, this list of conditions and the following disclaimer in the
19  * documentation and/or other materials provided with the distribution.
20  *
21  * Neither the name of the copyright holder nor the names of its
22  * contributors may be used to endorse or promote products derived from
23  * this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 \**************************************************************************/
37 
38 #include <Inventor/Win/viewers/SoWinViewer.h>
39 
40 class SoWinPopupMenu;
41 
42 // *************************************************************************
43 
44 class SOWIN_DLL_API SoWinFullViewer : public SoWinViewer {
45  SOWIN_OBJECT_ABSTRACT_HEADER(SoWinFullViewer, SoWinViewer);
46 
47 public:
48  enum BuildFlag {
49  BUILD_NONE = 0x00,
50  BUILD_DECORATION = 0x01,
51  BUILD_POPUP = 0x02,
52  BUILD_ALL = (BUILD_DECORATION | BUILD_POPUP)
53  };
54 
55  void setDecoration(const SbBool on);
56  SbBool isDecoration(void) const;
57 
58  void setPopupMenuEnabled(const SbBool on);
59  SbBool isPopupMenuEnabled(void) const;
60 
61  HWND getAppPushButtonParent(void) const;
62  void addAppPushButton(HWND newButton);
63  void insertAppPushButton(HWND newButton, int index);
64  void removeAppPushButton(HWND oldButton);
65  int findAppPushButton(HWND oldButton) const;
66  int lengthAppPushButton(void) const;
67 
68  HWND getRenderAreaWidget(void) const;
69 
70  virtual void setViewing(SbBool on);
71 
72  virtual void setComponentCursor(const SoWinCursor & cursor);
73 
74 protected:
75  SoWinFullViewer(HWND parent,
76  const char * name,
77  SbBool embed,
78  BuildFlag flag,
79  Type type,
80  SbBool build);
81  ~SoWinFullViewer();
82 
83  virtual void sizeChanged(const SbVec2s & size);
84 
85  HWND buildWidget(HWND parent);
86 
87  virtual void buildDecoration(HWND parent);
88  virtual HWND buildLeftTrim(HWND parent);
89  virtual HWND buildBottomTrim(HWND parent);
90  virtual HWND buildRightTrim(HWND parent);
91  HWND buildAppButtons(HWND parent);
92  HWND buildViewerButtons(HWND parent);
93  virtual void createViewerButtons(HWND parent, SbPList * buttonlist);
94 
95  virtual void buildPopupMenu(void);
96  virtual void setPopupMenuString(const char * title);
97  virtual void openPopupMenu(const SbVec2s position);
98 
99  virtual void leftWheelStart(void);
100  virtual void leftWheelMotion(float);
101  virtual void leftWheelFinish(void);
102  float getLeftWheelValue(void) const;
103  void setLeftWheelValue(const float value);
104 
105  virtual void bottomWheelStart(void);
106  virtual void bottomWheelMotion(float);
107  virtual void bottomWheelFinish(void);
108  float getBottomWheelValue(void) const;
109  void setBottomWheelValue(const float value);
110 
111  virtual void rightWheelStart(void);
112  virtual void rightWheelMotion(float);
113  virtual void rightWheelFinish(void);
114  float getRightWheelValue(void) const;
115  void setRightWheelValue(const float value);
116 
117  void setLeftWheelString(const char * const name);
118  HWND getLeftWheelLabelWidget(void) const;
119  void setBottomWheelString(const char * const name);
120  HWND getBottomWheelLabelWidget(void) const;
121  void setRightWheelString(const char * const name);
122  const char * getRightWheelString() const;
123  HWND getRightWheelLabelWidget(void) const;
124 
125  virtual SbBool processSoEvent(const SoEvent * const event);
126 
127 protected:
128  HWND leftWheel;
131 
135 
137  char * leftWheelStr;
139 
143 
147 
148  SoWinPopupMenu * prefmenu;
149 
150 private:
151  // Private class for implementation hiding. The idiom we're using is
152  // a variant of what is known as the "Cheshire Cat", and is also
153  // described as the "Bridge" pattern in «Design Patterns» by Gamma
154  // et al (aka The Gang Of Four).
155  class SoWinFullViewerP * pimpl;
156 
157  friend class SoGuiFullViewerP;
158  friend class SoWinFullViewerP;
159 
160 
161 
162 // FIXME: get rid of non-templatized code. 20020108 mortene.
163 
164 #ifdef __COIN_SOXT__ // FIXME: get rid of non-templatized code. 20020108 mortene.
165 protected:
166  Widget buildFunctionsSubmenu(Widget popup);
167  Widget buildDrawStyleSubmenu(Widget popup);
168 
169  char * popupTitle;
170  SbBool popupEnabled;
171  SbPList * viewerButtonWidgets;
172 #endif // __COIN_SOXT__
173 };
174 
175 // *************************************************************************
176 
177 #endif // ! SOWIN_FULLVIEWER_H
virtual void setComponentCursor(const SoWinCursor &cursor)
Definition: SoWinComponent.cpp:735
HWND leftDecoration
Definition: SoWinFullViewer.h:132
The SoWinCursor class is used to set cursors for GUI components.
Definition: SoWinCursor.h:41
The SoWinViewer class is the top level base viewer class.
Definition: SoWinViewer.h:90
virtual void sizeChanged(const SbVec2s &size)
Definition: SoWinViewer.cpp:3651
The SoWinFullViewer class adds some user interface components to the viewer canvas.
Definition: SoWinFullViewer.h:44
HWND leftWheel
Definition: SoWinFullViewer.h:128
HWND rightWheelLabel
Definition: SoWinFullViewer.h:140
HWND bottomWheelLabel
Definition: SoWinFullViewer.h:144
virtual SbBool processSoEvent(const SoEvent *const event)
Definition: SoWinViewer.cpp:3660
HWND bottomWheel
Definition: SoWinFullViewer.h:130
HWND bottomDecoration
Definition: SoWinFullViewer.h:134
HWND rightDecoration
Definition: SoWinFullViewer.h:133
char * rightWheelStr
Definition: SoWinFullViewer.h:141
char * bottomWheelStr
Definition: SoWinFullViewer.h:145
float rightWheelVal
Definition: SoWinFullViewer.h:142
HWND rightWheel
Definition: SoWinFullViewer.h:129
float bottomWheelVal
Definition: SoWinFullViewer.h:146
float leftWheelVal
Definition: SoWinFullViewer.h:138
HWND leftWheelLabel
Definition: SoWinFullViewer.h:136
virtual void setViewing(SbBool enable)
Definition: SoWinViewer.cpp:2147
char * leftWheelStr
Definition: SoWinFullViewer.h:137
SoWinPopupMenu * prefmenu
Definition: SoWinFullViewer.h:148
BuildFlag
Definition: SoWinFullViewer.h:48