1#ifndef SO@GUI@_FULLVIEWER_H 2#define SO@GUI@_FULLVIEWER_H 3 4// @configure_input@ 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/@Gui@/viewers/So@Gui@Viewer.h> 39 40class So@Gui@PopupMenu; 41 42// ************************************************************************* 43 44class SO@GUI@_DLL_API So@Gui@FullViewer : public So@Gui@Viewer { 45 SO@GUI@_OBJECT_ABSTRACT_HEADER(So@Gui@FullViewer, So@Gui@Viewer); 46 47public: 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 So@Gui@Cursor & cursor); 73 74protected: 75 So@Gui@FullViewer(@WIDGET@ parent, 76 const char * name, 77 SbBool embed, 78 BuildFlag flag, 79 Type type, 80 SbBool build); 81 ~So@Gui@FullViewer(); 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 127protected: 128 @WIDGET@ leftWheel; 129 @WIDGET@ rightWheel; 130 @WIDGET@ bottomWheel; 131 132 @WIDGET@ leftDecoration; 133 @WIDGET@ rightDecoration; 134 @WIDGET@ bottomDecoration; 135 136 @WIDGET@ leftWheelLabel; 137 char * leftWheelStr; 138 float leftWheelVal; 139 140 @WIDGET@ rightWheelLabel; 141 char * rightWheelStr; 142 float rightWheelVal; 143 144 @WIDGET@ bottomWheelLabel; 145 char * bottomWheelStr; 146 float bottomWheelVal; 147 148 So@Gui@PopupMenu * prefmenu; 149 150private: 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 So@Gui@FullViewerP * pimpl; 156 157 friend class SoGuiFullViewerP; 158 friend class So@Gui@FullViewerP; 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. 165protected: 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 // ! SO@GUI@_FULLVIEWER_H 178