OpenCOVER
coInteraction.h
Go to the documentation of this file.
1/* This file is part of COVISE.
2
3 You can use it under the terms of the GNU Lesser General Public License
4 version 2.1 or later, see lgpl-2.1.txt.
5
6 * License: LGPL 2+ */
7
8#ifndef CO_INTERACTION
9#define CO_INTERACTION
10
11#include <util/coTypes.h>
12#include <string>
13
14namespace vrui
15{
16
17class OPENVRUIEXPORT coInteraction
18{
20
21public:
23 {
24 Idle = 0,
30 Stopped
31 };
32
34 {
35 Low = 0,
41 Highest
42 };
43
45 {
46 ButtonA = 0, // vruiButtons is a bitmask while InteractionType can only be a consecutive number of types!! = vruiButtons::ACTION_BUTTON,
47 ButtonAction = ButtonA,
48 ButtonB, // = vruiButtons::DRIVE_BUTTON,
49 ButtonDrive = ButtonB,
50 ButtonC, // = vruiButtons::XFORM_BUTTON,
51 ButtonXform = ButtonC,
53 ButtonForward = ButtonD,
55 ButtonBack = ButtonE,
65 LastButton = ButtonPrevPerson,
68 Wheel = WheelVertical,
70 AllButtons, // = vruiButtons::ALL_BUTTONS | vruiButtons::WHEEL,
71 NoButton, // non-zero relative input
72 NumInteractorTypes
73 };
74
76 {
79 };
80
82 {
83 StateStarted = 0,
86 StateNotRunning
87 };
88
89 coInteraction(InteractionType type, const std::string &name, InteractionPriority priority = Medium);
90 virtual ~coInteraction();
91
93 {
94 return state;
95 }
97 {
98 return type;
99 }
101 {
102 return priority;
103 }
105 {
106 return group;
107 }
110
111 virtual void update();
112 virtual void cancelInteraction();
113
114 virtual void setName(const std::string &name); // set new name (and possibly load appropriate icon)
115 virtual void removeIcon(); // remove the indicator for this interaction
116 virtual void addIcon(); // add the indicator for this interaction
117
118 virtual bool hasPriority(); // true: if the interaction's button is clicked, it is activated
119
120 // these are called by the interaction manager, don't use these as client
122 virtual void doActivation();
123 virtual void pause();
124 virtual const std::string &getName() const
125 {
126 return name;
127 }
128 virtual void resetState();
129
130 bool activate(); // only call this in update!!!!
131
133 {
134 return registered;
135 }
136
137 void setNotifyOnly(bool flag);
139 {
140 return notifyOnly;
141 }
142
143 bool wasStarted() const
144 {
145 return (runningState == StateStarted);
146 }
147 bool isRunning() const
148 {
149 return (runningState == StateRunning);
150 }
151 bool wasStopped() const
152 {
153 return (runningState == StateStopped);
154 }
155 bool isIdle() const
156 {
157 return (runningState == StateNotRunning);
158 }
160protected:
161 std::string name;
162
163
166 InteractionGroup group = GroupNonexclusive;
168
172
174
175 private:
176 InteractionState state;
177};
178}
179#endif
collaborative interface manager
Definition: coVRCommunication.h:41
Definition: coInteraction.h:18
InteractionState
Definition: coInteraction.h:23
@ Active
Definition: coInteraction.h:26
@ RemoteActive
Definition: coInteraction.h:28
@ ActiveNotify
Definition: coInteraction.h:29
@ Paused
Definition: coInteraction.h:27
@ PendingActive
Definition: coInteraction.h:25
bool wasStopped() const
Definition: coInteraction.h:151
virtual void removeIcon()
coInteraction(InteractionType type, const std::string &name, InteractionPriority priority=Medium)
InteractionGroup
Definition: coInteraction.h:76
@ GroupNonexclusive
Definition: coInteraction.h:77
@ GroupNavigation
Definition: coInteraction.h:78
RunningState runningState
Definition: coInteraction.h:167
std::string name
Definition: coInteraction.h:161
InteractionGroup getGroup() const
Definition: coInteraction.h:104
bool isRunning() const
Definition: coInteraction.h:147
InteractionPriority priority
Definition: coInteraction.h:165
void setGroup(InteractionGroup group)
bool registered
Definition: coInteraction.h:171
virtual bool hasPriority()
InteractionType
Definition: coInteraction.h:45
@ ButtonToggleDocuments
Definition: coInteraction.h:56
@ ButtonZoom
Definition: coInteraction.h:58
@ ButtonPrevPerson
Definition: coInteraction.h:64
@ WheelVertical
Definition: coInteraction.h:67
@ ButtonB
Definition: coInteraction.h:48
@ WheelHorizontal
Definition: coInteraction.h:66
@ ButtonD
Definition: coInteraction.h:52
@ ButtonNextPerson
Definition: coInteraction.h:63
@ Joystick
Definition: coInteraction.h:69
@ NoButton
Definition: coInteraction.h:71
@ AllButtons
Definition: coInteraction.h:70
@ ButtonE
Definition: coInteraction.h:54
@ ButtonC
Definition: coInteraction.h:50
@ ButtonQuit
Definition: coInteraction.h:60
@ ButtonMenu
Definition: coInteraction.h:59
@ ButtonPrevInter
Definition: coInteraction.h:62
@ ButtonNextInter
Definition: coInteraction.h:61
@ ButtonDrag
Definition: coInteraction.h:57
InteractionType type
Definition: coInteraction.h:164
bool isNotifyOnly()
Definition: coInteraction.h:138
virtual void doActivation()
bool wasStarted() const
Definition: coInteraction.h:143
bool hasPriorityFlag
Definition: coInteraction.h:170
virtual void pause()
bool notifyOnly
Definition: coInteraction.h:169
bool isRegistered()
Definition: coInteraction.h:132
InteractionState getState() const
Definition: coInteraction.h:92
bool isIdle() const
Definition: coInteraction.h:155
void setState(InteractionState s)
RunningState
Definition: coInteraction.h:82
@ StateRunning
Definition: coInteraction.h:84
@ StateStopped
Definition: coInteraction.h:85
virtual const std::string & getName() const
Definition: coInteraction.h:124
virtual void setName(const std::string &name)
InteractionPriority
Definition: coInteraction.h:34
@ High
Definition: coInteraction.h:39
@ Navigation
Definition: coInteraction.h:36
@ Medium
Definition: coInteraction.h:38
@ Menu
Definition: coInteraction.h:40
@ NavigationHigh
Definition: coInteraction.h:37
virtual void cancelPendingActivation()
InteractionPriority getPriority() const
Definition: coInteraction.h:100
virtual ~coInteraction()
virtual void addIcon()
virtual void resetState()
InteractionType getType() const
Definition: coInteraction.h:96
InteractionState getState()
virtual void cancelInteraction()
void setNotifyOnly(bool flag)
virtual void update()
Definition: coInteractionManager.h:23