This commit is contained in:
Ansariel
2026-06-03 23:40:18 +02:00
68 changed files with 584 additions and 103 deletions
+31 -32
View File
@@ -7,7 +7,7 @@ include_guard()
# USE_VELOPACK controls whether to use Velopack for installer packaging (instead of NSIS/DMG)
option(USE_VELOPACK "Use Velopack for installer packaging" OFF)
if (USE_VELOPACK)
if (USE_VELOPACK) # <FS:TJ/> Only include and link Velopack if it is being used
if (WINDOWS)
include(Prebuilt)
use_prebuilt_binary(velopack)
@@ -35,36 +35,35 @@ if (USE_VELOPACK)
ntdll
)
target_compile_definitions(ll::velopack INTERFACE LL_VELOPACK=1)
elseif (DARWIN)
include(Prebuilt)
use_prebuilt_binary(velopack)
add_library(ll::velopack INTERFACE IMPORTED)
target_include_directories(ll::velopack SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include/velopack
)
target_link_libraries(ll::velopack INTERFACE
${ARCH_PREBUILT_DIRS_RELEASE}/libvelopack_libc.a
)
# macOS system frameworks required by Velopack (Rust static library dependencies)
target_link_libraries(ll::velopack INTERFACE
"-framework Foundation"
"-framework Security"
"-framework SystemConfiguration"
"-framework AppKit"
"-framework CoreFoundation"
"-framework CoreServices"
"-framework IOKit"
"-liconv"
"-lresolv"
)
target_compile_definitions(ll::velopack INTERFACE LL_VELOPACK=1)
endif()
elseif (DARWIN)
include(Prebuilt)
use_prebuilt_binary(velopack)
add_library(ll::velopack INTERFACE IMPORTED)
target_include_directories(ll::velopack SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include/velopack
)
target_link_libraries(ll::velopack INTERFACE
${ARCH_PREBUILT_DIRS_RELEASE}/libvelopack_libc.a
)
# macOS system frameworks required by Velopack (Rust static library dependencies)
target_link_libraries(ll::velopack INTERFACE
"-framework Foundation"
"-framework Security"
"-framework SystemConfiguration"
"-framework AppKit"
"-framework CoreFoundation"
"-framework CoreServices"
"-framework IOKit"
"-liconv"
"-lresolv"
)
target_compile_definitions(ll::velopack INTERFACE LL_VELOPACK=1)
endif()
endif() # <FS:TJ/> Only include and link Velopack if it is being used
+1 -1
View File
@@ -1 +1 @@
7.2.4
7.2.5
+27
View File
@@ -487,6 +487,33 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>FSContactSetsListColorizeOffline</key>
<map>
<key>Comment</key>
<string>Whether to use a custom color for offline contacts in Contact Sets lists. A custom contact set color takes precedence when set.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>FSContactSetsListOfflineColor</key>
<map>
<key>Comment</key>
<string>Custom color for offline contacts in Contact Sets lists when FSContactSetsListColorizeOffline is enabled.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.5</real>
<real>1.0</real>
</array>
</map>
<key>FSMuteAllGroups</key>
<map>
<key>Comment</key>
+178
View File
@@ -66,6 +66,7 @@
#include "lltoolmgr.h"
#include "rlvhandler.h"
#include "llclipboard.h"
#include "lluri.h"
// max number of objects that can be (de-)selected in a single packet.
constexpr S32 MAX_OBJECTS_PER_PACKET = 255;
@@ -218,9 +219,181 @@ bool FSAreaSearch::postBuild()
void FSAreaSearch::onOpen(const LLSD& key)
{
if (key.isMap() && key.size() > 0)
{
applySlappParams(key);
return;
}
mTab->selectTab(1);
}
namespace
{
constexpr const char* CLICK_ACTION_NAMES[] = {"blank", "any", "touch", "sit", "buy", "pay", "open", "play", "open_media", "zoom"};
constexpr S32 CLICK_ACTION_COUNT = (S32)(sizeof(CLICK_ACTION_NAMES) / sizeof(*CLICK_ACTION_NAMES));
constexpr S32 RANGE_MIN_DEFAULT = 0;
constexpr S32 RANGE_MAX_DEFAULT = 999999;
constexpr S32 RANGE_VALUE_CAP = 999999999; // matches spinner max_val in floater_fs_area_search.xml
constexpr S32 MAX_FIELD_CHARS = 256; // matches line_editor max_length_chars
}
const FSAreaSearch::SlappBoolEntry FSAreaSearch::sBoolFilters[] = {
{"fl", &FSPanelAreaSearchFilter::mCheckboxLocked, &FSAreaSearch::setFilterLocked, &FSAreaSearch::mFilterLocked},
{"fp", &FSPanelAreaSearchFilter::mCheckboxPhysical, &FSAreaSearch::setFilterPhysical, &FSAreaSearch::mFilterPhysical},
{"ft", &FSPanelAreaSearchFilter::mCheckboxTemporary, &FSAreaSearch::setFilterTemporary, &FSAreaSearch::mFilterTemporary},
{"fh", &FSPanelAreaSearchFilter::mCheckboxPhantom, &FSAreaSearch::setFilterPhantom, &FSAreaSearch::mFilterPhantom},
{"fa", &FSPanelAreaSearchFilter::mCheckboxAttachment, &FSAreaSearch::setFilterAttachment, &FSAreaSearch::mFilterAttachment},
{"fm", &FSPanelAreaSearchFilter::mCheckboxMoaP, &FSAreaSearch::setFilterMoaP, &FSAreaSearch::mFilterMoaP},
{"fr", &FSPanelAreaSearchFilter::mCheckboxReflectionProbe, &FSAreaSearch::setFilterReflectionProbe, &FSAreaSearch::mFilterReflectionProbe},
{"pc", &FSPanelAreaSearchFilter::mCheckboxPermCopy, &FSAreaSearch::setFilterPermCopy, &FSAreaSearch::mFilterPermCopy},
{"pm", &FSPanelAreaSearchFilter::mCheckboxPermModify, &FSAreaSearch::setFilterPermModify, &FSAreaSearch::mFilterPermModify},
{"pt", &FSPanelAreaSearchFilter::mCheckboxPermTransfer, &FSAreaSearch::setFilterPermTransfer, &FSAreaSearch::mFilterPermTransfer},
{"ap", &FSPanelAreaSearchFilter::mCheckboxAgentParcelOnly, &FSAreaSearch::setFilterAgentParcelOnly, &FSAreaSearch::mFilterAgentParcelOnly},
{"xa", &FSPanelAreaSearchFilter::mCheckboxExcludeAttachment, &FSAreaSearch::setExcludeAttachment, &FSAreaSearch::mExcludeAttachment},
{"xp", &FSPanelAreaSearchFilter::mCheckboxExcludePhysics, &FSAreaSearch::setExcludePhysics, &FSAreaSearch::mExcludePhysics},
{"xt", &FSPanelAreaSearchFilter::mCheckboxExcludetemporary, &FSAreaSearch::setExcludetemporary, &FSAreaSearch::mExcludeTemporary},
{"xr", &FSPanelAreaSearchFilter::mCheckboxExcludeReflectionProbes, &FSAreaSearch::setExcludeReflectionProbe, &FSAreaSearch::mExcludeReflectionProbe},
{"xc", &FSPanelAreaSearchFilter::mCheckboxExcludeChildPrim, &FSAreaSearch::setExcludeChildPrims, &FSAreaSearch::mExcludeChildPrims},
{"xn", &FSPanelAreaSearchFilter::mCheckboxExcludeNeighborRegions, &FSAreaSearch::setExcludeNeighborRegions, &FSAreaSearch::mExcludeNeighborRegions},
};
const FSAreaSearch::SlappTextEntry FSAreaSearch::sTextFields[] = {
{"nm", &FSPanelAreaSearchFind::mNameLineEditor, &FSAreaSearch::mSearchName},
{"ds", &FSPanelAreaSearchFind::mDescriptionLineEditor, &FSAreaSearch::mSearchDescription},
{"ow", &FSPanelAreaSearchFind::mOwnerLineEditor, &FSAreaSearch::mSearchOwner},
{"gr", &FSPanelAreaSearchFind::mGroupLineEditor, &FSAreaSearch::mSearchGroup},
{"cr", &FSPanelAreaSearchFind::mCreatorLineEditor, &FSAreaSearch::mSearchCreator},
{"lo", &FSPanelAreaSearchFind::mLastOwnerLineEditor, &FSAreaSearch::mSearchLastOwner},
};
void FSAreaSearch::applySlappParams(const LLSD& params)
{
auto as_bool = [](const LLSD& v)
{
std::string s = v.asString();
LLStringUtil::toLower(s);
return s == "1" || s == "true" || s == "on" || s == "yes";
};
for (const auto& t : sTextFields)
{
const std::string value = params.has(t.key) ? params[t.key].asString() : std::string();
(mPanelFind->*t.editor)->setText(LLStringExplicit(utf8str_symbol_truncate(value, MAX_FIELD_CHARS)));
}
const bool regex_on = params.has("rx") && as_bool(params["rx"]);
mPanelFind->mCheckboxRegex->set(regex_on);
mRegexSearch = regex_on;
for (const auto& b : sBoolFilters)
{
const bool v = params.has(b.key) && as_bool(params[b.key]);
(mPanelFilter->*b.ctl)->set(v);
(this->*b.setter)(v);
}
auto apply_range = [&](const char* flag_k, const char* min_k, const char* max_k, LLCheckBoxCtrl* ctl, LLSpinCtrl* min_s, LLSpinCtrl* max_s, void (FSAreaSearch::*set_flag)(bool), void (FSAreaSearch::*set_min)(S32), void (FSAreaSearch::*set_max)(S32))
{
const bool has_min = params.has(min_k);
const bool has_max = params.has(max_k);
const bool has_flag = params.has(flag_k);
const bool enabled = has_flag ? as_bool(params[flag_k]) : (has_min || has_max);
const S32 vmin = llclamp(has_min ? params[min_k].asInteger() : RANGE_MIN_DEFAULT, RANGE_MIN_DEFAULT, RANGE_VALUE_CAP);
const S32 vmax = llclamp(has_max ? params[max_k].asInteger() : RANGE_MAX_DEFAULT, RANGE_MIN_DEFAULT, RANGE_VALUE_CAP);
min_s->set((F32)vmin); (this->*set_min)(vmin);
max_s->set((F32)vmax); (this->*set_max)(vmax);
ctl->set(enabled); (this->*set_flag)(enabled);
};
apply_range("fs", "smn", "smx", mPanelFilter->mCheckboxForSale, mPanelFilter->mSpinForSaleMinValue, mPanelFilter->mSpinForSaleMaxValue, &FSAreaSearch::setFilterForSale, &FSAreaSearch::setFilterForSaleMin, &FSAreaSearch::setFilterForSaleMax);
apply_range("fd", "dmn", "dmx", mPanelFilter->mCheckboxDistance, mPanelFilter->mSpinDistanceMinValue, mPanelFilter->mSpinDistanceMaxValue, &FSAreaSearch::setFilterDistance, &FSAreaSearch::setFilterDistanceMin, &FSAreaSearch::setFilterDistanceMax);
S32 action_idx = 0;
if (params.has("ca"))
{
const std::string action = params["ca"].asString();
for (S32 i = 1; i < CLICK_ACTION_COUNT; ++i)
{
if (action == CLICK_ACTION_NAMES[i]) {action_idx = i; break;}
}
}
mPanelFilter->mComboClickAction->setCurrentByIndex(action_idx);
setFilterClickAction(action_idx > 0);
setFilterClickActionType((U8)action_idx);
onButtonClickedSearch();
}
std::string FSAreaSearch::buildSlappLink() const
{
std::ostringstream url;
url << "secondlife:///app/openfloater/area_search";
bool first = true;
auto add = [&](const char* k, const std::string& v)
{
url << (first ? '?' : '&');
first = false;
url << k << '=' << LLURI::escape(v);
};
for (const auto& t : sTextFields)
{
const std::string& v = this->*t.state;
if (!v.empty()) add(t.key, v);
}
if (mRegexSearch)
{
add("rx", "1");
}
for (const auto& b : sBoolFilters)
{
if (this->*b.state)
{
add(b.key, "1");
}
}
if (mFilterForSale)
{
add("fs", "1");
if (mFilterForSaleMin != RANGE_MIN_DEFAULT)
{
add("smn", std::to_string(mFilterForSaleMin));
}
if (mFilterForSaleMax != RANGE_MAX_DEFAULT)
{
add("smx", std::to_string(mFilterForSaleMax));
}
}
if (mFilterDistance)
{
add("fd", "1");
if (mFilterDistanceMin != RANGE_MIN_DEFAULT)
{
add("dmn", std::to_string(mFilterDistanceMin));
}
if (mFilterDistanceMax != RANGE_MAX_DEFAULT)
{
add("dmx", std::to_string(mFilterDistanceMax));
}
}
if (mFilterClickAction && mFilterClickActionType > 0 && (S32)mFilterClickActionType < CLICK_ACTION_COUNT)
{
add("ca", CLICK_ACTION_NAMES[mFilterClickActionType]);
}
return url.str();
}
void FSAreaSearch::onCopySlappLink()
{
onCommitLine();
const std::string link = buildSlappLink();
LLClipboard::instance().copyToClipboard(utf8str_to_wstring(link), 0, (S32)link.size());
}
void FSAreaSearch::draw()
{
LLFloater::draw();
@@ -2185,6 +2358,11 @@ bool FSPanelAreaSearchFind::postBuild()
mSearchButton = getChild<LLButton>("search");
mSearchButton->setClickedCallback(boost::bind(&FSAreaSearch::onButtonClickedSearch, mFSAreaSearch));
if (LLButton* copy_link = findChild<LLButton>("copy_link"))
{
copy_link->setClickedCallback(boost::bind(&FSAreaSearch::onCopySlappLink, mFSAreaSearch));
}
mClearButton = getChild<LLButton>("clear");
mClearButton->setClickedCallback(boost::bind(&FSPanelAreaSearchFind::onButtonClickedClear, this));
+21
View File
@@ -166,9 +166,29 @@ public:
void setFilterAgentParcelOnly(bool b) { mFilterAgentParcelOnly = b; }
void applySlappParams(const LLSD& params);
std::string buildSlappLink() const;
void onCopySlappLink();
bool isActive() const { return mActive; }
private:
struct SlappBoolEntry
{
const char* key;
LLCheckBoxCtrl* FSPanelAreaSearchFilter::* ctl;
void (FSAreaSearch::*setter)(bool);
bool FSAreaSearch::* state;
};
struct SlappTextEntry
{
const char* key;
LLLineEditor* FSPanelAreaSearchFind::* editor;
std::string FSAreaSearch::* state;
};
static const SlappBoolEntry sBoolFilters[];
static const SlappTextEntry sTextFields[];
void requestObjectProperties(const std::vector<U32>& request_list, bool select, LLViewerRegion* regionp);
void matchObject(FSObjectProperties& details, LLViewerObject* objectp);
void getNameFromUUID(const LLUUID& id, std::string& name, bool group, bool& name_requested);
@@ -368,6 +388,7 @@ class FSPanelAreaSearchFilter
: public LLPanel
{
LOG_CLASS(FSPanelAreaSearchFilter);
friend class FSAreaSearch;
public:
FSPanelAreaSearchFilter(FSAreaSearch* pointer);
virtual ~FSPanelAreaSearchFilter() = default;
@@ -83,6 +83,17 @@ FSFloaterAddToContactSet::~FSFloaterAddToContactSet()
bool FSFloaterAddToContactSet::postBuild()
{
if (mIsMoveOperation)
{
setTitle(getString("title_move"));
getChild<LLButton>("add_btn")->setLabel(getString("button_move"));
}
else
{
setTitle(getString("title_add"));
getChild<LLButton>("add_btn")->setLabel(getString("button_add"));
}
if (mHasMultipleAgents)
{
LLStringUtil::format_map_t args;
@@ -66,6 +66,9 @@ bool FSFloaterContactSetConfiguration::postBuild()
mGlobalSwatch = getChild<LLColorSwatchCtrl>("global_swatch");
mGlobalSwatch->setCommitCallback(boost::bind(&FSFloaterContactSetConfiguration::onCommitDefaultColor, this));
mOfflineSwatch = getChild<LLColorSwatchCtrl>("offline_swatch");
mOfflineSwatch->setCommitCallback(boost::bind(&FSFloaterContactSetConfiguration::onCommitOfflineColor, this));
mNotificationCheckBox = getChild<LLCheckBoxCtrl>("show_set_notifications");
mNotificationCheckBox->setCommitCallback(boost::bind(&FSFloaterContactSetConfiguration::onCommitSetNotifications, this));
@@ -103,6 +106,7 @@ void FSFloaterContactSetConfiguration::onOpen(const LLSD& target_set)
mSetSwatch->set(LGGContactSets::getInstance()->getSetColor(mContactSet), true);
mGlobalSwatch->set(LGGContactSets::getInstance()->getDefaultColor(), true);
mOfflineSwatch->set(gSavedSettings.getColor4("FSContactSetsListOfflineColor"), true);
mNotificationCheckBox->set(LGGContactSets::getInstance()->getNotifyForSet(mContactSet));
mSortByOnlineStatusCheckBox->set(LGGContactSets::getInstance()->getSortByOnlineStatusForSet(mContactSet));
@@ -140,6 +144,11 @@ void FSFloaterContactSetConfiguration::onCommitDefaultColor()
LGGContactSets::getInstance()->setDefaultColor(mGlobalSwatch->get());
}
void FSFloaterContactSetConfiguration::onCommitOfflineColor()
{
gSavedSettings.setColor4("FSContactSetsListOfflineColor", mOfflineSwatch->get());
}
void FSFloaterContactSetConfiguration::onCommitSetAutoresponseBusy()
{
LGGContactSets::getInstance()->setAutoresponseForSet(mContactSet, ContactSetAutoresponseMode::BUSY, mAutoresponseBusyEnabledCheckBox->getValue().asBoolean(), mAutoresponseBusyEditor->getText());
@@ -53,6 +53,7 @@ private:
void onCommitSetNotifications();
void onCommitSetSortByOnlineStatus();
void onCommitDefaultColor();
void onCommitOfflineColor();
void onCommitSetAutoresponseBusy();
void onCommitSetAutoresponseMode();
void onCommitSetAutoresponseNonFriends();
@@ -74,6 +75,7 @@ private:
LLTextEditor* mAutoresponseNonFriendsEditor;
LLColorSwatchCtrl* mSetSwatch;
LLColorSwatchCtrl* mGlobalSwatch;
LLColorSwatchCtrl* mOfflineSwatch;
LLLineEditor* mSetName;
LLButton* mRenameButton;
+1 -1
View File
@@ -281,7 +281,7 @@ bool FSPanelContactSets::shouldSortByOnlineStatus() const
const std::string selected_set = mContactSetCombo->getValue().asString();
if (LGGContactSets::getInstance()->isInternalSetName(selected_set))
{
return false;
return true;
}
return LGGContactSets::getInstance()->getSortByOnlineStatusForSet(selected_set);
+6
View File
@@ -4684,6 +4684,12 @@ void LLAgent::setHomePosRegion( const U64& region_handle, const LLVector3& pos_r
mHaveHomePosition = true;
mHomeRegionHandle = region_handle;
mHomePosRegion = pos_region;
// <FS:PP> Show home location in the "teleport home" navbar button tooltip
if (LLNavigationBar::instanceExists())
{
LLNavigationBar::getInstance()->setHomeBtnTooltip();
}
// </FS:PP>
}
bool LLAgent::getHomePosGlobal( LLVector3d* pos_global )
+5
View File
@@ -218,6 +218,11 @@ LLAvatarList::LLAvatarList(const Params& p)
// <FS:PP> FIRE-32748 Colorize Friends List with Contact Sets
gSavedSettings.getControl("FSContactSetsColorizeFriends")->getSignal()->connect(boost::bind(&LLAvatarList::refreshNames, this));
// <FS:PP> FIRE-36707 Configurable color for offline contacts in contact sets lists
gSavedSettings.getControl("FSContactSetsListColorizeOffline")->getSignal()->connect(boost::bind(&LLAvatarList::refreshNames, this));
gSavedSettings.getControl("FSContactSetsListOfflineColor")->getSignal()->connect(boost::bind(&LLAvatarList::refreshNames, this));
// </FS:PP>
// <FS:Ansariel> Update voice volume slider on RLVa shownames restriction update
mRlvBehaviorCallbackConnection = gRlvHandler.setBehaviourCallback(boost::bind(&LLAvatarList::updateRlvRestrictions, this, _1, _2));
}
+9 -1
View File
@@ -53,6 +53,7 @@
#include "lfsimfeaturehandler.h" // <FS:CR> Opensim
#include "llavatarlist.h"
#include "lggcontactsets.h" // <FS:PP> FIRE-32748 Colorize Friends List with Contact Sets
#include "llviewercontrol.h" // <FS:PP> FIRE-36707 Configurable color for offline contacts in contact sets lists
bool LLAvatarListItem::sStaticInitialized = false;
S32 LLAvatarListItem::sLeftPadding = 0;
@@ -609,7 +610,14 @@ void LLAvatarListItem::setNameInternal(const std::string& name, const std::strin
{
avatar_name_style.font = params.group_moderator_style().font();
}
if (params.online_style.isProvided() && params.online_style().color.isProvided())
static LLCachedControl<bool> fsContactSetsListColorizeOffline(gSavedSettings, "FSContactSetsListColorizeOffline", false);
if (fsContactSetsListColorizeOffline && mOnlineStatus != E_ONLINE)
{
static LLCachedControl<LLColor4> fsContactSetsListOfflineColor(gSavedSettings, "FSContactSetsListOfflineColor");
avatar_name_style.color = fsContactSetsListOfflineColor();
}
else if (params.online_style.isProvided() && params.online_style().color.isProvided())
{
avatar_name_style.color = params.online_style().color();
}
+55
View File
@@ -61,6 +61,11 @@
#include "llweb.h"
#include "llhints.h"
// <FS:PP> Show home location in the "teleport home" navbar button tooltip
#include "llworld.h"
#include "llworldmap.h"
// </FS:PP>
#include "llfloatersidepanelcontainer.h"
#include "llinventorymodel.h"
#include "lllandmarkactions.h"
@@ -284,6 +289,7 @@ LLNavigationBar::LLNavigationBar()
mFavoritePanel(NULL),
mNavPanWidth(0),
mSearchComboBox(NULL),
mHomeTooltipRetryCount(0), // <FS:PP> Show home location in the "teleport home" navbar button tooltip
mRlvBehaviorCallbackConnection() // <FS:Ansariel> FIRE-11847
{
// buildFromFile( "panel_navigation_bar.xml"); // <FS:Zi> Make navigation bar part of the UI
@@ -502,6 +508,55 @@ void LLNavigationBar::onLandmarksButtonClicked()
LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "open_landmark_tab"));
}
// <FS:PP> Show home location in the "teleport home" navbar button tooltip
void LLNavigationBar::setHomeBtnTooltip()
{
std::string location_arg;
LLVector3d home_global;
if (gAgent.getHomePosGlobal(&home_global))
{
// 1. Try to get region info from the live 3D world
U64 region_handle = to_region_handle(home_global);
LLViewerRegion* region = LLWorld::getInstance()->getRegionFromPosGlobal(home_global);
if (region)
{
mHomeTooltipRetryCount = 0;
LLVector3 pos_region = region->getPosRegionFromGlobal(home_global);
location_arg = llformat("\r\n%s (%.0f, %.0f, %.0f)", region->getName().c_str(), pos_region.mV[VX], pos_region.mV[VY], pos_region.mV[VZ]);
}
else
{
// 2. Not in 3D world, try the map cache
LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromHandle(region_handle);
if (sim_info)
{
mHomeTooltipRetryCount = 0;
LLVector3 pos_region = (LLVector3)(home_global - from_region_handle(region_handle));
location_arg = llformat("\r\n%s (%.0f, %.0f, %.0f)", sim_info->getName().c_str(), pos_region.mV[VX], pos_region.mV[VY], pos_region.mV[VZ]);
}
else
{
// 3. Not in cache, make a query
constexpr S32 MAX_TOOLTIP_RETRIES = 10;
if (mHomeTooltipRetryCount < MAX_TOOLTIP_RETRIES)
{
++mHomeTooltipRetryCount;
LL_INFOS("setHomeBtnTooltip") << "Sending a region query, attempt " << mHomeTooltipRetryCount << "/" << MAX_TOOLTIP_RETRIES << LL_ENDL;
LLWorldMapMessage::getInstance()->sendHandleRegionRequest(region_handle, [](U64 handle, const std::string& url, const LLUUID& snapshot_id, bool teleport)
{
if (LLNavigationBar::instanceExists())
{
LLNavigationBar::getInstance()->setHomeBtnTooltip();
}
}, std::string(), false);
}
}
}
}
mBtnHome->setToolTipArg(LLStringExplicit("[LOCATION]"), location_arg);
}
// </FS:PP>
void LLNavigationBar::onSearchCommit()
{
std::string search_query = mSearchComboBox->getSimple();
+2
View File
@@ -114,6 +114,7 @@ public:
// </FS:Zi>
bool isRebakeNavMeshAvailable();
void setHomeBtnTooltip(); // <FS:PP> Show home location in the "teleport home" navbar button tooltip
// [RLVa:KB] - Checked: 2014-03-23 (RLVa-1.4.10)
void refreshLocationCtrl();
@@ -190,6 +191,7 @@ private:
boost::signals2::connection mHistoryMenuConnection;
// if true, save location to location history when teleport finishes
bool mSaveToLocationHistory;
S32 mHomeTooltipRetryCount; // <FS:PP> Show home location in the "teleport home" navbar button tooltip
// <FS:Zi> Make navigation bar part of the UI
public:
+1 -1
View File
@@ -1988,7 +1988,7 @@ bool LLPanelPeople::shouldSortByOnlineStatusForCurrentSet() const
const std::string set_name = mContactSetCombo->getValue().asString();
if (LGGContactSets::getInstance()->isInternalSetName(set_name))
{
return false;
return true;
}
return LGGContactSets::getInstance()->getSortByOnlineStatusForSet(set_name);
+8
View File
@@ -134,6 +134,7 @@
#include "fspanellogin.h"
// <FS:Ansariel> [FS Login Panel]
#include "llmutelist.h"
#include "llnavigationbar.h" // <FS:PP> Show home location in the "teleport home" navbar button tooltip
#include "llavatarpropertiesprocessor.h"
#include "llpaneldirbrowser.h"
#include "llpanelgrouplandmoney.h"
@@ -3457,6 +3458,13 @@ bool idle_startup()
}
// </FS:PP>
// <FS:PP> Show home location in the "teleport home" navbar button tooltip
if (LLNavigationBar::instanceExists())
{
LLNavigationBar::getInstance()->setHomeBtnTooltip();
}
// <FS:PP>
return true;
}
+2 -1
View File
@@ -292,6 +292,7 @@ bool LLStatusBar::postBuild()
gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3));
mTextTime = getChild<LLTextBox>("TimeText" );
mTextTime->setClickedCallback(std::bind(&LLUrlAction::executeSLURL, "secondlife:///app/openfloater/preferences?search=StatusBarTimeFormat", true)); // <FS:PP> Open preferences page after clicking on the clock
getChild<LLUICtrl>("buyL")->setCommitCallback(
boost::bind(&LLStatusBar::onClickBuyCurrency, this));
@@ -489,7 +490,7 @@ bool LLStatusBar::postBuild()
// <FS:Beq> Make FPS a clickable button with contextual colour
// mFPSText = getChild<LLButton>("FPSText");
mFPSText = getChild<LLTextBox>("FPSText");
mFPSText->setClickedCallback(std::bind(&LLUrlAction::executeSLURL, "secondlife:///app/openfloater/preferences?search=limitframerate", true));
mFPSText->setClickedCallback(std::bind(&LLUrlAction::executeSLURL, "secondlife:///app/openfloater/preferences?search=LimitFramerate", true));
// </FS:Beq>
mVolumeIconsWidth = mBtnVolume->getRect().mRight - mStreamToggle->getRect().mLeft;
@@ -9,6 +9,12 @@
<floater.string name="text_add_multiple">
[COUNT] avatarı hansı dəstə əlavə etmək istəyirsiniz?
</floater.string>
<floater.string name="title_add">
Kontakt dəstinə əlavə et...
</floater.string>
<floater.string name="button_add">
Əlavə et
</floater.string>
<button label="Əlavə et" name="add_btn" />
<button label="Ləğv et" name="cancel_btn" />
</floater>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Əvvəlki məkanə qayıt"/>
<pull_button name="forward_btn" tool_tip="İrəli məkana get"/>
<button name="home_btn" tool_tip="Evimə teleport ol"/>
<button name="home_btn" tool_tip="Evimə teleport ol[LOCATION]"/>
<button name="About_Land" label="Torpaq" tool_tip="Torpaq hissəsinin məlumat pəncərəsini göstər"/>
<button name="PersonalLighting" label="İşıq" tool_tip="Şəxsi işıqlandırma pəncərəsini göstər"/>
</layout_panel>
@@ -9,6 +9,12 @@
<floater.string name="text_add_multiple">
Kontakt-Set wählen, zu dem [COUNT] Avatare hinzugefügt werden sollen:
</floater.string>
<floater.string name="title_add">
Hinzufügen zu Kontakt-Set...
</floater.string>
<floater.string name="button_add">
Zu Set hinzufügen
</floater.string>
<text name="textfield">
</text>
<button label="Zu Set hinzufügen" name="add_btn"/>
@@ -18,6 +18,8 @@
Globale Einstellungen:
</text>
<color_swatch label="Farbe" name="global_swatch" tool_tip="Anklicken, um Farbauswahl zu öffnen"/>
<color_swatch name="offline_swatch" tool_tip="Farbe für Offline-Kontakte in Kontakt-Set-Listen, die zu keinem Kontakt-Set gehören. Eine benutzerdefinierte Kontakt-Set-Farbe hat Vorrang."/>
<check_box label="Benutzerdefinierte Offline-Kontakt-Set-Farbe" name="FSContactSetsListColorizeOffline"/>
<text name="label_online">
Online-Benachrichtigungen:
</text>
@@ -23,8 +23,9 @@
<panel name="panel_details">
<text name="needle_name_label" value="Regel-Name:"/>
<text name="sender_name_label" value="Sender-Name:"/>
<check_box name="sender_case" label="Aa"/>
<combo_box name="sender_match_type">
<line_editor name="sender_name" tool_tip="Der Name des Avatars oder Objekts, von dem die Nachricht stammt" />
<check_box name="sender_case" label="Aa" tool_tip="Groß-/Kleinschreibung" />
<combo_box name="sender_match_type" tool_tip="Abgleichmodus">
<combo_item name="sender_exact">
<column width="40" name="label" label="|Abc|"/>
<column name="longtext" label="Übereinstimmung ganzer Text"/>
@@ -39,8 +40,9 @@
</combo_item>
</combo_box>
<text name="content_label" value="Inhalt:"/>
<check_box name="content_case" label="Aa"/>
<combo_box name="content_match_type">
<text_editor name="content" tool_tip="Der eigentliche Text der Nachricht" />
<check_box name="content_case" label="Aa" tool_tip="Groß-/Kleinschreibung" />
<combo_box name="content_match_type" tool_tip="Abgleichmodus">
<combo_item name="content_exact">
<column name="label" label="|Abc|"/>
<column name="longtext" label="Übereinstimmung ganzer Text"/>
@@ -55,7 +57,9 @@
</combo_item>
</combo_box>
<text name="region_name_label" value="Name Region:" tool_tip="Der Regionsname der Quelle. Nur verfügbar für Inventar-Angebote."/>
<text name="owner_label" value="Eigentümer-UUID:" tool_tip="Für Gruppen-Einladungen: Die UUID der Gruppe. Für Objekt-Chat, Eigentümer-Nachrichten, Debug-Chat oder Direkt-Chat: Die UUID des Objekts. Für Objekt-IMs: Die UUID des Objekt-Eigentümers. Für alles andere: Die UUID des sendenden Einwohners."/>
<line_editor name="region_name" tool_tip="Der Regionsname der Quelle. Nur für Inventarangebote verfügbar."/>
<text name="owner_label" value="Eigentümer-UUID:"/>
<line_editor name="owner_uuid" tool_tip="Für Gruppen-Einladungen: Die UUID der Gruppe. Für Objekt-Chat, Eigentümer-Nachrichten, Debug-Chat oder Direkt-Chat: Die UUID des Objekts. Für Objekt-IMs: Die UUID des Objekt-Eigentümers. Für alles andere: Die UUID des sendenden Einwohners."/>
<text name="match_source_label" value="Quelle:"/>
<layout_stack name="buttons_stack">
<layout_panel name="buttons_group_1">
@@ -84,7 +88,10 @@
</layout_panel>
</layout_stack>
<text name="chat_replace_label" value="Chat-Ersetzung:"/>
<line_editor name="chat_replace" tool_tip="Ersatztext, mit dem die Anzeige der Nachricht geändert werden kann" />
<text name="button_reply_label" value="Button-Antwort:"/>
<line_editor name="button_reply" tool_tip="Die Beschriftung einer Schaltfläche, die im Skript-Dialog &quot;geklickt&quot; werden soll, einschließlich &quot;Ignorieren&quot;" />
<text name="text_box_reply_label" value="Textbox-Antwort:"/>
<text_editor name="text_box_reply" tool_tip="Ein Antworttext, als wäre er manuell in das Textfeld des Skript-Dialogs eingegeben worden" />
</panel>
</floater>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel" right="253">
<pull_button name="back_btn" tool_tip="Zum vorherigen Standort zurückgehen"/>
<pull_button name="forward_btn" tool_tip="Einen Standort weiter gehen"/>
<button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
<button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren[LOCATION]"/>
<button name="About_Land" label="Land" tool_tip="Landinformationen anzeigen"/>
<button name="PersonalLighting" label="Beleuchtung" tool_tip="Öffnet das Fenster mit den persönlichen Beleuchtungseinstellungen" width="90"/>
</layout_panel>
@@ -294,6 +294,16 @@
left_pad="10"
bottom="-6"
follows="left|bottom"/>
<button
name="copy_link"
label="Copy as link"
tool_tip="Copies a secondlife:///app/openfloater/area_search?... link reproducing the current search and filter settings."
mouse_opaque="true"
height="20"
width="100"
left_pad="10"
bottom="-6"
follows="left|bottom"/>
</panel>
<panel
border="true"
@@ -17,6 +17,18 @@
<floater.string name="text_add_multiple">
Please select which contact set to add [COUNT] avatars to:
</floater.string>
<floater.string name="title_add">
Add to Contact Set...
</floater.string>
<floater.string name="button_add">
Add to set
</floater.string>
<floater.string name="title_move">
Move to Contact Set...
</floater.string>
<floater.string name="button_move">
Move to Set
</floater.string>
<text
type="string"
follows="left|top"
@@ -6,6 +6,7 @@
can_resize="false"
legacy_header_height="18"
name="floater_fs_contact_set_configure"
help_topic="contact_sets"
title="Contact set settings">
<floater.string
name="title">
@@ -100,8 +101,27 @@ Global Settings:
name="global_swatch"
tool_tip="Click to open Color Picker"
width="100" />
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="55"
label=""
top_delta="0"
left_delta="120"
name="offline_swatch"
tool_tip="Color used for offline contacts in Contact Sets lists that do not belong to any Contact Set. A custom Contact Set color takes precedence."
width="100" />
<check_box
follows="left|top"
top_pad="-16"
height="12"
initial_value="false"
label="Custom offline contact color"
name="FSContactSetsListColorizeOffline"
width="120"
control_name="FSContactSetsListColorizeOffline"/>
<text
top_pad="-2"
top_pad="2"
follows="left|top"
height="16"
left="15"
@@ -197,7 +197,8 @@
follows="left|right|top"
height="20"
left_pad="4"
right="-110"/>
right="-110"
tool_tip="The avatar or object name the message comes from"/>
<check_box
name="sender_case"
layout="topleft"
@@ -205,14 +206,16 @@
height="20"
left_pad="4"
width="30"
label="Aa"/>
label="Aa"
tool_tip="Case Sensitivity"/>
<combo_box
name="sender_match_type"
layout="topleft"
follows="right|top"
height="20"
left_pad="8"
right="-4">
right="-4"
tool_tip="Matching Mode">
<combo_item
name="sender_exact"
value="0">
@@ -264,7 +267,8 @@
height="74"
left_pad="4"
right="-4"
top_delta="0"/>
top_delta="0"
tool_tip="The actual text of the message"/>
<check_box
name="content_case"
layout="topleft"
@@ -273,14 +277,16 @@
width="30"
right="-76"
top_pad="4"
label="Aa"/>
label="Aa"
tool_tip="Case Sensitivity"/>
<combo_box
name="content_match_type"
layout="topleft"
follows="right|bottom"
height="20"
left_pad="8"
right="-4">
right="-4"
tool_tip="Matching Mode">
<combo_item
name="content_exact"
value="0">
@@ -339,7 +345,6 @@
height="20"
width="100"
left="0"
tool_tip="For group invites: The group's UUID. For object chat, owner say, debug chat or direct chat: The UUID of the object. For object IMs: The UUID of the object owner. For everything else, the UUID of the sender avatar."
top_pad="2"
valign="center"
value="Owner Key:"/>
@@ -350,7 +355,8 @@
height="20"
label="00000000-0000-0000-0000-000000000000"
left_pad="4"
right="-4"/>
right="-4"
tool_tip="For group invites: The group's UUID. For object chat, owner say, debug chat or direct chat: The UUID of the object. For object IMs: The UUID of the object owner. For everything else, the UUID of the sender avatar."/>
<text
name="match_source_label"
layout="topleft"
@@ -549,7 +555,8 @@
follows="left|right|bottom"
left_pad="4"
height="20"
right="-4"/>
right="-4"
tool_tip="Replacement text that can be used to alter how the message is displayed"/>
<text
name="button_reply_label"
layout="topleft"
@@ -566,7 +573,8 @@
follows="left|right|bottom"
left_pad="4"
height="20"
right="-4"/>
right="-4"
tool_tip="The label of a button to &quot;click&quot; on the scripted dialog, including &quot;Ignore&quot;"/>
<text
name="text_box_reply_label"
layout="topleft"
@@ -584,6 +592,7 @@
left_pad="4"
height="60"
right="-4"
top_delta="0"/>
top_delta="0"
tool_tip="A reply text, as if it had been typed manually into the scripted dialog text box"/>
</panel>
</floater>
@@ -102,7 +102,7 @@
layout="topleft"
left_pad="7"
name="home_btn"
tool_tip="Teleport to home location"
tool_tip="Teleport to home location[LOCATION]"
top_delta="0"
width="32" />
<!-- About Land Button here -->
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel" right="222">
<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
<button name="home_btn" tool_tip="Teleportar a mi Base"/>
<button name="home_btn" tool_tip="Teleportar a mi Base[LOCATION]"/>
<button name="About_Land" label="Terreno" tool_tip="Muestra la ventana de información de la parcela" width="60"/>
<button name="Sky" label="Cielo" tool_tip="Muestra la ventana del Editor de Cielo" width="44"/>
</layout_panel>
@@ -3,6 +3,8 @@
<floater.string name="no_sets">Aucun cercle défini</floater.string>
<floater.string name="text_add_single">Veuillez sélectionner le cercle dans lequel ajouter [NAME] :</floater.string>
<floater.string name="text_add_multiple">Veuillez sélectionner le cercle lequel ajouter les [COUNT] résidents :</floater.string>
<floater.string name="title_add">Ajouter à un cercle...</floater.string>
<floater.string name="button_add">Ajouter au cercle</floater.string>
<button label="Ajouter au cercle" name="add_btn"/>
<button label="Annuler" name="cancel_btn"/>
</floater>
@@ -23,7 +23,9 @@
<panel name="panel_details">
<text name="needle_name_label" value="Nom de la règle"/>
<text name="sender_name_label" value="Émetteur"/>
<combo_box name="sender_match_type">
<line_editor name="sender_name" tool_tip="Le nom de l'avatar ou de l'objet dont provient le message" />
<check_box name="sender_case" tool_tip="Sensible à la casse" />
<combo_box name="sender_match_type" tool_tip="Mode de correspondance">
<combo_item name="sender_exact">
<column name="longtext" label="Correspondance intégrale"/>
</combo_item>
@@ -35,7 +37,9 @@
</combo_item>
</combo_box>
<text name="content_label" value="Contenu"/>
<combo_box name="content_match_type">
<text_editor name="content" tool_tip="Le texte réel du message" />
<check_box name="content_case" tool_tip="Sensible à la casse" />
<combo_box name="content_match_type" tool_tip="Mode de correspondance">
<combo_item name="content_exact">
<column name="longtext" label="Correspondance intégrale"/>
</combo_item>
@@ -48,7 +52,8 @@
</combo_box>
<text name="region_name_label" value="Nom de la région"/>
<line_editor name="region_name" tool_tip="Nom de la région de la source. Disponible uniquement pour les offres d'inventaire."/>
<text name="owner_label" tool_tip="Pour les invitations de groupe : l'UUID du groupe. Pour le chat d'objet, le message du propriétaire, le chat de débogage ou le chat direct : l'UUID de l'objet. Pour les messages instantanés d'objet : l'UUID du propriétaire de l'objet. Pour tout le reste, l'UUID de l'avatar de l'expéditeur." value="Clé du propriétaire :"/>
<text name="owner_label" value="Clé du propriétaire :"/>
<line_editor name="owner_uuid" tool_tip="Pour les invitations de groupe : l'UUID du groupe. Pour les messages provenant d'un objet, ceux du propriétaire, les messages de débogage ou le chat direct : l'UUID de l'objet. Pour les messages instantanés d'objet : l'UUID du propriétaire de l'objet. Pour tout le reste, l'UUID de l'avatar de l'expéditeur."/>
<text name="match_source_label" value="Correspond source :"/>
<layout_stack name="buttons_stack">
<layout_panel name="buttons_group_1">
@@ -77,7 +82,10 @@
</layout_panel>
</layout_stack>
<text name="chat_replace_label" value="Remplacer le chat"/>
<line_editor name="chat_replace" tool_tip="Texte de remplacement pouvant être utilisé pour modifier l'affichage du message" />
<text name="button_reply_label" value="Sélect. le bouton"/>
<line_editor name="button_reply" tool_tip="L'étiquette d'un bouton sur lequel &quot;cliquer&quot; dans la boîte de dialogue du script, y compris &quot;Ignorer&quot;" />
<text name="text_box_reply_label" value="Sélect. bte de texte"/>
<text_editor name="text_box_reply" tool_tip="Un texte de réponse, comme s'il avait été saisi manuellement dans la zone de texte de la boîte de dialogue du script" />
</panel>
</floater>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Revenir à l'emplacement précédent"/>
<pull_button name="forward_btn" tool_tip="Aller à l'emplacement suivant"/>
<button name="home_btn" left_pad="5" tool_tip="Me téléporter jusqu'à mon domicile"/>
<button name="home_btn" left_pad="5" tool_tip="Me téléporter jusqu'à mon domicile[LOCATION]"/>
<button name="About_Land" label="Terrain" width="48" left_pad="5" tool_tip="Affiche les informations du terrain" />
<button name="Sky" label="Ciel" left_pad="5" tool_tip="Affiche l'éditeur de préréglage du ciel"/>
</layout_panel>
@@ -9,6 +9,12 @@
<floater.string name="text_add_multiple">
Scegliere il set di contatti a cui aggiungere le [COUNT] persone selezionate:
</floater.string>
<floater.string name="title_add">
Aggiungi ad un Set
</floater.string>
<floater.string name="button_add">
Aggiungi
</floater.string>
<button label="Aggiungi" name="add_btn"/>
<button label="Annulla" name="cancel_btn"/>
</floater>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel" right="265">
<pull_button name="back_btn" tool_tip="Torna al luogo precendente"/>
<pull_button name="forward_btn" tool_tip="Vai al luogo seguente"/>
<button name="home_btn" tool_tip="Teleport a casa"/>
<button name="home_btn" tool_tip="Teleport a casa[LOCATION]"/>
<button name="About_Land" label="Terreno" tool_tip="Mostra finestra delle informazioni sul terreno" width="55"/>
<button name="PersonalLighting" label="Illuminazione" tool_tip="Mostra finestra di illuminazione personalizzata" width="90"/>
</layout_panel>
@@ -9,6 +9,12 @@
<floater.string name="text_add_multiple">
[COUNT]人のアバターを追加するコンタクトセットを選択して下さい。
</floater.string>
<floater.string name="title_add">
コンタクトセットに追加…
</floater.string>
<floater.string name="button_add">
セットに追加
</floater.string>
<button label="セットに追加" name="add_btn"/>
<button label="取り消し" name="cancel_btn"/>
</floater>
@@ -39,7 +39,9 @@
<panel name="panel_details">
<text name="needle_name_label" value="ルール名:"/>
<text name="sender_name_label" value="送信者名:"/>
<combo_box name="sender_match_type">
<line_editor name="sender_name" tool_tip="メッセージの送信元であるアバターまたはオブジェクトの名前" />
<check_box name="sender_case" tool_tip="大文字・小文字の区別" />
<combo_box name="sender_match_type" tool_tip="一致モード">
<combo_item name="sender_exact">
<column name="longtext" label="全文一致"/>
</combo_item>
@@ -51,7 +53,9 @@
</combo_item>
</combo_box>
<text name="content_label" value="内容:"/>
<combo_box name="content_match_type">
<text_editor name="content" tool_tip="メッセージの実際のテキスト" />
<check_box name="content_case" tool_tip="大文字・小文字の区別" />
<combo_box name="content_match_type" tool_tip="一致モード">
<combo_item name="content_exact">
<column name="longtext" label="全文一致"/>
</combo_item>
@@ -64,7 +68,8 @@
</combo_box>
<text name="region_name_label" value="リージョン名:"/>
<line_editor name="region_name" tool_tip="ソースのリージョン名を入力します。インベントリのオファーでのみ使用できます。"/>
<text name="owner_label" value="所有者のキー:" tool_tip="グループ招待の場合:グループのUUIDを入力します。オブジェクトによるチャット、オブジェクト所有者の発言、デバッグチャット、またはダイレクトチャットの場合:オブジェクトのUUIDを入力します。オブジェクトIMの場合:オブジェクト所有者のUUIDを入力します。その他:送信者アバターのUUIDを入力します。"/>
<text name="owner_label" value="所有者のキー:"/>
<line_editor name="owner_uuid" tool_tip="グループ招待の場合:グループのUUIDを入力します。オブジェクトによるチャット、オブジェクト所有者の発言、デバッグチャット、またはダイレクトチャットの場合:オブジェクトのUUIDを入力します。オブジェクトIMの場合:オブジェクト所有者のUUIDを入力します。その他:送信者アバターのUUIDを入力します。"/>
<text name="match_source_label" value="一致するソース:"/>
<layout_stack name="buttons_stack">
<layout_panel name="buttons_group_1">
@@ -93,7 +98,10 @@
</layout_panel>
</layout_stack>
<text name="chat_replace_label" value="チャットの置き換え:"/>
<line_editor name="chat_replace" tool_tip="メッセージの表示方法を変更するために使用できる置換テキスト" />
<text name="button_reply_label" value="返信ボタン:"/>
<line_editor name="button_reply" tool_tip="&quot;無視&quot;を含む、スクリプトダイアログで&quot;クリック&quot;するボタンのラベル" />
<text name="text_box_reply_label" value="返信テキストボックス:"/>
<text_editor name="text_box_reply" tool_tip="スクリプトダイアログのテキストボックスに手動で入力されたかのような返信テキスト" />
</panel>
</floater>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="前の場所へ移動します。"/>
<pull_button name="forward_btn" tool_tip="次の場所へ移動します。"/>
<button name="home_btn" tool_tip="「ホーム」へテレポートします。"/>
<button name="home_btn" tool_tip="「ホーム」へテレポートします。[LOCATION]"/>
<button name="About_Land" label="土地情報" tool_tip="土地情報のウィンドウを開きます。"/>
<button name="PersonalLighting" label="個人的光源" tool_tip="個人的光源エディタを開きます。"/>
</layout_panel>
@@ -48,6 +48,7 @@
<check_box name="regular_expression" label="Użyj wyrażeń regularnych"/>
<button name="search" label="Szukaj"/>
<button name="clear" label="Wyczyść"/>
<button name="copy_link" label="Kopiuj jako link" tool_tip="Kopiuje link secondlife:///app/openfloater/area_search?... odtwarzający aktualne kryteria wyszukiwania i filtry."/>
</panel>
<panel label="Filtrowanie" name="area_search_filter_panel">
<text name="only_list">
@@ -9,6 +9,18 @@
<floater.string name="text_add_multiple">
Wybierz, do którego Zestawu Kontaktów dodać [COUNT] awatarów:
</floater.string>
<floater.string name="title_add">
Dodaj do Zestawu Kontaktów...
</floater.string>
<floater.string name="button_add">
Dodaj
</floater.string>
<floater.string name="title_move">
Przenieś do Zestawu Kontaktów...
</floater.string>
<floater.string name="button_move">
Przenieś
</floater.string>
<button label="Dodaj" name="add_btn" />
<button label="Anuluj" name="cancel_btn" />
</floater>
@@ -18,6 +18,8 @@
Ustawienia globalne:
</text>
<color_swatch label="Domyślny kolor" name="global_swatch" tool_tip="Kliknij, aby otworzyć paletę kolorow" />
<color_swatch name="offline_swatch" tool_tip="Kolor używany dla kontaktów offline na listach zestawów kontaktów, które nie należą do żadnego zestawu. Kolor niestandardowego zestawu kontaktów ma pierwszeństwo." />
<check_box label="Własny kolor kontaktów offline" name="FSContactSetsListColorizeOffline" />
<text name="label_online">
Powiadomienia online:
</text>
@@ -23,7 +23,9 @@
<panel name="panel_details">
<text name="needle_name_label" value="Nazwa reguły:" />
<text name="sender_name_label" value="Nadawca:" />
<combo_box name="sender_match_type">
<line_editor name="sender_name" tool_tip="Nazwa awatara lub obiektu, od którego pochodzi wiadomość" />
<check_box name="sender_case" tool_tip="Rozróżnianie wielkości liter" />
<combo_box name="sender_match_type" tool_tip="Tryb dopasowania">
<combo_item name="sender_exact">
<column name="longtext" label="Dopasuj cały tekst" />
</combo_item>
@@ -35,7 +37,9 @@
</combo_item>
</combo_box>
<text name="content_label" value="Treść:" />
<combo_box name="content_match_type">
<text_editor name="content" tool_tip="Faktyczna treść wiadomości" />
<check_box name="content_case" tool_tip="Rozróżnianie wielkości liter" />
<combo_box name="content_match_type" tool_tip="Tryb dopasowania">
<combo_item name="content_exact">
<column name="longtext" label="Dopasuj cały tekst" />
</combo_item>
@@ -47,7 +51,9 @@
</combo_item>
</combo_box>
<text name="region_name_label" value="Region:" tool_tip="Nazwa regionu źródła. Dostępne tylko dla ofert przedmiotów." />
<text name="owner_label" value="UUID właściciela:" tool_tip="Dla zaproszeń do grupy: UUID grupy. Dla czatu obiektów, wypowiedzi właściciela, czatu debug lub czatu bezpośredniego: UUID obiektu. Dla IM-ów obiektów: UUID właściciela obiektu. Dla wszystkich pozostałych przypadków: UUID awatara nadawcy" />
<line_editor name="region_name" tool_tip="Nazwa regionu źródłowego. Dostępne tylko dla ofert ekwipunku."/>
<text name="owner_label" value="UUID właściciela:" />
<line_editor name="owner_uuid" tool_tip="Dla zaproszeń do grupy: UUID grupy. Dla czatu obiektów, wypowiedzi właściciela, czatu debug lub czatu bezpośredniego: UUID obiektu. Dla IM-ów obiektów: UUID właściciela obiektu. Dla wszystkich pozostałych przypadków: UUID awatara nadawcy" />
<text name="match_source_label" value="Dopasuj z:" />
<layout_stack name="buttons_stack">
<layout_panel name="buttons_group_1">
@@ -76,7 +82,10 @@
</layout_panel>
</layout_stack>
<text name="chat_replace_label" value="Zastąp czatem:" />
<line_editor name="chat_replace" tool_tip="Tekst zastępczy, który może być użyty do zmiany sposobu wyświetlania wiadomości" />
<text name="button_reply_label" value="Wybierz przycisk:" />
<line_editor name="button_reply" tool_tip="Etykieta przycisku do &quot;kliknięcia&quot; w oknie dialogowym skryptu, w tym &quot;Ignoruj&quot;" />
<text name="text_box_reply_label" value="Odp. textboxem:" />
<text_editor name="text_box_reply" tool_tip="Tekst odpowiedzi, tak jakby został wpisany ręcznie w polu tekstowym okna dialogowego skryptu" />
</panel>
</floater>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel" right="255">
<pull_button name="back_btn" tool_tip="Wróć do poprzedniej lokalizacji"/>
<pull_button name="forward_btn" tool_tip="Idź do następnej lokalizacji"/>
<button name="home_btn" tool_tip="Teleportuj do miejsca startu"/>
<button name="home_btn" tool_tip="Teleportuj do miejsca startu[LOCATION]"/>
<button name="About_Land" label="Działka" tool_tip="Pokazuje okno informacyjne o działce" width="55" />
<button name="PersonalLighting" label="Oświetlenie" tool_tip="Pokazuje okno własnego oświetlenia" width="80" />
</layout_panel>
@@ -5,7 +5,7 @@
<panel name="navigation_panel">
<pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
<pull_button name="forward_btn" tool_tip="Avançar uma região"/>
<button name="home_btn" tool_tip="Teletransportar para meu início"/>
<button name="home_btn" tool_tip="Teletransportar para meu início[LOCATION]"/>
<location_input label="Onde" name="location_combo"/>
<search_combo_box label="Busca" name="search_combo_box" tool_tip="Busca">
<combo_editor label="Buscar no [CURRENT_GRID]" name="search_combo_editor"/>
@@ -9,6 +9,12 @@
<floater.string name="text_add_multiple">
Выберите, в какой набор контактов добавить [COUNT] аватаров:
</floater.string>
<floater.string name="title_add">
Добавить в набор контактов...
</floater.string>
<floater.string name="button_add">
Добавить
</floater.string>
<button label="Добавить" name="add_btn" />
<button label="Отмена" name="cancel_btn" />
</floater>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Вернуться в предыдущую локацию"/>
<pull_button name="forward_btn" tool_tip="Идти вперед на одну локацию"/>
<button name="home_btn" tool_tip="Телепортироваться домой"/>
<button name="home_btn" tool_tip="Телепортироваться домой[LOCATION]"/>
<button name="About_Land" label="Земля" tool_tip="Открывает окно информации об участке"/>
<button name="PersonalLighting" label="Свет" tool_tip="Открывает окно Личного Освещения"/>
</layout_panel>
@@ -5,7 +5,7 @@
<panel name="navigation_panel">
<pull_button name="back_btn" tool_tip="Önceki konuma geri git"/>
<pull_button name="forward_btn" tool_tip="Bir konum ileri git"/>
<button name="home_btn" tool_tip="Ana konumuma ışınla"/>
<button name="home_btn" tool_tip="Ana konumuma ışınla[LOCATION]"/>
<location_input label="Konum" name="location_combo"/>
</panel>
</layout_panel>
@@ -9,6 +9,12 @@
<floater.string name="text_add_multiple">
要將 [COUNT] 個化身新增到哪個聯絡人分組:
</floater.string>
<floater.string name="title_add">
新增到聯絡人分組...
</floater.string>
<floater.string name="button_add">
新增到分組
</floater.string>
<text name="textfield"></text>
<button label="新增到分組" name="add_btn" />
<button label="取消" name="cancel_btn" />
@@ -20,8 +20,9 @@
<panel name="panel_details">
<text name="needle_name_label" value="規則名稱:"/>
<text name="sender_name_label" value="傳送者名稱:"/>
<check_box name="sender_case" label="區分大小寫"/>
<combo_box name="sender_match_type">
<line_editor name="sender_name" tool_tip="訊息來源的化身或物件名稱" />
<check_box name="sender_case" tool_tip="區分大小寫" />
<combo_box name="sender_match_type" tool_tip="匹配模式">
<combo_item name="sender_exact">
<column name="longtext" label="完全匹配"/>
</combo_item>
@@ -33,8 +34,9 @@
</combo_item>
</combo_box>
<text name="content_label" value="內容:"/>
<check_box name="content_case" label="區分大小寫"/>
<combo_box name="content_match_type">
<text_editor name="content" tool_tip="訊息的實際文本" />
<check_box name="content_case" tool_tip="區分大小寫" />
<combo_box name="content_match_type" tool_tip="匹配模式">
<combo_item name="content_exact">
<column name="longtext" label="完全匹配"/>
</combo_item>
@@ -45,8 +47,10 @@
<column name="longtext" label="正規表示式"/>
</combo_item>
</combo_box>
<text name="region_name_label" value="域名" tool_tip="源的域名称。仅适用于物件接收求相功能。"/>
<text name="owner_label" value="所有者UUID" tool_tip="群组邀请场景:填写群组UUID&#10;物件聊天消息/所有者消息/调试消息/私聊消息:填写物品UUID&#10;物件私聊消息:填写物件所有者UUID&#10;其他所有场景:填写发送者的UUID"/>
<text name="region_name_label" value="域名" tool_tip="源的域名稱。僅適用於物件接收求相功能。"/>
<line_editor name="region_name" tool_tip="來源的地區名稱。僅適用於庫存給予。"/>
<text name="owner_label" value="所有者UUID"/>
<line_editor name="owner_uuid" tool_tip="群組邀請場景:填寫群組UUID&#10;物件聊天訊息/所有者訊息/除錯訊息/私聊訊息:填寫物件UUID&#10;物件私聊訊息:填寫物件所有者UUID&#10;其他所有場景:填寫發送者的UUID"/>
<text name="match_source_label" value="來源:"/>
<layout_stack name="buttons_stack">
<layout_panel name="buttons_group_1">
@@ -75,7 +79,10 @@
</layout_panel>
</layout_stack>
<text name="chat_replace_label" value="聊天訊息替換:"/>
<line_editor name="chat_replace" tool_tip="可用來變更訊息顯示方式的替换文字" />
<text name="button_reply_label" value="按鈕回覆:"/>
<line_editor name="button_reply" tool_tip="要在指令碼對話框中「點擊」的按鈕標籤,包含「忽略」" />
<text name="text_box_reply_label" value="文字框回覆:"/>
<text_editor name="text_box_reply" tool_tip="如同在指令碼對話框的文字方塊中手動輸入的回覆文字" />
</panel>
</floater>
@@ -14,6 +14,11 @@
輸入搜尋關鍵字:
</text>
<check_box label="包含適度成人內容的群組" name="incmature"/>
<combo_box name="groups_maturity">
<combo_box.item label="普級" name="Desired_PG"/>
<combo_box.item label="普級與適度成人" name="Desired_Mature"/>
<combo_box.item label="普級、適度成人、完全成人" name="Desired_Adult"/>
</combo_box>
<scroll_list name="results">
<column label="名稱" name="name"/>
<column label="成員" name="members"/>
@@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="群組" name="panel_ls_groups">
<panel name="panel_ls_input">
<combo_box name="groups_maturity">
<combo_box.item label="普級" name="Desired_PG"/>
<combo_box.item label="普級與適度成人" name="Desired_Mature"/>
<combo_box.item label="普級、適度成人、完全成人" name="Desired_Adult"/>
</combo_box>
<text name="search_text">
搜尋條件:
</text>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="傳回上一個位置" />
<pull_button name="forward_btn" tool_tip="前往下一個位置" />
<button name="home_btn" tool_tip="傳送回我的家" />
<button name="home_btn" tool_tip="傳送回我的家[LOCATION]" />
<button name="About_Land" label="土地" tool_tip="打開土地資訊視窗" />
<button name="PersonalLighting" label="光照" tool_tip="打開個人光照視窗" />
</layout_panel>
@@ -101,7 +101,7 @@
layout="topleft"
left_pad="7"
name="home_btn"
tool_tip="Teleport to home location"
tool_tip="Teleport to home location[LOCATION]"
top_delta="0"
width="32" />
<!-- About Land Button here -->
@@ -67,7 +67,7 @@
height="15"
increment="0.025"
initial_value="0.5"
label="Buttons"
label="Interface"
label_width="50"
left="10"
width="150"
@@ -104,7 +104,7 @@
layout="topleft"
left_pad="6"
name="home_btn"
tool_tip="Teleport to home location"
tool_tip="Teleport to home location[LOCATION]"
top_delta="0"
width="32" />
<!-- About Land Button here -->
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
<button name="home_btn" tool_tip="Teleportar a mi Base"/>
<button name="home_btn" tool_tip="Teleportar a mi Base[LOCATION]"/>
<button name="About_Land" tool_tip="Muestra la ventana de información de la parcela"/>
<button name="Environment" tool_tip="Muestra la ventana de configuración de entorno"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Torna al luogo precendente"/>
<pull_button name="forward_btn" tool_tip="Vai al luogo seguente"/>
<button name="home_btn" tool_tip="Teleport a casa"/>
<button name="home_btn" tool_tip="Teleport a casa[LOCATION]"/>
<button name="About_Land" tool_tip="Mostra finestra delle informazioni sul terreno"/>
<button name="PersonalLighting" tool_tip="Mostra finestra di illuminazione personalizzata"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="前の場所へ移動します。"/>
<pull_button name="forward_btn" tool_tip="次の場所へ移動します。"/>
<button name="home_btn" tool_tip="「ホーム」へテレポートします。"/>
<button name="home_btn" tool_tip="「ホーム」へテレポートします。[LOCATION]"/>
<button name="About_Land" tool_tip="土地情報のウィンドウを開きます。"/>
<button name="PersonalLighting" tool_tip="個人的光源エディタを開きます。"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Wróć do poprzedniej lokalizacji"/>
<pull_button name="forward_btn" tool_tip="Idź do następnej lokalizacji"/>
<button name="home_btn" tool_tip="Teleportuj do miejsca startu"/>
<button name="home_btn" tool_tip="Teleportuj do miejsca startu[LOCATION]"/>
<button name="About_Land" tool_tip="Pokazuje okno informacyjne o działce"/>
<button name="PersonalLighting" tool_tip="Pokazuje okno własnego oświetlenia"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Вернуться в предыдущую локацию"/>
<pull_button name="forward_btn" tool_tip="Идти вперед на одну локацию"/>
<button name="home_btn" tool_tip="Телепортироваться домой"/>
<button name="home_btn" tool_tip="Телепортироваться домой[LOCATION]"/>
<button name="About_Land" tool_tip="Открыть окно информации об участке"/>
<button name="PersonalLighting" tool_tip="Открыть окно Личное освещение"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="傳回上一個位置" />
<pull_button name="forward_btn" tool_tip="前往下一個位置" />
<button name="home_btn" tool_tip="傳送回我的家" />
<button name="home_btn" tool_tip="傳送回我的家[LOCATION]" />
<button name="About_Land" tool_tip="打開土地資訊視窗" />
<button name="PersonalLighting" tool_tip="打開個人照明視窗" />
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Əvvəlki məkanə qayıt"/>
<pull_button name="forward_btn" tool_tip="İrəli məkana get"/>
<button name="home_btn" tool_tip="Evimə teleport ol"/>
<button name="home_btn" tool_tip="Evimə teleport ol[LOCATION]"/>
<button name="About_Land" tool_tip="Torpaq hissəsinin məlumat pəncərəsini göstər"/>
<button name="Environment" tool_tip="Mühit konfiqurasiya pəncərəsini göstər"/>
</layout_panel>
@@ -103,7 +103,7 @@
layout="topleft"
left_pad="6"
name="home_btn"
tool_tip="Teleport to home location"
tool_tip="Teleport to home location[LOCATION]"
top_delta="0"
width="32" />
<!-- About Land Button here -->
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
<button name="home_btn" tool_tip="Teleportar a mi Base"/>
<button name="home_btn" tool_tip="Teleportar a mi Base[LOCATION]"/>
<button name="About_Land" tool_tip="Muestra la ventana de información de la parcela"/>
<button name="Environment" tool_tip="Muestra la ventana de configuración de entorno"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Torna al luogo precendente"/>
<pull_button name="forward_btn" tool_tip="Vai al luogo seguente"/>
<button name="home_btn" tool_tip="Teleport a casa"/>
<button name="home_btn" tool_tip="Teleport a casa[LOCATION]"/>
<button name="About_Land" tool_tip="Mostra finestra delle informazioni sul terreno"/>
<button name="PersonalLighting" tool_tip="Mostra finestra di illuminazione personalizzata"/>
</layout_panel>
@@ -7,7 +7,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="前の場所へ移動します。"/>
<pull_button name="forward_btn" tool_tip="次の場所へ移動します。"/>
<button name="home_btn" tool_tip="「ホーム」へテレポートします。"/>
<button name="home_btn" tool_tip="「ホーム」へテレポートします。[LOCATION]"/>
<button name="About_Land" tool_tip="土地情報のウィンドウを開きます。"/>
<button name="PersonalLighting" tool_tip="個人的光源エディタを開きます。"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="Wróć do poprzedniej lokalizacji"/>
<pull_button name="forward_btn" tool_tip="Idź do następnej lokalizacji"/>
<button name="home_btn" tool_tip="Teleportuj do miejsca startu"/>
<button name="home_btn" tool_tip="Teleportuj do miejsca startu[LOCATION]"/>
<button name="About_Land" tool_tip="Pokazuje okno informacyjne o działce"/>
<button name="PersonalLighting" tool_tip="Pokazuje okno własnego oświetlenia"/>
</layout_panel>
@@ -6,7 +6,7 @@
<layout_panel name="navigation_buttons_visibility_panel">
<pull_button name="back_btn" tool_tip="傳回上一個位置" />
<pull_button name="forward_btn" tool_tip="前往下一個位置" />
<button name="home_btn" tool_tip="傳送回我的家" />
<button name="home_btn" tool_tip="傳送回我的家[LOCATION]" />
<button name="About_Land" tool_tip="打開土地資訊視窗" />
<button name="PersonalLighting" tool_tip="打開個人照明視窗" />
</layout_panel>
-6
View File
@@ -1996,12 +1996,6 @@ class Darwin_x86_64_Manifest(ViewerManifest):
if self.args.get('velopack', 'OFF') == 'ON':
self.velopack_package_finish()
# Generate Velopack update packages if enabled
# This creates the nupkg and RELEASES files needed for auto-updates
# Distribution is still via DMG, but updates use Velopack
if self.args.get('velopack', 'OFF') == 'ON':
self.velopack_package_finish()
def velopack_package_finish(self):
"""Generate Velopack update packages for macOS.