Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://bitbucket.org/Coin3D/
http://www.kongsberg.com/kogt/
SoXtFullViewer.h
1 #ifndef SOXT_FULLVIEWER_H
2 #define SOXT_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/Xt/viewers/SoXtViewer.h>
39 
40 class SoXtPopupMenu;
41 
42 // *************************************************************************
43 
44 class SOXT_DLL_API SoXtFullViewer : public SoXtViewer {
45  SOXT_OBJECT_ABSTRACT_HEADER(SoXtFullViewer, SoXtViewer);
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  Widget getAppPushButtonParent(void) const;
62  void addAppPushButton(Widget newButton);
63  void insertAppPushButton(Widget newButton, int index);
64  void removeAppPushButton(Widget oldButton);
65  int findAppPushButton(Widget oldButton) const;
66  int lengthAppPushButton(void) const;
67 
68  Widget getRenderAreaWidget(void) const;
69 
70  virtual void setViewing(SbBool on);
71 
72  virtual void setComponentCursor(const SoXtCursor & cursor);
73 
74 protected:
75  SoXtFullViewer(Widget parent,
76  const char * name,
77  SbBool embed,
78  BuildFlag flag,
79  Type type,
80  SbBool build);
81  ~SoXtFullViewer();
82 
83  virtual void sizeChanged(const SbVec2s & size);
84 
85  Widget buildWidget(Widget parent);
86 
87  virtual void buildDecoration(Widget parent);
88  virtual Widget buildLeftTrim(Widget parent);
89  virtual Widget buildBottomTrim(Widget parent);
90  virtual Widget buildRightTrim(Widget parent);
91  Widget buildAppButtons(Widget parent);
92  Widget buildViewerButtons(Widget parent);
93  virtual void createViewerButtons(Widget 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  Widget getLeftWheelLabelWidget(void) const;
119  void setBottomWheelString(const char * const name);
120  Widget getBottomWheelLabelWidget(void) const;
121  void setRightWheelString(const char * const name);
122  const char * getRightWheelString() const;
123  Widget getRightWheelLabelWidget(void) const;
124 
125  virtual SbBool processSoEvent(const SoEvent * const event);
126 
127 protected:
128  Widget leftWheel;
129  Widget rightWheel;
130  Widget bottomWheel;
131 
135 
137  char * leftWheelStr;
139 
143 
147 
148  SoXtPopupMenu * 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 SoXtFullViewerP * pimpl;
156 
157  friend class SoGuiFullViewerP;
158  friend class SoXtFullViewerP;
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;
172 #endif // __COIN_SOXT__
173 };
174 
175 // *************************************************************************
176 
177 #endif // ! SOXT_FULLVIEWER_H
SbBool popupEnabled
Definition: SoXtFullViewer.h:170
char * popupTitle
Definition: SoXtFullViewer.h:169
Widget bottomDecoration
Definition: SoXtFullViewer.h:134
Widget bottomWheel
Definition: SoXtFullViewer.h:130
float bottomWheelVal
Definition: SoXtFullViewer.h:146
SoXtPopupMenu * prefmenu
Definition: SoXtFullViewer.h:148
char * rightWheelStr
Definition: SoXtFullViewer.h:141
Widget bottomWheelLabel
Definition: SoXtFullViewer.h:144
Widget rightDecoration
Definition: SoXtFullViewer.h:133
float leftWheelVal
Definition: SoXtFullViewer.h:138
char * leftWheelStr
Definition: SoXtFullViewer.h:137
Widget rightWheel
Definition: SoXtFullViewer.h:129
The SoXtCursor class is used to set cursors for GUI components.
Definition: SoXtCursor.h:41
BuildFlag
Definition: SoXtFullViewer.h:48
virtual SbBool processSoEvent(const SoEvent *const event)
Definition: SoXtViewer.cpp:3660
virtual void setViewing(SbBool enable)
Definition: SoXtViewer.cpp:2147
char * bottomWheelStr
Definition: SoXtFullViewer.h:145
Widget leftDecoration
Definition: SoXtFullViewer.h:132
The SoXtFullViewer class adds some user interface components to the viewer canvas.
Definition: SoXtFullViewer.h:44
The SoXtViewer class is the top level base viewer class.
Definition: SoXtViewer.h:90
Widget leftWheelLabel
Definition: SoXtFullViewer.h:136
Type
Definition: SoXtViewer.h:94
Widget rightWheelLabel
Definition: SoXtFullViewer.h:140
virtual void setComponentCursor(const SoXtCursor &cursor)
Definition: SoXtComponent.cpp:952
SbPList * viewerButtonWidgets
Definition: SoXtFullViewer.h:171
virtual void sizeChanged(const SbVec2s &size)
Definition: SoXtViewer.cpp:3651
float rightWheelVal
Definition: SoXtFullViewer.h:142
Widget leftWheel
Definition: SoXtFullViewer.h:128