Automated merge with ssh://hg.lindenlab.com/james/gooey/
commit
0b3f6b3e9a
|
|
@ -323,6 +323,19 @@ void LLLineEditor::setMaxTextLength(S32 max_text_length)
|
|||
mMaxLengthBytes = max_len;
|
||||
}
|
||||
|
||||
void LLLineEditor::getTextPadding(S32 *left, S32 *right)
|
||||
{
|
||||
*left = mTextPadLeft;
|
||||
*right = mTextPadRight;
|
||||
}
|
||||
|
||||
void LLLineEditor::setTextPadding(S32 left, S32 right)
|
||||
{
|
||||
mTextPadLeft = left;
|
||||
mTextPadRight = right;
|
||||
updateTextPadding();
|
||||
}
|
||||
|
||||
void LLLineEditor::updateTextPadding()
|
||||
{
|
||||
static LLUICachedControl<S32> line_editor_hpad ("UILineEditorHPad", 0);
|
||||
|
|
|
|||
|
|
@ -226,6 +226,9 @@ public:
|
|||
void setKeystrokeCallback(callback_t callback, void* user_data);
|
||||
|
||||
void setMaxTextLength(S32 max_text_length);
|
||||
// Manipulate left and right padding for text
|
||||
void getTextPadding(S32 *left, S32 *right);
|
||||
void setTextPadding(S32 left, S32 right);
|
||||
|
||||
// Prevalidation controls which keystrokes can affect the editor
|
||||
void setPrevalidate( LLLinePrevalidateFunc func );
|
||||
|
|
|
|||
|
|
@ -7712,7 +7712,7 @@
|
|||
<key>NavBarShowCoordinates</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show Coordinates in Location Input Field</string>
|
||||
<string>Show coordinates in navigation bar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
@ -7720,6 +7720,17 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NavBarShowParcelProperties</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show parcel property icons in navigation bar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ShowCrosshairs</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#include "llviewerwindow.h"
|
||||
#include "llpanelgroup.h"
|
||||
#include "llgroupactions.h"
|
||||
#include "llnotifications.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include <boost/regex.hpp>
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#include "llteleporthistory.h"
|
||||
#include "llsidetray.h"
|
||||
#include "llslurl.h"
|
||||
#include "llstatusbar.h" // getHealth()
|
||||
#include "lltrans.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "llviewerparcelmgr.h"
|
||||
|
|
@ -165,7 +166,8 @@ LLLocationInputCtrl::Params::Params()
|
|||
push_icon("push_icon"),
|
||||
build_icon("build_icon"),
|
||||
scripts_icon("scripts_icon"),
|
||||
damage_icon("damage_icon")
|
||||
damage_icon("damage_icon"),
|
||||
damage_text("damage_text")
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -200,7 +202,7 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
|
|||
params.commit_on_focus_lost(false);
|
||||
params.follows.flags(FOLLOWS_ALL);
|
||||
mTextEntry = LLUICtrlFactory::create<LLURLLineEditor>(params);
|
||||
this->addChild(mTextEntry);
|
||||
addChild(mTextEntry);
|
||||
// LLLineEditor is replaced with LLLocationLineEditor
|
||||
|
||||
// "Place information" button.
|
||||
|
|
@ -261,7 +263,10 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
|
|||
LLIconCtrl::Params damage_icon = p.damage_icon;
|
||||
mParcelIcon[DAMAGE_ICON] = LLUICtrlFactory::create<LLIconCtrl>(damage_icon);
|
||||
addChild(mParcelIcon[DAMAGE_ICON]);
|
||||
// TODO: health number?
|
||||
|
||||
LLTextBox::Params damage_text = p.damage_text;
|
||||
mDamageText = LLUICtrlFactory::create<LLTextBox>(damage_text);
|
||||
addChild(mDamageText);
|
||||
|
||||
// Register callbacks and load the location field context menu (NB: the order matters).
|
||||
LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Navbar.Action", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemClicked, this, _2));
|
||||
|
|
@ -405,11 +410,8 @@ void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor)
|
|||
*/
|
||||
void LLLocationInputCtrl::setText(const LLStringExplicit& text)
|
||||
{
|
||||
if (mTextEntry)
|
||||
{
|
||||
mTextEntry->setText(text);
|
||||
mHasAutocompletedText = FALSE;
|
||||
}
|
||||
mTextEntry->setText(text);
|
||||
mHasAutocompletedText = FALSE;
|
||||
}
|
||||
|
||||
void LLLocationInputCtrl::setFocus(BOOL b)
|
||||
|
|
@ -444,10 +446,18 @@ void LLLocationInputCtrl::onFocusLost()
|
|||
}
|
||||
|
||||
void LLLocationInputCtrl::draw()
|
||||
{
|
||||
if(!hasFocus() && gSavedSettings.getBOOL("NavBarShowCoordinates")){
|
||||
{
|
||||
static LLUICachedControl<bool> show_coords("NavBarShowCoordinates", false);
|
||||
if(!hasFocus() && show_coords)
|
||||
{
|
||||
refreshLocation();
|
||||
}
|
||||
|
||||
static LLUICachedControl<bool> show_icons("NavBarShowParcelProperties", false);
|
||||
if (show_icons)
|
||||
{
|
||||
refreshHealth();
|
||||
}
|
||||
LLComboBox::draw();
|
||||
}
|
||||
|
||||
|
|
@ -544,10 +554,12 @@ void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data)
|
|||
|
||||
mList->mouseOverHighlightNthItem(-1); // Clear highlight on the last selected item.
|
||||
}
|
||||
|
||||
bool LLLocationInputCtrl::findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter)
|
||||
{
|
||||
return item.mTitle.find(filter) != std::string::npos;
|
||||
}
|
||||
|
||||
void LLLocationInputCtrl::onTextEditorRightClicked(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
if (mLocationContextMenu)
|
||||
|
|
@ -596,41 +608,82 @@ void LLLocationInputCtrl::refreshLocation()
|
|||
|
||||
void LLLocationInputCtrl::refreshParcelIcons()
|
||||
{
|
||||
LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
|
||||
// *TODO buy
|
||||
//bool allow_buy = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
|
||||
bool allow_voice = vpm->allowAgentVoice();
|
||||
bool allow_fly = vpm->allowAgentFly();
|
||||
bool allow_push = vpm->allowAgentPush();
|
||||
bool allow_build = vpm->allowAgentBuild();
|
||||
bool allow_scripts = vpm->allowAgentScripts();
|
||||
bool allow_damage = vpm->allowAgentDamage();
|
||||
|
||||
// Most icons are "block this ability"
|
||||
mParcelIcon[VOICE_ICON]->setVisible( !allow_voice );
|
||||
mParcelIcon[FLY_ICON]->setVisible( !allow_fly );
|
||||
mParcelIcon[PUSH_ICON]->setVisible( !allow_push );
|
||||
mParcelIcon[BUILD_ICON]->setVisible( !allow_build );
|
||||
mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
|
||||
mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage );
|
||||
// *TODO damage meter
|
||||
|
||||
// Slide the parcel icons rect from right to left, adjusting rectangles of
|
||||
// visible icons. Assumes all icon rects are the same.
|
||||
LLRect icon_rect = mParcelIcon[0]->getRect();
|
||||
S32 icon_width = icon_rect.getWidth();
|
||||
icon_rect.mRight = mAddLandmarkBtn->getRect().mLeft - mIconHPad;
|
||||
icon_rect.mLeft = icon_rect.mRight - icon_width;
|
||||
// Our "cursor" moving right to left
|
||||
S32 x = mAddLandmarkBtn->getRect().mLeft - mIconHPad;
|
||||
|
||||
for (S32 i = 0; i < ICON_COUNT; ++i)
|
||||
static LLUICachedControl<bool> show_properties("NavBarShowParcelProperties", false);
|
||||
if (show_properties)
|
||||
{
|
||||
if (mParcelIcon[i]->getVisible())
|
||||
LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
|
||||
// *TODO buy
|
||||
//bool allow_buy = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
|
||||
bool allow_voice = vpm->allowAgentVoice();
|
||||
bool allow_fly = vpm->allowAgentFly();
|
||||
bool allow_push = vpm->allowAgentPush();
|
||||
bool allow_build = vpm->allowAgentBuild();
|
||||
bool allow_scripts = vpm->allowAgentScripts();
|
||||
bool allow_damage = vpm->allowAgentDamage();
|
||||
|
||||
// Most icons are "block this ability"
|
||||
mParcelIcon[VOICE_ICON]->setVisible( !allow_voice );
|
||||
mParcelIcon[FLY_ICON]->setVisible( !allow_fly );
|
||||
mParcelIcon[PUSH_ICON]->setVisible( !allow_push );
|
||||
mParcelIcon[BUILD_ICON]->setVisible( !allow_build );
|
||||
mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
|
||||
mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage );
|
||||
mDamageText->setVisible(allow_damage);
|
||||
|
||||
// Slide the parcel icons rect from right to left, adjusting rectangles of
|
||||
// visible icons. Assumes all icon rects are the same.
|
||||
for (S32 i = 0; i < ICON_COUNT; ++i)
|
||||
{
|
||||
mParcelIcon[i]->setRect( icon_rect );
|
||||
icon_rect.translate( -icon_width - mIconHPad, 0);
|
||||
LLIconCtrl* icon = mParcelIcon[i];
|
||||
if (icon->getVisible())
|
||||
{
|
||||
LLRect r = icon->getRect();
|
||||
r.mLeft = x - r.getWidth();
|
||||
r.mRight = x;
|
||||
icon->setRect( r );
|
||||
x -= r.getWidth() + mIconHPad;
|
||||
}
|
||||
}
|
||||
LLRect text_rect = mDamageText->getRect();
|
||||
text_rect.mLeft = x - text_rect.getWidth();
|
||||
text_rect.mRight = x;
|
||||
mDamageText->setRect(text_rect);
|
||||
x -= text_rect.getWidth() + mIconHPad;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (S32 i = 0; i < ICON_COUNT; ++i)
|
||||
{
|
||||
mParcelIcon[i]->setVisible(false);
|
||||
}
|
||||
mDamageText->setVisible(false);
|
||||
}
|
||||
|
||||
S32 left_pad, right_pad;
|
||||
mTextEntry->getTextPadding(&left_pad, &right_pad);
|
||||
right_pad = mTextEntry->getRect().mRight - x;
|
||||
llinfos << "JAMESDEBUG text entry rect " << mTextEntry->getRect()
|
||||
<< " x " << x << " left_pad " << left_pad << " right_pad " << right_pad << llendl;
|
||||
mTextEntry->setTextPadding(left_pad, right_pad);
|
||||
}
|
||||
|
||||
void LLLocationInputCtrl::refreshHealth()
|
||||
{
|
||||
// *FIXME: Status bar owns health information, should be in agent
|
||||
if (gStatusBar)
|
||||
{
|
||||
static S32 last_health = -1;
|
||||
S32 health = gStatusBar->getHealth();
|
||||
if (health != last_health)
|
||||
{
|
||||
std::string text = llformat("%d%%", health);
|
||||
mDamageText->setText(text);
|
||||
last_health = health;
|
||||
}
|
||||
}
|
||||
// *TODO: health meter
|
||||
}
|
||||
|
||||
void LLLocationInputCtrl::rebuildLocationHistory(std::string filter)
|
||||
|
|
@ -754,11 +807,17 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
|
|||
{
|
||||
std::string item = userdata.asString();
|
||||
|
||||
if (item == std::string("show_coordinates"))
|
||||
if (item == "show_coordinates")
|
||||
{
|
||||
gSavedSettings.setBOOL("NavBarShowCoordinates",!gSavedSettings.getBOOL("NavBarShowCoordinates"));
|
||||
}
|
||||
else if (item == std::string("landmark"))
|
||||
else if (item == "show_properties")
|
||||
{
|
||||
gSavedSettings.setBOOL("NavBarShowParcelProperties",
|
||||
!gSavedSettings.getBOOL("NavBarShowParcelProperties"));
|
||||
refreshParcelIcons();
|
||||
}
|
||||
else if (item == "landmark")
|
||||
{
|
||||
LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos();
|
||||
|
||||
|
|
@ -772,23 +831,23 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
|
|||
LLSD().insert("type", "landmark").insert("id",landmark->getUUID()));
|
||||
}
|
||||
}
|
||||
else if (item == std::string("cut"))
|
||||
else if (item == "cut")
|
||||
{
|
||||
mTextEntry->cut();
|
||||
}
|
||||
else if (item == std::string("copy"))
|
||||
else if (item == "copy")
|
||||
{
|
||||
mTextEntry->copy();
|
||||
}
|
||||
else if (item == std::string("paste"))
|
||||
else if (item == "paste")
|
||||
{
|
||||
mTextEntry->paste();
|
||||
}
|
||||
else if (item == std::string("delete"))
|
||||
else if (item == "delete")
|
||||
{
|
||||
mTextEntry->deleteSelection();
|
||||
}
|
||||
else if (item == std::string("select_all"))
|
||||
else if (item == "select_all")
|
||||
{
|
||||
mTextEntry->selectAll();
|
||||
}
|
||||
|
|
@ -798,28 +857,28 @@ bool LLLocationInputCtrl::onLocationContextMenuItemEnabled(const LLSD& userdata)
|
|||
{
|
||||
std::string item = userdata.asString();
|
||||
|
||||
if (item == std::string("can_cut"))
|
||||
if (item == "can_cut")
|
||||
{
|
||||
return mTextEntry->canCut();
|
||||
}
|
||||
else if (item == std::string("can_copy"))
|
||||
else if (item == "can_copy")
|
||||
{
|
||||
return mTextEntry->canCopy();
|
||||
}
|
||||
else if (item == std::string("can_paste"))
|
||||
else if (item == "can_paste")
|
||||
{
|
||||
return mTextEntry->canPaste();
|
||||
}
|
||||
else if (item == std::string("can_delete"))
|
||||
else if (item == "can_delete")
|
||||
{
|
||||
return mTextEntry->canDeselect();
|
||||
}
|
||||
else if (item == std::string("can_select_all"))
|
||||
else if (item == "can_select_all")
|
||||
{
|
||||
return mTextEntry->canSelectAll();
|
||||
}
|
||||
else if(item == std::string("show_coordinates")){
|
||||
|
||||
else if(item == "show_coordinates")
|
||||
{
|
||||
return gSavedSettings.getBOOL("NavBarShowCoordinates");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
|
||||
#include "llcombobox.h"
|
||||
#include "lliconctrl.h" // Params
|
||||
#include "lltextbox.h" // Params
|
||||
|
||||
class LLLandmark;
|
||||
|
||||
|
|
@ -73,6 +74,7 @@ public:
|
|||
build_icon,
|
||||
scripts_icon,
|
||||
damage_icon;
|
||||
Optional<LLTextBox::Params> damage_text;
|
||||
Params();
|
||||
};
|
||||
|
||||
|
|
@ -111,6 +113,9 @@ private:
|
|||
void refresh();
|
||||
void refreshLocation();
|
||||
void refreshParcelIcons();
|
||||
// Refresh the value in the health percentage text field
|
||||
void refreshHealth();
|
||||
|
||||
void rebuildLocationHistory(std::string filter = "");
|
||||
bool findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter);
|
||||
void setText(const LLStringExplicit& text);
|
||||
|
|
@ -147,7 +152,7 @@ private:
|
|||
ICON_COUNT
|
||||
};
|
||||
LLIconCtrl* mParcelIcon[ICON_COUNT];
|
||||
// TODO: Health meter?
|
||||
LLTextBox* mDamageText;
|
||||
|
||||
LLAddLandmarkObserver* mAddLandmarkObserver;
|
||||
LLRemoveLandmarkObserver* mRemoveLandmarkObserver;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
|
||||
#include "llpanelobjectinventory.h"
|
||||
|
||||
#include "llmenugl.h"
|
||||
#include "roles_constants.h"
|
||||
|
||||
#include "llagent.h"
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@
|
|||
#define LL_LLSTATUSBAR_H
|
||||
|
||||
#include "llpanel.h"
|
||||
#include <llmenugl.h>
|
||||
|
||||
// "Constants" loaded from settings.xml at start time
|
||||
extern S32 STATUS_BAR_HEIGHT;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@
|
|||
width="128">
|
||||
<menu_item_check
|
||||
label="Show Coordinates"
|
||||
layout="topleft"
|
||||
name="Show Coordinates">
|
||||
<menu_item_check.on_click
|
||||
function="Navbar.Action"
|
||||
|
|
@ -19,22 +18,28 @@
|
|||
function="Navbar.EnableMenuItem"
|
||||
parameter="show_coordinates" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Show Parcel Properties"
|
||||
name="Show Parcel Properties">
|
||||
<menu_item_check.on_click
|
||||
function="Navbar.Action"
|
||||
parameter="show_properties" />
|
||||
<menu_item_check.on_check
|
||||
control="NavBarShowParcelProperties" />
|
||||
</menu_item_check>
|
||||
<!-- Label of 'Landmark' item is changing in runtime,
|
||||
see AddLandmarkNavBarMenu/EditLandmarkNavBarMenu in strings.xml -->
|
||||
<menu_item_call
|
||||
label="Landmark"
|
||||
layout="topleft"
|
||||
name="Landmark">
|
||||
<menu_item_call.on_click
|
||||
function="Navbar.Action"
|
||||
parameter="landmark" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft"
|
||||
name="Separator" />
|
||||
<menu_item_call
|
||||
label="Cut"
|
||||
layout="topleft"
|
||||
name="Cut">
|
||||
<menu_item_call.on_click
|
||||
function="Navbar.Action"
|
||||
|
|
@ -45,7 +50,6 @@
|
|||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy"
|
||||
layout="topleft"
|
||||
name="Copy">
|
||||
<menu_item_call.on_click
|
||||
function="Navbar.Action"
|
||||
|
|
@ -56,7 +60,6 @@
|
|||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Paste"
|
||||
layout="topleft"
|
||||
name="Paste">
|
||||
<menu_item_call.on_click
|
||||
function="Navbar.Action"
|
||||
|
|
@ -67,7 +70,6 @@
|
|||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Delete"
|
||||
layout="topleft"
|
||||
name="Delete">
|
||||
<menu_item_call.on_click
|
||||
function="Navbar.Action"
|
||||
|
|
@ -78,7 +80,6 @@
|
|||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Select All"
|
||||
layout="topleft"
|
||||
name="Select All">
|
||||
<menu_item_call.on_click
|
||||
function="Navbar.Action"
|
||||
|
|
|
|||
|
|
@ -81,8 +81,18 @@
|
|||
top="21"
|
||||
image_name="parcel_lght_Damage"
|
||||
/>
|
||||
<!-- Default text color is invisible on top of nav bar background -->
|
||||
<damage_text
|
||||
name="damage_text"
|
||||
width="50"
|
||||
height="18"
|
||||
top="16"
|
||||
halign="right"
|
||||
font="SansSerifSmall"
|
||||
text_color="TextFgColor"
|
||||
/>
|
||||
|
||||
<combo_button name="Location History"
|
||||
<combo_button name="Location History"
|
||||
label=""
|
||||
pad_right="0"/>
|
||||
<combo_list bg_writeable_color="MenuDefaultBgColor" page_lines="10"
|
||||
|
|
|
|||
Loading…
Reference in New Issue