lltoolmgr.h

Go to the documentation of this file.
00001 
00032 #ifndef LL_TOOLMGR_H
00033 #define LL_TOOLMGR_H
00034 
00035 #include "llkeyboard.h"
00036 
00037 class LLTool;
00038 class LLToolset;
00039 
00040 // Key bindings for common operations
00041 const MASK MASK_VERTICAL                = MASK_CONTROL;
00042 const MASK MASK_SPIN                    = MASK_CONTROL | MASK_SHIFT;
00043 const MASK MASK_ZOOM                    = MASK_NONE;
00044 const MASK MASK_ORBIT                   = MASK_CONTROL;
00045 const MASK MASK_PAN                             = MASK_CONTROL | MASK_SHIFT;
00046 const MASK MASK_COPY                    = MASK_SHIFT;
00047 
00048 class LLToolMgr : public LLSingleton<LLToolMgr>
00049 {
00050 public:
00051         LLToolMgr();
00052         ~LLToolMgr();
00053 
00054         // Must be called after gSavedSettings set up.
00055         void                    initTools();
00056 
00057         LLTool*                 getCurrentTool(); // returns active tool, taking into account keyboard state
00058         LLTool*                 getBaseTool(); // returns active tool when overrides are deactivated
00059 
00060         BOOL                    inEdit();
00061         
00062         /* Determines if we are in Build mode or not. */
00063         bool                    inBuildMode();
00064 
00065         void                    setTransientTool(LLTool* tool);
00066         void                    clearTransientTool();
00067         BOOL                    usingTransientTool();
00068 
00069         void                    setCurrentToolset(LLToolset* current);
00070         LLToolset*              getCurrentToolset();
00071 
00072         void                    onAppFocusGained();
00073         void                    onAppFocusLost();
00074 
00075         void            clearSavedTool();
00076 
00077 protected:
00078         friend class LLToolset;  // to allow access to setCurrentTool();
00079         void                    setCurrentTool(LLTool* tool);
00080         void                    updateToolStatus();
00081 
00082 protected:
00083         LLTool*                 mBaseTool;
00084         LLTool*                 mSavedTool;             // The current tool at the time application focus was lost.
00085         LLTool*                 mTransientTool;
00086         LLTool*                 mOverrideTool; // Tool triggered by keyboard override
00087         LLTool*                 mSelectedTool; // last known active tool
00088         LLToolset*              mCurrentToolset;
00089 };
00090 
00091 // Sets of tools for various modes
00092 class LLToolset
00093 {
00094 public:
00095         LLToolset() : mSelectedTool(NULL) {}
00096 
00097         LLTool*                 getSelectedTool()                               { return mSelectedTool; }
00098 
00099         void                    addTool(LLTool* tool);
00100 
00101         void                    selectTool( LLTool* tool );
00102         void                    selectToolByIndex( S32 index );
00103         void                    selectFirstTool();
00104         void                    selectNextTool();
00105         void                    selectPrevTool();
00106 
00107         void                    handleScrollWheel(S32 clicks);
00108 
00109         BOOL                    isToolSelected( S32 index );
00110 
00111 protected:
00112         LLTool*                 mSelectedTool;
00113         typedef std::vector<LLTool*> tool_list_t;
00114         tool_list_t     mToolList;
00115 };
00116 
00117 // Handy callbacks for switching tools
00118 void select_tool(void *tool);
00119 
00120 
00121 // Globals
00122 
00123 extern LLToolset* gBasicToolset;
00124 extern LLToolset *gCameraToolset;
00125 //extern LLToolset *gLandToolset;
00126 extern LLToolset* gMouselookToolset;
00127 extern LLToolset* gFaceEditToolset;
00128 
00129 extern LLTool*          gToolNull;
00130 
00131 #endif

Generated on Fri May 16 08:34:07 2008 for SecondLife by  doxygen 1.5.5