Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
# Conflicts: # indra/llmessage/llregionflags.h # indra/newview/llfloaterregioninfo.cppmaster
commit
9c098fb132
|
|
@ -2,8 +2,9 @@ name: Build viewer
|
|||
on:
|
||||
push:
|
||||
branches:
|
||||
- "*release"
|
||||
- master
|
||||
- "Firestorm*.*.*"
|
||||
tags:
|
||||
- "preview"
|
||||
schedule:
|
||||
- cron: '00 03 * * *' # Run every day at 3am UTC
|
||||
env:
|
||||
|
|
@ -74,14 +75,14 @@ jobs:
|
|||
|
||||
- name: find channel from Branch name
|
||||
run: |
|
||||
if [[ "${{ github.ref_name }}" == *Release* ]]; then
|
||||
if [[ "${{ github.ref_name }}" == Firestorm* ]]; then
|
||||
FS_RELEASE_TYPE=Release
|
||||
elif [[ "${{ github.ref_name }}" == *review* ]]; then
|
||||
FS_RELEASE_TYPE=Beta
|
||||
elif [[ "${{ github.event_name }}" == 'schedule' ]]; then
|
||||
FS_RELEASE_TYPE=Nightly
|
||||
else
|
||||
if [[ "${{github.event_name}}" == 'schedule' ]]; then
|
||||
FS_RELEASE_TYPE=Nightly
|
||||
else
|
||||
FS_RELEASE_TYPE=Beta
|
||||
fi
|
||||
FS_RELEASE_TYPE=Unknown
|
||||
fi
|
||||
if [[ "${{ matrix.addrsize }}" == "64" ]]; then
|
||||
FS_RELEASE_CHAN="${FS_RELEASE_TYPE}x64"
|
||||
|
|
@ -118,7 +119,11 @@ jobs:
|
|||
shell: bash
|
||||
|
||||
- name: rclone the private 3p packages for this platform (both 64 & 32)
|
||||
run: 'rclone copy fs_bundles: --include "*${{ env.fallback_platform }}*bz2" .'
|
||||
run: 'rclone copy fs_bundles: --filter "- Alpha/*" --filter "+ *${{ env.fallback_platform }}*bz2" .'
|
||||
|
||||
- name: rclone any extra private 3p packages for Alpha (allows library updates not in the main repo)
|
||||
if: env.FS_BUILD_TYPE == 'Alpha'
|
||||
run: 'rclone copy fs_bundles:Alpha --include "*${{ env.fallback_platform }}*bz2" .'
|
||||
|
||||
- name: set VSVER for Windows builds
|
||||
if: runner.os == 'Windows'
|
||||
|
|
@ -255,17 +260,17 @@ jobs:
|
|||
|
||||
- name: find channel and webhook from Branch name
|
||||
run: |
|
||||
if [[ "${{ github.ref_name }}" == *Release* ]]; then
|
||||
if [[ "${{ github.ref_name }}" == Firestorm* ]]; then
|
||||
FS_RELEASE_FOLDER=release
|
||||
FS_BUILD_WEBHOOK_URL=${{ secrets.RELEASE_WEBHOOK_URL }}
|
||||
else
|
||||
if [[ "${{github.event_name}}" == 'schedule' ]]; then
|
||||
FS_RELEASE_FOLDER=nightly
|
||||
FS_BUILD_WEBHOOK_URL=${{ secrets.NIGHTLY_WEBHOOK_URL }}
|
||||
else
|
||||
elif [[ "${{ github.ref_name }}" == *review* ]]; then
|
||||
FS_RELEASE_FOLDER=preview
|
||||
FS_BUILD_WEBHOOK_URL=${{ secrets.BETA_WEBHOOK_URL }}
|
||||
fi
|
||||
elif [[ "${{ github.event_name }}" == 'schedule' ]]; then
|
||||
FS_RELEASE_FOLDER=nightly
|
||||
FS_BUILD_WEBHOOK_URL=${{ secrets.NIGHTLY_WEBHOOK_URL }}
|
||||
else
|
||||
FS_RELEASE_TYPE=Unknown
|
||||
fi
|
||||
echo "FS_RELEASE_FOLDER=${FS_RELEASE_FOLDER}" >> $GITHUB_ENV
|
||||
echo "FS_BUILD_WEBHOOK_URL=${FS_BUILD_WEBHOOK_URL}" >> $GITHUB_ENV
|
||||
|
|
|
|||
|
|
@ -172,8 +172,10 @@ const U32 ESTATE_ACCESS_NO_REPLY = 1U << 10;
|
|||
const U32 ESTATE_ACCESS_FAILED_BAN_ESTATE_MANAGER = 1U << 11;
|
||||
|
||||
const S32 ESTATE_MAX_MANAGERS = 20;
|
||||
const S32 ESTATE_MAX_MANAGERS_OS = 15; // <FS:Ansariel> OpenSim
|
||||
const S32 ESTATE_MAX_ACCESS_IDS = 500; // max for access
|
||||
const S32 ESTATE_MAX_BANNED_IDS = 750; // max for banned
|
||||
const S32 ESTATE_MAX_BANNED_IDS_OS = 500; // max for banned // <FS:Ansariel> OpenSim
|
||||
const S32 ESTATE_MAX_GROUP_IDS = (S32) ESTATE_ACCESS_MAX_ENTRIES_PER_PACKET;
|
||||
|
||||
// 'Sim Wide Delete' flags
|
||||
|
|
|
|||
|
|
@ -26427,5 +26427,16 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSSortAttachmentSpotsAlphabetically</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Sorts the attachment spots in the "Attach to" menus alphabetically</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
FSFloaterPoseStand::FSFloaterPoseStand(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mComboPose(NULL),
|
||||
mComboPose(nullptr),
|
||||
mPoseStandLock(false),
|
||||
mAOPaused(false)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
FSFloaterRadar::FSFloaterRadar(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mRadarPanel(NULL)
|
||||
mRadarPanel(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -135,8 +135,7 @@ BOOL FSFloaterWearableFavorites::postBuild()
|
|||
|
||||
mOptionsButton = getChild<LLMenuButton>("options_btn");
|
||||
|
||||
LLToggleableMenu* options_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_fs_wearable_favorites.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
if (options_menu)
|
||||
if (LLToggleableMenu* options_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_fs_wearable_favorites.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); options_menu)
|
||||
{
|
||||
mOptionsMenuHandle = options_menu->getHandle();
|
||||
mOptionsButton->setMenu(options_menu, LLMenuButton::MP_BOTTOM_LEFT);
|
||||
|
|
@ -204,8 +203,7 @@ BOOL FSFloaterWearableFavorites::handleKeyHere(KEY key, MASK mask)
|
|||
// static
|
||||
std::optional<LLUUID> FSFloaterWearableFavorites::getWearableFavoritesFolderID()
|
||||
{
|
||||
LLUUID fs_root_cat_id = gInventory.findCategoryByName(ROOT_FIRESTORM_FOLDER);
|
||||
if (!fs_root_cat_id.isNull())
|
||||
if (LLUUID fs_root_cat_id = gInventory.findCategoryByName(ROOT_FIRESTORM_FOLDER); !fs_root_cat_id.isNull())
|
||||
{
|
||||
LLInventoryModel::item_array_t* items;
|
||||
LLInventoryModel::cat_array_t* cats;
|
||||
|
|
@ -339,8 +337,7 @@ bool FSFloaterWearableFavorites::onOptionsMenuItemChecked(const LLSD& userdata)
|
|||
|
||||
void FSFloaterWearableFavorites::onDoubleClick()
|
||||
{
|
||||
LLUUID selected_item_id = mItemsList->getSelectedUUID();
|
||||
if (selected_item_id.notNull())
|
||||
if (LLUUID selected_item_id = mItemsList->getSelectedUUID(); selected_item_id.notNull())
|
||||
{
|
||||
uuid_vec_t ids;
|
||||
ids.push_back(selected_item_id);
|
||||
|
|
|
|||
|
|
@ -120,9 +120,9 @@ bool FSKeywords::chatContainsKeyword(const LLChat& chat, bool is_local)
|
|||
|
||||
if (sFSKeywordMatchWholeWords)
|
||||
{
|
||||
for (std::vector<std::string>::iterator it = mWordList.begin(); it != mWordList.end(); ++it)
|
||||
for (const auto& word : mWordList)
|
||||
{
|
||||
if (boost::regex_search(source, boost::regex("\\b" + (*it) + "\\b")))
|
||||
if (boost::regex_search(source, boost::regex("\\b" + word + "\\b")))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
@ -130,9 +130,9 @@ bool FSKeywords::chatContainsKeyword(const LLChat& chat, bool is_local)
|
|||
}
|
||||
else
|
||||
{
|
||||
for (std::vector<std::string>::iterator it = mWordList.begin(); it != mWordList.end(); ++it)
|
||||
for (const auto& word : mWordList)
|
||||
{
|
||||
if (source.find((*it)) != std::string::npos)
|
||||
if (source.find(word) != std::string::npos)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
@ -145,30 +145,27 @@ bool FSKeywords::chatContainsKeyword(const LLChat& chat, bool is_local)
|
|||
// <FS:PP> FIRE-10178: Keyword Alerts in group IM do not work unless the group is in the foreground
|
||||
void FSKeywords::notify(const LLChat& chat)
|
||||
{
|
||||
if (chat.mFromID != gAgentID || chat.mFromName == SYSTEM_FROM)
|
||||
if ((chat.mFromID != gAgentID || chat.mFromName == SYSTEM_FROM) && !chat.mMuted && !LLMuteList::getInstance()->isMuted(chat.mFromID))
|
||||
{
|
||||
if (!chat.mMuted && !LLMuteList::getInstance()->isMuted(chat.mFromID))
|
||||
static LLCachedControl<bool> PlayModeUISndFSKeywordSound(gSavedPerAccountSettings, "PlayModeUISndFSKeywordSound");
|
||||
if (PlayModeUISndFSKeywordSound)
|
||||
{
|
||||
static LLCachedControl<bool> PlayModeUISndFSKeywordSound(gSavedPerAccountSettings, "PlayModeUISndFSKeywordSound");
|
||||
if (PlayModeUISndFSKeywordSound)
|
||||
{
|
||||
LLUI::getInstance()->mAudioCallback(LLUUID(gSavedPerAccountSettings.getString("UISndFSKeywordSound")));
|
||||
}
|
||||
LLUI::getInstance()->mAudioCallback(LLUUID(gSavedPerAccountSettings.getString("UISndFSKeywordSound")));
|
||||
}
|
||||
|
||||
static LLCachedControl<bool> FSEnableGrowl(gSavedSettings, "FSEnableGrowl");
|
||||
if (FSEnableGrowl)
|
||||
static LLCachedControl<bool> FSEnableGrowl(gSavedSettings, "FSEnableGrowl");
|
||||
if (FSEnableGrowl)
|
||||
{
|
||||
std::string msg = chat.mFromName;
|
||||
if (is_irc_me_prefix(chat.mText))
|
||||
{
|
||||
std::string msg = chat.mFromName;
|
||||
if (is_irc_me_prefix(chat.mText))
|
||||
{
|
||||
msg = msg + chat.mText.substr(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = msg + ": " + chat.mText;
|
||||
}
|
||||
GrowlManager::notify("Keyword Alert", msg, GROWL_KEYWORD_ALERT_TYPE);
|
||||
msg = msg + chat.mText.substr(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = msg + ": " + chat.mText;
|
||||
}
|
||||
GrowlManager::notify("Keyword Alert", msg, GROWL_KEYWORD_ALERT_TYPE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -148,16 +148,13 @@ void FSMoneyTrackerListMenu::onContextMenuItemClick(const LLSD& userdata)
|
|||
|
||||
if (option == "copy")
|
||||
{
|
||||
FSMoneyTracker* floater = LLFloaterReg::findTypedInstance<FSMoneyTracker>("money_tracker");
|
||||
if (floater)
|
||||
if (FSMoneyTracker* floater = LLFloaterReg::findTypedInstance<FSMoneyTracker>("money_tracker"); floater)
|
||||
{
|
||||
std::string copy_text;
|
||||
LLNameListCtrl* list = floater->getChild<LLNameListCtrl>("payment_list");
|
||||
|
||||
std::vector<LLScrollListItem*> selected = list->getAllSelected();
|
||||
for (std::vector<LLScrollListItem*>::iterator it = selected.begin(); it != selected.end(); ++it)
|
||||
for (auto item : list->getAllSelected())
|
||||
{
|
||||
const LLScrollListItem* item = *it;
|
||||
copy_text += ( (copy_text.empty() ? "" : "\n")
|
||||
+ item->getColumn(0)->getValue().asString() + ";"
|
||||
+ item->getColumn(1)->getValue().asString() + ";"
|
||||
|
|
|
|||
|
|
@ -48,10 +48,10 @@
|
|||
#include "rlvactions.h"
|
||||
#include "rlvhandler.h"
|
||||
|
||||
static const U32 NAME_PREDICTION_MINIMUM_LENGTH = 3;
|
||||
constexpr U32 NAME_PREDICTION_MINIMUM_LENGTH = 3;
|
||||
|
||||
// *HACK* chat bar cannot return its correct height for some reason
|
||||
static const S32 MAGIC_CHAT_BAR_PAD = 5;
|
||||
constexpr S32 MAGIC_CHAT_BAR_PAD = 5;
|
||||
|
||||
struct LLChatTypeTrigger {
|
||||
std::string name;
|
||||
|
|
@ -237,8 +237,8 @@ bool matchChatTypeTrigger(const std::string& in_str, std::string* out_str)
|
|||
S32 FSNearbyChat::sLastSpecialChatChannel = 0;
|
||||
|
||||
FSNearbyChat::FSNearbyChat() :
|
||||
mDefaultChatBar(NULL),
|
||||
mFocusedInputEditor(NULL)
|
||||
mDefaultChatBar(nullptr),
|
||||
mFocusedInputEditor(nullptr)
|
||||
{
|
||||
gSavedSettings.getControl("MainChatbarVisible")->getSignal()->connect(boost::bind(&FSNearbyChat::onDefaultChatBarButtonClicked, this));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,12 +132,11 @@ BOOL FSPanelBlockList::handleKeyHere(KEY key, MASK mask)
|
|||
void FSPanelBlockList::selectBlocked(const LLUUID& mute_id)
|
||||
{
|
||||
mBlockedList->deselectAllItems();
|
||||
std::vector<LLScrollListItem*> items = mBlockedList->getAllData();
|
||||
for (std::vector<LLScrollListItem*>::iterator it = items.begin(); it != items.end(); it++)
|
||||
for (auto item : mBlockedList->getAllData())
|
||||
{
|
||||
if ((*it)->getColumn(3)->getValue().asUUID() == mute_id)
|
||||
if (item->getColumn(3)->getValue().asUUID() == mute_id)
|
||||
{
|
||||
(*it)->setSelected(TRUE);
|
||||
item->setSelected(TRUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -171,17 +170,15 @@ void FSPanelBlockList::refreshBlockedList()
|
|||
{
|
||||
mBlockedList->deleteAllItems();
|
||||
|
||||
std::vector<LLMute> mutes = LLMuteList::getInstance()->getMutes();
|
||||
std::vector<LLMute>::iterator it;
|
||||
for (it = mutes.begin(); it != mutes.end(); ++it)
|
||||
for (const auto& mute : LLMuteList::getInstance()->getMutes())
|
||||
{
|
||||
LLScrollListItem::Params item_p;
|
||||
item_p.enabled(TRUE);
|
||||
item_p.enabled(true);
|
||||
item_p.value(LLUUID::generateNewID()); // can't link UUID of blocked item directly because of mutes by name
|
||||
item_p.columns.add().column("item_name").value(it->mName);
|
||||
item_p.columns.add().column("item_type").value(it->getDisplayType());
|
||||
item_p.columns.add().column("item_mute_type").value(it->mType);
|
||||
item_p.columns.add().column("item_mute_uuid").value(it->mID);
|
||||
item_p.columns.add().column("item_name").value(mute.mName);
|
||||
item_p.columns.add().column("item_type").value(mute.getDisplayType());
|
||||
item_p.columns.add().column("item_mute_type").value(mute.mType);
|
||||
item_p.columns.add().column("item_mute_uuid").value(mute.mID);
|
||||
|
||||
mBlockedList->addRow(item_p, ADD_BOTTOM);
|
||||
}
|
||||
|
|
@ -208,11 +205,10 @@ void FSPanelBlockList::removeMutes()
|
|||
// list after each removal, sending us straight into a crash!
|
||||
LLMuteList::getInstance()->removeObserver(this);
|
||||
|
||||
std::vector<LLScrollListItem*> selected_items = mBlockedList->getAllSelected();
|
||||
for (std::vector<LLScrollListItem*>::iterator it = selected_items.begin(); it != selected_items.end(); it++)
|
||||
for (auto item : mBlockedList->getAllSelected())
|
||||
{
|
||||
std::string name = (*it)->getColumn(COL_NAME)->getValue().asString();
|
||||
LLUUID id = (*it)->getColumn(COL_UUID)->getValue().asUUID();
|
||||
std::string name = item->getColumn(COL_NAME)->getValue().asString();
|
||||
LLUUID id = item->getColumn(COL_UUID)->getValue().asUUID();
|
||||
LLMute mute(id, name);
|
||||
LLMuteList::getInstance()->remove(mute);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ FSPanelRadar::FSPanelRadar()
|
|||
mFSRadarColumnConfigConnection(),
|
||||
mLastResizeDelta(0)
|
||||
{
|
||||
mButtonsUpdater = new FSButtonsUpdater(boost::bind(&FSPanelRadar::updateButtons, this));
|
||||
mButtonsUpdater = std::make_unique<FSButtonsUpdater>(boost::bind(&FSPanelRadar::updateButtons, this));
|
||||
mCommitCallbackRegistrar.add("Radar.AddFriend", boost::bind(&FSPanelRadar::onAddFriendButtonClicked, this));
|
||||
mCommitCallbackRegistrar.add("Radar.Gear", boost::bind(&FSPanelRadar::onGearButtonClicked, this, _1));
|
||||
|
||||
|
|
@ -117,9 +117,8 @@ FSPanelRadar::~FSPanelRadar()
|
|||
mFSRadarColumnConfigConnection.disconnect();
|
||||
}
|
||||
|
||||
delete mButtonsUpdater;
|
||||
|
||||
if (mOptionsMenuHandle.get()) mOptionsMenuHandle.get()->die();
|
||||
if (mOptionsMenuHandle.get())
|
||||
mOptionsMenuHandle.get()->die();
|
||||
}
|
||||
|
||||
BOOL FSPanelRadar::postBuild()
|
||||
|
|
@ -152,8 +151,7 @@ BOOL FSPanelRadar::postBuild()
|
|||
mRadarGearButton = getChild<LLButton>("gear_btn");
|
||||
mOptionsButton = getChild<LLMenuButton>("options_btn");
|
||||
|
||||
LLToggleableMenu* options_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_fs_radar_options.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
if (options_menu)
|
||||
if (LLToggleableMenu* options_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_fs_radar_options.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); options_menu)
|
||||
{
|
||||
mOptionsMenuHandle = options_menu->getHandle();
|
||||
mOptionsButton->setMenu(options_menu, LLMenuButton::MP_BOTTOM_LEFT);
|
||||
|
|
@ -204,8 +202,7 @@ void FSPanelRadar::updateButtons()
|
|||
|
||||
LLUUID FSPanelRadar::getCurrentItemID() const
|
||||
{
|
||||
LLScrollListItem* item = mRadarList->getFirstSelected();
|
||||
if (item)
|
||||
if (LLScrollListItem* item = mRadarList->getFirstSelected(); item)
|
||||
{
|
||||
return item->getUUID();
|
||||
}
|
||||
|
|
@ -251,21 +248,14 @@ void FSPanelRadar::onRadarListDoubleClicked()
|
|||
LLUUID clicked_id = item->getUUID();
|
||||
std::string name = item->getColumn(mRadarList->getColumn("name")->mIndex)->getValue().asString();
|
||||
|
||||
FSRadar* radar = FSRadar::getInstance();
|
||||
if (radar)
|
||||
{
|
||||
radar->zoomAvatar(clicked_id, name);
|
||||
}
|
||||
FSRadar::getInstance()->zoomAvatar(clicked_id, name);
|
||||
}
|
||||
|
||||
void FSPanelRadar::onRadarListCommitted()
|
||||
{
|
||||
uuid_vec_t selected_uuids;
|
||||
LLUUID sVal = mRadarList->getSelectedValue().asUUID();
|
||||
if (sVal.notNull())
|
||||
if (LLUUID sVal = mRadarList->getSelectedValue().asUUID(); sVal.notNull())
|
||||
{
|
||||
selected_uuids.push_back(sVal);
|
||||
mMiniMap->setSelected(selected_uuids);
|
||||
mMiniMap->setSelected({ sVal });
|
||||
}
|
||||
|
||||
updateButtons();
|
||||
|
|
@ -274,8 +264,7 @@ void FSPanelRadar::onRadarListCommitted()
|
|||
|
||||
void FSPanelRadar::onAddFriendButtonClicked()
|
||||
{
|
||||
LLUUID id = getCurrentItemID();
|
||||
if (id.notNull())
|
||||
if (LLUUID id = getCurrentItemID(); id.notNull())
|
||||
{
|
||||
LLAvatarActions::requestFriendshipDialog(id);
|
||||
}
|
||||
|
|
@ -301,14 +290,10 @@ void FSPanelRadar::onGearButtonClicked(LLUICtrl* btn)
|
|||
|
||||
void FSPanelRadar::requestUpdate()
|
||||
{
|
||||
FSRadar* radar = FSRadar::getInstance();
|
||||
if (radar)
|
||||
{
|
||||
std::vector<LLSD> entries;
|
||||
LLSD stats;
|
||||
radar->getCurrentData(entries, stats);
|
||||
updateList(entries, stats);
|
||||
}
|
||||
std::vector<LLSD> entries;
|
||||
LLSD stats;
|
||||
FSRadar::getInstance()->getCurrentData(entries, stats);
|
||||
updateList(entries, stats);
|
||||
}
|
||||
|
||||
void FSPanelRadar::updateList(const std::vector<LLSD>& entries, const LLSD& stats)
|
||||
|
|
@ -422,21 +407,21 @@ void FSPanelRadar::updateList(const std::vector<LLSD>& entries, const LLSD& stat
|
|||
radarNameCell->setColor(LLColor4(options["name_color"]));
|
||||
}
|
||||
|
||||
LLScrollListText* voiceLevelCell = (LLScrollListText*)row->getColumn(voiceLevelColumnIndex);
|
||||
if (entry.has("voice_level_icon"))
|
||||
{
|
||||
LLScrollListText* voiceLevelCell = (LLScrollListText*)row->getColumn(voiceLevelColumnIndex);
|
||||
voiceLevelCell->setValue(entry["voice_level_icon"].asString());
|
||||
}
|
||||
|
||||
LLScrollListText* flagsCell = (LLScrollListText*)row->getColumn(flagsColumnIndex);
|
||||
if (entry.has("flags"))
|
||||
{
|
||||
LLScrollListText* flagsCell = (LLScrollListText*)row->getColumn(flagsColumnIndex);
|
||||
flagsCell->setValue(flagsColumnValues[entry["flags"].asInteger()]);
|
||||
}
|
||||
|
||||
LLScrollListText* ageCell = (LLScrollListText*)row->getColumn(ageColumnIndex);
|
||||
if (options.has("age_color"))
|
||||
{
|
||||
LLScrollListText* ageCell = (LLScrollListText*)row->getColumn(ageColumnIndex);
|
||||
ageCell->setColor(LLColor4(options["age_color"]));
|
||||
}
|
||||
}
|
||||
|
|
@ -477,7 +462,7 @@ void FSPanelRadar::onColumnDisplayModeChanged()
|
|||
std::vector<LLScrollListColumn::Params> column_params = mRadarList->getColumnInitParams();
|
||||
S32 column_padding = mRadarList->getColumnPadding();
|
||||
|
||||
LLFloater* parent_floater = nullptr;
|
||||
LLFloater* parent_floater{ nullptr };
|
||||
LLView* parent = getParent();
|
||||
while (parent)
|
||||
{
|
||||
|
|
@ -493,8 +478,8 @@ void FSPanelRadar::onColumnDisplayModeChanged()
|
|||
return;
|
||||
}
|
||||
|
||||
S32 default_width = 0;
|
||||
S32 new_width = 0;
|
||||
S32 default_width{ 0 };
|
||||
S32 new_width{ 0 };
|
||||
S32 min_width, min_height;
|
||||
parent_floater->getResizeLimits(&min_width, &min_height);
|
||||
|
||||
|
|
@ -558,8 +543,7 @@ void FSPanelRadar::onColumnVisibilityChecked(const LLSD& userdata)
|
|||
U32 column_config = gSavedSettings.getU32("FSRadarColumnConfig");
|
||||
|
||||
U32 new_value;
|
||||
U32 enabled = (mColumnBits[column] & column_config);
|
||||
if (enabled)
|
||||
if (U32 enabled = (mColumnBits[column] & column_config); enabled)
|
||||
{
|
||||
new_value = (column_config & ~mColumnBits[column]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ private:
|
|||
|
||||
LLHandle<LLView> mOptionsMenuHandle;
|
||||
|
||||
FSRadar::Updater* mButtonsUpdater;
|
||||
std::unique_ptr<FSRadar::Updater> mButtonsUpdater;
|
||||
|
||||
std::string mFilterSubString;
|
||||
std::string mFilterSubStringOrig;
|
||||
|
|
|
|||
|
|
@ -290,14 +290,13 @@ void FSRadar::updateRadarList()
|
|||
|
||||
// Skip modelling this avatar if its basic data is either inaccessible, or it's a dummy placeholder
|
||||
auto ent = getEntry(avId);
|
||||
LLViewerRegion* reg = world->getRegionFromPosGlobal(avPos);
|
||||
if (!ent) // don't update this radar listing if data is inaccessible
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try to get the avatar's viewer object - we will need it anyway later
|
||||
LLVOAvatar* avVo = (LLVOAvatar*)gObjectList.findObject(avId);
|
||||
LLVOAvatar* avVo = static_cast<LLVOAvatar*>(gObjectList.findObject(avId));
|
||||
|
||||
static LLUICachedControl<bool> sFSShowDummyAVsinRadar("FSShowDummyAVsinRadar");
|
||||
if (!sFSShowDummyAVsinRadar && avVo && avVo->mIsDummy)
|
||||
|
|
@ -315,7 +314,7 @@ void FSRadar::updateRadarList()
|
|||
}
|
||||
|
||||
LLUUID avRegion;
|
||||
if (reg)
|
||||
if (LLViewerRegion* reg = world->getRegionFromPosGlobal(avPos); reg)
|
||||
{
|
||||
avRegion = reg->getRegionID();
|
||||
}
|
||||
|
|
@ -595,11 +594,10 @@ void FSRadar::updateRadarList()
|
|||
// Voice power level indicator
|
||||
if (voice_client->voiceEnabled() && voice_client->isVoiceWorking())
|
||||
{
|
||||
LLSpeaker* speaker = speakermgr->findSpeaker(avId);
|
||||
if (speaker && speaker->isInVoiceChannel())
|
||||
if (LLSpeaker* speaker = speakermgr->findSpeaker(avId); speaker && speaker->isInVoiceChannel())
|
||||
{
|
||||
EVoicePowerLevel power_level = voice_client->getPowerLevel(avId);
|
||||
|
||||
|
||||
switch (power_level)
|
||||
{
|
||||
case VPL_PTT_Off:
|
||||
|
|
@ -703,8 +701,7 @@ void FSRadar::updateRadarList()
|
|||
}
|
||||
|
||||
static LLCachedControl<S32> sRadarAlertChannel(gSavedSettings, "RadarAlertChannel");
|
||||
U32 num_entering = (U32)mRadarEnterAlerts.size();
|
||||
if (num_entering > 0)
|
||||
if (U32 num_entering = (U32)mRadarEnterAlerts.size(); num_entering > 0)
|
||||
{
|
||||
mRadarFrameCount++;
|
||||
U32 num_this_pass = llmin(FSRADAR_MAX_AVATARS_PER_ALERT, num_entering);
|
||||
|
|
@ -732,8 +729,8 @@ void FSRadar::updateRadarList()
|
|||
msg = llformat("%d,%d", mRadarFrameCount, num_this_pass);
|
||||
}
|
||||
}
|
||||
U32 num_leaving = (U32)mRadarLeaveAlerts.size();
|
||||
if (num_leaving > 0)
|
||||
|
||||
if (U32 num_leaving = (U32)mRadarLeaveAlerts.size(); num_leaving > 0)
|
||||
{
|
||||
mRadarFrameCount++;
|
||||
U32 num_this_pass = llmin(FSRADAR_MAX_AVATARS_PER_ALERT, num_leaving);
|
||||
|
|
@ -1010,10 +1007,9 @@ void FSRadar::zoomAvatar(const LLUUID& avatar_id, std::string_view name)
|
|||
|
||||
void FSRadar::updateNames()
|
||||
{
|
||||
const entry_map_t::iterator it_end = mEntryList.end();
|
||||
for (entry_map_t::iterator it = mEntryList.begin(); it != it_end; ++it)
|
||||
for (auto& [av_id, entry] : mEntryList)
|
||||
{
|
||||
it->second->updateName();
|
||||
entry->updateName();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,25 +43,23 @@ BOOL FSRadarListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
|
||||
if ( (mContextMenu) && (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) )
|
||||
{
|
||||
std::vector<LLScrollListItem*> selected_items = getAllSelected();
|
||||
if (selected_items.size() > 1)
|
||||
if (std::vector<LLScrollListItem*> selected_items = getAllSelected(); selected_items.size() > 1)
|
||||
{
|
||||
uuid_vec_t selected_uuids;
|
||||
for (std::vector<LLScrollListItem*>::iterator it = selected_items.begin(); it != selected_items.end(); ++it)
|
||||
for (auto selected_item : selected_items)
|
||||
{
|
||||
selected_uuids.push_back((*it)->getUUID());
|
||||
selected_uuids.emplace_back(selected_item->getUUID());
|
||||
}
|
||||
mContextMenu->show(this, selected_uuids, x, y);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLScrollListItem* hit_item = hitItem(x, y);
|
||||
if (hit_item)
|
||||
if (LLScrollListItem* hit_item = hitItem(x, y); hit_item)
|
||||
{
|
||||
selectByID(hit_item->getValue());
|
||||
LLUUID av = hit_item->getValue();
|
||||
uuid_vec_t selected_uuids;
|
||||
selected_uuids.push_back(av);
|
||||
selected_uuids.emplace_back(av);
|
||||
mContextMenu->show(this, selected_uuids, x, y);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3031,7 +3031,7 @@ BOOL LLPanelEstateAccess::postBuild()
|
|||
if (banned_name_list)
|
||||
{
|
||||
banned_name_list->setCommitOnSelectionChange(TRUE);
|
||||
banned_name_list->setMaxItemCount(ESTATE_MAX_BANNED_IDS);
|
||||
banned_name_list->setMaxItemCount(LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_BANNED_IDS : ESTATE_MAX_BANNED_IDS_OS); // <FS:Ansariel> OpenSim
|
||||
}
|
||||
|
||||
getChild<LLUICtrl>("banned_search_input")->setCommitCallback(boost::bind(&LLPanelEstateAccess::onBannedSearchEdit, this, _2));
|
||||
|
|
@ -3044,7 +3044,7 @@ BOOL LLPanelEstateAccess::postBuild()
|
|||
if (manager_name_list)
|
||||
{
|
||||
manager_name_list->setCommitOnSelectionChange(TRUE);
|
||||
manager_name_list->setMaxItemCount(ESTATE_MAX_MANAGERS * 4); // Allow extras for dupe issue
|
||||
manager_name_list->setMaxItemCount((LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_MANAGERS : ESTATE_MAX_MANAGERS_OS) * 4); // Allow extras for dupe issue // <FS:Ansariel> OpenSim
|
||||
}
|
||||
|
||||
childSetAction("add_estate_manager_btn", boost::bind(&LLPanelEstateAccess::onClickAddEstateManager, this));
|
||||
|
|
@ -3175,10 +3175,10 @@ void LLPanelEstateAccess::onClickAddBannedAgent()
|
|||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("banned_avatar_name_list");
|
||||
if (!list) return;
|
||||
if (list->getItemCount() >= ESTATE_MAX_BANNED_IDS)
|
||||
if (list->getItemCount() >= (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_BANNED_IDS : ESTATE_MAX_BANNED_IDS_OS)) // <FS:Ansariel> OpenSim
|
||||
{
|
||||
LLSD args;
|
||||
args["MAX_BANNED"] = llformat("%d", ESTATE_MAX_BANNED_IDS);
|
||||
args["MAX_BANNED"] = llformat("%d", (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_BANNED_IDS : ESTATE_MAX_BANNED_IDS_OS)); // <FS:Ansariel> OpenSim
|
||||
LLNotificationsUtil::add("MaxBannedAgentsOnRegion", args);
|
||||
return;
|
||||
}
|
||||
|
|
@ -3210,10 +3210,10 @@ void LLPanelEstateAccess::onClickAddEstateManager()
|
|||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("estate_manager_name_list");
|
||||
if (!list) return;
|
||||
if (list->getItemCount() >= ESTATE_MAX_MANAGERS)
|
||||
if (list->getItemCount() >= (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_MANAGERS : ESTATE_MAX_MANAGERS_OS)) // <FS:Ansariel> OpenSim
|
||||
{ // Tell user they can't add more managers
|
||||
LLSD args;
|
||||
args["MAX_MANAGER"] = llformat("%d", ESTATE_MAX_MANAGERS);
|
||||
args["MAX_MANAGER"] = llformat("%d", (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_MANAGERS : ESTATE_MAX_MANAGERS_OS)); // <FS:Ansariel> OpenSim
|
||||
LLNotificationsUtil::add("MaxManagersOnRegion", args);
|
||||
}
|
||||
else
|
||||
|
|
@ -3416,13 +3416,13 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, std::vector<LLAv
|
|||
LLNameListCtrl* name_list = panel->getChild<LLNameListCtrl>("banned_avatar_name_list");
|
||||
LLNameListCtrl* em_list = panel->getChild<LLNameListCtrl>("estate_manager_name_list");
|
||||
int currentCount = (name_list ? name_list->getItemCount() : 0);
|
||||
if (ids.size() + currentCount > ESTATE_MAX_BANNED_IDS)
|
||||
if (ids.size() + currentCount > (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_BANNED_IDS : ESTATE_MAX_BANNED_IDS_OS)) // <FS:Ansariel> OpenSim
|
||||
{
|
||||
LLSD args;
|
||||
args["NUM_ADDED"] = llformat("%d", ids.size());
|
||||
args["MAX_AGENTS"] = llformat("%d", ESTATE_MAX_BANNED_IDS);
|
||||
args["MAX_AGENTS"] = llformat("%d", (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_BANNED_IDS : ESTATE_MAX_BANNED_IDS_OS)); // <FS:Ansariel> OpenSim
|
||||
args["LIST_TYPE"] = LLTrans::getString("RegionInfoListTypeBannedAgents");
|
||||
args["NUM_EXCESS"] = llformat("%d", (ids.size() + currentCount) - ESTATE_MAX_BANNED_IDS);
|
||||
args["NUM_EXCESS"] = llformat("%d", (ids.size() + currentCount) - (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_BANNED_IDS : ESTATE_MAX_BANNED_IDS_OS)); // <FS:Ansariel> OpenSim
|
||||
LLNotificationsUtil::add("MaxAgentOnRegionBatch", args);
|
||||
delete change_info;
|
||||
return;
|
||||
|
|
@ -3801,7 +3801,7 @@ void LLPanelEstateAccess::requestEstateGetAccessCoro(std::string url)
|
|||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[BANNEDAGENTS]"] = llformat("%d", result["BannedAgents"].size());
|
||||
args["[MAXBANNED]"] = llformat("%d", ESTATE_MAX_BANNED_IDS);
|
||||
args["[MAXBANNED]"] = llformat("%d", (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_BANNED_IDS : ESTATE_MAX_BANNED_IDS_OS)); // <FS:Ansariel> OpenSim
|
||||
std::string msg = LLTrans::getString("RegionInfoBannedResidents", args);
|
||||
panel->getChild<LLUICtrl>("ban_resident_label")->setValue(LLSD(msg));
|
||||
|
||||
|
|
@ -3863,7 +3863,7 @@ void LLPanelEstateAccess::requestEstateGetAccessCoro(std::string url)
|
|||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[ESTATEMANAGERS]"] = llformat("%d", result["Managers"].size());
|
||||
args["[MAXMANAGERS]"] = llformat("%d", ESTATE_MAX_MANAGERS);
|
||||
args["[MAXMANAGERS]"] = llformat("%d", (LLGridManager::instance().isInSecondLife() ? ESTATE_MAX_MANAGERS : ESTATE_MAX_MANAGERS_OS)); // <FS:Ansariel> OpenSim
|
||||
std::string msg = LLTrans::getString("RegionInfoEstateManagers", args);
|
||||
panel->getChild<LLUICtrl>("estate_manager_label")->setValue(LLSD(msg));
|
||||
|
||||
|
|
|
|||
|
|
@ -7514,8 +7514,11 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-21200: Attachment Points List in Alphabetical Order
|
||||
attach_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
attach_hud_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
if (gSavedSettings.getBOOL("FSSortAttachmentSpotsAlphabetically"))
|
||||
{
|
||||
attach_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
attach_hud_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1500,25 +1500,23 @@ void LLPanelObject::deactivateStandardFields()
|
|||
getChildView("advanced_slice")->setVisible(FALSE);
|
||||
}
|
||||
|
||||
void LLPanelObject::activateMeshFields(LLViewerObject * objectp)
|
||||
void LLPanelObject::activateMeshFields(LLViewerObject* objectp)
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
static const char * dataFields[4] = { "LOWESTTRIS", "LOWTRIS", "MIDTRIS", "HIGHTRIS" };
|
||||
|
||||
LLTextBox *num_tris = getChild<LLTextBox>("mesh_lod_num_tris");
|
||||
if (num_tris)
|
||||
LLTextBox* num_tris = getChild<LLTextBox>("mesh_lod_num_tris");
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
args[dataFields[i]] = llformat("%d", objectp->mDrawable->getVOVolume()->getLODTriangleCount(i));
|
||||
}
|
||||
num_tris->setText(getString("mesh_lod_num_tris_values",args));
|
||||
num_tris->setVisible(TRUE);
|
||||
args[dataFields[i]] = llformat("%d", objectp->mDrawable->getVOVolume()->getLODTriangleCount(i));
|
||||
}
|
||||
childSetVisible("mesh_info_label", TRUE);
|
||||
childSetVisible("lod_label", TRUE);
|
||||
childSetVisible("lod_num_tris", TRUE);
|
||||
childSetVisible("mesh_lod_label", TRUE);
|
||||
num_tris->setText(getString("mesh_lod_num_tris_values",args));
|
||||
num_tris->setVisible(TRUE);
|
||||
|
||||
childSetVisible("mesh_info_label", true);
|
||||
childSetVisible("lod_label", true);
|
||||
childSetVisible("lod_num_tris", true);
|
||||
childSetVisible("mesh_lod_label", true);
|
||||
// Mesh specific display
|
||||
mComboLOD->setEnabled(TRUE);
|
||||
mComboLOD->setVisible(TRUE);
|
||||
|
|
@ -1541,7 +1539,7 @@ void LLPanelObject::activateMeshFields(LLViewerObject * objectp)
|
|||
radius = objectp->getVolume() ? objectp->getVolume()->mLODScaleBias.scaledVec(objectp->getScale()).length() : objectp->getScale().length();
|
||||
}
|
||||
|
||||
static const F32 max_distance = 512.f;
|
||||
constexpr F32 max_distance = 512.f;
|
||||
F32 factor;
|
||||
F32 dlowest = llmin(radius / 0.03f, max_distance);
|
||||
F32 dlow = llmin(radius / 0.06f, max_distance);
|
||||
|
|
@ -1591,7 +1589,7 @@ void LLPanelObject::activateMeshFields(LLViewerObject * objectp)
|
|||
setLODDistValues(tb, factor, dmid, dlow, dlowest);
|
||||
}
|
||||
|
||||
void LLPanelObject::setLODDistValues(LLTextBox * tb, F32 factor, F32 dmid, F32 dlow, F32 dlowest)
|
||||
void LLPanelObject::setLODDistValues(LLTextBox* tb, F32 factor, F32 dmid, F32 dlow, F32 dlowest)
|
||||
{
|
||||
if (tb)
|
||||
{
|
||||
|
|
@ -1607,11 +1605,11 @@ void LLPanelObject::setLODDistValues(LLTextBox * tb, F32 factor, F32 dmid, F32 d
|
|||
|
||||
void LLPanelObject::deactivateMeshFields()
|
||||
{
|
||||
childSetVisible("mesh_info_label", FALSE);
|
||||
childSetVisible("lod_label", FALSE);
|
||||
childSetVisible("lod_num_tris", FALSE);
|
||||
childSetVisible("mesh_lod_num_tris", FALSE);
|
||||
childSetVisible("mesh_lod_label", FALSE);
|
||||
childSetVisible("mesh_info_label", false);
|
||||
childSetVisible("lod_label", false);
|
||||
childSetVisible("lod_num_tris", false);
|
||||
childSetVisible("mesh_lod_num_tris", false);
|
||||
childSetVisible("mesh_lod_label", false);
|
||||
// reset the debug setting as we are editing a new object
|
||||
gSavedSettings.setS32("ShowSpecificLODInEdit", -1);
|
||||
// </FS:Beq>
|
||||
|
|
@ -1620,7 +1618,7 @@ void LLPanelObject::deactivateMeshFields()
|
|||
mComboLOD->setEnabled(FALSE);
|
||||
mComboLOD->setVisible(FALSE);
|
||||
|
||||
childSetVisible("object_radius", FALSE);
|
||||
childSetVisible("object_radius", false);
|
||||
LLTextBox* tb = getChild<LLTextBox>("object_radius_value");
|
||||
tb->setVisible(FALSE);
|
||||
|
||||
|
|
|
|||
|
|
@ -90,8 +90,11 @@ void LLViewerAttachMenu::populateMenus(const std::string& attach_to_menu_name, c
|
|||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-21200: Attachment Points List in Alphabetical Order
|
||||
attach_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
attach_hud_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
if (gSavedSettings.getBOOL("FSSortAttachmentSpotsAlphabetically"))
|
||||
{
|
||||
attach_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
attach_hud_menu->getItems()->sort(LLViewerAttachMenu::sort());
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11950,7 +11950,7 @@ void LLPipeline::handleShadowDetailChanged()
|
|||
{
|
||||
skipRenderingShadows();
|
||||
}
|
||||
else
|
||||
// else <FS:Beq/> Ghosting fix for Whirly to try. just remove this for now.
|
||||
{
|
||||
LLViewerShaderMgr::instance()->setShaders();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<button label="OK" label_selected="OK" name="OK"/>
|
||||
<button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
|
||||
<panel name="search_panel">
|
||||
<search_editor label="Sucheinstellungen" name="search_prefs_edit" tool_tip="Geben Sie hier den gewünschten Suchbegriff ein. Die Ergebnisse werden für teilweise Volltext-Treffer innerhalb des Einstellungsnamens oder Kommentars angezeigt."/>
|
||||
<search_editor label="Einstellungen durchsuchen" name="search_prefs_edit" tool_tip="Geben Sie hier den gewünschten Suchbegriff ein. Die Ergebnisse werden für teilweise Volltext-Treffer innerhalb des Einstellungsnamens oder Kommentars angezeigt."/>
|
||||
<button name="copy_search_slurl_btn" tool_tip="Suchbegriff als SLURL kopieren"/>
|
||||
</panel>
|
||||
<tab_container name="pref core">
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@
|
|||
<context_menu label="Abnehmen" name="Detach Self"/>
|
||||
<menu_item_call label="Alles abnehmen" name="Detach All"/>
|
||||
</context_menu>
|
||||
<menu_item_call label="Hinsetzen / Aufstehen" name="Sit stand"/>
|
||||
<menu_item_call label="Fliegen / Landen" name="Fly land"/>
|
||||
<menu_item_call label="Animationen stoppen" name="Stop Animating My Avatar"/>
|
||||
<context_menu label="Gemeinschaft" name="CommunitySubmenu">
|
||||
<menu_item_call label="Freunde" name="Friends..."/>
|
||||
<menu_item_call label="Gruppen" name="Groups..."/>
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@
|
|||
<text left="370" name="text_box_objprams3">
|
||||
Textur
|
||||
</text>
|
||||
<view_border name="TextureBorder" width="270"/>
|
||||
<view_border name="TextureBorder" width="270"/>
|
||||
<spinner label="X-Größe" name="X size" label_width="50" width="120"/>
|
||||
<spinner label="Y-Größe" name="Y size" label_width="50" width="120"/>
|
||||
<spinner label="Z-Größe" name="Z size" label_width="50" width="120"/>
|
||||
|
|
@ -162,7 +162,7 @@
|
|||
<combo_item name="Low" label="Niedrid"/>
|
||||
<combo_item name="Medium" label="Mittel"/>
|
||||
<combo_item name="High" label="Hoch"/>
|
||||
</combo_box>
|
||||
</combo_box>
|
||||
<check_box name="FSBuildPrefs_EmbedItem" label="Objekt zu neuem Prim hinzufügen"/>
|
||||
<fs_embedded_item_drop_target name="embed_item" tool_tip="Gegenstand aus Inventar hier ablegen">
|
||||
Gegenstand aus Inventar hier ablegen
|
||||
|
|
@ -239,6 +239,7 @@
|
|||
<check_box label="Vorschau von Animation beim Upload am eigenen Avatar" tool_tip="Falls aktiviert, werden Animationen in der Vorschau am eigenen Avatar abgespielt" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
<check_box label="Immer erweiterte Informationen zu Animationen anzeigen" tool_tip="Erweiterte Informationen zu Animation im Eigentschaftsfenster anzeigen" name="FSAnimationPreviewExpanded"/>
|
||||
<check_box label="Erweiterte Skript-Informationen aktivieren" tool_tip="Falls aktiviert, werden die Skript-Informationen um weitergehende Details ergänzt." name="FSScriptInfoExtended"/>
|
||||
<check_box label="Anhänge-Punkte in „Anhängen an“-Menüs alphabetisch sortieren (Erfordert Neustart)" tool_tip="Falls aktiviert, werden die Einträge in den „Anhängen an“-Menüs alphabetisch sortiert." name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
</panel>
|
||||
|
||||
<!--Uploads-->
|
||||
|
|
|
|||
|
|
@ -1646,6 +1646,14 @@
|
|||
name="FSScriptInfoExtended"
|
||||
enabled_control="UseLSLBridge"
|
||||
control_name="FSScriptInfoExtended"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Sort attachment spots in "Attach to" menus alphabetically (requires restart)"
|
||||
tool_tip="If enabled, the list of attachments spots in the &Attach to& menus will be sorted alphabetically"
|
||||
name="FSSortAttachmentSpotsAlphabetically"
|
||||
control_name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
</panel>
|
||||
|
||||
<!--Uploads-->
|
||||
|
|
|
|||
|
|
@ -11,19 +11,46 @@
|
|||
<menu_item_call label="S'asseoir" name="Sit Down Here"/>
|
||||
<menu_item_call label="Se lever" name="Stand Up"/>
|
||||
<context_menu label="Apparence" name="AppearanceSubmenu">
|
||||
<menu_item_call label="Tenue actuelle" name="NowWearing" />
|
||||
<menu_item_call label="Changer de tenue" name="Change Outfit" />
|
||||
<menu_item_call label="Modifier la silhouette" name="Edit Shape" />
|
||||
<menu_item_call label="Modifier la tenue" name="Edit Outfit Parts" />
|
||||
<menu_item_call label="Voltigement" name="Hover Height"/>
|
||||
<menu_item_call label="Réinitialiser le squelette" name="Reset Skeleton"/>
|
||||
<menu_item_call label="Réinitialiser le squelette et les animations" name="Reset Skeleton And Animations"/>
|
||||
<menu_item_call label="Réinitialiser le LOD du maillage" name="Reset Mesh LOD"/>
|
||||
</context_menu>
|
||||
<context_menu label="Enlever" name="Take Off >">
|
||||
<context_menu label="Vêtements" name="Clothes >">
|
||||
<menu_item_call label="Chemise" name="Shirt"/>
|
||||
<menu_item_call label="Pantalon" name="Pants"/>
|
||||
<menu_item_call label="Jupe" name="Skirt"/>
|
||||
<menu_item_call label="Chaussures" name="Shoes"/>
|
||||
<menu_item_call label="Chaussettes" name="Socks"/>
|
||||
<menu_item_call label="Veste" name="Jacket"/>
|
||||
<menu_item_call label="Gants" name="Gloves"/>
|
||||
<menu_item_call label="Maillot de corps" name="Self Undershirt"/>
|
||||
<menu_item_call label="Caleçon" name="Self Underpants"/>
|
||||
<menu_item_call label="Tatouage" name="Self Tattoo"/>
|
||||
<menu_item_call label="Physique" name="Self Physics"/>
|
||||
<menu_item_call label="Alpha" name="Self Alpha"/>
|
||||
<menu_item_call label="Tous les vêtements" name="All Clothes"/>
|
||||
</context_menu>
|
||||
<context_menu label="HUD" name="Detach Self HUD"/>
|
||||
<context_menu label="Enlever" name="Detach Self"/>
|
||||
<menu_item_call label="Tout enlever" name="Detach All"/>
|
||||
</context_menu>
|
||||
<menu_item_call label="S'asseoir / Se lever" name="Sit stand"/>
|
||||
<menu_item_call label="Voler / Atterrir" name="Fly land"/>
|
||||
<menu_item_call label="Arrêter les animations" name="Stop Animating My Avatar"/>
|
||||
<context_menu label="Communauté" name="CommunitySubmenu">
|
||||
<menu_item_call label="Amis" name="Friends..."/>
|
||||
<menu_item_call label="Groupes" name="Groups..."/>
|
||||
<menu_item_call label="Profil" name="Profile..."/>
|
||||
</context_menu>
|
||||
<menu_item_call label="Dump XML" name="Dump XML"/>
|
||||
<menu_item_call label="Profil de l'objet" name="Object Inspect"/>
|
||||
<menu_item_call label="Examiner" name="Object_Inspect_Floater"/>
|
||||
<menu_item_call label="Informations sur les scripts" name="ScriptInfo"/>
|
||||
<menu_item_call label="Faire disparaitre temporairement" name="Derender"/>
|
||||
<menu_item_call label="Faire disparaitre & Blacklister" name="DerenderPermanent"/>
|
||||
|
|
|
|||
|
|
@ -23,11 +23,21 @@
|
|||
<pie_slice label="Appel audio" name="Call"/>
|
||||
<pie_slice label="Zoomer" name="Zoom In"/>
|
||||
<pie_slice label="Actualiser les textures" name="Texture Refresh"/>
|
||||
<pie_menu name="ResetMenu" label="Réinitialiser >">
|
||||
<pie_slice label="Squelette et animations" name="Reset Skeleton And Animations"/>
|
||||
<pie_slice label="Squelette" name="Reset Skeleton"/>
|
||||
<pie_slice label="LOD du mesh" name="Reset Mesh LOD" />
|
||||
</pie_menu>
|
||||
<pie_menu name="ExportMenu" label="Enregistrer sous >">
|
||||
<pie_slice label="Sauvegarde" name="Backup"/>
|
||||
<pie_slice label="Collada" name="Collada"/>
|
||||
<pie_slice label="Dump XML" name="Dump XML"/>
|
||||
</pie_menu>
|
||||
<pie_menu name="RenderMenu" label="Afficher >">
|
||||
<pie_slice name="RenderNormally" label="Normalement" />
|
||||
<pie_slice name="DoNotRender" label="Jamais" />
|
||||
<pie_slice name="AlwaysRenderFully" label="Complètement" />
|
||||
</pie_menu>
|
||||
</pie_menu>
|
||||
<pie_slice label="Inspecter" name="Avatar Inspect"/>
|
||||
<pie_menu name="DerenderMenu" label="Faire disparaitre >">
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@
|
|||
<check_box label="Prévisualiser les animations sur son avatar pendant le téléchargement sur le serveur" tool_tip="Si activé, vous pouvez prévisualiser les animations sur votre propre avatar pendant le téléchargement sur le serveur" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
<check_box label="Toujours développer les informations détaillées de la prévisualisation de l'animation" tool_tip="Développer par défaut les informations détaillées sur l'animation dans le flotteur de l'aperçu de l'animation" name="FSAnimationPreviewExpanded"/>
|
||||
<check_box label="Active les informations détaillées pour les script" tool_tip="Activée, ajoute aux informations de base sur les scripts des détails utiles aux créateurs" name="FSScriptInfoExtended"/>
|
||||
<check_box label="Trier par ordre alphabétique les points d'attachement dans les menus "Attacher à" (redémarrage requis)" tool_tip="Si cette option est activée, la liste des points d'attachement dans les menus &Attacher à& sera triée par ordre alphabétique." name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
</panel>
|
||||
<panel label="Chargements" name="UploadsTab">
|
||||
<text name="title">Dossiers de destination pour les chargements :</text>
|
||||
|
|
|
|||
|
|
@ -213,6 +213,7 @@
|
|||
<check_box label="Podgląd animacji na własnym awatarze podczas przesyłania ich na serwer" tool_tip="Gdy zaznaczysz tą opcję, to będziesz w stanie oglądać animacje na swoim własnym awatarze podczas przesyłania ich na serwer" name="FSUploadAnimationOnOwnAvatar" />
|
||||
<check_box label="Zawsze rozwijaj zaawansowane informacje o podglądzie animacji" tool_tip="Domyślnie rozwiń zaawansowane informacje o animacji w oknie podglądu animacji" name="FSAnimationPreviewExpanded" />
|
||||
<check_box label="Włącz rozszerzanie funkcjonalności informacji o skryptach" tool_tip="Gdy zaznaczysz tą opcję, to podstawowa funkcjonalność informacji o skryptach zostanie rozszerzona za pomocą różnych szczegółów przydatnych dla budowniczych" name="FSScriptInfoExtended" />
|
||||
<check_box label="Sortuj miejsca dodatków w sekcjach menu "Dołącz do" alfabetycznie (wymaga restartu)" tool_tip="Jeśli ta opcja jest włączona, to lista miejsc dla doczepienia dodatków pojawiająca się w menusach "Dołącz do" będzie posortowana alfabetycznie" name="FSSortAttachmentSpotsAlphabetically" />
|
||||
</panel>
|
||||
<panel label="Nowe pliki" name="UploadsTab">
|
||||
<text name="title">
|
||||
|
|
|
|||
|
|
@ -218,7 +218,9 @@
|
|||
<check_box label="Используйте Ctrl + мышь, чтобы захватить и манипулировать объектами" tool_tip="Используйте Ctrl + мышь, чтобы захватить и манипулировать объектами" name="FSEnableGrab" />
|
||||
<check_box label="Масштабирование при нажатии (вместе с caps lock) для текстур при строительстве" tool_tip="При включении, позволяет тянуть при нажатии или масштаб при нажатии (вместе с caps lock) для текстур в режиме строительства. Эта функция эксперементальная и ее следует использовать с осторожностью." name="FSExperimentalDragTexture" />
|
||||
<check_box label="Предварительный просмотр анимации на собственном аватара во время загрузки" tool_tip="Предварительный просмотр анимации на собственном аватара во время загрузки" name="FSUploadAnimationOnOwnAvatar" />
|
||||
<check_box label="Всегда раскрывать расширенную информацию в предпросмотре анимации" tool_tip="Развернуть расширенную информацию об анимации в всплывающем окне предварительного просмотра анимации по умолчанию." name="FSAnimationPreviewExpanded"/>
|
||||
<check_box label="Включить расширенную информацию скрипта" name="FSScriptInfoExtended" tool_tip="Если включено, расширяет базовую функцию информации скрипта с различными деталями, полезными для строителей"/>
|
||||
<check_box label="Сортировка мест прикрепления в "Прикрепить к" меню по алфавиту (требуется перезагрузка)" tool_tip="Если этот параметр включен, список прикреплений в &Прикрепить к& меню будут отсортированы по алфавиту" name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
</panel>
|
||||
<!--Uploads-->
|
||||
<panel label="Загрузки" name="UploadsTab">
|
||||
|
|
|
|||
Loading…
Reference in New Issue