Merge
commit
cccb3a541c
|
|
@ -306,6 +306,30 @@ F32 LLMultiSlider::getSliderValueFromPos(S32 xpos, S32 ypos) const
|
|||
return((t * (mMaxValue - mMinValue)) + mMinValue);
|
||||
}
|
||||
|
||||
|
||||
LLRect LLMultiSlider::getSliderThumbRect(const std::string& name) const
|
||||
{
|
||||
auto it = mThumbRects.find(name);
|
||||
if (it != mThumbRects.end())
|
||||
return (*it).second;
|
||||
return LLRect();
|
||||
}
|
||||
|
||||
void LLMultiSlider::setSliderThumbImage(const std::string &name)
|
||||
{
|
||||
if (!name.empty())
|
||||
{
|
||||
mThumbImagep = LLUI::getUIImage(name);
|
||||
}
|
||||
else
|
||||
clearSliderThumbImage();
|
||||
}
|
||||
|
||||
void LLMultiSlider::clearSliderThumbImage()
|
||||
{
|
||||
mThumbImagep = NULL;
|
||||
}
|
||||
|
||||
void LLMultiSlider::resetCurSlider()
|
||||
{
|
||||
mCurSlider = LLStringUtil::null;
|
||||
|
|
|
|||
|
|
@ -80,6 +80,11 @@ public:
|
|||
void setSliderValue(const std::string& name, F32 value, BOOL from_event = FALSE);
|
||||
F32 getSliderValue(const std::string& name) const;
|
||||
F32 getSliderValueFromPos(S32 xpos, S32 ypos) const;
|
||||
LLRect getSliderThumbRect(const std::string& name) const;
|
||||
|
||||
void setSliderThumbImage(const std::string &name);
|
||||
void clearSliderThumbImage();
|
||||
|
||||
|
||||
const std::string& getCurSlider() const { return mCurSlider; }
|
||||
F32 getCurSliderValue() const { return getSliderValue(mCurSlider); }
|
||||
|
|
@ -112,6 +117,7 @@ public:
|
|||
F32 getOverlapThreshold() { return mOverlapThreshold; }
|
||||
bool canAddSliders() { return mValue.size() < mMaxNumSliders; }
|
||||
|
||||
|
||||
protected:
|
||||
LLSD mValue;
|
||||
std::string mCurSlider;
|
||||
|
|
|
|||
|
|
@ -107,7 +107,11 @@ public:
|
|||
void setMaxValue(F32 max_value) {mMultiSlider->setMaxValue(max_value);}
|
||||
void setIncrement(F32 increment) {mMultiSlider->setIncrement(increment);}
|
||||
|
||||
F32 getSliderValueFromPos(S32 x, S32 y) const { return mMultiSlider->getSliderValueFromPos(x, y); }
|
||||
F32 getSliderValueFromPos(S32 x, S32 y) const { return mMultiSlider->getSliderValueFromPos(x, y); }
|
||||
LLRect getSliderThumbRect(const std::string &name) const { return mMultiSlider->getSliderThumbRect(name); }
|
||||
|
||||
void setSliderThumbImage(const std::string &name) { mMultiSlider->setSliderThumbImage(name); }
|
||||
void clearSliderThumbImage() { mMultiSlider->clearSliderThumbImage(); }
|
||||
|
||||
/// for adding and deleting sliders
|
||||
const std::string& addSlider();
|
||||
|
|
|
|||
|
|
@ -1600,6 +1600,7 @@ LLEnvironment::EnvironmentInfo::ptr_t LLEnvironment::EnvironmentInfo::extract(LL
|
|||
LLSD daynames = environment[KEY_DAYNAMES];
|
||||
if (daynames.isArray())
|
||||
{
|
||||
pinfo->mDayCycleName.clear();
|
||||
for (S32 index = 0; index < pinfo->mNameList.size(); ++index)
|
||||
{
|
||||
pinfo->mNameList[index] = daynames[index].asString();
|
||||
|
|
@ -1607,9 +1608,19 @@ LLEnvironment::EnvironmentInfo::ptr_t LLEnvironment::EnvironmentInfo::extract(LL
|
|||
}
|
||||
else if (daynames.isString())
|
||||
{
|
||||
for (std::string &name: pinfo->mNameList)
|
||||
{
|
||||
name.clear();
|
||||
}
|
||||
|
||||
pinfo->mDayCycleName = daynames.asString();
|
||||
}
|
||||
}
|
||||
else if (pinfo->mDayCycle)
|
||||
{
|
||||
pinfo->mDayCycleName = pinfo->mDayCycle->getName();
|
||||
}
|
||||
|
||||
|
||||
if (environment.has(KEY_ENVVERSION))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -380,7 +380,10 @@ private:
|
|||
mDayOffset(day_offset),
|
||||
mAltitudes(altitudes),
|
||||
mDayName()
|
||||
{}
|
||||
{
|
||||
if (mDayp)
|
||||
mDayName = mDayp->getName();
|
||||
}
|
||||
|
||||
UpdateInfo(LLUUID settings_asset, std::string name, S32 day_length, S32 day_offset, altitudes_vect_t altitudes) :
|
||||
mDayp(),
|
||||
|
|
|
|||
|
|
@ -495,6 +495,20 @@ void LLFloaterEditExtDayCycle::setEditDefaultDayCycle()
|
|||
[this](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoaded(asset_id, settings, status); });
|
||||
}
|
||||
|
||||
std::string LLFloaterEditExtDayCycle::getEditName() const
|
||||
{
|
||||
if (mEditDay)
|
||||
return mEditDay->getName();
|
||||
return "new";
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::setEditName(const std::string &name)
|
||||
{
|
||||
if (mEditDay)
|
||||
mEditDay->setName(name);
|
||||
getChild<LLLineEditor>(TXT_DAY_NAME)->setText(name);
|
||||
}
|
||||
|
||||
/* virtual */
|
||||
BOOL LLFloaterEditExtDayCycle::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent)
|
||||
{
|
||||
|
|
@ -951,6 +965,11 @@ void LLFloaterEditExtDayCycle::selectTrack(U32 track_index, bool force )
|
|||
bool show_water = (mCurrentTrack == LLSettingsDay::TRACK_WATER);
|
||||
mSkyTabLayoutContainer->setVisible(!show_water);
|
||||
mWaterTabLayoutContainer->setVisible(show_water);
|
||||
|
||||
std::string iconname = (show_water) ? "Inv_SettingsWater" : "Inv_SettingsSky";
|
||||
|
||||
mFramesSlider->setSliderThumbImage(iconname);
|
||||
|
||||
updateSlider();
|
||||
updateLabels();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,6 +92,8 @@ public:
|
|||
|
||||
void setEditDayCycle(const LLSettingsDay::ptr_t &pday);
|
||||
void setEditDefaultDayCycle();
|
||||
std::string getEditName() const;
|
||||
void setEditName(const std::string &name);
|
||||
LLUUID getEditingAssetId() { return mEditDay ? mEditDay->getAssetId() : LLUUID::null; }
|
||||
LLUUID getEditingInventoryId() { return mInventoryId; }
|
||||
|
||||
|
|
|
|||
|
|
@ -3265,9 +3265,10 @@ BOOL LLPanelLandEnvironment::postBuild()
|
|||
if (!LLPanelEnvironmentInfo::postBuild())
|
||||
return FALSE;
|
||||
|
||||
getChild<LLUICtrl>(RDO_USEDEFAULT)->setLabelArg("[USEDEFAULT]", getString(STR_LABEL_USEREGION));
|
||||
getChild<LLUICtrl>(BTN_USEDEFAULT)->setLabelArg("[USEDEFAULT]", getString(STR_LABEL_USEREGION));
|
||||
getChild<LLUICtrl>(CHK_ALLOWOVERRIDE)->setVisible(FALSE);
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(FALSE);
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -3375,7 +3376,8 @@ bool LLPanelLandEnvironment::canEdit()
|
|||
LLParcel *parcel = getParcel();
|
||||
if (!parcel)
|
||||
return false;
|
||||
return LLEnvironment::instance().canAgentUpdateParcelEnvironment(parcel);
|
||||
|
||||
return LLEnvironment::instance().canAgentUpdateParcelEnvironment(parcel) && mAllowOverride;
|
||||
}
|
||||
|
||||
S32 LLPanelLandEnvironment::getParcelId()
|
||||
|
|
|
|||
|
|
@ -188,7 +188,6 @@ public:
|
|||
virtual bool canEdit() override { return LLEnvironment::instance().canAgentUpdateRegionEnvironment(); }
|
||||
|
||||
bool refreshFromRegion(LLViewerRegion* region);
|
||||
void refreshFromEstate();
|
||||
|
||||
virtual BOOL postBuild() override;
|
||||
virtual void onOpen(const LLSD& key) override {};
|
||||
|
|
@ -198,16 +197,14 @@ public:
|
|||
protected:
|
||||
static const U32 DIRTY_FLAG_OVERRIDE;
|
||||
|
||||
virtual void doApply() override;
|
||||
|
||||
virtual void refreshFromSource() override;
|
||||
|
||||
bool doUpdateEstate(const LLSD& notification, const LLSD& response);
|
||||
bool confirmUpdateEstateEnvironment(const LLSD& notification, const LLSD& response);
|
||||
|
||||
void onChkAllowOverride(bool value);
|
||||
|
||||
private:
|
||||
bool mAllowOverride;
|
||||
bool mAllowOverrideRestore;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -3403,7 +3400,7 @@ const U32 LLPanelRegionEnvironment::DIRTY_FLAG_OVERRIDE(0x01 << 4);
|
|||
|
||||
LLPanelRegionEnvironment::LLPanelRegionEnvironment():
|
||||
LLPanelEnvironmentInfo(),
|
||||
mAllowOverride(false)
|
||||
mAllowOverrideRestore(false)
|
||||
{
|
||||
LLEstateInfoModel& estate_info = LLEstateInfoModel::instance();
|
||||
estate_info.setCommitCallback(boost::bind(&LLPanelRegionEnvironment::refreshFromEstate, this));
|
||||
|
|
@ -3416,7 +3413,7 @@ BOOL LLPanelRegionEnvironment::postBuild()
|
|||
if (!LLPanelEnvironmentInfo::postBuild())
|
||||
return FALSE;
|
||||
|
||||
getChild<LLUICtrl>(RDO_USEDEFAULT)->setLabelArg("[USEDEFAULT]", getString(STR_LABEL_USEDEFAULT));
|
||||
getChild<LLUICtrl>(BTN_USEDEFAULT)->setLabelArg("[USEDEFAULT]", getString(STR_LABEL_USEDEFAULT));
|
||||
getChild<LLUICtrl>(CHK_ALLOWOVERRIDE)->setVisible(TRUE);
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(TRUE);
|
||||
|
||||
|
|
@ -3436,7 +3433,6 @@ void LLPanelRegionEnvironment::refresh()
|
|||
return;
|
||||
}
|
||||
|
||||
refreshFromEstate();
|
||||
LLPanelEnvironmentInfo::refresh();
|
||||
|
||||
getChild<LLUICtrl>(CHK_ALLOWOVERRIDE)->setValue(mAllowOverride);
|
||||
|
|
@ -3463,13 +3459,6 @@ bool LLPanelRegionEnvironment::refreshFromRegion(LLViewerRegion* region)
|
|||
return true;
|
||||
}
|
||||
|
||||
void LLPanelRegionEnvironment::refreshFromEstate()
|
||||
{
|
||||
const LLEstateInfoModel& estate_info = LLEstateInfoModel::instance();
|
||||
|
||||
mAllowOverride = estate_info.getAllowEnvironmentOverride();
|
||||
}
|
||||
|
||||
void LLPanelRegionEnvironment::refreshFromSource()
|
||||
{
|
||||
LL_DEBUGS("ENVIRONMENT") << "Requesting environment for region, known version " << mCurEnvVersion << LL_ENDL;
|
||||
|
|
@ -3487,31 +3476,7 @@ void LLPanelRegionEnvironment::refreshFromSource()
|
|||
setControlsEnabled(false);
|
||||
}
|
||||
|
||||
void LLPanelRegionEnvironment::doApply()
|
||||
{
|
||||
LLPanelEnvironmentInfo::doApply();
|
||||
|
||||
if (getIsDirtyFlag(DIRTY_FLAG_OVERRIDE))
|
||||
{
|
||||
LLNotification::Params params("ChangeLindenEstate");
|
||||
//params.functor.function(boost::bind(&LLPanelEstateInfo::doUpdateEstate, this, _1, _2));
|
||||
params.functor.function([this](const LLSD& notification, const LLSD& response) { doUpdateEstate(notification, response); });
|
||||
|
||||
if (LLPanelEstateInfo::isLindenEstate())
|
||||
{
|
||||
// trying to change reserved estate, warn
|
||||
LLNotifications::instance().add(params);
|
||||
}
|
||||
else
|
||||
{
|
||||
// for normal estates, just make the change
|
||||
LLNotifications::instance().forceResponse(params, 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
bool LLPanelRegionEnvironment::doUpdateEstate(const LLSD& notification, const LLSD& response)
|
||||
bool LLPanelRegionEnvironment::confirmUpdateEstateEnvironment(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
|
||||
|
|
@ -3530,6 +3495,9 @@ bool LLPanelRegionEnvironment::doUpdateEstate(const LLSD& notification, const LL
|
|||
break;
|
||||
|
||||
case 1:
|
||||
mAllowOverride = mAllowOverrideRestore;
|
||||
getChild<LLUICtrl>(CHK_ALLOWOVERRIDE)->setValue(mAllowOverride);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -3538,11 +3506,24 @@ bool LLPanelRegionEnvironment::doUpdateEstate(const LLSD& notification, const LL
|
|||
|
||||
void LLPanelRegionEnvironment::onChkAllowOverride(bool value)
|
||||
{
|
||||
if (!value)
|
||||
setDirtyFlag(DIRTY_FLAG_OVERRIDE);
|
||||
mAllowOverrideRestore = mAllowOverride;
|
||||
mAllowOverride = value;
|
||||
|
||||
LLNotification::Params params("ChangeLindenEstate");
|
||||
params.functor.function([this](const LLSD& notification, const LLSD& response) { confirmUpdateEstateEnvironment(notification, response); });
|
||||
|
||||
std::string notification("EstateParcelEnvironmentOverride");
|
||||
if (LLPanelEstateInfo::isLindenEstate())
|
||||
notification = "ChangeLindenEstate";
|
||||
|
||||
if (!value || LLPanelEstateInfo::isLindenEstate())
|
||||
{ // warn if turning off or a Linden Estate
|
||||
LLNotifications::instance().add(params);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("EstateParcelEnvironmentOverride");
|
||||
LLNotifications::instance().forceResponse(params, 0);
|
||||
}
|
||||
|
||||
setDirtyFlag(DIRTY_FLAG_OVERRIDE);
|
||||
mAllowOverride = value;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,6 +152,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
|
|||
mShowItemLinkOverlays(p.show_item_link_overlays),
|
||||
mShowEmptyMessage(p.show_empty_message),
|
||||
mSuppressFolderMenu(p.suppress_folder_menu),
|
||||
mSuppressOpenItemAction(false),
|
||||
mViewsInitialized(false),
|
||||
mInvFVBridgeBuilder(NULL),
|
||||
mInventoryViewModel(p.name),
|
||||
|
|
@ -1658,21 +1659,18 @@ BOOL LLInventoryPanel::handleKeyHere( KEY key, MASK mask )
|
|||
// Open selected items if enter key hit on the inventory panel
|
||||
if (mask == MASK_NONE)
|
||||
{
|
||||
|
||||
// @TODO$: Rider: This code is dead with Outbox, however should something similar be
|
||||
// done for VMM?
|
||||
//
|
||||
// //Don't allow attaching or opening items from Merchant Outbox
|
||||
// LLFolderViewItem* folder_item = mFolderRoot.get()->getCurSelectedItem();
|
||||
// if(folder_item)
|
||||
// {
|
||||
// LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
|
||||
// if(bridge && bridge->is() && (bridge->getInventoryType() != LLInventoryType::IT_CATEGORY))
|
||||
// {
|
||||
// return handled;
|
||||
// }
|
||||
// }
|
||||
|
||||
if (mSuppressOpenItemAction)
|
||||
{
|
||||
LLFolderViewItem* folder_item = mFolderRoot.get()->getCurSelectedItem();
|
||||
if(folder_item)
|
||||
{
|
||||
LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
|
||||
if(bridge && (bridge->getInventoryType() != LLInventoryType::IT_CATEGORY))
|
||||
{
|
||||
return handled;
|
||||
}
|
||||
}
|
||||
}
|
||||
LLInventoryAction::doToSelected(mInventory, mFolderRoot.get(), "open");
|
||||
handled = TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -243,6 +243,8 @@ public:
|
|||
void setSelectionByID(const LLUUID& obj_id, BOOL take_keyboard_focus);
|
||||
void updateSelection();
|
||||
|
||||
void setSuppressOpenItemAction(bool supress_open_item) { mSuppressOpenItemAction = supress_open_item; }
|
||||
|
||||
LLFolderViewModelInventory* getFolderViewModel() { return &mInventoryViewModel; }
|
||||
const LLFolderViewModelInventory* getFolderViewModel() const { return &mInventoryViewModel; }
|
||||
|
||||
|
|
@ -264,6 +266,7 @@ protected:
|
|||
bool mShowItemLinkOverlays; // Shows link graphic over inventory item icons
|
||||
bool mShowEmptyMessage;
|
||||
bool mSuppressFolderMenu;
|
||||
bool mSuppressOpenItemAction;
|
||||
|
||||
LLHandle<LLFolderView> mFolderRoot;
|
||||
LLScrollContainer* mScroller;
|
||||
|
|
|
|||
|
|
@ -54,23 +54,25 @@
|
|||
namespace
|
||||
{
|
||||
const std::string FLOATER_DAY_CYCLE_EDIT("env_edit_extdaycycle");
|
||||
|
||||
inline bool ends_with(std::string const & value, std::string const & ending)
|
||||
{
|
||||
if (ending.size() > value.size())
|
||||
return false;
|
||||
return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
const std::string LLPanelEnvironmentInfo::RDG_ENVIRONMENT_SELECT("rdg_environment_select");
|
||||
const std::string LLPanelEnvironmentInfo::RDO_USEDEFAULT("rdo_use_xxx_setting");
|
||||
const std::string LLPanelEnvironmentInfo::RDO_USEINV("rdo_use_inv_setting");
|
||||
const std::string LLPanelEnvironmentInfo::RDO_USECUSTOM("rdo_use_custom_setting");
|
||||
const std::string LLPanelEnvironmentInfo::EDT_INVNAME("edt_inventory_name");
|
||||
const std::string LLPanelEnvironmentInfo::BTN_SELECTINV("btn_select_inventory");
|
||||
const std::string LLPanelEnvironmentInfo::BTN_EDIT("btn_edit");
|
||||
const std::string LLPanelEnvironmentInfo::BTN_USEDEFAULT("btn_usedefault");
|
||||
const std::string LLPanelEnvironmentInfo::SLD_DAYLENGTH("sld_day_length");
|
||||
const std::string LLPanelEnvironmentInfo::SLD_DAYOFFSET("sld_day_offset");
|
||||
const std::string LLPanelEnvironmentInfo::SLD_ALTITUDES("sld_altitudes");
|
||||
const std::string LLPanelEnvironmentInfo::ICN_GROUND("icon_ground");
|
||||
const std::string LLPanelEnvironmentInfo::CHK_ALLOWOVERRIDE("chk_allow_override");
|
||||
const std::string LLPanelEnvironmentInfo::BTN_APPLY("btn_apply");
|
||||
const std::string LLPanelEnvironmentInfo::BTN_CANCEL("btn_cancel");
|
||||
const std::string LLPanelEnvironmentInfo::LBL_TIMEOFDAY("lbl_apparent_time");
|
||||
const std::string LLPanelEnvironmentInfo::PNL_SETTINGS("pnl_environment_config");
|
||||
const std::string LLPanelEnvironmentInfo::PNL_ENVIRONMENT_ALTITUDES("pnl_environment_altitudes");
|
||||
|
|
@ -86,6 +88,7 @@ const std::string LLPanelEnvironmentInfo::STR_ALTITUDE_DESCRIPTION("str_altitude
|
|||
const std::string LLPanelEnvironmentInfo::STR_NO_PARCEL("str_no_parcel");
|
||||
const std::string LLPanelEnvironmentInfo::STR_CROSS_REGION("str_cross_region");
|
||||
const std::string LLPanelEnvironmentInfo::STR_LEGACY("str_legacy");
|
||||
const std::string LLPanelEnvironmentInfo::STR_DISALLOWED("str_disallowed");
|
||||
|
||||
const U32 LLPanelEnvironmentInfo::DIRTY_FLAG_DAYCYCLE(0x01 << 0);
|
||||
const U32 LLPanelEnvironmentInfo::DIRTY_FLAG_DAYLENGTH(0x01 << 1);
|
||||
|
|
@ -111,9 +114,9 @@ const std::string alt_labels[] = {
|
|||
"alt2",
|
||||
"alt3",
|
||||
"ground",
|
||||
"water",
|
||||
};
|
||||
|
||||
|
||||
static LLDefaultChildRegistry::Register<LLSettingsDropTarget> r("settings_drop_target");
|
||||
|
||||
//=========================================================================
|
||||
|
|
@ -126,7 +129,8 @@ LLPanelEnvironmentInfo::LLPanelEnvironmentInfo():
|
|||
mNoEnvironment(false),
|
||||
mCurEnvVersion(INVALID_PARCEL_ENVIRONMENT_VERSION),
|
||||
mSettingsFloater(),
|
||||
mEditFloater()
|
||||
mEditFloater(),
|
||||
mAllowOverride(true)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -140,16 +144,17 @@ LLPanelEnvironmentInfo::~LLPanelEnvironmentInfo()
|
|||
|
||||
BOOL LLPanelEnvironmentInfo::postBuild()
|
||||
{
|
||||
getChild<LLUICtrl>(RDG_ENVIRONMENT_SELECT)->setCommitCallback([this](LLUICtrl *, const LLSD &){ onSwitchDefaultSelection(); });
|
||||
getChild<LLUICtrl>(BTN_USEDEFAULT)->setCommitCallback([this](LLUICtrl *, const LLSD &){ onBtnDefault(); });
|
||||
getChild<LLUICtrl>(BTN_SELECTINV)->setCommitCallback([this](LLUICtrl *, const LLSD &){ onBtnSelect(); });
|
||||
getChild<LLUICtrl>(BTN_EDIT)->setCommitCallback([this](LLUICtrl *, const LLSD &){ onBtnEdit(); });
|
||||
getChild<LLUICtrl>(BTN_APPLY)->setCommitCallback([this](LLUICtrl *, const LLSD &){ onBtnApply(); });
|
||||
getChild<LLUICtrl>(BTN_CANCEL)->setCommitCallback([this](LLUICtrl *, const LLSD &){ onBtnReset(); });
|
||||
|
||||
getChild<LLUICtrl>(SLD_DAYLENGTH)->setCommitCallback([this](LLUICtrl *, const LLSD &value) { onSldDayLengthChanged(value.asReal()); });
|
||||
getChild<LLSliderCtrl>(SLD_DAYLENGTH)->setSliderMouseUpCallback([this](LLUICtrl *, const LLSD &) { onDayLenOffsetMouseUp(); });
|
||||
getChild<LLUICtrl>(SLD_DAYOFFSET)->setCommitCallback([this](LLUICtrl *, const LLSD &value) { onSldDayOffsetChanged(value.asReal()); });
|
||||
getChild<LLSliderCtrl>(SLD_DAYOFFSET)->setSliderMouseUpCallback([this](LLUICtrl *, const LLSD &) { onDayLenOffsetMouseUp(); });
|
||||
|
||||
getChild<LLMultiSliderCtrl>(SLD_ALTITUDES)->setCommitCallback([this](LLUICtrl *cntrl, const LLSD &value) { onAltSliderCallback(cntrl, value); });
|
||||
getChild<LLMultiSliderCtrl>(SLD_ALTITUDES)->setSliderMouseUpCallback([this](LLUICtrl *, const LLSD &) { onAltSliderMouseUp(); });
|
||||
|
||||
mChangeMonitor = LLEnvironment::instance().setEnvironmentChanged([this](LLEnvironment::EnvSelection_t env, S32 version) { onEnvironmentChanged(env, version); });
|
||||
|
||||
|
|
@ -211,31 +216,31 @@ void LLPanelEnvironmentInfo::refresh()
|
|||
return;
|
||||
}
|
||||
|
||||
S32 rdo_selection = 0;
|
||||
if ((!mCurrentEnvironment->mDayCycle) ||
|
||||
((mCurrentEnvironment->mParcelId == INVALID_PARCEL_ID) && (mCurrentEnvironment->mDayCycle->getAssetId() == LLSettingsDay::GetDefaultAssetId() )))
|
||||
{
|
||||
getChild<LLUICtrl>(EDT_INVNAME)->setValue("");
|
||||
}
|
||||
else if (!mCurrentEnvironment->mDayCycle->getAssetId().isNull())
|
||||
{
|
||||
rdo_selection = 1;
|
||||
|
||||
LLUUID asset_id = mCurrentEnvironment->mDayCycle->getAssetId();
|
||||
|
||||
std::string inventoryname = getInventoryNameForAssetId(asset_id);
|
||||
|
||||
if (inventoryname.empty())
|
||||
inventoryname = "(" + mCurrentEnvironment->mDayCycle->getName() + ")";
|
||||
|
||||
getChild<LLUICtrl>(EDT_INVNAME)->setValue(inventoryname);
|
||||
}
|
||||
else
|
||||
{ // asset id is null so this is a custom environment
|
||||
rdo_selection = 2;
|
||||
getChild<LLUICtrl>(EDT_INVNAME)->setValue("");
|
||||
}
|
||||
getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->setSelectedIndex(rdo_selection);
|
||||
// S32 rdo_selection = 0;
|
||||
// if ((!mCurrentEnvironment->mDayCycle) ||
|
||||
// ((mCurrentEnvironment->mParcelId == INVALID_PARCEL_ID) && (mCurrentEnvironment->mDayCycle->getAssetId() == LLSettingsDay::GetDefaultAssetId() )))
|
||||
// {
|
||||
// getChild<LLUICtrl>(EDT_INVNAME)->setValue("");
|
||||
// }
|
||||
// else if (!mCurrentEnvironment->mDayCycle->getAssetId().isNull())
|
||||
// {
|
||||
// rdo_selection = 1;
|
||||
//
|
||||
// LLUUID asset_id = mCurrentEnvironment->mDayCycle->getAssetId();
|
||||
//
|
||||
// std::string inventoryname = getInventoryNameForAssetId(asset_id);
|
||||
//
|
||||
// if (inventoryname.empty())
|
||||
// inventoryname = "(" + mCurrentEnvironment->mDayCycle->getName() + ")";
|
||||
//
|
||||
// getChild<LLUICtrl>(EDT_INVNAME)->setValue(inventoryname);
|
||||
// }
|
||||
// else
|
||||
// { // asset id is null so this is a custom environment
|
||||
// rdo_selection = 2;
|
||||
// getChild<LLUICtrl>(EDT_INVNAME)->setValue("");
|
||||
// }
|
||||
// getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->setSelectedIndex(rdo_selection);
|
||||
|
||||
F32Hours daylength(mCurrentEnvironment->mDayLength);
|
||||
F32Hours dayoffset(mCurrentEnvironment->mDayOffset);
|
||||
|
|
@ -245,8 +250,8 @@ void LLPanelEnvironmentInfo::refresh()
|
|||
|
||||
getChild<LLSliderCtrl>(SLD_DAYLENGTH)->setValue(daylength.value());
|
||||
getChild<LLSliderCtrl>(SLD_DAYOFFSET)->setValue(dayoffset.value());
|
||||
getChild<LLSliderCtrl>(SLD_DAYLENGTH)->setEnabled(canEdit() && (rdo_selection != 0) && !mCurrentEnvironment->mIsLegacy);
|
||||
getChild<LLSliderCtrl>(SLD_DAYOFFSET)->setEnabled(canEdit() && (rdo_selection != 0) && !mCurrentEnvironment->mIsLegacy);
|
||||
// getChild<LLSliderCtrl>(SLD_DAYLENGTH)->setEnabled(canEdit() && (rdo_selection != 0) && !mCurrentEnvironment->mIsLegacy);
|
||||
// getChild<LLSliderCtrl>(SLD_DAYOFFSET)->setEnabled(canEdit() && (rdo_selection != 0) && !mCurrentEnvironment->mIsLegacy);
|
||||
|
||||
udpateApparentTimeOfDay();
|
||||
|
||||
|
|
@ -271,6 +276,28 @@ void LLPanelEnvironmentInfo::refresh()
|
|||
readjustAltLabels();
|
||||
}
|
||||
|
||||
updateAltLabel(alt_labels[3], 1, 0); // ground
|
||||
updateAltLabel(alt_labels[4], 0, 0); // water
|
||||
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::refreshFromEstate()
|
||||
{
|
||||
/*TODO: Bug!! estate_info seems stale if regain floater has not been opened.*/
|
||||
const LLEstateInfoModel& estate_info = LLEstateInfoModel::instance();
|
||||
|
||||
if (isRegion())
|
||||
{ // this should always work... but estate_info gives back false when it shouldn't for parcels
|
||||
bool oldAO = mAllowOverride;
|
||||
mAllowOverride = estate_info.getAllowEnvironmentOverride();
|
||||
if (oldAO != mAllowOverride)
|
||||
refresh();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Get rid of this when I solve the above.
|
||||
mAllowOverride = true;
|
||||
}
|
||||
}
|
||||
|
||||
std::string LLPanelEnvironmentInfo::getInventoryNameForAssetId(LLUUID asset_id)
|
||||
|
|
@ -282,6 +309,27 @@ std::string LLPanelEnvironmentInfo::getInventoryNameForAssetId(LLUUID asset_id)
|
|||
return name;
|
||||
}
|
||||
|
||||
|
||||
std::string LLPanelEnvironmentInfo::getNameForTrackIndex(S32 index)
|
||||
{
|
||||
std::string invname;
|
||||
|
||||
LL_WARNS("LAPRAS") << "mDayCycleName='" << mCurrentEnvironment->mDayCycleName << "'" << LL_ENDL;
|
||||
if (mCurrentEnvironment->mDayCycleName.empty())
|
||||
{
|
||||
invname = mCurrentEnvironment->mNameList[index];
|
||||
}
|
||||
else if (!mCurrentEnvironment->mDayCycle->isTrackEmpty(index))
|
||||
{
|
||||
invname = mCurrentEnvironment->mDayCycleName;
|
||||
}
|
||||
|
||||
if (invname.empty())
|
||||
invname = getString("str_empty");
|
||||
|
||||
return invname;
|
||||
}
|
||||
|
||||
LLFloaterSettingsPicker * LLPanelEnvironmentInfo::getSettingsPicker(bool create)
|
||||
{
|
||||
LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mSettingsFloater.get());
|
||||
|
|
@ -375,6 +423,11 @@ bool LLPanelEnvironmentInfo::setControlsEnabled(bool enabled)
|
|||
is_unavailable = true;
|
||||
getChild<LLTextBox>(TXT_DISABLED)->setText(getString(STR_CROSS_REGION));
|
||||
}
|
||||
else if (!isRegion() && !mAllowOverride)
|
||||
{
|
||||
is_unavailable = true;
|
||||
getChild<LLTextBox>(TXT_DISABLED)->setText(getString(STR_DISALLOWED));
|
||||
}
|
||||
|
||||
if (is_unavailable)
|
||||
{
|
||||
|
|
@ -391,26 +444,18 @@ bool LLPanelEnvironmentInfo::setControlsEnabled(bool enabled)
|
|||
getChild<LLUICtrl>(PNL_BUTTONS)->setVisible(true);
|
||||
getChild<LLUICtrl>(PNL_DISABLED)->setVisible(false);
|
||||
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(isRegion() && LLEnvironment::instance().isExtendedEnvironmentEnabled());
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(LLEnvironment::instance().isExtendedEnvironmentEnabled());
|
||||
|
||||
S32 rdo_selection = getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->getSelectedIndex();
|
||||
|
||||
bool can_enable = enabled && mCurrentEnvironment && mCurEnvVersion != INVALID_PARCEL_ENVIRONMENT_VERSION;
|
||||
getChild<LLUICtrl>(RDG_ENVIRONMENT_SELECT)->setEnabled(can_enable);
|
||||
getChild<LLUICtrl>(RDO_USEDEFAULT)->setEnabled(can_enable && !is_legacy);
|
||||
getChild<LLUICtrl>(RDO_USEINV)->setEnabled(false); // these two are selected automatically based on
|
||||
getChild<LLUICtrl>(RDO_USECUSTOM)->setEnabled(false);
|
||||
getChild<LLUICtrl>(EDT_INVNAME)->setEnabled(FALSE);
|
||||
bool can_enable = enabled && mCurrentEnvironment && (mCurEnvVersion != INVALID_PARCEL_ENVIRONMENT_VERSION);
|
||||
getChild<LLUICtrl>(BTN_SELECTINV)->setEnabled(can_enable && !is_legacy);
|
||||
getChild<LLUICtrl>(BTN_USEDEFAULT)->setEnabled(can_enable && !is_legacy);
|
||||
getChild<LLUICtrl>(BTN_EDIT)->setEnabled(can_enable);
|
||||
getChild<LLUICtrl>(SLD_DAYLENGTH)->setEnabled(can_enable && (rdo_selection != 0) && !is_legacy);
|
||||
getChild<LLUICtrl>(SLD_DAYOFFSET)->setEnabled(can_enable && (rdo_selection != 0) && !is_legacy);
|
||||
getChild<LLUICtrl>(SLD_DAYLENGTH)->setEnabled(can_enable && !is_legacy);
|
||||
getChild<LLUICtrl>(SLD_DAYOFFSET)->setEnabled(can_enable && !is_legacy);
|
||||
getChild<LLUICtrl>(SLD_ALTITUDES)->setEnabled(can_enable && isRegion() && !is_legacy);
|
||||
getChild<LLUICtrl>(ICN_GROUND)->setColor((can_enable && isRegion() && !is_legacy) ? LLColor4::white : LLColor4::grey % 0.8f);
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setEnabled(can_enable && isRegion() && !is_legacy);
|
||||
getChild<LLUICtrl>(CHK_ALLOWOVERRIDE)->setEnabled(can_enable && isRegion() && !is_legacy);
|
||||
getChild<LLUICtrl>(BTN_APPLY)->setEnabled(can_enable && (mDirtyFlag != 0));
|
||||
getChild<LLUICtrl>(BTN_CANCEL)->setEnabled(enabled && (mDirtyFlag != 0));
|
||||
|
||||
getChild<LLSettingsDropTarget>(SDT_DROP_TARGET)->setDndEnabled(enabled && !is_legacy);
|
||||
|
||||
|
|
@ -435,18 +480,12 @@ void LLPanelEnvironmentInfo::setApplyProgress(bool started)
|
|||
|
||||
void LLPanelEnvironmentInfo::setDirtyFlag(U32 flag)
|
||||
{
|
||||
bool can_edit = canEdit();
|
||||
mDirtyFlag |= flag;
|
||||
getChildView(BTN_APPLY)->setEnabled((mDirtyFlag != 0) && mCurrentEnvironment && mCurEnvVersion != INVALID_PARCEL_ENVIRONMENT_VERSION && can_edit);
|
||||
getChildView(BTN_CANCEL)->setEnabled((mDirtyFlag != 0) && mCurrentEnvironment && can_edit);
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::clearDirtyFlag(U32 flag)
|
||||
{
|
||||
bool can_edit = canEdit();
|
||||
mDirtyFlag &= ~flag;
|
||||
getChildView(BTN_APPLY)->setEnabled((mDirtyFlag != 0) && mCurrentEnvironment && mCurEnvVersion != INVALID_PARCEL_ENVIRONMENT_VERSION && can_edit);
|
||||
getChildView(BTN_CANCEL)->setEnabled((mDirtyFlag != 0) && mCurrentEnvironment && can_edit);
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky_index, F32 alt_value)
|
||||
|
|
@ -460,7 +499,10 @@ void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky
|
|||
|
||||
// get related text box
|
||||
LLTextBox* text = getChild<LLTextBox>(alt_name);
|
||||
if (text)
|
||||
LLLineEditor *field = getChild<LLLineEditor>("edt_invname_" + alt_name);
|
||||
LLSettingsDropTarget *dt = getChild<LLSettingsDropTarget>("sdt_" + alt_name);
|
||||
|
||||
if (text && (sky_index > 1))
|
||||
{
|
||||
// move related text box
|
||||
LLRect rect = text->getRect();
|
||||
|
|
@ -468,7 +510,6 @@ void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky
|
|||
rect.mBottom = sld_bottom + (sld_offset / 2 + 1) + pos - (height / 2);
|
||||
rect.mTop = rect.mBottom + height;
|
||||
text->setRect(rect);
|
||||
|
||||
// update text
|
||||
std::ostringstream convert;
|
||||
convert << alt_value;
|
||||
|
|
@ -477,7 +518,26 @@ void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky
|
|||
convert.clear();
|
||||
convert << sky_index;
|
||||
text->setTextArg("[INDEX]", convert.str());
|
||||
|
||||
if (field)
|
||||
{
|
||||
LLRect rect_name = field->getRect();
|
||||
S32 name_height = rect_name.getHeight();
|
||||
S32 center = rect.mBottom + (height / 2);
|
||||
rect_name.mBottom = center - (name_height / 2);
|
||||
rect_name.mTop = rect_name.mBottom + name_height;
|
||||
|
||||
field->setRect(rect_name);
|
||||
if (dt)
|
||||
dt->setRect(rect_name);
|
||||
}
|
||||
}
|
||||
|
||||
if (field)
|
||||
{
|
||||
field->setText(getNameForTrackIndex(sky_index));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::readjustAltLabels()
|
||||
|
|
@ -492,10 +552,22 @@ void LLPanelEnvironmentInfo::readjustAltLabels()
|
|||
ground_text_rect.mTop = ground_text_rect.mBottom + height;
|
||||
text->setRect(ground_text_rect);
|
||||
|
||||
// LLMultiSliderCtrl *sld = getChild<LLMultiSliderCtrl>(SLD_ALTITUDES);
|
||||
// for (U32 idx = 0; idx < ALTITUDE_SLIDER_COUNT; ++idx)
|
||||
// {
|
||||
// LLRect rect_sld = sld->getSliderThumbRect(alt_sliders[idx]);
|
||||
// LLTextBox* text_cmp = getChild<LLTextBox>(alt_labels[i]);
|
||||
//
|
||||
// LLRect rect_text = text_cmp->getRect();
|
||||
//
|
||||
// LL_WARNS("LAPRAS") << "slider[" << alt_sliders[idx] << "] -> " << rect_sld << " value=" << sld->getSliderValue(alt_sliders[idx]) LL_ENDL;
|
||||
// }
|
||||
|
||||
|
||||
#if 0
|
||||
// Re-adjust all labels
|
||||
// Very simple "adjust after the fact" method
|
||||
// Note: labels are unordered, labels are 1 above sliders due to 'ground'
|
||||
|
||||
for (U32 i = 0; i < ALTITUDE_SLIDER_COUNT; i++)
|
||||
{
|
||||
LLTextBox* text_cmp = getChild<LLTextBox>(alt_labels[i]);
|
||||
|
|
@ -531,16 +603,7 @@ void LLPanelEnvironmentInfo::readjustAltLabels()
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onSwitchDefaultSelection()
|
||||
{
|
||||
bool can_edit = canEdit();
|
||||
setDirtyFlag(DIRTY_FLAG_DAYCYCLE);
|
||||
|
||||
S32 rdo_selection = getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->getSelectedIndex();
|
||||
getChild<LLUICtrl>(SLD_DAYLENGTH)->setEnabled(can_edit && (rdo_selection != 0));
|
||||
getChild<LLUICtrl>(SLD_DAYOFFSET)->setEnabled(can_edit && (rdo_selection != 0));
|
||||
#endif
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onSldDayLengthChanged(F32 value)
|
||||
|
|
@ -566,6 +629,22 @@ void LLPanelEnvironmentInfo::onSldDayOffsetChanged(F32 value)
|
|||
udpateApparentTimeOfDay();
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onDayLenOffsetMouseUp()
|
||||
{
|
||||
if (getDirtyFlag() & (DIRTY_FLAG_DAYLENGTH | DIRTY_FLAG_DAYOFFSET))
|
||||
{
|
||||
clearDirtyFlag(DIRTY_FLAG_DAYOFFSET);
|
||||
clearDirtyFlag(DIRTY_FLAG_DAYLENGTH);
|
||||
|
||||
LLHandle<LLPanel> that_h = getHandle();
|
||||
|
||||
LLEnvironment::instance().updateParcel(getParcelId(), LLSettingsDay::ptr_t(),
|
||||
mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(), LLEnvironment::altitudes_vect_t(),
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onAltSliderCallback(LLUICtrl *cntrl, const LLSD &data)
|
||||
{
|
||||
LLMultiSliderCtrl *sld = (LLMultiSliderCtrl *)cntrl;
|
||||
|
|
@ -593,6 +672,7 @@ void LLPanelEnvironmentInfo::onAltSliderCallback(LLUICtrl *cntrl, const LLSD &da
|
|||
iter2++;
|
||||
}
|
||||
iter->second.mAltitudeIndex = new_index;
|
||||
|
||||
updateAltLabel(alt_labels[iter->second.mLabelIndex], iter->second.mAltitudeIndex + 1, iter->second.mAltitude);
|
||||
iter++;
|
||||
}
|
||||
|
|
@ -601,15 +681,33 @@ void LLPanelEnvironmentInfo::onAltSliderCallback(LLUICtrl *cntrl, const LLSD &da
|
|||
setDirtyFlag(DIRTY_FLAG_ALTITUDES);
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onBtnApply()
|
||||
void LLPanelEnvironmentInfo::onAltSliderMouseUp()
|
||||
{
|
||||
doApply();
|
||||
if (isRegion() && (getDirtyFlag() & DIRTY_FLAG_ALTITUDES))
|
||||
{
|
||||
clearDirtyFlag(DIRTY_FLAG_ALTITUDES);
|
||||
|
||||
LLHandle<LLPanel> that_h = getHandle();
|
||||
LLEnvironment::altitudes_vect_t alts;
|
||||
|
||||
for (auto alt : mAltitudes)
|
||||
{
|
||||
alts.push_back(alt.second.mAltitude);
|
||||
}
|
||||
|
||||
LLEnvironment::instance().updateParcel(getParcelId(), LLSettingsDay::ptr_t(),
|
||||
-1, -1, alts,
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onBtnReset()
|
||||
void LLPanelEnvironmentInfo::onBtnDefault()
|
||||
{
|
||||
mCurrentEnvironment.reset();
|
||||
refreshFromSource();
|
||||
LLHandle<LLPanel> that_h = getHandle();
|
||||
|
||||
LLEnvironment::instance().resetParcel(getParcelId(),
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onBtnEdit()
|
||||
|
|
@ -624,7 +722,13 @@ void LLPanelEnvironmentInfo::onBtnEdit()
|
|||
|
||||
dayeditor->openFloater(params);
|
||||
if (mCurrentEnvironment && mCurrentEnvironment->mDayCycle)
|
||||
{
|
||||
dayeditor->setEditDayCycle(mCurrentEnvironment->mDayCycle);
|
||||
if (!ends_with(mCurrentEnvironment->mDayCycle->getName(), "(customized)"))
|
||||
{
|
||||
dayeditor->setEditName(mCurrentEnvironment->mDayCycle->getName() + "(customized)");
|
||||
}
|
||||
}
|
||||
else
|
||||
dayeditor->setEditDefaultDayCycle();
|
||||
}
|
||||
|
|
@ -647,62 +751,6 @@ void LLPanelEnvironmentInfo::onBtnSelect()
|
|||
}
|
||||
|
||||
|
||||
void LLPanelEnvironmentInfo::doApply()
|
||||
{
|
||||
S32 parcel_id = getParcelId();
|
||||
|
||||
if (getIsDirtyFlag(DIRTY_FLAG_MASK))
|
||||
{
|
||||
LLHandle<LLPanel> that_h = getHandle();
|
||||
LLEnvironment::altitudes_vect_t alts;
|
||||
|
||||
S32 rdo_selection = getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->getSelectedIndex();
|
||||
|
||||
if (isRegion() && getIsDirtyFlag(DIRTY_FLAG_ALTITUDES))
|
||||
{
|
||||
altitudes_data_t::iterator it;
|
||||
for (auto alt : mAltitudes)
|
||||
{
|
||||
alts.push_back(alt.second.mAltitude);
|
||||
}
|
||||
}
|
||||
|
||||
if (rdo_selection == 0)
|
||||
{
|
||||
LLEnvironment::instance().resetParcel(parcel_id,
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
}
|
||||
else if (rdo_selection == 1)
|
||||
{
|
||||
if (!mCurrentEnvironment)
|
||||
{
|
||||
// Attempting to save mid update?
|
||||
LL_WARNS("ENVPANEL") << "Failed to apply changes from editor! Dirty state: " << mDirtyFlag << " update state: " << mCurEnvVersion << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
LLEnvironment::instance().updateParcel(parcel_id,
|
||||
mCurrentEnvironment->mDayCycle->getAssetId(), std::string(), mCurrentEnvironment->mDayLength.value(),
|
||||
mCurrentEnvironment->mDayOffset.value(), alts,
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!mCurrentEnvironment)
|
||||
{
|
||||
// Attempting to save mid update?
|
||||
LL_WARNS("ENVPANEL") << "Failed to apply changes from editor! Dirty state: " << mDirtyFlag << " update state: " << mCurEnvVersion << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
LLEnvironment::instance().updateParcel(parcel_id,
|
||||
mCurrentEnvironment->mDayCycle, mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(), alts,
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
}
|
||||
|
||||
setControlsEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLPanelEnvironmentInfo::udpateApparentTimeOfDay()
|
||||
{
|
||||
static const F32 SECONDSINDAY(24.0 * 60.0 * 60.0);
|
||||
|
|
@ -751,16 +799,19 @@ void LLPanelEnvironmentInfo::onPickerCommitted(LLUUID item_id)
|
|||
LLInventoryItem *itemp = gInventory.getItem(item_id);
|
||||
if (itemp)
|
||||
{
|
||||
LLSettingsVOBase::getSettingsAsset(itemp->getAssetUUID(), [this](LLUUID, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) {
|
||||
if (status)
|
||||
return;
|
||||
onPickerAssetDownloaded(settings);
|
||||
});
|
||||
LLHandle<LLPanel> that_h = getHandle();
|
||||
|
||||
LLEnvironment::instance().updateParcel(getParcelId(), itemp->getAssetUUID(),
|
||||
itemp->getName(),
|
||||
-1, -1, LLEnvironment::altitudes_vect_t(),
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelEnvironmentInfo::onEditCommitted(LLSettingsDay::ptr_t newday)
|
||||
{
|
||||
LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_EDIT);
|
||||
LLEnvironment::instance().updateEnvironment();
|
||||
if (!newday)
|
||||
{
|
||||
LL_WARNS("ENVPANEL") << "Editor committed an empty day. Do nothing." << LL_ENDL;
|
||||
|
|
@ -777,9 +828,11 @@ void LLPanelEnvironmentInfo::onEditCommitted(LLSettingsDay::ptr_t newday)
|
|||
|
||||
if (newhash != oldhash)
|
||||
{
|
||||
mCurrentEnvironment->mDayCycle = newday;
|
||||
setDirtyFlag(DIRTY_FLAG_DAYCYCLE);
|
||||
refresh();
|
||||
LLHandle<LLPanel> that_h = getHandle();
|
||||
|
||||
LLEnvironment::instance().updateParcel(getParcelId(), newday,
|
||||
-1, -1, LLEnvironment::altitudes_vect_t(),
|
||||
[that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -873,6 +926,7 @@ void LLPanelEnvironmentInfo::onEnvironmentReceived(S32 parcel_id, LLEnvironment:
|
|||
LL_WARNS("ENVPANEL") << " Environment version was not provided for " << parcel_id << ", old env version: " << mCurEnvVersion << LL_ENDL;
|
||||
}
|
||||
|
||||
refreshFromEstate();
|
||||
refresh();
|
||||
|
||||
// todo: we have envifo and parcel env version, should we just setEnvironment() and parcel's property to prevent dupplicate requests?
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#include "llparcel.h"
|
||||
#include "llsettingspicker.h"
|
||||
#include "llfloatereditextdaycycle.h"
|
||||
#include "llestateinfomodel.h"
|
||||
|
||||
class LLViewerRegion;
|
||||
|
||||
|
|
@ -62,13 +63,9 @@ public:
|
|||
protected:
|
||||
LOG_CLASS(LLPanelEnvironmentInfo);
|
||||
|
||||
static const std::string RDG_ENVIRONMENT_SELECT;
|
||||
static const std::string RDO_USEDEFAULT;
|
||||
static const std::string RDO_USEINV;
|
||||
static const std::string RDO_USECUSTOM;
|
||||
static const std::string EDT_INVNAME;
|
||||
static const std::string BTN_SELECTINV;
|
||||
static const std::string BTN_EDIT;
|
||||
static const std::string BTN_USEDEFAULT;
|
||||
static const std::string SLD_DAYLENGTH;
|
||||
static const std::string SLD_DAYOFFSET;
|
||||
static const std::string SLD_ALTITUDES;
|
||||
|
|
@ -91,6 +88,7 @@ protected:
|
|||
static const std::string STR_NO_PARCEL;
|
||||
static const std::string STR_CROSS_REGION;
|
||||
static const std::string STR_LEGACY;
|
||||
static const std::string STR_DISALLOWED;
|
||||
|
||||
static const U32 DIRTY_FLAG_DAYCYCLE;
|
||||
static const U32 DIRTY_FLAG_DAYLENGTH;
|
||||
|
|
@ -106,32 +104,35 @@ protected:
|
|||
bool getIsDirty() const { return (mDirtyFlag != 0); }
|
||||
bool getIsDirtyFlag(U32 flag) const { return ((mDirtyFlag & flag) != 0); }
|
||||
U32 getDirtyFlag() const { return mDirtyFlag; }
|
||||
void updateAltLabel(const std::string &alt_name, U32 sky_index, F32 alt_value);
|
||||
void updateAltLabel(const std::string &alt_name, U32 sky_index, F32 alt_value);
|
||||
void readjustAltLabels();
|
||||
|
||||
void onSwitchDefaultSelection();
|
||||
void onSldDayLengthChanged(F32 value);
|
||||
void onSldDayOffsetChanged(F32 value);
|
||||
void onAltSliderCallback(LLUICtrl *cntrl, const LLSD &data);
|
||||
void onBtnApply();
|
||||
void onBtnReset();
|
||||
void onAltSliderMouseUp();
|
||||
|
||||
void onBtnEdit();
|
||||
void onBtnSelect();
|
||||
|
||||
virtual void doApply();
|
||||
void onBtnDefault();
|
||||
|
||||
void udpateApparentTimeOfDay();
|
||||
|
||||
void onPickerCommitted(LLUUID item_id);
|
||||
void onEditCommitted(LLSettingsDay::ptr_t newday);
|
||||
void onDayLenOffsetMouseUp();
|
||||
|
||||
void onPickerAssetDownloaded(LLSettingsBase::ptr_t settings);
|
||||
void onEnvironmentReceived(S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo);
|
||||
static void _onEnvironmentReceived(LLHandle<LLPanel> that_h, S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo);
|
||||
|
||||
|
||||
virtual void refreshFromSource() = 0;
|
||||
|
||||
std::string getInventoryNameForAssetId(LLUUID asset_id);
|
||||
|
||||
std::string getNameForTrackIndex(S32 index);
|
||||
|
||||
LLFloaterSettingsPicker * getSettingsPicker(bool create = true);
|
||||
LLFloaterEditExtDayCycle * getEditFloater(bool create = true);
|
||||
void updateEditFloater(const LLEnvironment::EnvironmentInfo::ptr_t &nextenv, bool enable);
|
||||
|
|
@ -159,12 +160,15 @@ protected:
|
|||
F32 mAltitude;
|
||||
};
|
||||
typedef std::map<std::string, AltitudeData> altitudes_data_t;
|
||||
altitudes_data_t mAltitudes;
|
||||
S32 mCurEnvVersion; // used to filter duplicate callbacks/refreshes
|
||||
altitudes_data_t mAltitudes;
|
||||
S32 mCurEnvVersion; // used to filter duplicate callbacks/refreshes
|
||||
|
||||
protected:
|
||||
void refreshFromEstate();
|
||||
bool mAllowOverride;
|
||||
|
||||
private:
|
||||
static void onIdlePlay(void *);
|
||||
static void onIdlePlay(void *);
|
||||
|
||||
typedef boost::signals2::connection connection_t;
|
||||
|
||||
|
|
@ -178,6 +182,7 @@ private:
|
|||
bool mCrossRegion;
|
||||
bool mNoSelection;
|
||||
bool mNoEnvironment;
|
||||
|
||||
};
|
||||
|
||||
class LLSettingsDropTarget : public LLView
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ BOOL LLFloaterSettingsPicker::postBuild()
|
|||
|
||||
mInventoryPanel->setSelectCallback([this](const LLFloaterSettingsPicker::itemlist_t &items, bool useraction){ onSelectionChange(items, useraction); });
|
||||
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
|
||||
mInventoryPanel->setSuppressOpenItemAction(true);
|
||||
|
||||
// Disable auto selecting first filtered item because it takes away
|
||||
// selection from the item set by LLTextureCtrl owning this floater.
|
||||
|
|
@ -336,6 +337,24 @@ BOOL LLFloaterSettingsPicker::handleDoubleClick(S32 x, S32 y, MASK mask)
|
|||
return result;
|
||||
}
|
||||
|
||||
BOOL LLFloaterSettingsPicker::handleKeyHere(KEY key, MASK mask)
|
||||
{
|
||||
if ((key == KEY_RETURN) && (mask == MASK_NONE))
|
||||
{
|
||||
LLFolderViewItem* item_viewp = mInventoryPanel->getItemByID(mSettingItemID);
|
||||
if (item_viewp && item_viewp->getIsCurSelection())
|
||||
{
|
||||
// Quick-apply
|
||||
if (mCommitSignal)
|
||||
(*mCommitSignal)(this, LLSD(mSettingItemID));
|
||||
closeFloater();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return LLFloater::handleKeyHere(key, mask);
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
void LLFloaterSettingsPicker::setActive(bool active)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ private:
|
|||
void onButtonCancel();
|
||||
void onButtonSelect();
|
||||
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask) override;
|
||||
BOOL handleKeyHere(KEY key, MASK mask) override;
|
||||
|
||||
|
||||
LLHandle<LLView> mOwnerHandle;
|
||||
|
|
|
|||
|
|
@ -154,23 +154,24 @@ void LLSettingsVOBase::createInventoryItem(const LLSettingsBase::ptr_t &settings
|
|||
|
||||
void LLSettingsVOBase::onInventoryItemCreated(const LLUUID &inventoryId, LLSettingsBase::ptr_t settings, inventory_result_fn callback)
|
||||
{
|
||||
LLViewerInventoryItem *pitem = gInventory.getItem(inventoryId);
|
||||
if (pitem)
|
||||
{
|
||||
LLPermissions perm = pitem->getPermissions();
|
||||
if (perm.getMaskEveryone() != PERM_COPY)
|
||||
{
|
||||
perm.setMaskEveryone(PERM_COPY);
|
||||
pitem->setPermissions(perm);
|
||||
pitem->updateServer(FALSE);
|
||||
}
|
||||
}
|
||||
if (!settings)
|
||||
{ // The item was created as new with no settings passed in. Simulator should have given it the default for the type... check ID,
|
||||
// no need to upload asset.
|
||||
LLUUID asset_id;
|
||||
LLViewerInventoryItem *pitem = gInventory.getItem(inventoryId);
|
||||
|
||||
if (pitem)
|
||||
{
|
||||
asset_id = pitem->getAssetUUID();
|
||||
|
||||
LLPermissions perm = pitem->getPermissions();
|
||||
if (perm.getMaskEveryone() != PERM_COPY)
|
||||
{
|
||||
perm.setMaskEveryone(PERM_COPY);
|
||||
pitem->setPermissions(perm);
|
||||
pitem->updateServer(FALSE);
|
||||
}
|
||||
}
|
||||
if (callback)
|
||||
callback(asset_id, inventoryId, LLUUID::null, LLSD());
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@
|
|||
<multi_slider
|
||||
decimal_digits="0"
|
||||
follows="bottom"
|
||||
height="10"
|
||||
height="12"
|
||||
increment="0.005"
|
||||
overlap_threshold="0.026"
|
||||
loop_overlap="true"
|
||||
|
|
@ -252,6 +252,7 @@
|
|||
max_val="1"
|
||||
name="WLDayCycleFrames"
|
||||
show_text="false"
|
||||
thumb_width="12"
|
||||
top_pad="15"
|
||||
width="525" />
|
||||
|
||||
|
|
|
|||
|
|
@ -4811,10 +4811,12 @@ Unchecking this option may remove restrictions that parcel owners have added to
|
|||
icon="alertmodal.tga"
|
||||
name="EstateParcelEnvironmentOverride"
|
||||
type="alertmodal">
|
||||
Unchecking this option may remove any custom environments that parcel owners have added to their parcels. Please discuss with your parcel owners as needed.
|
||||
Unchecking this option will remove any custom environments that parcel owners have added to their parcels. Please discuss with your parcel owners as needed.
|
||||
Do you wish to proceed?
|
||||
<tag>confirm</tag>
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
name="okcancelbuttons"
|
||||
notext="Cancel"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@
|
|||
<string name="str_no_parcel">No parcel is selected. Environmental settings are disabled.</string>
|
||||
<string name="str_cross_region">Environmental settings are not available across region boundries.</string>
|
||||
<string name="str_legacy">Environmental settings are not available on this region.</string>
|
||||
<string name="str_disallowed">The estate manager does not allow changing parcel environments in this region.</string>
|
||||
<string name="str_empty">(empty)</string>
|
||||
<layout_stack
|
||||
width="530"
|
||||
height="367"
|
||||
|
|
@ -29,14 +31,422 @@
|
|||
name="pnl_environment_disabled"
|
||||
visible="false">
|
||||
<text follows="top|left|bottom|right"
|
||||
halign="center"
|
||||
valign="top"
|
||||
top_pad="40"
|
||||
name="txt_environment_disabled"
|
||||
text_color="white">
|
||||
...
|
||||
halign="center"
|
||||
valign="top"
|
||||
top_pad="40"
|
||||
name="txt_environment_disabled"
|
||||
text_color="white">
|
||||
...
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="true"
|
||||
user_resize="false"
|
||||
min_height="0"
|
||||
name="pnl_environment_config"
|
||||
visible="true">
|
||||
<layout_stack
|
||||
xxxwidth="530"
|
||||
xxxheight="367"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
animate="false"
|
||||
orientation="horizontal">
|
||||
<layout_panel
|
||||
auto_resize="true"
|
||||
user_resize="false"
|
||||
min_height="0"
|
||||
top="5"
|
||||
name="pnl_environment_altitudes"
|
||||
visible="true">
|
||||
<text follows="top|left"
|
||||
font="SansSerif"
|
||||
halign="left"
|
||||
text_color="white"
|
||||
left="5"
|
||||
top="2">Sky Altitudes</text>
|
||||
<multi_slider
|
||||
height="270"
|
||||
follows="top|left"
|
||||
orientation="vertical"
|
||||
increment="25"
|
||||
min_val="100"
|
||||
max_val="4000"
|
||||
thumb_image="Inv_SettingsSky"
|
||||
thumb_width="17"
|
||||
thumb_highlight_color="white"
|
||||
decimal_digits="0"
|
||||
draw_track="true"
|
||||
overlap_threshold="100"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
max_sliders="3"
|
||||
name="sld_altitudes"
|
||||
show_text="false"
|
||||
top_pad="20"
|
||||
use_triangle="false"
|
||||
width="17">
|
||||
<slider name="sld1"
|
||||
value="1000"/>
|
||||
<slider name="sld2"
|
||||
value="2000"/>
|
||||
<slider name="sld3"
|
||||
value="3000"/>
|
||||
</multi_slider>
|
||||
<icon
|
||||
follows="top|left"
|
||||
height="17"
|
||||
width="17"
|
||||
image_name="Inv_SettingsSky"
|
||||
layout="topleft"
|
||||
name="icon_ground"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
left="10"
|
||||
xxxleft_delta="0"
|
||||
top_pad="10"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left_pad="8"
|
||||
top_delta="2"
|
||||
width="50"
|
||||
name="ground_name">
|
||||
Ground
|
||||
</text>
|
||||
<line_editor
|
||||
follows="top|right"
|
||||
enabled="false"
|
||||
top_delta="-3"
|
||||
right="-5"
|
||||
xxxleft="-160"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_ground"
|
||||
width="155">
|
||||
Unknown
|
||||
</line_editor>
|
||||
<settings_drop_target
|
||||
height="20"
|
||||
top_delta="0"
|
||||
left_delta="0"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="sdt_ground"
|
||||
tool_tip="Drag a setting from Inventory onto this target box to select it as the ground level sky."
|
||||
width="155" />
|
||||
|
||||
<icon
|
||||
follows="left|top"
|
||||
height="17"
|
||||
width="17"
|
||||
image_name="Inv_SettingsWater"
|
||||
layout="topleft"
|
||||
name="icon_water"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
left="10"
|
||||
top_pad="10"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left_pad="8"
|
||||
top_delta="2"
|
||||
width="200"
|
||||
name="water_name">
|
||||
Water
|
||||
</text>
|
||||
<line_editor
|
||||
follows="top|right"
|
||||
enabled="false"
|
||||
top_delta="-3"
|
||||
right="-5"
|
||||
xxxleft="-160"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_water"
|
||||
width="155">
|
||||
Unknown
|
||||
</line_editor>
|
||||
<settings_drop_target
|
||||
height="20"
|
||||
top_delta="0"
|
||||
left_delta="0"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="sdt_water"
|
||||
tool_tip="Drag a setting from Inventory onto this target box to select it as current water."
|
||||
width="155" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left="35"
|
||||
top="30"
|
||||
width="200"
|
||||
name="alt1">
|
||||
Sky [INDEX]([ALTITUDE]m)
|
||||
</text>
|
||||
<line_editor
|
||||
follows="top|right"
|
||||
enabled="false"
|
||||
top_delta="-3"
|
||||
right="-5"
|
||||
xxxleft="-160"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_alt1"
|
||||
width="155">
|
||||
Unknown
|
||||
</line_editor>
|
||||
<settings_drop_target
|
||||
height="20"
|
||||
top_delta="0"
|
||||
left_delta="0"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="sdt_alt2"
|
||||
tool_tip="Drag a setting from Inventory onto this target box to select it as current water."
|
||||
width="155" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left="35"
|
||||
top="40"
|
||||
width="200"
|
||||
name="alt2">
|
||||
Sky [INDEX]([ALTITUDE]m)
|
||||
</text>
|
||||
<line_editor
|
||||
follows="top|right"
|
||||
enabled="false"
|
||||
top_delta="-3"
|
||||
right="-5"
|
||||
xxxleft="-160"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_alt2"
|
||||
width="155">
|
||||
Unknown
|
||||
</line_editor>
|
||||
<settings_drop_target
|
||||
height="20"
|
||||
top_delta="0"
|
||||
left_delta="0"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="sdt_alt2"
|
||||
tool_tip="Drag a setting from Inventory onto this target box to select it as current water."
|
||||
width="155" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left="35"
|
||||
top="50"
|
||||
width="200"
|
||||
name="alt3">
|
||||
Sky [INDEX]([ALTITUDE]m)
|
||||
</text>
|
||||
<line_editor
|
||||
follows="top|right"
|
||||
enabled="false"
|
||||
top_delta="-3"
|
||||
right="-5"
|
||||
xxxleft="-160"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="edt_invname_alt3"
|
||||
width="155">
|
||||
Unknown
|
||||
</line_editor>
|
||||
<settings_drop_target
|
||||
height="20"
|
||||
top_delta="0"
|
||||
left_delta="0"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="sdt_alt3"
|
||||
tool_tip="Drag a setting from Inventory onto this target box to select it as current water."
|
||||
width="155" />
|
||||
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="true"
|
||||
user_resize="false"
|
||||
min_height="0"
|
||||
top="5"
|
||||
name="pnl_environment_config"
|
||||
visible="true">
|
||||
<layout_stack
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
animate="false"
|
||||
orientation="vertical">
|
||||
<layout_panel
|
||||
min_height="140"
|
||||
follows="all"
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
name="pnl_environment_current">
|
||||
<text follows="top|left"
|
||||
font="SansSerif"
|
||||
halign="left"
|
||||
text_color="white"
|
||||
top="2">Select Environment</text>
|
||||
<button
|
||||
follows="top|left"
|
||||
top_pad="20"
|
||||
left_delta="10"
|
||||
layout="topleft"
|
||||
height="23"
|
||||
label="[USEDEFAULT]"
|
||||
width="120"
|
||||
name="btn_usedefault"/>
|
||||
<button
|
||||
follows="top|left"
|
||||
top_pad="5"
|
||||
left_delta="0"
|
||||
layout="topleft"
|
||||
height="23"
|
||||
label="Use Inventory"
|
||||
width="120"
|
||||
name="btn_select_inventory"/>
|
||||
<button
|
||||
follows="top|left"
|
||||
top_pad="5"
|
||||
left_delta="0"
|
||||
layout="topleft"
|
||||
height="23"
|
||||
label="Customize"
|
||||
width="120"
|
||||
name="btn_edit"/>
|
||||
<check_box
|
||||
height="20"
|
||||
label="Parcel Owners May Override Environment"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="10"
|
||||
name="chk_allow_override"
|
||||
width="200" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
min_height="130"
|
||||
follows="all"
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
name="pnl_environment_length">
|
||||
<text
|
||||
font="SansSerif"
|
||||
follows="top|left|right"
|
||||
halign="left"
|
||||
text_color="white"
|
||||
top="2">Day Settings</text>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left_delta="10"
|
||||
top_pad="16"
|
||||
width="200">
|
||||
Day Length (hours)
|
||||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
decimal_digits="1"
|
||||
follows="left|top"
|
||||
height="20"
|
||||
increment="0.5"
|
||||
initial_value="4"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
xxxright="-10"
|
||||
top_pad="0"
|
||||
name="sld_day_length"
|
||||
min_val="4"
|
||||
max_val="168"
|
||||
width="237" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="5"
|
||||
width="200">
|
||||
Day Offset (hours)
|
||||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
decimal_digits="1"
|
||||
follows="left|top"
|
||||
height="20"
|
||||
increment="0.5"
|
||||
initial_value="-8"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="0"
|
||||
name="sld_day_offset"
|
||||
min_val="-11.5"
|
||||
max_val="12"
|
||||
width="237" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="5"
|
||||
width="200">
|
||||
Apparent Time of Day:
|
||||
</text>
|
||||
<text
|
||||
name="lbl_apparent_time"
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left_delta="10"
|
||||
top_pad="5"
|
||||
width="200">
|
||||
[HH]:[MM][AP] ([PRC]%)
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
follows="bottom"
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
name="pnl_environment_buttons">
|
||||
<!-- used to be buttons, but now spacer.
|
||||
-->
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
<!--
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
|
|
@ -103,13 +513,13 @@
|
|||
Unknown
|
||||
</line_editor>
|
||||
<settings_drop_target
|
||||
height="20"
|
||||
top_pad="-20"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="sdt_drop_target"
|
||||
tool_tip="Drag a setting from Inventory onto this target box to select it as current evironment."
|
||||
width="200" />
|
||||
height="20"
|
||||
top_pad="-20"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="sdt_drop_target"
|
||||
tool_tip="Drag a setting from Inventory onto this target box to select it as current evironment."
|
||||
width="200" />
|
||||
<button
|
||||
name="btn_select_inventory"
|
||||
follows="top|left"
|
||||
|
|
@ -231,54 +641,57 @@
|
|||
name="pnl_environment_altitudes"
|
||||
visible="true">
|
||||
<panel
|
||||
left="5"
|
||||
top="0"
|
||||
bottom="-1"
|
||||
width="260"
|
||||
follows="left|top|bottom"
|
||||
background_visible="true"
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
name="cnt_panel">
|
||||
left="5"
|
||||
top="0"
|
||||
bottom="-1"
|
||||
width="260"
|
||||
follows="left|top|bottom"
|
||||
background_visible="true"
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
name="cnt_panel">
|
||||
<text follows="top|left"
|
||||
font="SansSerif"
|
||||
halign="left"
|
||||
text_color="white"
|
||||
top="2">Sky Altitudes</text>
|
||||
font="SansSerif"
|
||||
halign="left"
|
||||
text_color="white"
|
||||
top="2">Sky Altitudes</text>
|
||||
<multi_slider
|
||||
decimal_digits="0"
|
||||
follows="bottom"
|
||||
height="123"
|
||||
width="17"
|
||||
orientation="vertical"
|
||||
increment="10"
|
||||
overlap_threshold="100"
|
||||
min_val="100"
|
||||
max_val="4000"
|
||||
layout="topleft"
|
||||
left="15"
|
||||
top="20"
|
||||
max_sliders="20"
|
||||
name="sld_altitudes"
|
||||
show_text="false"
|
||||
thumb_image="Inv_SettingsSky"
|
||||
thumb_width="17"
|
||||
thumb_highlight_color="white">
|
||||
<slider name="sld1" value="200"/>
|
||||
<slider name="sld2" value="400"/>
|
||||
<slider name="sld3" value="600"/>
|
||||
decimal_digits="0"
|
||||
follows="bottom"
|
||||
height="123"
|
||||
width="17"
|
||||
orientation="vertical"
|
||||
increment="10"
|
||||
overlap_threshold="100"
|
||||
min_val="100"
|
||||
max_val="4000"
|
||||
layout="topleft"
|
||||
left="15"
|
||||
top="20"
|
||||
max_sliders="20"
|
||||
name="sld_altitudes"
|
||||
show_text="false"
|
||||
thumb_image="Inv_SettingsSky"
|
||||
thumb_width="17"
|
||||
thumb_highlight_color="white">
|
||||
<slider name="sld1"
|
||||
value="200"/>
|
||||
<slider name="sld2"
|
||||
value="400"/>
|
||||
<slider name="sld3"
|
||||
value="600"/>
|
||||
</multi_slider>
|
||||
<icon
|
||||
follows="left|top"
|
||||
height="17"
|
||||
width="17"
|
||||
image_name="Inv_SettingsSky"
|
||||
layout="topleft"
|
||||
name="icon_ground"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
left_delta="0"
|
||||
top_pad="-9"/>
|
||||
follows="left|top"
|
||||
height="17"
|
||||
width="17"
|
||||
image_name="Inv_SettingsSky"
|
||||
layout="topleft"
|
||||
name="icon_ground"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
left_delta="0"
|
||||
top_pad="-9"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -368,5 +781,6 @@
|
|||
width="100" />
|
||||
|
||||
</layout_panel>
|
||||
-->
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
|
|||
Loading…
Reference in New Issue