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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llfloatertools.h
  3.  * @brief The edit tools, including move, position, land, etc.
  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_LLFLOATERTOOLS_H
  33. #define LL_LLFLOATERTOOLS_H
  34. #include "llfloater.h"
  35. #include "llcoord.h"
  36. #include "llparcelselection.h"
  37. class LLButton;
  38. class LLComboBox;
  39. class LLCheckBoxCtrl;
  40. class LLPanelPermissions;
  41. class LLPanelObject;
  42. class LLPanelVolume;
  43. class LLPanelContents;
  44. class LLPanelFace;
  45. class LLPanelLandInfo;
  46. class LLRadioGroup;
  47. class LLSlider;
  48. class LLTabContainer;
  49. class LLTextBox;
  50. class LLMediaCtrl;
  51. class LLTool;
  52. class LLParcelSelection;
  53. class LLObjectSelection;
  54. typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle;
  55. class LLFloaterTools
  56. : public LLFloater
  57. {
  58. public:
  59. virtual BOOL postBuild();
  60. static void* createPanelPermissions(void* vdata);
  61. static void* createPanelObject(void* vdata);
  62. static void* createPanelVolume(void* vdata);
  63. static void* createPanelFace(void* vdata);
  64. static void* createPanelContents(void* vdata);
  65. static void* createPanelLandInfo(void* vdata);
  66. LLFloaterTools(const LLSD& key);
  67. virtual ~LLFloaterTools();
  68. /*virtual*/ void onOpen(const LLSD& key);
  69. /*virtual*/ BOOL canClose();
  70. /*virtual*/ void onClose(bool app_quitting);
  71. /*virtual*/ void draw();
  72. /*virtual*/ void onFocusReceived();
  73. // call this once per frame to handle visibility, rect location,
  74. // button highlights, etc.
  75. void updatePopup(LLCoordGL center, MASK mask);
  76. // When the floater is going away, reset any options that need to be 
  77. // cleared.
  78. void resetToolState();
  79. enum EInfoPanel
  80. {
  81. PANEL_GENERAL=0,
  82. PANEL_OBJECT,
  83. PANEL_FEATURES,
  84. PANEL_FACE,
  85. PANEL_CONTENTS,
  86. PANEL_COUNT
  87. };
  88. void dirty();
  89. void showPanel(EInfoPanel panel);
  90. void setStatusText(const std::string& text);
  91. static void setEditTool(void* data);
  92. void setTool(const LLSD& user_data);
  93. void saveLastTool();
  94. void onClickBtnDeleteMedia();
  95. void onClickBtnAddMedia();
  96. void onClickBtnEditMedia();
  97. void clearMediaSettings();
  98. void updateMediaTitle();
  99. void navigateToTitleMedia( const std::string url );
  100. bool selectedMediaEditable();
  101. private:
  102. void refresh();
  103. void refreshMedia();
  104. void getMediaState();
  105. void updateMediaSettings();
  106. static bool deleteMediaConfirm(const LLSD& notification, const LLSD& response);
  107. static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);
  108. static void setObjectType( LLPCode pcode );
  109. void onClickGridOptions();
  110. S32 calcRenderCost();
  111. public:
  112. LLButton *mBtnFocus;
  113. LLButton *mBtnMove;
  114. LLButton *mBtnEdit;
  115. LLButton *mBtnCreate;
  116. LLButton *mBtnLand;
  117. LLTextBox *mTextStatus;
  118. // Focus buttons
  119. LLRadioGroup* mRadioGroupFocus;
  120. // Move buttons
  121. LLRadioGroup* mRadioGroupMove;
  122. // Edit buttons
  123. LLRadioGroup* mRadioGroupEdit;
  124. LLCheckBoxCtrl *mCheckSelectIndividual;
  125. LLCheckBoxCtrl* mCheckSnapToGrid;
  126. LLButton* mBtnGridOptions;
  127. LLTextBox* mTextGridMode;
  128. LLComboBox* mComboGridMode;
  129. LLCheckBoxCtrl* mCheckStretchUniform;
  130. LLCheckBoxCtrl* mCheckStretchTexture;
  131. LLButton *mBtnRotateLeft;
  132. LLButton *mBtnRotateReset;
  133. LLButton *mBtnRotateRight;
  134. LLButton *mBtnDelete;
  135. LLButton *mBtnDuplicate;
  136. LLButton *mBtnDuplicateInPlace;
  137. // Create buttons
  138. LLCheckBoxCtrl *mCheckSticky;
  139. LLCheckBoxCtrl *mCheckCopySelection;
  140. LLCheckBoxCtrl *mCheckCopyCenters;
  141. LLCheckBoxCtrl *mCheckCopyRotates;
  142. // Land buttons
  143. LLRadioGroup* mRadioGroupLand;
  144. LLSlider *mSliderDozerSize;
  145. LLSlider *mSliderDozerForce;
  146. LLButton *mBtnApplyToSelection;
  147. std::vector<LLButton*> mButtons;//[ 15 ];
  148. LLTabContainer *mTab;
  149. LLPanelPermissions *mPanelPermissions;
  150. LLPanelObject *mPanelObject;
  151. LLPanelVolume *mPanelVolume;
  152. LLPanelContents *mPanelContents;
  153. LLPanelFace *mPanelFace;
  154. LLPanelLandInfo *mPanelLandInfo;
  155. LLTabContainer* mTabLand;
  156. LLParcelSelectionHandle mParcelSelection;
  157. LLObjectSelectionHandle mObjectSelection;
  158. LLMediaCtrl *mTitleMedia;
  159. bool mNeedMediaTitle;
  160. private:
  161. BOOL mDirty;
  162. std::map<std::string, std::string> mStatusText;
  163. protected:
  164. LLSD mMediaSettings;
  165. public:
  166. static bool sShowObjectCost;
  167. };
  168. extern LLFloaterTools *gFloaterTools;
  169. #endif