VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtWidgetSignaler.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile:  $ $Revision:  $ $State:  $
00007 ******************************************************************************/
00008 
00012 
00013 #pragma once
00014 
00015 #include <vrvCore/vrvCore.h>
00016 #include <vrvUtil/signalslib.h>
00017 #include <vrvUtil/event_signal.h>
00018 #include <vrvUtil/DtVirtualBaseClass.h>
00019 #include <vrvCore/DtUniqueID.h>
00020 
00021 namespace makVrv
00022 {
00023 
00024    class DtWidgetAgent;
00025    class DtWidgetSignaler;
00026    class DtSharedSettingsManager;
00027    class DtEventQueueInterface;
00028 
00031    class DT_DLL_VRVCORE DtWidgetEventSignals
00032    {
00033    public:
00034 
00036       void connectAll(DtWidgetEventSignals& emmitter);
00037 
00039       boost::signal<void (int x, int y)> signal_mouseEnter;
00040 
00042       boost::signal<void (int x, int y)> signal_mouseMove;
00043 
00045       boost::signal<void ()> signal_mouseLeave;
00046 
00048       boost::signal<void (int button)> signal_mouseButtonPress;
00049 
00051       boost::signal<void (int button)> signal_mouseButtonRelease;
00052 
00053    protected:
00054       void emitMouseEnter(int x, int y);
00055       void emitMouseMove(int x,int y);
00056       void emitMouseLeave();
00057       void emitMouseButtonPress(int button);
00058       void emitMouseButtonRelease(int button);
00059 
00060    };
00061 
00066    class DT_DLL_VRVCORE  DtWidgetInstanceSignaler : public DtWidgetEventSignals
00067    {
00068    public:
00069       DtWidgetInstanceSignaler( DtWidgetSignaler& widgetSignaler,
00070          DtWidgetAgent& agent);
00071       ~DtWidgetInstanceSignaler();
00072 
00074       const DtWidgetAgent& widgetAgent() const;
00075 
00076    protected:
00077       DtWidgetAgent& myAgent;
00078       DtWidgetSignaler& mySignaler;
00079 
00080    };
00081 
00082 
00088    class DT_DLL_VRVCORE DtWidgetSignaler : public DtVirtualBaseClass
00089    {
00090    public:
00091 
00092       friend class DtWidgetInstanceSignaler;
00093       friend class DtWidgetPicker;
00094 
00097       static DtWidgetSignaler& instance(const DtSharedSettingsManager&);
00098 
00101       static DtWidgetSignaler& instance(DtEventQueueInterface&);
00102 
00106       static DtWidgetSignaler* findInstance(DtEventQueueInterface*);
00107 
00109       virtual ~DtWidgetSignaler();
00110 
00111       void emitMouseEntered(DtUniqueID, int x, int y);
00112       void emitMouseMoved(DtUniqueID, int x, int y);
00113       void emitMouseLeft(DtUniqueID);
00114       void emitMouseButtonPressed(DtUniqueID, int button);
00115       void emitMouseButtonReleased(DtUniqueID, int button);
00116 
00117    protected:
00118 
00119       //Signal emitted when changing an element attribute has been requested.
00120       event_signal< void(DtUniqueID, int x, int y)> signal_mouseEntered;
00121       event_signal< void(DtUniqueID, int x, int y)> signal_mouseMoved;
00122       event_signal< void(DtUniqueID)              > signal_mouseLeft;
00123       event_signal< void(DtUniqueID, int button)  > signal_mouseButtonPressed;
00124       event_signal< void(DtUniqueID, int button)  > signal_mouseButtonReleased;
00125 
00126       void dispatch_mouseEntered(DtUniqueID, int x, int y);
00127       void dispatch_mouseMoved(DtUniqueID, int x, int y);
00128       void dispatch_mouseLeft(DtUniqueID);
00129       void dispatch_mouseButtonPressed(DtUniqueID,int button);
00130       void dispatch_mouseButtonReleased(DtUniqueID,int button);
00131 
00132 
00133    protected:
00134       DtWidgetSignaler(DtEventQueueInterface& eqi);
00135 
00136       void addInstance(DtWidgetInstanceSignaler*);
00137       void removeInstance(DtWidgetInstanceSignaler*);
00138 
00139       typedef std::map<DtUniqueID,DtWidgetInstanceSignaler*> WidgetInstanceMap;
00140       WidgetInstanceMap myInstances;
00141 
00142    private:
00143       DtWidgetSignaler(const DtWidgetSignaler&);
00144       DtWidgetSignaler& operator=(const DtWidgetSignaler&);
00145    };
00146 
00147 }
00148 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)