llfloatergodtools.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:7k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llfloatergodtools.h
  3.  * @brief The on-screen rectangle with tool options.
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLFLOATERGODTOOLS_H
  33. #define LL_LLFLOATERGODTOOLS_H
  34. #include "llcoord.h"
  35. #include "llhost.h"
  36. #include "llframetimer.h"
  37. #include "llfloater.h"
  38. #include "llpanel.h"
  39. #include <vector>
  40. class LLButton;
  41. class LLCheckBoxCtrl;
  42. class LLComboBox;
  43. class LLUICtrl;
  44. class LLLineEditor;
  45. class LLPanelGridTools;
  46. class LLPanelRegionTools;
  47. class LLPanelObjectTools;
  48. class LLPanelRequestTools;
  49. //class LLSliderCtrl;
  50. class LLSpinCtrl;
  51. class LLTabContainer;
  52. class LLTextBox;
  53. class LLMessageSystem;
  54. class LLFloaterGodTools
  55. : public LLFloater
  56. {
  57. friend class LLFloaterReg;
  58. public:
  59. enum EGodPanel
  60. {
  61. PANEL_GRID,
  62. PANEL_REGION,
  63. PANEL_OBJECT,
  64. PANEL_REQUEST,
  65. PANEL_COUNT
  66. };
  67. static void* createPanelGrid(void *userdata);
  68. static void* createPanelRegion(void *userdata);
  69. static void* createPanelObjects(void *userdata);
  70. static void* createPanelRequest(void *userdata);
  71. static void refreshAll();
  72. void showPanel(const std::string& panel_name);
  73. virtual void onOpen(const LLSD& key);
  74. virtual void draw();
  75. // call this once per frame to handle visibility, rect location,
  76. // button highlights, etc.
  77. void updatePopup(LLCoordGL center, MASK mask);
  78. // Get data to populate UI.
  79. void sendRegionInfoRequest();
  80. // get and process region info if necessary.
  81. static void processRegionInfo(LLMessageSystem* msg);
  82. // Send possibly changed values to simulator.
  83. void sendGodUpdateRegionInfo();
  84. private:
  85. LLFloaterGodTools(const LLSD& key);
  86. ~LLFloaterGodTools();
  87. protected:
  88. U32 computeRegionFlags() const;
  89. protected:
  90. /*virtual*/ BOOL postBuild();
  91. // When the floater is going away, reset any options that need to be 
  92. // cleared.
  93. void resetToolState();
  94. public:
  95. LLPanelRegionTools  *mPanelRegionTools;
  96. LLPanelObjectTools *mPanelObjectTools;
  97. LLHost mCurrentHost;
  98. LLFrameTimer mUpdateTimer;
  99. };
  100. //-----------------------------------------------------------------------------
  101. // LLPanelRegionTools
  102. //-----------------------------------------------------------------------------
  103. class LLPanelRegionTools 
  104. : public LLPanel
  105. {
  106. public:
  107. LLPanelRegionTools();
  108. /*virtual*/ ~LLPanelRegionTools();
  109. BOOL postBuild();
  110. /*virtual*/ void refresh();
  111. static void onSaveState(void* userdata);
  112. static void onChangeSimName(LLLineEditor* caller, void* userdata);
  113. void onChangeAnything();
  114. void onChangePrelude();
  115. void onApplyChanges();
  116. void onBakeTerrain();
  117. void onRevertTerrain();
  118. void onSwapTerrain();
  119. void onSelectRegion();
  120. void onRefresh();
  121. // set internal checkboxes/spinners/combos 
  122. const std::string getSimName() const;
  123. U32 getEstateID() const;
  124. U32 getParentEstateID() const;
  125. U32 getRegionFlags() const;
  126. U32 getRegionFlagsMask() const;
  127. F32 getBillableFactor() const;
  128. S32 getPricePerMeter() const;
  129. S32 getGridPosX() const;
  130. S32 getGridPosY() const;
  131. S32 getRedirectGridX() const;
  132. S32 getRedirectGridY() const;
  133. // set internal checkboxes/spinners/combos 
  134. void setSimName(const std::string& name);
  135. void setEstateID(U32 id);
  136. void setParentEstateID(U32 id);
  137. void setCheckFlags(U32 flags);
  138. void setBillableFactor(F32 billable_factor);
  139. void setPricePerMeter(S32 price);
  140. void setGridPosX(S32 pos);
  141. void setGridPosY(S32 pos);
  142. void setRedirectGridX(S32 pos);
  143. void setRedirectGridY(S32 pos);
  144. U32 computeRegionFlags(U32 initial_flags) const;
  145. void clearAllWidgets();
  146. void enableAllWidgets();
  147. protected:
  148. // gets from internal checkboxes/spinners/combos
  149. void updateCurrentRegion() const;
  150. };
  151. //-----------------------------------------------------------------------------
  152. // LLPanelGridTools
  153. //-----------------------------------------------------------------------------
  154. class LLPanelGridTools
  155. : public LLPanel
  156. {
  157. public:
  158. LLPanelGridTools();
  159. virtual ~LLPanelGridTools();
  160. BOOL postBuild();
  161. void refresh();
  162. void onClickKickAll();
  163. static bool confirmKick(const LLSD& notification, const LLSD& response);
  164. static bool finishKick(const LLSD& notification, const LLSD& response);
  165. static void onDragSunPhase(LLUICtrl *ctrl, void *userdata);
  166. void onClickFlushMapVisibilityCaches();
  167. static bool flushMapVisibilityCachesConfirm(const LLSD& notification, const LLSD& response);
  168. protected:
  169. std::string        mKickMessage; // Message to send on kick
  170. };
  171. //-----------------------------------------------------------------------------
  172. // LLPanelObjectTools
  173. //-----------------------------------------------------------------------------
  174. class LLPanelObjectTools 
  175. : public LLPanel
  176. {
  177. public:
  178. LLPanelObjectTools();
  179. /*virtual*/ ~LLPanelObjectTools();
  180. BOOL postBuild();
  181. /*virtual*/ void refresh();
  182. void setTargetAvatar(const LLUUID& target_id);
  183. U32 computeRegionFlags(U32 initial_flags) const;
  184. void clearAllWidgets();
  185. void enableAllWidgets();
  186. void setCheckFlags(U32 flags);
  187. void onChangeAnything();
  188. void onApplyChanges();
  189. void onClickSet();
  190. void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
  191. void onClickDeletePublicOwnedBy();
  192. void onClickDeleteAllScriptedOwnedBy();
  193. void onClickDeleteAllOwnedBy();
  194. static bool callbackSimWideDeletes(const LLSD& notification, const LLSD& response);
  195. void onGetTopColliders();
  196. void onGetTopScripts();
  197. void onGetScriptDigest();
  198. static void onClickSetBySelection(void* data);
  199. protected:
  200. LLUUID mTargetAvatar;
  201. // For all delete dialogs, store flags here for message.
  202. U32 mSimWideDeletesFlags;
  203. }; 
  204. //-----------------------------------------------------------------------------
  205. // LLPanelRequestTools
  206. //-----------------------------------------------------------------------------
  207. class LLPanelRequestTools : public LLPanel
  208. {
  209. public:
  210. LLPanelRequestTools();
  211. /*virtual*/ ~LLPanelRequestTools();
  212. BOOL postBuild();
  213. void refresh();
  214. static void sendRequest(const std::string& request, 
  215. const std::string& parameter, 
  216. const LLHost& host);
  217. protected:
  218. void onClickRequest();
  219. void sendRequest(const LLHost& host);
  220. };
  221. // Flags are SWD_ flags.
  222. void send_sim_wide_deletes(const LLUUID& owner_id, U32 flags);
  223. #endif