Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

110 lines (85 sloc) 4.18 kB
/*=========================================================================
Program: Visualization Toolkit
Module: vtkWidgetCallbackMapper.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkWidgetCallbackMapper - map widget events into callbacks
// .SECTION Description
// vtkWidgetCallbackMapper maps widget events (defined in vtkWidgetEvent.h)
// into static class methods, and provides facilities to invoke the methods.
// This class is templated and meant to be used as an internal helper class
// by the widget classes. The class works in combination with the class
// vtkWidgetEventTranslator, which translates VTK events into widget events.
//
// .SECTION See Also
// vtkWidgetEvent vtkWidgetEventTranslator
#ifndef __vtkWidgetCallbackMapper_h
#define __vtkWidgetCallbackMapper_h
#include "vtkObject.h"
class vtkWidgetEvent;
class vtkAbstractWidget;
class vtkWidgetEventTranslator;
class vtkCallbackMap; // PIMPL encapsulation of STL map
class VTK_WIDGETS_EXPORT vtkWidgetCallbackMapper : public vtkObject
{
public:
// Description:
// Instantiate the class.
static vtkWidgetCallbackMapper *New();
// Description:
// Standard macros.
vtkTypeMacro(vtkWidgetCallbackMapper,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Specify the vtkWidgetEventTranslator to coordinate with.
void SetEventTranslator(vtkWidgetEventTranslator *t);
vtkGetObjectMacro(EventTranslator,vtkWidgetEventTranslator);
//BTX
// Description:
// Convenient typedef for working with callbacks.
typedef void (*CallbackType)(vtkAbstractWidget*);
//ETX
// Description:
// This class works with the class vtkWidgetEventTranslator to set up the
// initial coorespondence between VTK events, widget events, and callbacks.
// Different flavors of the SetCallbackMethod() are available depending on
// what sort of modifiers are to be associated with a particular event.
// Typically the widgets should use this method to set up their event
// callbacks. If modifiers are not provided (i.e., the VTKEvent is a
// unsigned long eventId) then modifiers are ignored. Otherwise, a vtkEvent
// instance is used to fully quality the events.
void SetCallbackMethod(unsigned long VTKEvent, unsigned long widgetEvent,
vtkAbstractWidget *w, CallbackType f);
void SetCallbackMethod(unsigned long VTKEvent, int modifiers, char keyCode,
int repeatCount, const char* keySym,
unsigned long widgetEvent,
vtkAbstractWidget *w, CallbackType f);
//void SetCallbackMethod(vtkWidgetEvent *vtkEvent, unsigned long widgetEvent,
// vtkAbstractWidget *w, CallbackType f);
// Description:
// This method invokes the callback given a widget event. A non-zero value
// is returned if the listed event is registered.
void InvokeCallback(unsigned long widgetEvent);
protected:
vtkWidgetCallbackMapper();
~vtkWidgetCallbackMapper();
// Translates VTK events into widget events
vtkWidgetEventTranslator *EventTranslator;
// Invoke the method associated with a particular widget event
vtkCallbackMap *CallbackMap;
// Description:
// This method is used to assign a callback (implemented as a static class
// method) to a particular widget event. This is an internal method used by
// widgets to map widget events into invocations of class methods.
void SetCallbackMethod(unsigned long widgetEvent,
vtkAbstractWidget *w, CallbackType f);
private:
vtkWidgetCallbackMapper(const vtkWidgetCallbackMapper&); //Not implemented
void operator=(const vtkWidgetCallbackMapper&); //Not implemented
};
#endif /* __vtkWidgetCallbackMapper_h */
Jump to Line
Something went wrong with that request. Please try again.