#ifndef SO@GUI@_POPUPMENU_H #define SO@GUI@_POPUPMENU_H // @configure_input@ /**************************************************************************\ * Copyright (c) Kongsberg Oil & Gas Technologies AS * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \**************************************************************************/ #include #include // ************************************************************************* typedef void So@Gui@MenuSelectionCallback(int itemid, void * user); class SO@GUI@_DLL_API So@Gui@PopupMenu { // abstract interface class public: static So@Gui@PopupMenu * createInstance(void); virtual ~So@Gui@PopupMenu(); virtual int newMenu(const char * name, int menuid = -1) = 0; virtual int getMenu(const char * name) = 0; virtual void setMenuTitle(int id, const char * title) = 0; virtual const char * getMenuTitle(int id) = 0; virtual int newMenuItem(const char * name, int itemid = -1) = 0; virtual int getMenuItem(const char * name) = 0; virtual void setMenuItemTitle(int itemid, const char * title) = 0; virtual const char * getMenuItemTitle(int itemid) = 0; virtual void setMenuItemEnabled(int itemid, SbBool enabled) = 0; virtual SbBool getMenuItemEnabled(int itemid) = 0; void setMenuItemMarked(int itemid, SbBool marked); virtual SbBool getMenuItemMarked(int itemid) = 0; virtual void addMenu(int menuid, int submenuid, int pos = -1) = 0; virtual void addMenuItem(int menuid, int itemid, int pos = -1) = 0; virtual void addSeparator(int menuid, int pos = -1) = 0; virtual void removeMenu(int menuid) = 0; virtual void removeMenuItem(int itemid) = 0; virtual void popUp(@WIDGET@ inside, int x, int y) = 0; int newRadioGroup(int groupid = -1); int getRadioGroup(int itemid); int getRadioGroupSize(int groupid); void addRadioGroupItem(int groupid, int itemid); void removeRadioGroupItem(int itemid); // FIXME: bad interface. Should be internal/private, and the name is // wrong. According to what this actually does, it should be // something like "unmarkOtherOfRadioGroup()". 20050622 mortene. void setRadioGroupMarkedItem(int itemid); #if SO@GUI@_MAJOR_VERSION == 2 #error fix API above #endif // SO@GUI@_MAJOR_VERSION int getRadioGroupMarkedItem(int groupid); void addMenuSelectionCallback(So@Gui@MenuSelectionCallback * callback, void * data); void removeMenuSelectionCallback(So@Gui@MenuSelectionCallback * callback, void * data); protected: So@Gui@PopupMenu(void); virtual void _setMenuItemMarked(int itemid, SbBool marked) = 0; void invokeMenuSelection(int itemid); private: class So@Gui@PopupMenuP * pimpl; }; // class So@Gui@PopupMenu // ************************************************************************* #endif // ! SO@GUI@_POPUPMENU_H