00001
00032 #ifndef LL_TOOLPIE_H
00033 #define LL_TOOLPIE_H
00034
00035 #include "lltool.h"
00036 #include "lluuid.h"
00037
00038 class LLViewerObject;
00039 class LLObjectSelection;
00040
00041 class LLToolPie : public LLTool, public LLSingleton<LLToolPie>
00042 {
00043 public:
00044 LLToolPie( );
00045
00046 virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
00047 virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
00048 virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
00049 virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
00050 virtual BOOL handleHover(S32 x, S32 y, MASK mask);
00051 virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
00052
00053 virtual void render();
00054
00055 virtual void stopEditing();
00056
00057 virtual void onMouseCaptureLost();
00058 virtual void handleDeselect();
00059 virtual LLTool* getOverrideTool(MASK mask);
00060
00061 static void leftMouseCallback(S32 x, S32 y, MASK mask);
00062 static void rightMouseCallback(S32 x, S32 y, MASK mask);
00063
00064 static void selectionPropertiesReceived();
00065
00066 protected:
00067 BOOL outsideSlop(S32 x, S32 y, S32 start_x, S32 start_y);
00068 BOOL pickAndShowMenu(S32 x, S32 y, MASK mask, BOOL edit_menu);
00069 BOOL useClickAction(BOOL always_show, MASK mask, LLViewerObject* object,
00070 LLViewerObject* parent);
00071
00072 protected:
00073 BOOL mPieMouseButtonDown;
00074 BOOL mGrabMouseButtonDown;
00075 BOOL mHitLand;
00076 LLUUID mHitObjectID;
00077 BOOL mMouseOutsideSlop;
00078 static LLPointer<LLViewerObject> sClickActionObject;
00079 static U8 sClickAction;
00080 static LLSafeHandle<LLObjectSelection> sLeftClickSelection;
00081 };
00082
00083
00084 #endif