aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra
diff options
context:
space:
mode:
authorMcCabe Maxsted2010-04-13 02:29:28 -0700
committerMcCabe Maxsted2010-04-13 02:31:47 -0700
commitc435a835bf26a0de1f8cb5ca44e4c5d4f74f1b89 (patch)
tree09c27b14f8167d8d4116fb221005f25d2216088c /linden/indra
parentFrom Emerald: added option to rez objects under the proper land group to prev... (diff)
downloadmeta-impy-c435a835bf26a0de1f8cb5ca44e4c5d4f74f1b89.zip
meta-impy-c435a835bf26a0de1f8cb5ca44e4c5d4f74f1b89.tar.gz
meta-impy-c435a835bf26a0de1f8cb5ca44e4c5d4f74f1b89.tar.bz2
meta-impy-c435a835bf26a0de1f8cb5ca44e4c5d4f74f1b89.tar.xz
Ported Emerald build preferences and added them to llfloaterbuildoptions instead
Diffstat (limited to 'linden/indra')
-rw-r--r--linden/indra/newview/app_settings/settings.xml225
-rw-r--r--linden/indra/newview/llfloaterbuildoptions.cpp81
-rw-r--r--linden/indra/newview/llfloaterbuildoptions.h11
-rw-r--r--linden/indra/newview/llmanip.cpp86
-rw-r--r--linden/indra/newview/llmanip.h13
-rw-r--r--linden/indra/newview/lltoolplacer.cpp18
-rw-r--r--linden/indra/newview/llviewerobjectlist.cpp81
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml167
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_tools.xml6
9 files changed, 660 insertions, 28 deletions
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 9f2854b..a1e335d 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -15,6 +15,231 @@
15 <key>Value</key> 15 <key>Value</key>
16 <integer>1</integer> 16 <integer>1</integer>
17 </map> 17 </map>
18 <key>BuildPrefs_Xsize</key>
19 <map>
20 <key>Comment</key>
21 <string>Default Size For New Objects to be created X</string>
22 <key>Persist</key>
23 <integer>1</integer>
24 <key>Type</key>
25 <string>F32</string>
26 <key>Value</key>
27 <real>0.5</real>
28 </map>
29 <key>BuildPrefs_Ysize</key>
30 <map>
31 <key>Comment</key>
32 <string>Default Size For New Objects to be created Y</string>
33 <key>Persist</key>
34 <integer>1</integer>
35 <key>Type</key>
36 <string>F32</string>
37 <key>Value</key>
38 <real>0.5</real>
39 </map>
40 <key>BuildPrefs_Zsize</key>
41 <map>
42 <key>Comment</key>
43 <string>Default Size For New Objects to be created Z</string>
44 <key>Persist</key>
45 <integer>1</integer>
46 <key>Type</key>
47 <string>F32</string>
48 <key>Value</key>
49 <real>0.5</real>
50 </map>
51 <key>BuildPrefs_Phantom</key>
52 <map>
53 <key>Comment</key>
54 <string>Default Setting For New Objects to be created, phantom flag</string>
55 <key>Persist</key>
56 <integer>1</integer>
57 <key>Type</key>
58 <string>Boolean</string>
59 <key>Value</key>
60 <integer>0</integer>
61 </map>
62 <key>BuildPrefs_Temporary</key>
63 <map>
64 <key>Comment</key>
65 <string>Default Setting For New Objects to be created, temp flag</string>
66 <key>Persist</key>
67 <integer>1</integer>
68 <key>Type</key>
69 <string>Boolean</string>
70 <key>Value</key>
71 <integer>0</integer>
72 </map>
73 <key>BuildPrefs_Physical</key>
74 <map>
75 <key>Comment</key>
76 <string>Default Setting For New Objects to be created, physical flag</string>
77 <key>Persist</key>
78 <integer>1</integer>
79 <key>Type</key>
80 <string>Boolean</string>
81 <key>Value</key>
82 <integer>0</integer>
83 </map>
84 <key>BuildPrefs_EmbedItem</key>
85 <map>
86 <key>Comment</key>
87 <string>Whether to add item to objects</string>
88 <key>Persist</key>
89 <integer>1</integer>
90 <key>Type</key>
91 <string>Boolean</string>
92 <key>Value</key>
93 <integer>0</integer>
94 </map>
95 <key>BuildPrefs_Material</key>
96 <map>
97 <key>Comment</key>
98 <string>Default Setting For New Objects to be created, physical flag</string>
99 <key>Persist</key>
100 <integer>1</integer>
101 <key>Type</key>
102 <string>String</string>
103 <key>Value</key>
104 <string>Wood</string>
105 </map>
106 <key>BuildPrefs_Color</key>
107 <map>
108 <key>Comment</key>
109 <string>Color of new objects textures</string>
110 <key>Persist</key>
111 <integer>1</integer>
112 <key>Type</key>
113 <string>Color4</string>
114 <key>Value</key>
115 <array>
116 <real>1.0</real>
117 <real>1.0</real>
118 <real>1.0</real>
119 <real>1.0</real>
120 </array>
121 </map>
122 <key>BuildPrefs_Texture</key>
123 <map>
124 <key>Comment</key>
125 <string>Texture used as 'Default' for new object created</string>
126 <key>Persist</key>
127 <integer>1</integer>
128 <key>Type</key>
129 <string>String</string>
130 <key>Value</key>
131 <string>89556747-24cb-43ed-920b-47caed15465f</string>
132 </map>
133 <key>BuildPrefs_Item</key>
134 <map>
135 <key>Comment</key>
136 <string>item added to new object created</string>
137 <key>Persist</key>
138 <integer>1</integer>
139 <key>Type</key>
140 <string>String</string>
141 <key>Value</key>
142 <string></string>
143 </map>
144 <key>BuildPrefs_Alpha</key>
145 <map>
146 <key>Comment</key>
147 <string>Default Alpha For New Objects to be created</string>
148 <key>Persist</key>
149 <integer>1</integer>
150 <key>Type</key>
151 <string>F32</string>
152 <key>Value</key>
153 <real>0.0</real>
154 </map>
155 <key>BuildPrefs_Glow</key>
156 <map>
157 <key>Comment</key>
158 <string>Default Glow For New Objects to be created</string>
159 <key>Persist</key>
160 <integer>1</integer>
161 <key>Type</key>
162 <string>F32</string>
163 <key>Value</key>
164 <real>0.0</real>
165 </map>
166 <key>BuildPrefs_FullBright</key>
167 <map>
168 <key>Comment</key>
169 <string>Default Setting For New Objects to be created, whether textures are full bright</string>
170 <key>Persist</key>
171 <integer>1</integer>
172 <key>Type</key>
173 <string>Boolean</string>
174 <key>Value</key>
175 <integer>0</integer>
176 </map>
177 <key>BuildPrefs_Shiny</key>
178 <map>
179 <key>Comment</key>
180 <string>Shiny level used as 'Default' for new objects created</string>
181 <key>Persist</key>
182 <integer>1</integer>
183 <key>Type</key>
184 <string>String</string>
185 <key>Value</key>
186 <string>None</string>
187 </map>
188 <key>BuildPrefs_PivotX</key>
189 <map>
190 <key>Comment</key>
191 <string>Pivot point on the X axis</string>
192 <key>Persist</key>
193 <integer>1</integer>
194 <key>Type</key>
195 <string>F32</string>
196 <key>Value</key>
197 <real>50</real>
198 </map>
199 <key>BuildPrefs_PivotY</key>
200 <map>
201 <key>Comment</key>
202 <string>Pivot point on the Y axis</string>
203 <key>Persist</key>
204 <integer>1</integer>
205 <key>Type</key>
206 <string>F32</string>
207 <key>Value</key>
208 <real>50</real>
209 </map>
210 <key>BuildPrefs_PivotZ</key>
211 <map>
212 <key>Comment</key>
213 <string>Pivot point on the Z axis</string>
214 <key>Persist</key>
215 <integer>1</integer>
216 <key>Type</key>
217 <string>F32</string>
218 <key>Value</key>
219 <real>50</real>
220 </map>
221 <key>BuildPrefs_PivotIsPercent</key>
222 <map>
223 <key>Comment</key>
224 <string>Consider the Pivot points values as a percentage</string>
225 <key>Persist</key>
226 <integer>1</integer>
227 <key>Type</key>
228 <string>Boolean</string>
229 <key>Value</key>
230 <integer>1</integer>
231 </map>
232 <key>BuildPrefs_ActualRoot</key>
233 <map>
234 <key>Comment</key>
235 <string>Show the axis on the actual root of a linkset instead of mass center</string>
236 <key>Persist</key>
237 <integer>1</integer>
238 <key>Type</key>
239 <string>Boolean</string>
240 <key>Value</key>
241 <integer>0</integer>
242 </map>
18 <key>DisableLoginLogoutScreens</key> 243 <key>DisableLoginLogoutScreens</key>
19 <map> 244 <map>
20 <key>Comment</key> 245 <key>Comment</key>
diff --git a/linden/indra/newview/llfloaterbuildoptions.cpp b/linden/indra/newview/llfloaterbuildoptions.cpp
index 3cd35db..472f6bb 100644
--- a/linden/indra/newview/llfloaterbuildoptions.cpp
+++ b/linden/indra/newview/llfloaterbuildoptions.cpp
@@ -43,17 +43,24 @@
43// library includes 43// library includes
44#include "llfontgl.h" 44#include "llfontgl.h"
45#include "llcheckboxctrl.h" 45#include "llcheckboxctrl.h"
46#include "llcombobox.h"
46#include "llspinctrl.h" 47#include "llspinctrl.h"
47#include "llsliderctrl.h" 48#include "llsliderctrl.h"
49#include "lltexturectrl.h"
48 50
49// newview includes 51// newview includes
52#include "llinventorymodel.h"
50#include "llresmgr.h" 53#include "llresmgr.h"
54#include "llstartup.h" // not really necessary here, but just in case
51#include "llviewercontrol.h" 55#include "llviewercontrol.h"
56#include "llviewerinventory.h"
57#include "floaterbusy.h" // class InvDropTarget
52 58
53// 59//
54// Globals 60// Globals
55// 61//
56LLFloaterBuildOptions *LLFloaterBuildOptions::sInstance = NULL; 62LLFloaterBuildOptions *LLFloaterBuildOptions::sInstance = NULL;
63InvDropTarget * LLFloaterBuildOptions::mBuildObjectDropTarget;
57 64
58// 65//
59// Methods 66// Methods
@@ -67,6 +74,55 @@ LLFloaterBuildOptions::LLFloaterBuildOptions( )
67LLFloaterBuildOptions::~LLFloaterBuildOptions() 74LLFloaterBuildOptions::~LLFloaterBuildOptions()
68{ 75{
69 sInstance = NULL; 76 sInstance = NULL;
77 delete mBuildObjectDropTarget;
78 mBuildObjectDropTarget = NULL;
79}
80
81BOOL LLFloaterBuildOptions::postBuild()
82{
83 getChild<LLComboBox>("material")->setSimple(gSavedSettings.getString("BuildPrefs_Material"));
84 getChild<LLComboBox>("combobox shininess")->setSimple(gSavedSettings.getString("BuildPrefs_Shiny"));
85
86 getChild<LLComboBox>("material")->setCommitCallback(onComboBoxCommit);
87 getChild<LLComboBox>("combobox shininess")->setCommitCallback(onComboBoxCommit);
88
89 getChild<LLTextureCtrl>("texture control")->setDefaultImageAssetID(LLUUID("89556747-24cb-43ed-920b-47caed15465f"));
90 getChild<LLTextureCtrl>("texture control")->setCommitCallback(onTexturePickerCommit);
91
92 LLView *target_view = getChild<LLView>("build_item_add_disp_rect");
93 if (target_view)
94 {
95 if (mBuildObjectDropTarget)
96 {
97 delete mBuildObjectDropTarget;
98 }
99 mBuildObjectDropTarget = new InvDropTarget("build drop target", target_view->getRect(),BuildAutoResponseItemDrop);
100 addChild(mBuildObjectDropTarget);
101 }
102
103 if (LLStartUp::getStartupState() == STATE_STARTED)
104 {
105 LLUUID itemid = (LLUUID)gSavedSettings.getString("BuildPrefs_Item");
106 LLViewerInventoryItem* item = gInventory.getItem(itemid);
107 if (item)
108 {
109 childSetValue("build_item_add_disp_rect_txt", "Currently set to: "+item->getName());
110 }
111 else if (itemid.isNull())
112 {
113 childSetValue("build_item_add_disp_rect_txt", "Currently not set");
114 }
115 else
116 {
117 childSetValue("build_item_add_disp_rect_txt", "Currently set to a item not on this account");
118 }
119 }
120 else
121 {
122 childSetValue("build_item_add_disp_rect_txt", "Not logged in");
123 }
124
125 return TRUE;
70} 126}
71 127
72// static 128// static
@@ -95,3 +151,28 @@ BOOL LLFloaterBuildOptions::visible(void*)
95{ 151{
96 return (sInstance != NULL); 152 return (sInstance != NULL);
97} 153}
154
155void LLFloaterBuildOptions::BuildAutoResponseItemDrop(LLViewerInventoryItem* item)
156{
157 gSavedSettings.setString("BuildPrefs_Item", item->getUUID().asString());
158 LLFloaterBuildOptions::getInstance()->childSetValue("build_item_add_disp_rect_txt", "Currently set to: "+item->getName());
159}
160
161void LLFloaterBuildOptions::onComboBoxCommit(LLUICtrl* ctrl, void* userdata)
162{
163
164 LLComboBox* box = (LLComboBox*)ctrl;
165 if(box)
166 {
167 gSavedSettings.setString(box->getControlName(), box->getValue().asString());
168 }
169}
170
171void LLFloaterBuildOptions::onTexturePickerCommit(LLUICtrl* ctrl, void* userdata)
172{
173 LLTextureCtrl* image_ctrl = (LLTextureCtrl*)ctrl;
174 if(image_ctrl)
175 {
176 gSavedSettings.setString("BuildPrefs_Texture", image_ctrl->getImageAssetID().asString());
177 }
178}
diff --git a/linden/indra/newview/llfloaterbuildoptions.h b/linden/indra/newview/llfloaterbuildoptions.h
index e030b06..50599dd 100644
--- a/linden/indra/newview/llfloaterbuildoptions.h
+++ b/linden/indra/newview/llfloaterbuildoptions.h
@@ -40,6 +40,8 @@
40 40
41#include "llfloater.h" 41#include "llfloater.h"
42 42
43class LLViewerInventoryItem;
44class InvDropTarget;
43 45
44class LLFloaterBuildOptions 46class LLFloaterBuildOptions
45: public LLFloater 47: public LLFloater
@@ -49,12 +51,21 @@ protected:
49 ~LLFloaterBuildOptions(); 51 ~LLFloaterBuildOptions();
50 52
51public: 53public:
54 BOOL postBuild();
55
52 static void show(void*); 56 static void show(void*);
53 static LLFloaterBuildOptions* getInstance(); 57 static LLFloaterBuildOptions* getInstance();
54 static BOOL visible(void*); 58 static BOOL visible(void*);
55 59
56protected: 60protected:
57 static LLFloaterBuildOptions* sInstance; 61 static LLFloaterBuildOptions* sInstance;
62
63private:
64 static InvDropTarget* mBuildObjectDropTarget;
65
66 static void onTexturePickerCommit(LLUICtrl* ctrl, void* userdata);
67 static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata);
68 static void BuildAutoResponseItemDrop(LLViewerInventoryItem* item);
58}; 69};
59 70
60#endif 71#endif
diff --git a/linden/indra/newview/llmanip.cpp b/linden/indra/newview/llmanip.cpp
index 53c74aa..fd24f6d 100644
--- a/linden/indra/newview/llmanip.cpp
+++ b/linden/indra/newview/llmanip.cpp
@@ -69,7 +69,11 @@ S32 LLManip::sMaxTimesShowHelpText = 5;
69F32 LLManip::sGridMaxSubdivisionLevel = 32.f; 69F32 LLManip::sGridMaxSubdivisionLevel = 32.f;
70F32 LLManip::sGridMinSubdivisionLevel = 1.f; 70F32 LLManip::sGridMinSubdivisionLevel = 1.f;
71LLVector2 LLManip::sTickLabelSpacing(60.f, 25.f); 71LLVector2 LLManip::sTickLabelSpacing(60.f, 25.f);
72 72bool LLManip::sActualRoot = false;// going to set these up in the main entry
73bool LLManip::sPivotPerc = false;
74F32 LLManip::sPivotX = 0.f;
75F32 LLManip::sPivotY = 0.f;
76F32 LLManip::sPivotZ = 0.f;
73 77
74//static 78//static
75void LLManip::rebuild(LLViewerObject* vobj) 79void LLManip::rebuild(LLViewerObject* vobj)
@@ -100,8 +104,48 @@ LLManip::LLManip( const std::string& name, LLToolComposite* composite )
100 mHighlightedPart(LL_NO_PART), 104 mHighlightedPart(LL_NO_PART),
101 mManipPart(LL_NO_PART) 105 mManipPart(LL_NO_PART)
102{ 106{
103} 107 initPivot();
104 108
109 gSavedSettings.getControl("BuildPrefs_ActualRoot")->getSignal()->connect(&updateActualRoot);
110 gSavedSettings.getControl("BuildPrefs_PivotIsPercent")->getSignal()->connect(&updatePivotIsPercent);
111 gSavedSettings.getControl("BuildPrefs_PivotX")->getSignal()->connect(&updatePivotX);
112 gSavedSettings.getControl("BuildPrefs_PivotY")->getSignal()->connect(&updatePivotY);
113 gSavedSettings.getControl("BuildPrefs_PivotZ")->getSignal()->connect(&updatePivotZ);
114}
115//static
116void LLManip::initPivot()
117{
118 sActualRoot = (bool)gSavedSettings.getBOOL("BuildPrefs_ActualRoot");
119 sPivotPerc = (bool)gSavedSettings.getBOOL("BuildPrefs_PivotIsPercent");
120 sPivotX = gSavedSettings.getF32("BuildPrefs_PivotX");
121 sPivotY = gSavedSettings.getF32("BuildPrefs_PivotY");
122 sPivotZ = gSavedSettings.getF32("BuildPrefs_PivotZ");
123}
124//static
125void LLManip::updateActualRoot(const LLSD &data)
126{
127 sActualRoot = (bool)data.asBoolean();
128}
129//static
130void LLManip::updatePivotIsPercent(const LLSD &data)
131{
132 sPivotPerc = (bool)data.asBoolean();
133}
134//static
135void LLManip::updatePivotX(const LLSD &data)
136{
137 sPivotX = (F32)data.asReal();
138}
139//static
140void LLManip::updatePivotY(const LLSD &data)
141{
142 sPivotY = (F32)data.asReal();
143}
144//static
145void LLManip::updatePivotZ(const LLSD &data)
146{
147 sPivotZ = (F32)data.asReal();
148}
105void LLManip::getManipNormal(LLViewerObject* object, EManipPart manip, LLVector3 &normal) 149void LLManip::getManipNormal(LLViewerObject* object, EManipPart manip, LLVector3 &normal)
106{ 150{
107 LLVector3 grid_origin; 151 LLVector3 grid_origin;
@@ -351,11 +395,43 @@ LLVector3 LLManip::getSavedPivotPoint() const
351 395
352LLVector3 LLManip::getPivotPoint() 396LLVector3 LLManip::getPivotPoint()
353{ 397{
354 if (mObjectSelection->getFirstObject() && mObjectSelection->getObjectCount() == 1 && mObjectSelection->getSelectType() != SELECT_TYPE_HUD) 398 LLVector3 pos;
399 LLVector3 scale;
400 LLQuaternion rot;// = mObjectSelection->getFirstObject()->getRotation();
401 if (mObjectSelection->getFirstRootObject(TRUE) && (mObjectSelection->getObjectCount() == 1 || sActualRoot) && mObjectSelection->getSelectType() != SELECT_TYPE_HUD)
402 {
403 pos = mObjectSelection->getFirstRootObject(TRUE)->getPivotPositionAgent();
404 scale = mObjectSelection->getFirstRootObject(TRUE)->getScale();
405 rot = mObjectSelection->getFirstRootObject(TRUE)->getRotation();
406 }else
407 {
408 pos = LLSelectMgr::getInstance()->getBBoxOfSelection().getCenterAgent();
409 scale = LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal();
410 rot = LLSelectMgr::getInstance()->getBBoxOfSelection().getRotation();
411 }
412 if(sPivotPerc)
413 {
414
415 LLVector3 add(
416 (-scale[VX]*0.5) + (scale[VX]*(sPivotX*0.01)),
417 (-scale[VY]*0.5) + (scale[VY]*(sPivotY*0.01)),
418 (-scale[VZ]*0.5) + (scale[VZ]*(sPivotZ*0.01)));
419 add = add * rot;
420 pos = pos + add;
421 }else
355 { 422 {
356 return mObjectSelection->getFirstObject()->getPivotPositionAgent(); 423 //pos[VX] = pos[VX] + gSavedSettings.getF32("BuildPrefs_PivotX");
424 //pos[VY] = pos[VY] + gSavedSettings.getF32("BuildPrefs_PivotY");
425 //pos[VZ] = pos[VZ] + gSavedSettings.getF32("BuildPrefs_PivotZ");
426 LLVector3 add(
427 sPivotX,
428 sPivotY,
429 sPivotZ);
430 add = add * rot;
431 pos = pos + add;
357 } 432 }
358 return LLSelectMgr::getInstance()->getBBoxOfSelection().getCenterAgent(); 433 //pos = pos * rot;
434 return pos;
359} 435}
360 436
361 437
diff --git a/linden/indra/newview/llmanip.h b/linden/indra/newview/llmanip.h
index cdf6a36..38672fe 100644
--- a/linden/indra/newview/llmanip.h
+++ b/linden/indra/newview/llmanip.h
@@ -151,6 +151,13 @@ protected:
151 BOOL getMousePointOnPlaneAgent(LLVector3& point, S32 x, S32 y, LLVector3 origin, LLVector3 normal); 151 BOOL getMousePointOnPlaneAgent(LLVector3& point, S32 x, S32 y, LLVector3 origin, LLVector3 normal);
152 BOOL nearestPointOnLineFromMouse( S32 x, S32 y, const LLVector3& b1, const LLVector3& b2, F32 &a_param, F32 &b_param ); 152 BOOL nearestPointOnLineFromMouse( S32 x, S32 y, const LLVector3& b1, const LLVector3& b2, F32 &a_param, F32 &b_param );
153 LLColor4 setupSnapGuideRenderPass(S32 pass); 153 LLColor4 setupSnapGuideRenderPass(S32 pass);
154private:
155 static void initPivot();
156 static void updateActualRoot(const LLSD &data);
157 static void updatePivotIsPercent(const LLSD &data);
158 static void updatePivotX(const LLSD &data);
159 static void updatePivotY(const LLSD &data);
160 static void updatePivotZ(const LLSD &data);
154protected: 161protected:
155 LLFrameTimer mHelpTextTimer; 162 LLFrameTimer mHelpTextTimer;
156 BOOL mInSnapRegime; 163 BOOL mInSnapRegime;
@@ -165,6 +172,12 @@ protected:
165 static F32 sGridMaxSubdivisionLevel; 172 static F32 sGridMaxSubdivisionLevel;
166 static F32 sGridMinSubdivisionLevel; 173 static F32 sGridMinSubdivisionLevel;
167 static LLVector2 sTickLabelSpacing; 174 static LLVector2 sTickLabelSpacing;
175
176 static bool sActualRoot;
177 static bool sPivotPerc;
178 static F32 sPivotX;
179 static F32 sPivotY;
180 static F32 sPivotZ;
168}; 181};
169 182
170 183
diff --git a/linden/indra/newview/lltoolplacer.cpp b/linden/indra/newview/lltoolplacer.cpp
index d52d97c..dc4d6bf 100644
--- a/linden/indra/newview/lltoolplacer.cpp
+++ b/linden/indra/newview/lltoolplacer.cpp
@@ -216,8 +216,22 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
216 216
217 // Set params for new object based on its PCode. 217 // Set params for new object based on its PCode.
218 LLQuaternion rotation; 218 LLQuaternion rotation;
219 LLVector3 scale = DEFAULT_OBJECT_SCALE; 219 LLVector3 scale = LLVector3(
220 gSavedSettings.getF32("BuildPrefs_Xsize"),
221 gSavedSettings.getF32("BuildPrefs_Ysize"),
222 gSavedSettings.getF32("BuildPrefs_Zsize"));
223
220 U8 material = LL_MCODE_WOOD; 224 U8 material = LL_MCODE_WOOD;
225 if(gSavedSettings.getString("BuildPrefs_Material")== "Stone") material = LL_MCODE_STONE;
226 if(gSavedSettings.getString("BuildPrefs_Material")== "Metal") material = LL_MCODE_METAL;
227 if(gSavedSettings.getString("BuildPrefs_Material")== "Wood") material = LL_MCODE_WOOD;
228 if(gSavedSettings.getString("BuildPrefs_Material")== "Flesh") material = LL_MCODE_FLESH;
229 if(gSavedSettings.getString("BuildPrefs_Material")== "Rubber") material = LL_MCODE_RUBBER;
230 if(gSavedSettings.getString("BuildPrefs_Material")== "Plastic") material = LL_MCODE_PLASTIC;
231
232
233
234
221 BOOL create_selected = FALSE; 235 BOOL create_selected = FALSE;
222 LLVolumeParams volume_params; 236 LLVolumeParams volume_params;
223 237
@@ -284,7 +298,7 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
284 gMessageSystem->addU8Fast(_PREHASH_Material, material); 298 gMessageSystem->addU8Fast(_PREHASH_Material, material);
285 299
286 U32 flags = 0; // not selected 300 U32 flags = 0; // not selected
287 if (use_physics) 301 if (use_physics || gSavedSettings.getBOOL("BuildPrefs_Physical"))
288 { 302 {
289 flags |= FLAGS_USE_PHYSICS; 303 flags |= FLAGS_USE_PHYSICS;
290 } 304 }
diff --git a/linden/indra/newview/llviewerobjectlist.cpp b/linden/indra/newview/llviewerobjectlist.cpp
index 21a9252..78f374c 100644
--- a/linden/indra/newview/llviewerobjectlist.cpp
+++ b/linden/indra/newview/llviewerobjectlist.cpp
@@ -60,6 +60,7 @@
60#include "llresmgr.h" 60#include "llresmgr.h"
61#include "llviewerregion.h" 61#include "llviewerregion.h"
62#include "llviewerstats.h" 62#include "llviewerstats.h"
63#include "lltooldraganddrop.h"
63#include "lltoolmgr.h" 64#include "lltoolmgr.h"
64#include "lltoolpie.h" 65#include "lltoolpie.h"
65#include "llkeyboard.h" 66#include "llkeyboard.h"
@@ -96,6 +97,7 @@ U32 LLViewerObjectList::sSimulatorMachineIndex = 1; // Not zero deliberatel
96LLMap<U64, U32> LLViewerObjectList::sIPAndPortToIndex; 97LLMap<U64, U32> LLViewerObjectList::sIPAndPortToIndex;
97std::map<U64, LLUUID> LLViewerObjectList::sIndexAndLocalIDToUUID; 98std::map<U64, LLUUID> LLViewerObjectList::sIndexAndLocalIDToUUID;
98 99
100
99LLViewerObjectList::LLViewerObjectList() 101LLViewerObjectList::LLViewerObjectList()
100{ 102{
101 mNumVisCulled = 0; 103 mNumVisCulled = 0;
@@ -256,6 +258,85 @@ void LLViewerObjectList::processUpdateCore(LLViewerObject* objectp,
256 // (from gPipeline.addObject) 258 // (from gPipeline.addObject)
257 // so that the drawable parent is set properly 259 // so that the drawable parent is set properly
258 findOrphans(objectp, msg->getSenderIP(), msg->getSenderPort()); 260 findOrphans(objectp, msg->getSenderIP(), msg->getSenderPort());
261
262 // Apply custom settings not set in llmanip and lltoolplacer here.
263 // Don't check for permissions in case opensim ever implements
264 // default prim permission support serverside -- MC
265 if (objectp
266 && just_created
267 && objectp->permYouOwner()
268 && objectp->mCreateSelected)
269 {
270 LLMessageSystem* msg = gMessageSystem;
271 msg->newMessageFast(_PREHASH_ObjectImage);
272 msg->nextBlockFast(_PREHASH_AgentData);
273 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
274 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
275 msg->nextBlockFast(_PREHASH_ObjectData);
276 msg->addU32Fast(_PREHASH_ObjectLocalID, (U32)(objectp->mLocalID));
277 msg->addStringFast(_PREHASH_MediaURL, NULL);
278
279 LLPrimitive obj;
280 obj.setNumTEs(U8(10));
281 S32 shinnyLevel = 0;
282 if(gSavedSettings.getString("BuildPrefs_Shiny")== "None") shinnyLevel = 0;
283 if(gSavedSettings.getString("BuildPrefs_Shiny")== "Low") shinnyLevel = 1;
284 if(gSavedSettings.getString("BuildPrefs_Shiny")== "Medium") shinnyLevel = 2;
285 if(gSavedSettings.getString("BuildPrefs_Shiny")== "High") shinnyLevel = 3;
286
287 for (int i = 0; i < 10; i++)
288 {
289 // I'm assuming this is because there's no good workaround for setting the default
290 // box texture manually without restarting? -- MC
291 LLTextureEntry tex = LLTextureEntry(LLUUID(gSavedSettings.getString("BuildPrefs_Texture")));
292 tex.setColor(gSavedSettings.getColor4("BuildPrefs_Color"));
293 tex.setAlpha(1.0 - ((gSavedSettings.getF32("BuildPrefs_Alpha")) / 100.0));
294 tex.setGlow(gSavedSettings.getF32("BuildPrefs_Glow"));
295 if(gSavedSettings.getBOOL("BuildPrefs_FullBright"))
296 {
297 tex.setFullbright(TEM_FULLBRIGHT_MASK);
298 }
299
300 tex.setShiny((U8) shinnyLevel & TEM_SHINY_MASK);
301
302 obj.setTE(U8(i), tex);
303 }
304
305 obj.packTEMessage(gMessageSystem);
306
307 msg->sendReliable(gAgent.getRegion()->getHost());
308
309 msg->newMessage("ObjectFlagUpdate");
310 msg->nextBlockFast(_PREHASH_AgentData);
311 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
312 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
313 msg->addU32Fast(_PREHASH_ObjectLocalID, (U32)(objectp->mLocalID) );
314 msg->addBOOLFast(_PREHASH_UsePhysics, gSavedSettings.getBOOL("BuildPrefs_Physical"));
315 msg->addBOOL("IsTemporary", gSavedSettings.getBOOL("BuildPrefs_Temporary"));
316 msg->addBOOL("IsPhantom", gSavedSettings.getBOOL("BuildPrefs_Phantom") );
317 msg->addBOOL("CastsShadows", true );
318 msg->sendReliable(gAgent.getRegion()->getHost());
319
320 if(gSavedSettings.getBOOL("BuildPrefs_EmbedItem"))
321 {
322 LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem((LLUUID)gSavedSettings.getString("BuildPrefs_Item"));
323 if(item)
324 {
325 if(item->getType()==LLAssetType::AT_LSL_TEXT)
326 {
327 LLToolDragAndDrop::dropScript(objectp,
328 item,
329 TRUE,
330 LLToolDragAndDrop::SOURCE_AGENT,
331 gAgent.getID());
332 }else
333 {
334 LLToolDragAndDrop::dropInventory(objectp,item,LLToolDragAndDrop::SOURCE_AGENT,gAgent.getID());
335 }
336 }
337 //llinfos << "SENDING CUBE TEXTURE.." << llendl;
338 }
339 }
259 340
260 // If we're just wandering around, don't create new objects selected. 341 // If we're just wandering around, don't create new objects selected.
261 if (just_created 342 if (just_created
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml
index 6e6e65c..cdd5dc1 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml
@@ -1,30 +1,161 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater bottom="-297" can_close="true" can_drag_on_left="false" can_minimize="true" 2<floater bottom="-297" can_close="true" can_drag_on_left="false" can_minimize="true"
3 can_resize="false" follows="right" height="165" min_height="165" 3 can_resize="false" follows="right" height="355" min_height="355"
4 min_width="320" mouse_opaque="true" name="build options floater" 4 min_width="530" mouse_opaque="true" name="build options floater"
5 rect_control="FloaterBuildOptionsRect" title="Grid Options" width="320"> 5 rect_control="FloaterBuildOptionsRect" title="Advanced Build Options" width="530">
6 <spinner bottom="-53" control_name="GridResolution" decimal_digits="3" 6
7 <view_border bevel_style="none" border_thickness="1" bottom="-145" follows="top|left" height="105"
8 left="14" name="GridBorder" width="170"/>
9 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
10 bottom_delta="110" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
11 h_pad="0" halign="left" height="10" left_delta="53" mouse_opaque="false"
12 name="text_box7" v_pad="0" width="150"> Grid Options</text>
13 <spinner bottom="-60" control_name="GridResolution" decimal_digits="3"
7 follows="left|top" height="16" increment="0.1" initial_val="1" 14 follows="left|top" height="16" increment="0.1" initial_val="1"
8 label="Grid Unit (meters)" label_width="110" left="14" max_val="5" 15 label="Grid Units (m)" label_width="90" left="21" max_val="5"
9 min_val="0.01" mouse_opaque="true" name="GridResolution" width="170" /> 16 min_val="0.01" mouse_opaque="true" name="GridResolution" width="155" />
10 <spinner bottom_delta="-21" control_name="GridDrawSize" decimal_digits="1" 17 <spinner bottom_delta="-20" control_name="GridDrawSize" decimal_digits="1"
11 follows="left|top" height="16" increment="0.5" initial_val="5" 18 follows="left|top" height="16" increment="0.5" initial_val="5"
12 label="Grid Extents (meters)" label_width="110" left="14" max_val="50" 19 label="Grid Extents (m)" label_width="90" left_delta="0" max_val="50"
13 min_val="1" mouse_opaque="true" name="GridDrawSize" width="170" /> 20 min_val="1" mouse_opaque="true" name="GridDrawSize" width="155" />
14 <check_box bottom_delta="-21" control_name="GridSubUnit" follows="left|top" 21 <check_box bottom_delta="-20" control_name="GridSubUnit" follows="left|top"
15 font="SansSerifSmall" height="16" initial_value="false" 22 font="SansSerifSmall" height="16" initial_value="false"
16 label="Enable Sub-Unit Snapping" left="14" mouse_opaque="true" 23 label="Sub-Unit Snapping" left_delta="0" mouse_opaque="true"
17 name="GridSubUnit" width="200" /> 24 name="GridSubUnit" width="200" />
18 <check_box bottom_delta="-21" control_name="GridCrossSections" follows="left|top" 25 <check_box bottom_delta="-20" control_name="GridCrossSections" follows="left|top"
19 font="SansSerifSmall" height="16" initial_value="false" 26 font="SansSerifSmall" height="16" initial_value="false"
20 label="Show Cross Sections" left="14" mouse_opaque="true" 27 label="Show Cross Sections" left_delta="0" mouse_opaque="true"
21 name="GridCrossSection" width="200" /> 28 name="GridCrossSection" width="200" />
22 <slider bottom_delta="-21" can_edit_text="false" control_name="GridOpacity" 29 <slider bottom_delta="-20" can_edit_text="false" control_name="GridOpacity"
23 decimal_digits="3" follows="left" height="16" increment="0.05" 30 decimal_digits="3" follows="left" height="16" increment="0.05"
24 initial_val="0.7" label="Grid Opacity" left="14" max_val="1" min_val="0" 31 initial_val="0.7" label="Grid Opacity" left_delta="0" max_val="1" min_val="0"
25 mouse_opaque="true" name="GridOpacity" show_text="false" value="0.7" 32 mouse_opaque="true" name="GridOpacity" show_text="false" value="0.7"
26 width="200" /> 33 width="165" />
34
35 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
36 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
37 h_pad="0" halign="left" height="10" left="44" mouse_opaque="false"
38 name="text_box3" v_pad="0" width="150"> Object Size</text>
39 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
40 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
41 h_pad="0" halign="left" height="10" left_delta="130" mouse_opaque="false"
42 name="text_box4" v_pad="0" width="150"> Settings</text>
43 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
44 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
45 h_pad="0" halign="left" height="10" left_delta="190" mouse_opaque="false"
46 name="text_box5" v_pad="0" width="150"> Texture</text>
47 <view_border bevel_style="none" border_thickness="1" bottom_delta="-98" follows="top|left" height="90"
48 left="14" name="SizeBorder" width="120" />
49 <view_border bevel_style="none" border_thickness="1" bottom_delta="-0" follows="top|left" height="90"
50 left_delta="134" name="SettingsBorder" width="100" />
51 <view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="top|left" height="90"
52 left_delta="114" name="TextureBorder" width="250" />
53
54 <spinner bottom="-200" decimal_digits="5" follows="left|top" height="16" increment="0.05"
55 label="X size" label_width="40" left="20" max_val="10" min_val="0.01"
56 mouse_opaque="true" name="X size" width="110" control_name="BuildPrefs_Xsize"/>
57 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
58 label="Y size" label_width="40" left_delta="0" max_val="10" min_val="0.01"
59 mouse_opaque="true" name="Y size" width="110" control_name="BuildPrefs_Ysize"/>
60 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
61 label="Z size" label_width="40" left_delta="0" max_val="10" min_val="0.01"
62 mouse_opaque="true" name="Z size" width="110" control_name="BuildPrefs_Zsize"/>
63
64 <check_box bottom="-200" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
65 label="Phantom" left="154" mouse_opaque="true" name="PhantomToggle" radio_style="false"
66 width="100" control_name="BuildPrefs_Phantom"/>
27 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 67 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
28 label="Rez objects under the land group when possible" left_delta="0" mouse_opaque="true" 68 label="Physical" left_delta="0" mouse_opaque="true" name="PhysicalToggle" radio_style="false"
29 name="grouplandrez" radio_style="false" width="270" control_name="RezWithLandGroup"/> 69 width="100" control_name="BuildPrefs_Physical"/>
70 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
71 label="Temporary" left_delta="0" mouse_opaque="true" name="TemporaryToggle" radio_style="false"
72 width="100" control_name="BuildPrefs_Temporary"/>
73 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="1" follows="left|top" height="18"
74 left="10" max_chars="20" mouse_opaque="true" name="material" width="87"
75 control_name="BuildPrefs_Material">
76 <combo_item name="Stone" value="Stone">Stone</combo_item>
77 <combo_item name="Metal" value="Metal">Metal</combo_item>
78 <combo_item name="Glass" value="Glass">Glass</combo_item>
79 <combo_item name="Wood" value="Wood">Wood</combo_item>
80 <combo_item name="Flesh" value="Flesh">Flesh</combo_item>
81 <combo_item name="Plastic" value="Plastic">Plastic</combo_item>
82 <combo_item name="Rubber" value="Rubber">Rubber</combo_item>
83 </combo_box>
84
85 <texture_picker allow_no_texture="false" bottom="-265" can_apply_immediately="true" default_image_name="Default"
86 follows="left|top" height="80" label="Texture" left="270" mouse_opaque="true"
87 name="texture control" control_name="BuildPrefs_Texture" tool_tip="Click to choose a picture"
88 width="64"/>
89 <color_swatch border_color="0.45098, 0.517647, 0.607843, 1" bottom_delta="0" can_apply_immediately="true"
90 color="1, 1, 1, 1" follows="left|top" height="80" label="Color" left_delta="75"
91 mouse_opaque="true" name="colorswatch" tool_tip="Click to open Color Picker" width="64"
92 control_name="BuildPrefs_Color"/>
93
94 <spinner bottom="-200" decimal_digits="0" follows="left|top" height="16" increment="1"
95 label="Alpha" label_width="40" left_delta="70" max_val="100" min_val="0"
96 mouse_opaque="true" name="alpha" width="90" control_name="BuildPrefs_Alpha"/>
97 <spinner bottom_delta="-20" enabled="true" decimal_digits="2" follows="left|top" height="16"
98 increment="0.05" label="Glow" label_width="40" left_delta="0" max_val="1"
99 min_val="0" mouse_opaque="true" name="glow" width="90" control_name="BuildPrefs_Glow"/>
100 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
101 label="Full Bright" left_delta="0" mouse_opaque="true" name="FBToggle" radio_style="false"
102 width="100" control_name="BuildPrefs_FullBright"/>
103 <combo_box allow_text_entry="false" bottom_delta="-20" follows="left|top" height="18" left_delta="0"
104 max_chars="20" mouse_opaque="true" name="combobox shininess" tool_tip="Set the amount of shine for the object"
105 width="90" control_name="BuildPrefs_Shiny">
106 <combo_item name="None" value="None"> None</combo_item>
107 <combo_item name="Low" value="Low"> Low</combo_item>
108 <combo_item name="Medium" value="Medium"> Medium</combo_item>
109 <combo_item name="High" value="High"> High</combo_item>
110 </combo_box>
111
112 <view_border blevel_style="in" bottom_delta="-40" follows="left|top" height="16" left="14"
113 mouse_opaque="false" name="im_give_drop_target_rect" width="400"/>
114 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
115 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
116 height="16" left_delta="0" mouse_opaque="true" name="Give inventory" tool_tip="Drop an inventory item here."
117 v_pad="2" width="400"> Drop an inventory item here to have it added to the prim contents.</text>
118 <view_border blevel_style="in" bottom_delta="-18" follows="left|top" height="16" left_delta="0"
119 mouse_opaque="false" name="build_item_add_disp_rect" width="400"/>
120 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
121 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
122 height="16" left_delta="0" mouse_opaque="true" name="build_item_add_disp_rect_txt" tool_tip=""
123 v_pad="2" width="400"> Currently set to: ITEM</text>
124 <check_box name="BuildPrefsEmbedItem" bottom_delta="-25" enabled="true"
125 follows="left|top" font="SansSerifSmall" height="16"
126 initial_value="false" label="Embed an item into the newly created object" left_delta="0"
127 mouse_opaque="true" control_name="BuildPrefs_EmbedItem" radio_style="false" width="270"/>
128
129 <view_border bevel_style="none" border_thickness="1" bottom="-145" follows="top|left" height="105"
130 left="198" name="PivotBorder" width="135"/>
131 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
132 bottom_delta="110" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
133 h_pad="0" halign="left" height="10" left_delta="35" mouse_opaque="false"
134 name="text_box6" v_pad="0" width="150"> Pivot Point</text>
135 <spinner bottom_delta="-25" decimal_digits="5" follows="left|top" height="16" increment="0.05"
136 label="X pos" label_width="40" left_delta="-28" mouse_opaque="true" max_val="256"
137 min_val="-256" name="X pos" width="120" control_name="BuildPrefs_PivotX"/>
138 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
139 label="Y pos" label_width="40" left_delta="0" mouse_opaque="true" max_val="256"
140 min_val="-256" name="Y pos" width="120" control_name="BuildPrefs_PivotY"/>
141 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
142 label="Z pos" label_width="40" left_delta="0" mouse_opaque="true" max_val="256"
143 min_val="-256" name="Z pos" width="120" control_name="BuildPrefs_PivotZ"/>
144 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
145 label="Values are percent" left_delta="-5" mouse_opaque="true" tool_tip="Default settings are Percentages and every axis set at 50"
146 name="PivotPercToggle" radio_style="false" width="100" control_name="BuildPrefs_PivotIsPercent"/>
147
148 <check_box bottom_delta="60" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
149 initial_value="true" label="Highlight selected prims" left_delta="143"
150 mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle" control_name="RenderHighlightSelections"
151 radio_style="false" width="270"/>
152 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
153 initial_value="false" label="Show axis on root prim" left_delta="0"
154 mouse_opaque="true" tool_tip="Default behaviour is to show the axis on the center of mass of a linkset. If enabled, the axis will be shown on the root prim of the linkset instead."
155 name="BuildPrefsActualRoot_toggle" control_name="BuildPrefs_ActualRoot"
156 radio_style="false" width="270"/>
157 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
158 label="Rez objects using land group" left_delta="0" mouse_opaque="true"
159 tooltip="Rez objects on group land using the land's group (if possible)"
160 name="grouplandrez" radio_style="false" width="270" control_name="RezWithLandGroup"/>
30</floater> 161</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
index 959ebde..52275ea 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
@@ -119,10 +119,10 @@
119 <check_box bottom_delta="-19" control_name="SnapEnabled" follows="left|top" 119 <check_box bottom_delta="-19" control_name="SnapEnabled" follows="left|top"
120 font="SansSerifSmall" height="16" initial_value="true" label="Use Grid" 120 font="SansSerifSmall" height="16" initial_value="true" label="Use Grid"
121 left_delta="0" mouse_opaque="true" name="checkbox snap to grid" width="134" /> 121 left_delta="0" mouse_opaque="true" name="checkbox snap to grid" width="134" />
122 <button bottom_delta="-19" follows="left|top" font="SansSerifSmall" 122 <button bottom_delta="-30" follows="left|top" font="SansSerifSmall"
123 halign="center" valign="center" 123 halign="center" valign="center"
124 height="20" label="Options..." label_selected="Options..." left_delta="20" 124 height="20" label="Build Options" left_delta="20"
125 mouse_opaque="true" name="Options..." scale_image="TRUE" width="80" /> 125 mouse_opaque="true" name="Options..." scale_image="TRUE" width="100" />
126 126
127 127
128<!-- Help text --> 128<!-- Help text -->