00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __vtkKWThumbWheel_h
00020 #define __vtkKWThumbWheel_h
00021
00022 #include "vtkKWCompositeWidget.h"
00023
00024 class vtkKWLabel;
00025 class vtkKWEntry;
00026 class vtkKWPushButton;
00027 class vtkKWTopLevel;
00028
00029 class KWWidgets_EXPORT vtkKWThumbWheel : public vtkKWCompositeWidget
00030 {
00031 public:
00032 static vtkKWThumbWheel* New();
00033 vtkTypeRevisionMacro(vtkKWThumbWheel,vtkKWCompositeWidget);
00034 void PrintSelf(ostream& os, vtkIndent indent);
00035
00036
00037
00038 virtual void SetValue(double v);
00039 vtkGetMacro(Value, double);
00040
00041
00042
00043
00044 vtkSetMacro(MinimumValue, double);
00045 vtkGetMacro(MinimumValue, double);
00046 vtkSetMacro(ClampMinimumValue, int);
00047 vtkGetMacro(ClampMinimumValue, int);
00048 vtkBooleanMacro(ClampMinimumValue, int);
00049
00050
00051
00052
00053 vtkSetMacro(MaximumValue, double);
00054 vtkGetMacro(MaximumValue, double);
00055 vtkSetMacro(ClampMaximumValue, int);
00056 vtkGetMacro(ClampMaximumValue, int);
00057 vtkBooleanMacro(ClampMaximumValue, int);
00058
00059
00060
00061 virtual void SetRange(double min, double max)
00062 { this->SetMinimumValue(min); this->SetMaximumValue(max); };
00063 virtual void SetRange(const double *range)
00064 { this->SetRange(range[0], range[1]); };
00065
00066
00067
00068
00069
00070
00071
00072
00073 virtual void SetResolution(double r);
00074 vtkGetMacro(Resolution, double);
00075 vtkSetMacro(ClampResolution, int);
00076 vtkGetMacro(ClampResolution, int);
00077 vtkBooleanMacro(ClampResolution, int);
00078
00079
00080
00081
00082
00083
00084 enum
00085 {
00086 InteractionModeNone = 0,
00087 InteractionModeLinearMotion,
00088 InteractionModeNonLinearMotion,
00089 InteractionModeToggleCenterIndicator
00090 };
00091
00092 virtual void SetInteractionMode(int mode, int v);
00093 virtual int GetInteractionMode(int mode);
00094 virtual void SetInteractionModeToNone(int mode)
00095 { this->SetInteractionMode(
00096 mode, vtkKWThumbWheel::InteractionModeNone); };
00097 virtual void SetInteractionModeToLinear(int mode)
00098 { this->SetInteractionMode(
00099 mode, vtkKWThumbWheel::InteractionModeLinearMotion); };
00100 virtual void SetInteractionModeToNonLinear(int mode)
00101 { this->SetInteractionMode(
00102 mode, vtkKWThumbWheel::InteractionModeNonLinearMotion); };
00103 virtual void SetInteractionModeToToggleCenterIndicator(int mode)
00104 { this->SetInteractionMode(
00105 mode, vtkKWThumbWheel::InteractionModeToggleCenterIndicator); };
00106 virtual char *GetInteractionModeAsString(int mode);
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 vtkSetClampMacro(LinearThreshold, double, 0.0, 1.0);
00118 vtkGetMacro(LinearThreshold, double);
00119
00120
00121
00122
00123
00124 vtkSetMacro(NonLinearMaximumMultiplier, double);
00125 vtkGetMacro(NonLinearMaximumMultiplier, double);
00126
00127
00128
00129 virtual void SetThumbWheelWidth(int v);
00130 vtkGetMacro(ThumbWheelWidth, int);
00131 virtual void SetThumbWheelHeight(int v);
00132 vtkGetMacro(ThumbWheelHeight, int);
00133 virtual void SetThumbWheelSize(int w, int h)
00134 { this->SetThumbWheelWidth(w); this->SetThumbWheelHeight(h); };
00135 virtual void SetLength(int v) { this->SetThumbWheelWidth(v); };
00136
00137
00138
00139
00140
00141
00142 virtual void SetResizeThumbWheel(int flag);
00143 vtkGetMacro(ResizeThumbWheel, int);
00144 vtkBooleanMacro(ResizeThumbWheel, int);
00145
00146
00147
00148
00149
00150 vtkSetMacro(DisplayThumbWheelPositionIndicator, int);
00151 vtkGetMacro(DisplayThumbWheelPositionIndicator, int);
00152 vtkBooleanMacro(DisplayThumbWheelPositionIndicator, int);
00153 vtkSetVector3Macro(ThumbWheelPositionIndicatorColor, double);
00154 vtkGetVectorMacro(ThumbWheelPositionIndicatorColor, double, 3);
00155
00156
00157
00158
00159 virtual void SetDisplayThumbWheelCenterIndicator(int flag);
00160 vtkGetMacro(DisplayThumbWheelCenterIndicator, int);
00161 vtkBooleanMacro(DisplayThumbWheelCenterIndicator, int);
00162 virtual void ToggleDisplayThumbWheelCenterIndicator();
00163
00164
00165
00166
00167
00168 virtual void SetSizeOfNotches(double v);
00169 vtkGetMacro(SizeOfNotches, double);
00170
00171
00172
00173 virtual void SetDisplayEntry(int flag);
00174 vtkGetMacro(DisplayEntry, int);
00175 vtkBooleanMacro(DisplayEntry, int);
00176 vtkGetObjectMacro(Entry, vtkKWEntry);
00177
00178
00179
00180 virtual void SetDisplayLabel(int flag);
00181 vtkGetMacro(DisplayLabel, int);
00182 vtkBooleanMacro(DisplayLabel, int);
00183 virtual vtkKWLabel* GetLabel();
00184
00185
00186
00187 virtual void SetDisplayEntryAndLabelOnTop(int flag);
00188 vtkGetMacro(DisplayEntryAndLabelOnTop, int);
00189 vtkBooleanMacro(DisplayEntryAndLabelOnTop, int);
00190
00191
00192
00193
00194 vtkSetMacro(PopupMode, int);
00195 vtkGetMacro(PopupMode, int);
00196 vtkBooleanMacro(PopupMode, int);
00197 vtkGetObjectMacro(PopupPushButton, vtkKWPushButton);
00198
00199
00200
00201
00202
00203
00204 virtual void SetExpandEntry(int flag);
00205 vtkGetMacro(ExpandEntry, int);
00206 vtkBooleanMacro(ExpandEntry, int);
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242 virtual void SetCommand(vtkObject *object, const char *method);
00243 virtual void SetStartCommand(vtkObject *object, const char *method);
00244 virtual void SetEndCommand(vtkObject *object, const char *method);
00245 virtual void SetEntryCommand(vtkObject *object, const char *method);
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259 enum
00260 {
00261 ThumbWheelValueChangingEvent = 10000,
00262 ThumbWheelValueChangedEvent,
00263 ThumbWheelValueStartChangingEvent
00264 };
00265
00266
00267
00268
00269
00270 virtual void SetBalloonHelpString(const char *str);
00271
00272
00273
00274
00275 void Bind();
00276 void UnBind();
00277
00278
00279
00280
00281
00282
00283
00284
00285 virtual void UpdateEnableState();
00286
00287
00288
00289 virtual void ResizeThumbWheelCallback();
00290 virtual void DisplayPopupCallback();
00291 virtual void WithdrawPopupCallback();
00292 virtual void EntryValueCallback(const char*);
00293 virtual void StartLinearMotionCallback();
00294 virtual void PerformLinearMotionCallback();
00295 virtual void StartNonLinearMotionCallback();
00296 virtual void PerformNonLinearMotionCallback();
00297 virtual void StopMotionCallback();
00298
00299 protected:
00300 vtkKWThumbWheel();
00301 ~vtkKWThumbWheel();
00302
00303
00304
00305 virtual void CreateWidget();
00306
00307 double Value;
00308 double MinimumValue;
00309 int ClampMinimumValue;
00310 double MaximumValue;
00311 int ClampMaximumValue;
00312 double Resolution;
00313 int ClampResolution;
00314 double NonLinearMaximumMultiplier;
00315 double LinearThreshold;
00316
00317 int ThumbWheelWidth;
00318 int ThumbWheelHeight;
00319 double SizeOfNotches;
00320 double ThumbWheelPositionIndicatorColor[3];
00321
00322 int ResizeThumbWheel;
00323 int DisplayLabel;
00324 int DisplayEntry;
00325 int DisplayEntryAndLabelOnTop;
00326 int DisplayThumbWheelPositionIndicator;
00327 int DisplayThumbWheelCenterIndicator;
00328 int PopupMode;
00329 int ExpandEntry;
00330
00331 char *Command;
00332 char *StartCommand;
00333 char *EndCommand;
00334 char *EntryCommand;
00335
00336 virtual void InvokeThumbWheelCommand(const char *command, double value);
00337 virtual void InvokeCommand(double value);
00338 virtual void InvokeStartCommand(double value);
00339 virtual void InvokeEndCommand(double value);
00340 virtual void InvokeEntryCommand(double value);
00341
00342 double ThumbWheelShift;
00343
00344 int InteractionModes[3];
00345
00346 vtkKWLabel *ThumbWheel;
00347 vtkKWEntry *Entry;
00348 vtkKWLabel *Label;
00349 vtkKWTopLevel *TopLevel;
00350 vtkKWPushButton *PopupPushButton;
00351
00352 void CreateEntry();
00353 void CreateLabel();
00354 void UpdateThumbWheelImage(double pos = -1.0);
00355 void PackWidget();
00356 double GetMousePositionInThumbWheel();
00357
00358
00359
00360 int State;
00361 enum WidgetState
00362 {
00363 Idle,
00364 InMotion
00365 };
00366
00367 class LinearMotionState
00368 {
00369 public:
00370 double Value;
00371 double ThumbWheelShift;
00372 double MousePosition;
00373 int InPerform;
00374 };
00375
00376 class NonLinearMotionState
00377 {
00378 public:
00379 double Value;
00380 double Increment;
00381 int InPerform;
00382 };
00383
00384
00385 LinearMotionState StartLinearMotionState;
00386 NonLinearMotionState StartNonLinearMotionState;
00387
00388 int InInvokeCommand;
00389
00390 void RefreshValue();
00391
00392 private:
00393 vtkKWThumbWheel(const vtkKWThumbWheel&);
00394 void operator=(const vtkKWThumbWheel&);
00395 };
00396
00397 #endif
00398