/** * @file llfloatergodtools.h * @brief The on-screen rectangle with tool options. * * $LicenseInfo:firstyear=2002&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ #ifndef LL_LLFLOATERGODTOOLS_H #define LL_LLFLOATERGODTOOLS_H #include "llcoord.h" #include "llhost.h" #include "llframetimer.h" #include "llfloater.h" #include "llpanel.h" #include <vector> class LLAvatarName; class LLButton; class LLCheckBoxCtrl; class LLComboBox; class LLUICtrl; class LLLineEditor; class LLPanelGridTools; class LLPanelRegionTools; class LLPanelObjectTools; class LLPanelRequestTools; //class LLSliderCtrl; class LLSpinCtrl; class LLTabContainer; class LLTextBox; class LLMessageSystem; class LLFloaterGodTools : public LLFloater { friend class LLFloaterReg; public: enum EGodPanel { PANEL_GRID, PANEL_REGION, PANEL_OBJECT, PANEL_REQUEST, PANEL_COUNT }; static void* createPanelGrid(void *userdata); static void* createPanelRegion(void *userdata); static void* createPanelObjects(void *userdata); static void* createPanelRequest(void *userdata); static void refreshAll(); void showPanel(const std::string& panel_name); virtual void onOpen(const LLSD& key); virtual void draw(); // call this once per frame to handle visibility, rect location, // button highlights, etc. void updatePopup(LLCoordGL center, MASK mask); // Get data to populate UI. void sendRegionInfoRequest(); // get and process region info if necessary. static void processRegionInfo(LLMessageSystem* msg); // Send possibly changed values to simulator. void sendGodUpdateRegionInfo(); private: LLFloaterGodTools(const LLSD& key); ~LLFloaterGodTools(); protected: U64 computeRegionFlags() const; protected: /*virtual*/ bool postBuild(); // When the floater is going away, reset any options that need to be // cleared. void resetToolState(); public: LLPanelRegionTools *mPanelRegionTools; LLPanelObjectTools *mPanelObjectTools; LLHost mCurrentHost; LLFrameTimer mUpdateTimer; }; //----------------------------------------------------------------------------- // LLPanelRegionTools //----------------------------------------------------------------------------- class LLPanelRegionTools : public LLPanel { public: LLPanelRegionTools(); /*virtual*/ ~LLPanelRegionTools(); bool postBuild(); /*virtual*/ void refresh(); static void onSaveState(void* userdata); static void onChangeSimName(LLLineEditor* caller, void* userdata); void onChangeAnything(); void onChangePrelude(); void onApplyChanges(); void onBakeTerrain(); void onRevertTerrain(); void onSwapTerrain(); void onSelectRegion(); void onRefresh(); // set internal checkboxes/spinners/combos const std::string getSimName() const; U32 getEstateID() const; U32 getParentEstateID() const; U64 getRegionFlags() const; U64 getRegionFlagsMask() const; F32 getBillableFactor() const; S32 getPricePerMeter() const; S32 getGridPosX() const; S32 getGridPosY() const; S32 getRedirectGridX() const; S32 getRedirectGridY() const; // set internal checkboxes/spinners/combos void setSimName(const std::string& name); void setEstateID(U32 id); void setParentEstateID(U32 id); void setCheckFlags(U64 flags); void setBillableFactor(F32 billable_factor); void setPricePerMeter(S32 price); void setGridPosX(S32 pos); void setGridPosY(S32 pos); void setRedirectGridX(S32 pos); void setRedirectGridY(S32 pos); U64 computeRegionFlags(U64 initial_flags) const; void clearAllWidgets(); void enableAllWidgets(); protected: // gets from internal checkboxes/spinners/combos void updateCurrentRegion() const; }; //----------------------------------------------------------------------------- // LLPanelGridTools //----------------------------------------------------------------------------- class LLPanelGridTools : public LLPanel { public: LLPanelGridTools(); virtual ~LLPanelGridTools(); bool postBuild(); void refresh(); static void onDragSunPhase(LLUICtrl *ctrl, void *userdata); void onClickFlushMapVisibilityCaches(); static bool flushMapVisibilityCachesConfirm(const LLSD& notification, const LLSD& response); protected: std::string mKickMessage; // Message to send on kick }; //----------------------------------------------------------------------------- // LLPanelObjectTools //----------------------------------------------------------------------------- class LLPanelObjectTools : public LLPanel { public: LLPanelObjectTools(); /*virtual*/ ~LLPanelObjectTools(); bool postBuild(); /*virtual*/ void refresh(); void setTargetAvatar(const LLUUID& target_id); U64 computeRegionFlags(U64 initial_flags) const; void clearAllWidgets(); void enableAllWidgets(); void setCheckFlags(U64 flags); void onChangeAnything(); void onApplyChanges(); void onClickSet(); void callbackAvatarID(const uuid_vec_t& ids, const std::vector<LLAvatarName> names); void onClickDeletePublicOwnedBy(); void onClickDeleteAllScriptedOwnedBy(); void onClickDeleteAllOwnedBy(); static bool callbackSimWideDeletes(const LLSD& notification, const LLSD& response); void onGetTopColliders(); void onGetTopScripts(); void onGetScriptDigest(); static void onClickSetBySelection(void* data); protected: LLUUID mTargetAvatar; // For all delete dialogs, store flags here for message. U32 mSimWideDeletesFlags; }; //----------------------------------------------------------------------------- // LLPanelRequestTools //----------------------------------------------------------------------------- class LLPanelRequestTools : public LLPanel { public: LLPanelRequestTools(); /*virtual*/ ~LLPanelRequestTools(); bool postBuild(); void refresh(); static void sendRequest(const std::string& request, const std::string& parameter, const LLHost& host); protected: void onClickRequest(); void sendRequest(const LLHost& host); }; // Flags are SWD_ flags. void send_sim_wide_deletes(const LLUUID& owner_id, U32 flags); #endif