vrecko
virtual reality framework
|
GUI Controller class. More...
#include <GUI_Controller.h>
Public Member Functions | |
GUI_Controller () | |
~GUI_Controller () | |
void | enableGUI (bool enable) |
enable / disable GUI functions More... | |
ItemsGroup * | getorCreateGroup (string groupName) |
If group doesn't exists, create it, return pointer to it, o. More... | |
GUI_Item * | getItembyName (string itemName) |
string | getLayoutString () |
bool | initialize (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *parametersNode) |
Core initialization. More... | |
void | registerPointableGuiItem (const unsigned int ID, GUI_Item *item) |
Register a new point-able GUI item to the controller. More... | |
void | registerGlobalGuiItem (const int sensor, GUI_Item *item) |
void | reset () |
reset GUI - set everything to default state (layouts, groups, ...) More... | |
void | setMenuShown (const int sensor, Menu *shownMenu) |
Setting _menuShown flag. More... | |
bool | setLayout (string name) |
bool | switchLayout (string name) |
void | update () |
This method is called periodically in case this instance is registered in Scheduler. More... | |
void | unregisterGlobalGuiItem (const int sensor, GUI_Item *item) |
void | unregisterPointableGuiItem (const unsigned int ID) |
Unregister a existing point-able GUI item from the controller. More... | |
Public Member Functions inherited from vrecko::Ability | |
virtual | ~Ability () |
copy constructor More... | |
const std::string & | getName () const |
Returns the ability name. More... | |
void | setPluginName (const char *pName) |
Sets the plugin name. More... | |
const std::string & | getPluginName (void) const |
Returns the plugin name. More... | |
const std::string & | getID (void) const |
Returns ability the identification string. More... | |
void | setID (const char *pID) |
(Internal usage, most people should not need to use it.) Sets the ability ID. More... | |
virtual void | clean (void) |
void | setOwner (BaseClass *owner) |
(Internal usage, most people should not need to use it.) Sets ability owner. *l This method is called automatically in World::createAbility(), so one would (almost?) never want to use it directly. More... | |
BaseClass * | getOwner (void) |
Returns the ability owner. More... | |
virtual ParameterVector * | getParameterVector (void) |
Return vector of the parameter description. More... | |
bool | isUpdated (void) |
Set update flag. More... | |
virtual const std::string & | getSenderString (void) |
Returns the identification string of sender. More... | |
Public Member Functions inherited from vrecko::BaseClass | |
BaseClass (const char *startingSenderString) | |
The main constructor. More... | |
BaseClass (BaseClass &bc) | |
Copy constructor. Probably not really used. More... | |
virtual | ~BaseClass () |
Destructor. More... | |
virtual bool | initializeFromString (const char *xmlString) |
Helper method that allows to initialize ability from a XML-formatted string. More... | |
virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * | saveXMLParameters (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *) |
Save current setting into a XML node. More... | |
bool | inputPresent (const std::string &name) |
Returns true if input pin (not request inputpin ) with given name is present. More... | |
bool | outputPresent (const std::string &name) |
Returns true if output pin (not request output pin) with given name is present. More... | |
void | addInputPin (InputPinBase *pin) |
Adds an input pin. More... | |
void | removeInputPin (InputPinBase *pin) |
Removes an input pin. More... | |
void | addOutputPin (OutputPinBase *pin) |
Adds an output pin. More... | |
void | removeOutputPin (OutputPinBase *pin) |
Removes and output pin. More... | |
void | addRequestInputPin (RequestInputPinBase *pin) |
Adds a request input pin. More... | |
void | removeRequestInputPin (RequestInputPinBase *pin) |
Removes a request input pin. More... | |
void | addRequestOutputPin (RequestOutputPinBase *pin) |
Adds a request output pin. More... | |
void | removeRequestOutputPin (RequestOutputPinBase *pin) |
Removes a request output pin. More... | |
bool | addNotification (BaseClass *receiver, unsigned long notificationTypes) |
Registers an observer that will be notified if a specific change occurs. More... | |
bool | removeNotification (BaseClass *receiver, unsigned long notificationTypes=NOTIFICATION_ALL) |
Unregisters a previously registered observer. More... | |
virtual void | processEvent (const std::string &input_name, VreckoMessage *pMessage) |
Internal method for processing the events. More... | |
virtual VreckoMessage * | processRequest (const std::string &request_input_name, VreckoMessage *pMessage) |
Internal method for processing the requests. More... | |
void | reportError (const std::string &error) |
Print error message. More... | |
void | setPriority (long int pr) |
Sets the priority. (Possible problems - read the full description for more info) More... | |
long int | getPriority (void) const |
Returns current object priority. More... | |
void | setAttribute (const std::string &attr_name, int attr_value) |
Sets an attribute value. More... | |
int | getAttribute (const std::string &attr_name) |
Returns attribute value. More... | |
int | getAttribute (const char *attr_name) |
Returns attribute value. More... | |
void | deleteAttribute (const std::string &attr_name) |
Delete an attribute. More... | |
void | setSceneFile (const std::string &sceneFileName) |
Set the name of the file this component was in (and possibly will be saved to). More... | |
const std::string & | getSceneFile () const |
Get the name of the file this component was in. More... | |
virtual void | preInitialize (void) |
OBSOLETE METHOD, kept for backwards compatibility. More... | |
virtual void | postInitialize (void) |
OBSOLETE METHOD, kept for backwards compatibility. More... | |
virtual bool | loadXMLParameters (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *) |
OBSOLETE METHOD, kept for backwards compatibility. More... | |
virtual bool | loadXMLParameters (const char *xmlString) |
OBSOLETE METHOD, kept for backwards compatibility. More... | |
InputPinBase * | getInputPin (const char *strName) |
Returns pointer to an input pin with specified name. More... | |
OutputPinBase * | getOutputPin (const char *strName) |
Returns pointer to an output pin with specified name. More... | |
RequestInputPinBase * | getRequestInputPin (const char *strName) |
Returns pointer to an request input pin with specified name. More... | |
RequestOutputPinBase * | getRequestOutputPin (const char *strName) |
Returns pointer to an input pin with specified name. More... | |
Protected Member Functions | |
void | pointObjectByID (int sensor_number, unsigned long selectedID) |
Handle pointing to objects. More... | |
bool | processAction (const int sensorNumber, const GUI_ACTION action, const bool pressed) |
bool | processContextClick (const int sensorNumber, const bool value) |
DECLARE_REQUEST_INPUT (Sensor_0_mainClick, MessageBool, MessageBool) | |
DECLARE_REQUEST_INPUT (Sensor_1_mainClick, MessageBool, MessageBool) | |
DECLARE_REQUEST_INPUT (Sensor_0_contextClick, MessageBool, MessageBool) | |
DECLARE_REQUEST_INPUT (Sensor_1_contextClick, MessageBool, MessageBool) | |
DECLARE_REQUEST_OUTPUT (SelectedObjectID, MessageInt, MessageObjectID) | |
DECLARE_INPUT (SwitchLayout, MessageString) | |
Protected Member Functions inherited from vrecko::Ability | |
Ability (const char *theAbilityName) | |
Protected Member Functions inherited from vrecko::BaseClass | |
bool | sendNotifications (unsigned long notificationType, void *notificationData) |
virtual int | processNotification (BaseClass *sender, unsigned long notificationType, void *notificationData) |
Process an incoming notification. More... | |
IOPinBase * | findPinInList (const char *strName, PinList *pinList) |
Internal method to find a given pin in a given list. More... | |
Protected Attributes | |
bool | _disabled |
flag for temporary disabling GUI functions More... | |
int | _maxNunberofInputDevices |
Maximum number of input devices, that can interact with GUI. More... | |
int * | _pointedIndexes |
array of actually pointed objects IDs - one for each position sensor More... | |
bool | _firstTimeUpdate |
GUI_Item ** | _pointedAbilities |
array of pointers to GUI abilities of actually pointed GUI EOs More... | |
GUI_Item ** | _pressedAbilities |
array of pointers to GUI abilities of actually pointed GUI EOs More... | |
std::vector< GUI_Item * > * | _globalAbilities |
array of stacks of pointers to GUI abilities of global GUI Items (menu, color picker, ) More... | |
Menu ** | _shownMenus |
osg::Vec3 * | _actualPositions |
array of actual positions of input devices More... | |
osg::Vec4 | _colourActive |
osg::Vec4 | _colourDefault |
osg::Vec4 | _colourHovered |
osg::Vec4 | _colourPressed |
osg::Vec4 | _colourDisabled |
LayoutMapType | _layouts |
map of all defined layouts More... | |
Layout * | _actualLayout |
Actually used layout. Just one layout is active at all times. More... | |
float | _toolTipTime |
Time, in seconds, before tooltip appears. More... | |
osg::Timer | _timer |
instance of osg::Timer class - meeasures time, can compute delte of two times, ... More... | |
osg::Timer_t * | _pointedTime |
array of timestamp when something was pointed with one of sensors More... | |
bool * | _toolTipShown |
array of flags if toolTip is shown for each sensor More... | |
GuiItemMapType | _itemsMap |
Map of all GUI related environment objects IDs (key) and pointers to theirs GUI abilities (value). More... | |
std::vector< osg::ref_ptr < ItemsGroup > > | _groups |
Map of all used groups of items. More... | |
int | _debugButtonPressed |
int | _debugButtonReleased |
unsigned int | _selectionaccumulator |
Protected Attributes inherited from vrecko::Ability | |
BaseClass * | pOwner |
Pointer to the owner of this ability. (Almost?) always an EnvironmentObject class. More... | |
std::vector< std::string > | parameterString |
bool | updated |
Update flag. It is used for save. More... | |
Protected Attributes inherited from vrecko::BaseClass | |
AttributeMap | attribute |
MTReadWriteLock | attributeLock |
std::string | senderString |
MTLock | notificationsLock |
std::vector < NOTIFICATION_DESCRIPTION > | notifications |
long int | priority |
const std::string * | sceneFile |
PinList | inputPinsList |
PinList | outputPinsList |
PinList | requestInputPinsList |
PinList | requestOutputPinsList |
Additional Inherited Members | |
Public Types inherited from vrecko::Ability | |
typedef std::vector < ParameterStruct > | ParameterVector |
Vector of the description of parameters. More... | |
Protected Types inherited from vrecko::BaseClass | |
typedef std::map< std::string, int > | AttributeMap |
Attributes. More... | |
typedef std::vector < osg::ref_ptr< IOPinBase > > | PinList |
GUI Controller class.
Solving basic functionality of GUI - pointing to elements, clicking, receiving events
APGUI::GUI_Controller::GUI_Controller | ( | ) |
APGUI::GUI_Controller::~GUI_Controller | ( | ) |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
void APGUI::GUI_Controller::enableGUI | ( | bool | enable | ) |
enable / disable GUI functions
GUI_Item * APGUI::GUI_Controller::getItembyName | ( | string | itemName | ) |
|
inline |
ItemsGroup * APGUI::GUI_Controller::getorCreateGroup | ( | string | groupName | ) |
If group doesn't exists, create it, return pointer to it, o.
groupName | name of group |
|
virtual |
Core initialization.
It is important to place the initializing code here, because especially in the case of Abilities, this is the point when the ID and owner is known and we can react accordingly. (This information is unknown in the constructor.)
You will probably want to override this method. This method supersedes the original preInitialize() / loadXMLParameters() / postInitialize() methods, which are now obsolete, but for the sake of compatibility they are called from the initialize() if the method is not overridden. You can override it and forget about pre/postInitialize() or loadParameters() - it's now an old solution.
parameters | (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *) Pointer to a XML DOM node, might be NULL if no parameters were specified. The ability should initialize to default values in that case. |
Reimplemented from vrecko::BaseClass.
|
protected |
Handle pointing to objects.
Un-point old pointed object, if such exists. Check, if given ID is related to GUI ability If so, point (highlight) new object and store info about it
sensor_number | number of sensor pointing to some object |
selectedID | ID of newly pointed object |
|
protected |
|
protected |
void APGUI::GUI_Controller::registerGlobalGuiItem | ( | const int | sensor, |
GUI_Item * | item | ||
) |
void APGUI::GUI_Controller::registerPointableGuiItem | ( | const unsigned int | ID, |
GUI_Item * | item | ||
) |
Register a new point-able GUI item to the controller.
Called from GUI_Item constructor. Should NOT be called from any other place.
ID | ID of Environment Object related to GUI Item |
item | pointer to GUI Item class instance |
void APGUI::GUI_Controller::reset | ( | ) |
reset GUI - set everything to default state (layouts, groups, ...)
bool APGUI::GUI_Controller::setLayout | ( | string | name | ) |
void APGUI::GUI_Controller::setMenuShown | ( | const int | sensor, |
Menu * | shownMenu | ||
) |
Setting _menuShown flag.
sensor | index of related sensor |
boolValue | flag indicating, if menu is shown or not |
bool APGUI::GUI_Controller::switchLayout | ( | string | name | ) |
void APGUI::GUI_Controller::unregisterGlobalGuiItem | ( | const int | sensor, |
GUI_Item * | item | ||
) |
void APGUI::GUI_Controller::unregisterPointableGuiItem | ( | const unsigned int | ID | ) |
Unregister a existing point-able GUI item from the controller.
Called from GUI_Item destructor. Should NOT be called from any other place.
ID | ID of Environment Object of removed GUI item |
|
virtual |
This method is called periodically in case this instance is registered in Scheduler.
The method is called periodically at specified frequency or every frame. Use the Scheduler::addEntity() method to register your class and set the frequency.
Reimplemented from vrecko::BaseClass.
|
protected |
Actually used layout. Just one layout is active at all times.
however, individual GUI Items can exist even out of scope of layouts. Those GUI items are not affected by layout changes
|
protected |
array of actual positions of input devices
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
flag for temporary disabling GUI functions
For example - during virtual tools usage (like a brush) GUI should not react
|
protected |
|
protected |
array of stacks of pointers to GUI abilities of global GUI Items (menu, color picker, )
|
protected |
Map of all used groups of items.
|
protected |
Map of all GUI related environment objects IDs (key) and pointers to theirs GUI abilities (value).
Used to speed things (selection process) up. It is not entirely necessary - all information stored in map can be computed at any time.
Individual GUI item registers add unregisters them-selfs automatically, during constructor and destructor of GUI_Item class.
|
protected |
map of all defined layouts
There is always at least one layout defined: "Empty", with no items.
|
protected |
Maximum number of input devices, that can interact with GUI.
For one-person applications, two should be enough
|
protected |
array of pointers to GUI abilities of actually pointed GUI EOs
|
protected |
array of actually pointed objects IDs - one for each position sensor
if no object is pointed, than 0 is stored.
|
protected |
array of timestamp when something was pointed with one of sensors
|
protected |
array of pointers to GUI abilities of actually pointed GUI EOs
|
protected |
|
protected |
|
protected |
instance of osg::Timer class - meeasures time, can compute delte of two times, ...
|
protected |
array of flags if toolTip is shown for each sensor
|
protected |
Time, in seconds, before tooltip appears.