aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
authorMcCabe Maxsted2010-04-13 23:15:19 -0700
committerMcCabe Maxsted2010-04-13 23:17:03 -0700
commita6e45f15b8634db39facc852501c53ab36e2ed3f (patch)
tree489f9a2c008287c315f3a4481167769800f1bce1 /linden/indra/newview
parentSave custom prim defaults on a per-account basis rather than globally (diff)
downloadmeta-impy-a6e45f15b8634db39facc852501c53ab36e2ed3f.zip
meta-impy-a6e45f15b8634db39facc852501c53ab36e2ed3f.tar.gz
meta-impy-a6e45f15b8634db39facc852501c53ab36e2ed3f.tar.bz2
meta-impy-a6e45f15b8634db39facc852501c53ab36e2ed3f.tar.xz
Changed advanced build options to per-account settings, added OK, Apply, Cancel, Clear Item, and Reset to Default buttons
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/app_settings/settings_per_account.xml1
-rw-r--r--linden/indra/newview/llfloaterbuildoptions.cpp279
-rw-r--r--linden/indra/newview/llfloaterbuildoptions.h23
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml78
4 files changed, 308 insertions, 73 deletions
diff --git a/linden/indra/newview/app_settings/settings_per_account.xml b/linden/indra/newview/app_settings/settings_per_account.xml
index 83852d3..7465af2 100644
--- a/linden/indra/newview/app_settings/settings_per_account.xml
+++ b/linden/indra/newview/app_settings/settings_per_account.xml
@@ -231,7 +231,6 @@
231 231
232 <!-- Begin build --> 232 <!-- Begin build -->
233 233
234
235 <key>BuildPrefs_Xsize</key> 234 <key>BuildPrefs_Xsize</key>
236 <map> 235 <map>
237 <key>Comment</key> 236 <key>Comment</key>
diff --git a/linden/indra/newview/llfloaterbuildoptions.cpp b/linden/indra/newview/llfloaterbuildoptions.cpp
index 6c59a4e..372b1df 100644
--- a/linden/indra/newview/llfloaterbuildoptions.cpp
+++ b/linden/indra/newview/llfloaterbuildoptions.cpp
@@ -4,7 +4,8 @@
4 * 4 *
5 * $LicenseInfo:firstyear=2002&license=viewergpl$ 5 * $LicenseInfo:firstyear=2002&license=viewergpl$
6 * 6 *
7 * Copyright (c) 2002-2009, Linden Research, Inc. 7 * Copyright (c) 2002-2009, Linden Research, Inc.,
8 * 2010, McCabe Maxsted
8 * 9 *
9 * Second Life Viewer Source Code 10 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 11 * The source code in this file ("Source Code") is provided by Linden Lab
@@ -38,7 +39,6 @@
38#include "llviewerprecompiledheaders.h" 39#include "llviewerprecompiledheaders.h"
39 40
40#include "llfloaterbuildoptions.h" 41#include "llfloaterbuildoptions.h"
41#include "lluictrlfactory.h"
42 42
43// library includes 43// library includes
44#include "llfontgl.h" 44#include "llfontgl.h"
@@ -47,8 +47,10 @@
47#include "llspinctrl.h" 47#include "llspinctrl.h"
48#include "llsliderctrl.h" 48#include "llsliderctrl.h"
49#include "lltexturectrl.h" 49#include "lltexturectrl.h"
50#include "lluictrlfactory.h"
50 51
51// newview includes 52// newview includes
53#include "llcolorswatch.h"
52#include "llinventorymodel.h" 54#include "llinventorymodel.h"
53#include "llresmgr.h" 55#include "llresmgr.h"
54#include "llstartup.h" // not really necessary here, but just in case 56#include "llstartup.h" // not really necessary here, but just in case
@@ -60,13 +62,15 @@
60// Globals 62// Globals
61// 63//
62LLFloaterBuildOptions *LLFloaterBuildOptions::sInstance = NULL; 64LLFloaterBuildOptions *LLFloaterBuildOptions::sInstance = NULL;
63InvDropTarget * LLFloaterBuildOptions::mBuildObjectDropTarget; 65InvDropTarget * LLFloaterBuildOptions::sBuildObjectDropTarget;
64 66
65// 67//
66// Methods 68// Methods
67// 69//
68LLFloaterBuildOptions::LLFloaterBuildOptions( ) 70LLFloaterBuildOptions::LLFloaterBuildOptions()
69: LLFloater(std::string("build options floater")) 71: LLFloater(std::string("build options floater")),
72mBuildItemUUID(NULL),
73mBuildTextureUUID(NULL)
70{ 74{
71 sInstance = this; 75 sInstance = this;
72} 76}
@@ -74,53 +78,72 @@ LLFloaterBuildOptions::LLFloaterBuildOptions( )
74LLFloaterBuildOptions::~LLFloaterBuildOptions() 78LLFloaterBuildOptions::~LLFloaterBuildOptions()
75{ 79{
76 sInstance = NULL; 80 sInstance = NULL;
77 delete mBuildObjectDropTarget; 81 delete sBuildObjectDropTarget;
78 mBuildObjectDropTarget = NULL; 82 sBuildObjectDropTarget = NULL;
79} 83}
80 84
81BOOL LLFloaterBuildOptions::postBuild() 85BOOL LLFloaterBuildOptions::postBuild()
82{ 86{
87 childSetAction("btn_ok", onClickOK, this);
88 childSetAction("btn_apply", onClickApply, this);
89 childSetAction("btn_cancel", onClickCancel, this);
90 childSetAction("btn_clear", onClickClear, this);
91 childSetAction("btn_reset", onClickReset, this);
92
83 getChild<LLComboBox>("material")->setSimple(gSavedPerAccountSettings.getString("BuildPrefs_Material")); 93 getChild<LLComboBox>("material")->setSimple(gSavedPerAccountSettings.getString("BuildPrefs_Material"));
84 getChild<LLComboBox>("combobox shininess")->setSimple(gSavedPerAccountSettings.getString("BuildPrefs_Shiny")); 94 getChild<LLComboBox>("combobox shininess")->setSimple(gSavedPerAccountSettings.getString("BuildPrefs_Shiny"));
85 95
96 childSetValue("BuildPrefsActualRoot_toggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_ActualRoot") );
97 childSetValue("PivotPercToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_PivotIsPercent") );
98 childSetValue("FBToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_FullBright") );
99 childSetValue("BuildPrefsEmbedItem", gSavedPerAccountSettings.getBOOL("BuildPrefs_EmbedItem") );
100 childSetValue("PhysicalToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_Physical") );
101 childSetValue("TemporaryToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_Temporary") );
102 childSetValue("PhantomToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_Phantom") );
103
104 childSetValue("Z pos", gSavedPerAccountSettings.getF32("BuildPrefs_PivotZ") );
105 childSetValue("Y pos", gSavedPerAccountSettings.getF32("BuildPrefs_PivotY") );
106 childSetValue("X pos", gSavedPerAccountSettings.getF32("BuildPrefs_PivotX") );
107 childSetValue("glow", gSavedPerAccountSettings.getF32("BuildPrefs_Glow") );
108 childSetValue("alpha", gSavedPerAccountSettings.getF32("BuildPrefs_Alpha") );
109 childSetValue("Z size", gSavedPerAccountSettings.getF32("BuildPrefs_Zsize") );
110 childSetValue("Y size", gSavedPerAccountSettings.getF32("BuildPrefs_Ysize") );
111 childSetValue("X size", gSavedPerAccountSettings.getF32("BuildPrefs_Xsize") );
112
113 getChild<LLColorSwatchCtrl>("colorswatch")->set(gSavedPerAccountSettings.getColor4("BuildPrefs_Color"), TRUE );
114 getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getString("BuildPrefs_Texture")));
115
116 childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getBOOL("RenderHighlightSelections") );
117 childSetValue("grouplandrez", gSavedSettings.getBOOL("RezWithLandGroup") );
118 childSetValue("GridSubUnit", gSavedSettings.getBOOL("GridSubUnit") );
119 childSetValue("GridCrossSection", gSavedSettings.getBOOL("GridCrossSections") );
120
121 childSetValue("GridResolution", gSavedSettings.getF32("GridResolution") );
122 childSetValue("GridDrawSize", gSavedSettings.getF32("GridDrawSize") );
123 childSetValue("GridOpacity", gSavedSettings.getF32("GridOpacity") );
124
86 getChild<LLComboBox>("material")->setCommitCallback(onComboBoxCommit); 125 getChild<LLComboBox>("material")->setCommitCallback(onComboBoxCommit);
87 getChild<LLComboBox>("combobox shininess")->setCommitCallback(onComboBoxCommit); 126 getChild<LLComboBox>("combobox shininess")->setCommitCallback(onComboBoxCommit);
88 127
89 getChild<LLTextureCtrl>("texture control")->setDefaultImageAssetID(LLUUID("89556747-24cb-43ed-920b-47caed15465f")); 128 getChild<LLTextureCtrl>("texture control")->setDefaultImageAssetID(LLUUID("89556747-24cb-43ed-920b-47caed15465f"));
90 getChild<LLTextureCtrl>("texture control")->setCommitCallback(onTexturePickerCommit); 129 getChild<LLTextureCtrl>("texture control")->setCommitCallback(onTexturePickerCommit);
130 getChild<LLTextureCtrl>("texture control")->setCallbackUserData(this);
91 131
92 LLView *target_view = getChild<LLView>("build_item_add_disp_rect"); 132 LLView *target_view = getChild<LLView>("build_item_add_disp_rect");
93 if (target_view) 133 if (target_view)
94 { 134 {
95 if (mBuildObjectDropTarget) 135 if (sBuildObjectDropTarget)
96 { 136 {
97 delete mBuildObjectDropTarget; 137 delete sBuildObjectDropTarget;
98 } 138 }
99 mBuildObjectDropTarget = new InvDropTarget("build drop target", target_view->getRect(),BuildAutoResponseItemDrop); 139 sBuildObjectDropTarget = new InvDropTarget("build drop target", target_view->getRect(),BuildAutoResponseItemDrop);
100 addChild(mBuildObjectDropTarget); 140 addChild(sBuildObjectDropTarget);
101 } 141 }
102 142
103 if (LLStartUp::getStartupState() == STATE_STARTED) 143 mBuildItemUUID = (LLUUID)gSavedPerAccountSettings.getString("BuildPrefs_Item");
104 { 144 mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getString("BuildPrefs_Texture");
105 LLUUID itemid = (LLUUID)gSavedPerAccountSettings.getString("BuildPrefs_Item"); 145
106 LLViewerInventoryItem* item = gInventory.getItem(itemid); 146 refreshItem(); // Refresh the item UI bits after everything's loaded -- MC
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 147
125 return TRUE; 148 return TRUE;
126} 149}
@@ -152,27 +175,207 @@ BOOL LLFloaterBuildOptions::visible(void*)
152 return (sInstance != NULL); 175 return (sInstance != NULL);
153} 176}
154 177
178// static
155void LLFloaterBuildOptions::BuildAutoResponseItemDrop(LLViewerInventoryItem* item) 179void LLFloaterBuildOptions::BuildAutoResponseItemDrop(LLViewerInventoryItem* item)
156{ 180{
157 gSavedPerAccountSettings.setString("BuildPrefs_Item", item->getUUID().asString()); 181 LLFloaterBuildOptions::getInstance()->setItem(item->getUUID());
158 LLFloaterBuildOptions::getInstance()->childSetValue("build_item_add_disp_rect_txt", "Currently set to: "+item->getName()); 182 LLFloaterBuildOptions::getInstance()->refreshItem();
183 /*LLFloaterBuildOptions::getInstance()->childSetValue("build_item_add_disp_rect_txt", "Currently set to: "+item->getName());
184 gSavedPerAccountSettings.setString("BuildPrefs_Item", item->getUUID().asString());*/
159} 185}
160 186
187// static
161void LLFloaterBuildOptions::onComboBoxCommit(LLUICtrl* ctrl, void* userdata) 188void LLFloaterBuildOptions::onComboBoxCommit(LLUICtrl* ctrl, void* userdata)
162{ 189{
163
164 LLComboBox* box = (LLComboBox*)ctrl; 190 LLComboBox* box = (LLComboBox*)ctrl;
165 if(box) 191 if(box)
166 { 192 {
167 gSavedSettings.setString(box->getControlName(), box->getValue().asString()); 193 gSavedPerAccountSettings.setString(box->getControlName(), box->getValue().asString());
168 } 194 }
169} 195}
170 196
197// static
171void LLFloaterBuildOptions::onTexturePickerCommit(LLUICtrl* ctrl, void* userdata) 198void LLFloaterBuildOptions::onTexturePickerCommit(LLUICtrl* ctrl, void* userdata)
172{ 199{
200 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
201
173 LLTextureCtrl* image_ctrl = (LLTextureCtrl*)ctrl; 202 LLTextureCtrl* image_ctrl = (LLTextureCtrl*)ctrl;
174 if(image_ctrl) 203 if(image_ctrl)
175 { 204 {
176 gSavedPerAccountSettings.setString("BuildPrefs_Texture", image_ctrl->getImageAssetID().asString()); 205 self->setTexture(image_ctrl->getImageAssetID());
206 /*gSavedPerAccountSettings.setString("BuildPrefs_Texture", image_ctrl->getImageAssetID().asString());*/
207 }
208}
209
210// static
211void LLFloaterBuildOptions::onClickOK(void* userdata)
212{
213 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
214 self->apply();
215 self->close();
216}
217
218// static
219void LLFloaterBuildOptions::onClickApply(void* userdata)
220{
221 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
222 self->apply();
223}
224
225// static
226void LLFloaterBuildOptions::onClickCancel(void* userdata)
227{
228 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
229 self->cancel();
230}
231
232// static
233void LLFloaterBuildOptions::onClickClear(void* userdata)
234{
235 // Clear the inventory item
236 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
237 //gSavedPerAccountSettings.setString("BuildPrefs_Item", LLUUID::null);
238 //gSavedPerAccountSettings.getControl("BuildPrefs_Item")->resetToDefault(false);
239
240 self->setItem(LLUUID::null);
241 self->refreshItem();
242}
243
244// static
245void LLFloaterBuildOptions::onClickReset(void* userdata)
246{
247 // Reset to defaults
248 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
249 self->reset();
250 self->refresh();
251}
252
253void LLFloaterBuildOptions::apply()
254{
255 gSavedPerAccountSettings.setBOOL("BuildPrefs_ActualRoot", childGetValue("BuildPrefsActualRoot_toggle").asBoolean() );
256 gSavedPerAccountSettings.setBOOL("BuildPrefs_PivotIsPercent", childGetValue("PivotPercToggle").asBoolean() );
257 gSavedPerAccountSettings.setBOOL("BuildPrefs_FullBright", childGetValue("FBToggle").asBoolean() );
258 gSavedPerAccountSettings.setBOOL("BuildPrefs_EmbedItem", childGetValue("BuildPrefsEmbedItem").asBoolean() );
259 gSavedPerAccountSettings.setBOOL("BuildPrefs_Physical", childGetValue("PhysicalToggle").asBoolean() );
260 gSavedPerAccountSettings.setBOOL("BuildPrefs_Temporary", childGetValue("TemporaryToggle").asBoolean() );
261 gSavedPerAccountSettings.setBOOL("BuildPrefs_Phantom", childGetValue("PhantomToggle").asBoolean() );
262
263 gSavedPerAccountSettings.setF32("BuildPrefs_PivotZ", childGetValue("Z pos").asReal() );
264 gSavedPerAccountSettings.setF32("BuildPrefs_PivotY", childGetValue("Y pos").asReal() );
265 gSavedPerAccountSettings.setF32("BuildPrefs_PivotX", childGetValue("X pos").asReal() );
266 gSavedPerAccountSettings.setF32("BuildPrefs_Glow", childGetValue("glow").asReal() );
267 gSavedPerAccountSettings.setF32("BuildPrefs_Alpha", childGetValue("alpha").asReal() );
268 gSavedPerAccountSettings.setF32("BuildPrefs_Zsize", childGetValue("Z size").asReal() );
269 gSavedPerAccountSettings.setF32("BuildPrefs_Ysize", childGetValue("Y size").asReal() );
270 gSavedPerAccountSettings.setF32("BuildPrefs_Xsize", childGetValue("X size").asReal() );
271
272 gSavedPerAccountSettings.setString("BuildPrefs_Shiny", getChild<LLComboBox>("combobox shininess")->getValue().asString() );
273 gSavedPerAccountSettings.setString("BuildPrefs_Material", getChild<LLComboBox>("material")->getValue().asString() );
274
275 gSavedPerAccountSettings.setColor4("BuildPrefs_Color", getChild<LLColorSwatchCtrl>("colorswatch")->get());
276
277 if (mBuildItemUUID != LLSD(gSavedPerAccountSettings.getString("BuildPrefs_Item")) )
278 {
279 gSavedPerAccountSettings.setString("BuildPrefs_Item", mBuildItemUUID.asString() );
280 }
281
282 if (mBuildTextureUUID != LLSD(gSavedPerAccountSettings.getString("BuildPrefs_Texture")) )
283 {
284 gSavedPerAccountSettings.setString("BuildPrefs_Texture", mBuildTextureUUID.asString() );
285 }
286
287 gSavedSettings.setBOOL("RenderHighlightSelections", childGetValue("BuildPrefsRenderHighlight_toggle").asBoolean() );
288 gSavedSettings.setBOOL("RezWithLandGroup", childGetValue("grouplandrez").asBoolean() );
289 gSavedSettings.setBOOL("GridSubUnit", childGetValue("GridSubUnit").asBoolean() );
290 gSavedSettings.setBOOL("GridCrossSections", childGetValue("GridCrossSection").asBoolean() );
291
292 gSavedSettings.setF32("GridResolution", childGetValue("GridResolution").asReal() );
293 gSavedSettings.setF32("GridDrawSize", childGetValue("GridDrawSize").asReal() );
294 gSavedSettings.setF32("GridOpacity", childGetValue("GridOpacity").asReal() );
295}
296
297void LLFloaterBuildOptions::cancel()
298{
299 close();
300}
301
302void LLFloaterBuildOptions::reset()
303{
304 getChild<LLComboBox>("material")->setSimple(gSavedPerAccountSettings.getControl("BuildPrefs_Material")->getDefault().asString() );
305 getChild<LLComboBox>("combobox shininess")->setSimple(gSavedPerAccountSettings.getControl("BuildPrefs_Shiny")->getDefault().asString() );
306
307 childSetValue("BuildPrefsActualRoot_toggle", gSavedPerAccountSettings.getControl("BuildPrefs_ActualRoot")->getDefault() );
308 childSetValue("PivotPercToggle", gSavedPerAccountSettings.getControl("BuildPrefs_PivotIsPercent")->getDefault() );
309 childSetValue("FBToggle", gSavedPerAccountSettings.getControl("BuildPrefs_FullBright")->getDefault() );
310 childSetValue("BuildPrefsEmbedItem", gSavedPerAccountSettings.getControl("BuildPrefs_EmbedItem")->getDefault() );
311 childSetValue("PhysicalToggle", gSavedPerAccountSettings.getControl("BuildPrefs_Physical")->getDefault() );
312 childSetValue("TemporaryToggle", gSavedPerAccountSettings.getControl("BuildPrefs_Temporary")->getDefault() );
313 childSetValue("PhantomToggle", gSavedPerAccountSettings.getControl("BuildPrefs_Phantom")->getDefault() );
314
315 childSetValue("Z pos", gSavedPerAccountSettings.getControl("BuildPrefs_PivotZ")->getDefault() );
316 childSetValue("Y pos", gSavedPerAccountSettings.getControl("BuildPrefs_PivotY")->getDefault() );
317 childSetValue("X pos", gSavedPerAccountSettings.getControl("BuildPrefs_PivotX")->getDefault() );
318 childSetValue("glow", gSavedPerAccountSettings.getControl("BuildPrefs_Glow")->getDefault() );
319 childSetValue("alpha", gSavedPerAccountSettings.getControl("BuildPrefs_Alpha")->getDefault() );
320 childSetValue("Z size", gSavedPerAccountSettings.getControl("BuildPrefs_Zsize")->getDefault() );
321 childSetValue("Y size", gSavedPerAccountSettings.getControl("BuildPrefs_Ysize")->getDefault() );
322 childSetValue("X size", gSavedPerAccountSettings.getControl("BuildPrefs_Xsize")->getDefault() );
323
324 getChild<LLColorSwatchCtrl>("colorswatch")->set(gSavedPerAccountSettings.getControl("BuildPrefs_Color")->getDefault(), TRUE);
325 getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault()) );
326
327 mBuildItemUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Item")->getDefault();
328 mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault();
329
330 childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getControl("RenderHighlightSelections")->getDefault() );
331 childSetValue("grouplandrez", gSavedSettings.getControl("RezWithLandGroup")->getDefault() );
332 childSetValue("GridSubUnit", gSavedSettings.getControl("GridSubUnit")->getDefault() );
333 childSetValue("GridCrossSection", gSavedSettings.getControl("GridCrossSections")->getDefault() );
334
335 childSetValue("GridResolution", gSavedSettings.getControl("GridResolution")->getDefault() );
336 childSetValue("GridDrawSize", gSavedSettings.getControl("GridDrawSize")->getDefault() );
337 childSetValue("GridOpacity", gSavedSettings.getControl("GridOpacity")->getDefault() );
338}
339
340void LLFloaterBuildOptions::refresh()
341{
342
343}
344
345void LLFloaterBuildOptions::setItem(const LLUUID& item)
346{
347 mBuildItemUUID = item;
348}
349
350void LLFloaterBuildOptions::setTexture(const LLUUID& texture)
351{
352 mBuildTextureUUID = texture;
353}
354
355void LLFloaterBuildOptions::refreshItem()
356{
357 if (LLStartUp::getStartupState() == STATE_STARTED)
358 {
359 if (mBuildItemUUID.isNull())
360 {
361 childSetValue("build_item_add_disp_rect_txt", "Currently not set");
362 }
363 else
364 {
365 LLViewerInventoryItem* item = gInventory.getItem(mBuildItemUUID);
366 if (item)
367 {
368 childSetValue("build_item_add_disp_rect_txt", "Currently set to: "+item->getName());
369 }
370
371 else
372 {
373 childSetValue("build_item_add_disp_rect_txt", "Currently set to a item not on this account");
374 }
375 }
376 }
377 else
378 {
379 childSetValue("build_item_add_disp_rect_txt", "Not logged in");
177 } 380 }
178} 381}
diff --git a/linden/indra/newview/llfloaterbuildoptions.h b/linden/indra/newview/llfloaterbuildoptions.h
index 50599dd..c776055 100644
--- a/linden/indra/newview/llfloaterbuildoptions.h
+++ b/linden/indra/newview/llfloaterbuildoptions.h
@@ -5,6 +5,7 @@
5 * $LicenseInfo:firstyear=2002&license=viewergpl$ 5 * $LicenseInfo:firstyear=2002&license=viewergpl$
6 * 6 *
7 * Copyright (c) 2002-2009, Linden Research, Inc. 7 * Copyright (c) 2002-2009, Linden Research, Inc.
8 * 2010, McCabe Maxsted
8 * 9 *
9 * Second Life Viewer Source Code 10 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 11 * The source code in this file ("Source Code") is provided by Linden Lab
@@ -40,8 +41,8 @@
40 41
41#include "llfloater.h" 42#include "llfloater.h"
42 43
43class LLViewerInventoryItem;
44class InvDropTarget; 44class InvDropTarget;
45class LLViewerInventoryItem;
45 46
46class LLFloaterBuildOptions 47class LLFloaterBuildOptions
47: public LLFloater 48: public LLFloater
@@ -57,15 +58,33 @@ public:
57 static LLFloaterBuildOptions* getInstance(); 58 static LLFloaterBuildOptions* getInstance();
58 static BOOL visible(void*); 59 static BOOL visible(void*);
59 60
61 void apply();
62 void cancel();
63 void refresh();
64 void reset();
65
66 void setItem(const LLUUID& item);
67 void setTexture(const LLUUID& texture);
68
60protected: 69protected:
61 static LLFloaterBuildOptions* sInstance; 70 static LLFloaterBuildOptions* sInstance;
62 71
63private: 72private:
64 static InvDropTarget* mBuildObjectDropTarget; 73 static InvDropTarget* sBuildObjectDropTarget;
74 LLUUID mBuildItemUUID;
75 LLUUID mBuildTextureUUID;
65 76
66 static void onTexturePickerCommit(LLUICtrl* ctrl, void* userdata); 77 static void onTexturePickerCommit(LLUICtrl* ctrl, void* userdata);
67 static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata); 78 static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata);
68 static void BuildAutoResponseItemDrop(LLViewerInventoryItem* item); 79 static void BuildAutoResponseItemDrop(LLViewerInventoryItem* item);
80
81 static void onClickOK(void* userdata);
82 static void onClickApply(void* userdata);
83 static void onClickCancel(void* userdata);
84 static void onClickClear(void* userdata);
85 static void onClickReset(void* userdata);
86
87 void refreshItem();
69}; 88};
70 89
71#endif 90#endif
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 cdd5dc1..298805d 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,6 +1,6 @@
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="355" min_height="355" 3 can_resize="false" follows="right" height="370" min_height="370"
4 min_width="530" mouse_opaque="true" name="build options floater" 4 min_width="530" mouse_opaque="true" name="build options floater"
5 rect_control="FloaterBuildOptionsRect" title="Advanced Build Options" width="530"> 5 rect_control="FloaterBuildOptionsRect" title="Advanced Build Options" width="530">
6 6
@@ -10,23 +10,23 @@
10 bottom_delta="110" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall" 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" 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> 12 name="text_box7" v_pad="0" width="150"> Grid Options</text>
13 <spinner bottom="-60" control_name="GridResolution" decimal_digits="3" 13 <spinner bottom="-60" decimal_digits="3"
14 follows="left|top" height="16" increment="0.1" initial_val="1" 14 follows="left|top" height="16" increment="0.1" initial_val="1"
15 label="Grid Units (m)" label_width="90" left="21" max_val="5" 15 label="Grid Units (m)" label_width="90" left="21" max_val="5"
16 min_val="0.01" mouse_opaque="true" name="GridResolution" width="155" /> 16 min_val="0.01" mouse_opaque="true" name="GridResolution" width="155" />
17 <spinner bottom_delta="-20" control_name="GridDrawSize" decimal_digits="1" 17 <spinner bottom_delta="-20" decimal_digits="1"
18 follows="left|top" height="16" increment="0.5" initial_val="5" 18 follows="left|top" height="16" increment="0.5" initial_val="5"
19 label="Grid Extents (m)" label_width="90" left_delta="0" max_val="50" 19 label="Grid Extents (m)" label_width="90" left_delta="0" max_val="50"
20 min_val="1" mouse_opaque="true" name="GridDrawSize" width="155" /> 20 min_val="1" mouse_opaque="true" name="GridDrawSize" width="155" />
21 <check_box bottom_delta="-20" control_name="GridSubUnit" follows="left|top" 21 <check_box bottom_delta="-20" follows="left|top"
22 font="SansSerifSmall" height="16" initial_value="false" 22 font="SansSerifSmall" height="16" initial_value="false"
23 label="Sub-Unit Snapping" left_delta="0" mouse_opaque="true" 23 label="Sub-Unit Snapping" left_delta="0" mouse_opaque="true"
24 name="GridSubUnit" width="200" /> 24 name="GridSubUnit" width="200" />
25 <check_box bottom_delta="-20" control_name="GridCrossSections" follows="left|top" 25 <check_box bottom_delta="-20" follows="left|top"
26 font="SansSerifSmall" height="16" initial_value="false" 26 font="SansSerifSmall" height="16" initial_value="false"
27 label="Show Cross Sections" left_delta="0" mouse_opaque="true" 27 label="Show Cross Sections" left_delta="0" mouse_opaque="true"
28 name="GridCrossSection" width="200" /> 28 name="GridCrossSection" width="200" />
29 <slider bottom_delta="-20" can_edit_text="false" control_name="GridOpacity" 29 <slider bottom_delta="-20" can_edit_text="false"
30 decimal_digits="3" follows="left" height="16" increment="0.05" 30 decimal_digits="3" follows="left" height="16" increment="0.05"
31 initial_val="0.7" label="Grid Opacity" left_delta="0" max_val="1" min_val="0" 31 initial_val="0.7" label="Grid Opacity" left_delta="0" max_val="1" min_val="0"
32 mouse_opaque="true" name="GridOpacity" show_text="false" value="0.7" 32 mouse_opaque="true" name="GridOpacity" show_text="false" value="0.7"
@@ -53,26 +53,25 @@
53 53
54 <spinner bottom="-200" decimal_digits="5" follows="left|top" height="16" increment="0.05" 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" 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"/> 56 mouse_opaque="true" name="X size" width="110" />
57 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05" 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" 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"/> 59 mouse_opaque="true" name="Y size" width="110" />
60 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05" 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" 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"/> 62 mouse_opaque="true" name="Z size" width="110" />
63 63
64 <check_box bottom="-200" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 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" 65 label="Phantom" left="154" mouse_opaque="true" name="PhantomToggle" radio_style="false"
66 width="100" control_name="BuildPrefs_Phantom"/> 66 width="100" />
67 <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"
68 label="Physical" left_delta="0" mouse_opaque="true" name="PhysicalToggle" radio_style="false" 68 label="Physical" left_delta="0" mouse_opaque="true" name="PhysicalToggle" radio_style="false"
69 width="100" control_name="BuildPrefs_Physical"/> 69 width="100" />
70 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 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" 71 label="Temporary" left_delta="0" mouse_opaque="true" name="TemporaryToggle" radio_style="false"
72 width="100" control_name="BuildPrefs_Temporary"/> 72 width="100" />
73 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="1" follows="left|top" height="18" 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" 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> 75 <combo_item name="Stone" value="Stone">Stone</combo_item>
77 <combo_item name="Metal" value="Metal">Metal</combo_item> 76 <combo_item name="Metal" value="Metal">Metal</combo_item>
78 <combo_item name="Glass" value="Glass">Glass</combo_item> 77 <combo_item name="Glass" value="Glass">Glass</combo_item>
@@ -84,25 +83,24 @@
84 83
85 <texture_picker allow_no_texture="false" bottom="-265" can_apply_immediately="true" default_image_name="Default" 84 <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" 85 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" 86 name="texture control" tool_tip="Click to choose a picture"
88 width="64"/> 87 width="64"/>
89 <color_swatch border_color="0.45098, 0.517647, 0.607843, 1" bottom_delta="0" can_apply_immediately="true" 88 <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" 89 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" 90 mouse_opaque="true" name="colorswatch" tool_tip="Click to open Color Picker" width="64" />
92 control_name="BuildPrefs_Color"/>
93 91
94 <spinner bottom="-200" decimal_digits="0" follows="left|top" height="16" increment="1" 92 <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" 93 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"/> 94 mouse_opaque="true" name="alpha" width="90" />
97 <spinner bottom_delta="-20" enabled="true" decimal_digits="2" follows="left|top" height="16" 95 <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" 96 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"/> 97 min_val="0" mouse_opaque="true" name="glow" width="90" />
100 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 98 <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" 99 label="Full Bright" left_delta="0" mouse_opaque="true" name="FBToggle" radio_style="false"
102 width="100" control_name="BuildPrefs_FullBright"/> 100 width="100" />
103 <combo_box allow_text_entry="false" bottom_delta="-20" follows="left|top" height="18" left_delta="0" 101 <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" 102 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"> 103 width="90">
106 <combo_item name="None" value="None"> None</combo_item> 104 <combo_item name="None" value="None"> None</combo_item>
107 <combo_item name="Low" value="Low"> Low</combo_item> 105 <combo_item name="Low" value="Low"> Low</combo_item>
108 <combo_item name="Medium" value="Medium"> Medium</combo_item> 106 <combo_item name="Medium" value="Medium"> Medium</combo_item>
@@ -117,14 +115,17 @@
117 v_pad="2" width="400"> Drop an inventory item here to have it added to the prim contents.</text> 115 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" 116 <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"/> 117 mouse_opaque="false" name="build_item_add_disp_rect" width="400"/>
118 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
119 label="Clear Item" left_delta="405" mouse_opaque="true"
120 name="btn_clear" scale_image="true" width="90" />
120 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0" 121 <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 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 height="16" left="14" mouse_opaque="true" name="build_item_add_disp_rect_txt" tool_tip=""
123 v_pad="2" width="400"> Currently set to: ITEM</text> 124 v_pad="2" width="400"> Currently set to: ITEM</text>
124 <check_box name="BuildPrefsEmbedItem" bottom_delta="-25" enabled="true" 125 <check_box name="BuildPrefsEmbedItem" bottom_delta="-25" enabled="true"
125 follows="left|top" font="SansSerifSmall" height="16" 126 follows="left|top" font="SansSerifSmall" height="16"
126 initial_value="false" label="Embed an item into the newly created object" left_delta="0" 127 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 mouse_opaque="true" radio_style="false" width="270" />
128 129
129 <view_border bevel_style="none" border_thickness="1" bottom="-145" follows="top|left" height="105" 130 <view_border bevel_style="none" border_thickness="1" bottom="-145" follows="top|left" height="105"
130 left="198" name="PivotBorder" width="135"/> 131 left="198" name="PivotBorder" width="135"/>
@@ -134,28 +135,41 @@
134 name="text_box6" v_pad="0" width="150"> Pivot Point</text> 135 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 <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 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 min_val="-256" name="X pos" width="120" />
138 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05" 139 <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 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 min_val="-256" name="Y pos" width="120" />
141 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05" 142 <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 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 min_val="-256" name="Z pos" width="120" />
144 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 145 <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 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 name="PivotPercToggle" radio_style="false" width="100" />
147 148
148 <check_box bottom_delta="60" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 149 <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 initial_value="true" label="Highlight selected prims" left_delta="143"
150 mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle" control_name="RenderHighlightSelections" 151 mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle"
151 radio_style="false" width="270"/> 152 radio_style="false" width="270"/>
152 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 153 <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 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 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 name="BuildPrefsActualRoot_toggle" radio_style="false" width="270" />
156 radio_style="false" width="270"/>
157 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 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" 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)" 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"/> 160 name="grouplandrez" radio_style="false" width="270" />
161
162 <button bottom="2" enabled="true" follows="right|bottom" font="SansSerif"
163 halign="center" height="20" label="Cancel" right="-4"
164 mouse_opaque="true" name="btn_cancel" scale_image="true" width="90" />
165 <button bottom_delta="0" enabled="true" follows="right|bottom" font="SansSerif"
166 halign="center" height="20" label="Apply" left_delta="-93"
167 mouse_opaque="true" name="btn_apply" scale_image="true" width="90" />
168 <button bottom_delta="0" enabled="true" follows="right|bottom" font="SansSerif"
169 halign="center" height="20" label="OK" left_delta="-93"
170 mouse_opaque="true" name="btn_ok" scale_image="true" width="90" />
171 <button bottom_delta="0" enabled="true" follows="left|bottom" font="SansSerif"
172 halign="center" height="20" label="Reset to Defaults"
173 left="2" mouse_opaque="true" name="btn_reset" scale_image="true"
174 width="160" />
161</floater> 175</floater>