Firestorm Area Search re-write. See full comment comments for details.
Engine redone and is now 10x to 100x faster and many bugs fixed. UI changed and added tabs. Added search for creator, last owner. Added regular expressions to the find tab. Added filter result list for: For sale, distance, mouse click action, touch, locked, physical, phantom, tempary, and attachment. Can include or exclude attachments, physical, or temporary objects in the search. Added distance, creator, last owner columes. Options to display any columes. Right click menu on result list to perform action on selected objects: Script info, touch, teleport to, inspect, edit, return, delete, and buy object. Display beacons on found objects.
parent
0511eb162f
commit
4d086c7faa
|
|
@ -2758,6 +2758,54 @@ void LLScrollListCtrl::addColumn(const LLScrollListColumn::Params& column_params
|
|||
dirtyColumns();
|
||||
}
|
||||
|
||||
// <FS:Techwolf Lupindo> area search
|
||||
// area search support for deleting a column
|
||||
LLScrollListColumn::Params LLScrollListCtrl::delColumn(std::string name)
|
||||
{
|
||||
std::vector<LLScrollListColumn::Params> column_params;
|
||||
LLScrollListColumn::Params params;
|
||||
|
||||
// save params for each column
|
||||
ordered_columns_t::iterator column_itor;
|
||||
for (column_itor = mColumnsIndexed.begin(); column_itor != mColumnsIndexed.end(); ++column_itor)
|
||||
{
|
||||
LLScrollListColumn* column = (*column_itor);
|
||||
params.header.label = column->mLabel;
|
||||
params.name = column->mName;
|
||||
params.width.dynamic_width = column->mDynamicWidth;
|
||||
params.width.relative_width = column->mRelWidth;
|
||||
params.width.pixel_width = column->getWidth();
|
||||
params.halign = column->mFontAlignment;
|
||||
|
||||
LLScrollColumnHeader *header = column->mHeader;
|
||||
if (header)
|
||||
{
|
||||
params.tool_tip = header->getToolTip();
|
||||
}
|
||||
|
||||
column_params.push_back(params);
|
||||
}
|
||||
|
||||
clearColumns();
|
||||
|
||||
// restore colums except named column.
|
||||
for (std::vector<LLScrollListColumn::Params>::iterator iter = column_params.begin(); iter != column_params.end(); ++iter)
|
||||
{
|
||||
std::string i_name = iter->name;
|
||||
if (i_name != name)
|
||||
{
|
||||
addColumn((*iter));
|
||||
}
|
||||
else
|
||||
{
|
||||
params = (*iter);
|
||||
}
|
||||
}
|
||||
|
||||
return params;
|
||||
}
|
||||
// </FS:Techwolf Lupindo> area search
|
||||
|
||||
// static
|
||||
void LLScrollListCtrl::onClickColumn(void *userdata)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -156,6 +156,9 @@ public:
|
|||
// Adds a single column descriptor: ["name" : string, "label" : string, "width" : integer, "relwidth" : integer ]
|
||||
virtual void addColumn(const LLScrollListColumn::Params& column, EAddPosition pos = ADD_BOTTOM);
|
||||
virtual void addColumn(const LLSD& column, EAddPosition pos = ADD_BOTTOM);
|
||||
// <FS:Techwolf Lupindo> area search, allow deleting a column
|
||||
virtual LLScrollListColumn::Params delColumn(std::string name);
|
||||
// </FS:Techwolf Lupindo> area search
|
||||
virtual void clearColumns();
|
||||
virtual void setColumnLabel(const std::string& column, const std::string& label);
|
||||
virtual bool preProcessChildNode(LLXMLNodePtr child);
|
||||
|
|
|
|||
|
|
@ -18319,6 +18319,17 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FSAreaSearchAdvanced</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Displays the advanced settings tab</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSCollisionMessagesInChat</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,35 +1,28 @@
|
|||
/* Copyright (c) 2009
|
||||
/**
|
||||
* @file fsareasearch.h
|
||||
* @brief Floater to search and list objects in view or is known to the viewer.
|
||||
*
|
||||
* Modular Systems. All rights reserved.
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Phoenix Firestorm Viewer Source Code
|
||||
* Copyright (c) 2012 Techwolf Lupindo
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* 3. Neither the name Modular Systems nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS “AS IS”
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Modified, debugged, optimized and improved by Henri Beauchamp Feb 2010.
|
||||
* Refactored for Viewer2 by Kadah Coba, April 2011
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* The Phoenix Viewer Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
|
||||
* http://www.phoenixviewer.com
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "llfloater.h"
|
||||
|
|
@ -37,64 +30,359 @@
|
|||
#include "lluuid.h"
|
||||
#include "llstring.h"
|
||||
#include "llframetimer.h"
|
||||
#include "llsaleinfo.h"
|
||||
#include "llcategory.h"
|
||||
#include "llpermissions.h"
|
||||
#include "llviewerobject.h"
|
||||
#include <boost/regex.hpp>
|
||||
#include <boost/graph/graph_concepts.hpp>
|
||||
#include "llscrolllistcolumn.h"
|
||||
|
||||
class LLTextBox;
|
||||
class LLScrollListCtrl;
|
||||
class LLViewerRegion;
|
||||
class LLCheckBoxCtrl;
|
||||
class LLLineEditor;
|
||||
class LLTabContainer;
|
||||
class LLContextMenu;
|
||||
class LLSpinCtrl;
|
||||
class LLComboBox;
|
||||
|
||||
struct AObjectDetails
|
||||
class FSPanelAreaSearchList;
|
||||
class FSPanelAreaSearchFind;
|
||||
class FSPanelAreaSearchFilter;
|
||||
class FSPanelAreaSearchAdvanced;
|
||||
class FSPanelAreaSearchOptions;
|
||||
|
||||
struct FSObjectProperties
|
||||
{
|
||||
LLUUID id;
|
||||
bool valid;
|
||||
bool listed;
|
||||
std::string name;
|
||||
std::string desc;
|
||||
std::string description;
|
||||
std::string touch_name;
|
||||
std::string sit_name;
|
||||
LLUUID creator_id;
|
||||
LLUUID owner_id;
|
||||
LLUUID group_id;
|
||||
LLUUID ownership_id;
|
||||
BOOL group_owned; // used in LL function that uses BOOL instead of bool
|
||||
U64 creation_date;
|
||||
U32 base_mask, owner_mask, group_mask, everyone_mask, next_owner_mask;
|
||||
LLSaleInfo sale_info;
|
||||
LLCategory category;
|
||||
LLUUID last_owner_id;
|
||||
LLAggregatePermissions ag_perms;
|
||||
LLAggregatePermissions ag_texture_perms;
|
||||
LLAggregatePermissions ag_texture_perms_owner;
|
||||
LLPermissions permissions;
|
||||
uuid_vec_t texture_ids;
|
||||
bool name_requested;
|
||||
|
||||
FSObjectProperties() :
|
||||
valid(false),
|
||||
listed(false),
|
||||
name_requested(false)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Main class for area search
|
||||
// holds the search engine and main floater
|
||||
// --------------------------------------------------------------------
|
||||
class FSAreaSearch : public LLSingleton<FSAreaSearch>, public LLFloater
|
||||
{
|
||||
LOG_CLASS(FSAreaSearch);
|
||||
public:
|
||||
FSAreaSearch(const LLSD &);
|
||||
virtual ~FSAreaSearch();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
virtual void draw();
|
||||
|
||||
void callbackLoadOwnerName(const LLUUID& id, const std::string& full_name);
|
||||
void processObjectPropertiesFamily(LLMessageSystem* msg);
|
||||
void callbackLoadFullName(const LLUUID& id, const std::string& full_name);
|
||||
void processObjectProperties(LLMessageSystem* msg);
|
||||
static void idle(void *user_data);
|
||||
|
||||
void checkRegion();
|
||||
void refreshList(bool cache_clear);
|
||||
void onCommitLine();
|
||||
void clearSearchText();
|
||||
void onButtonClickedSearch();
|
||||
void onCommitCheckboxRegex();
|
||||
bool isSearchableObject (LLViewerObject* objectp, LLViewerRegion* our_region);
|
||||
|
||||
std::map<LLUUID, FSObjectProperties> mObjectDetails;
|
||||
|
||||
FSPanelAreaSearchAdvanced* getPanelAdvanced() { return mPanelAdvanced; }
|
||||
FSPanelAreaSearchList* getPanelList() { return mPanelList; }
|
||||
|
||||
void setFilterForSale(bool b) { mFilterForSale = b; }
|
||||
void setFilterLocked(bool b) { mFilterLocked = b; }
|
||||
void setFilterPhysicial(bool b) { mFilterPhysicial = b; }
|
||||
void setFilterTemporary(bool b) { mFilterTemporary = b; }
|
||||
void setFilterPhantom(bool b) { mFilterPhantom = b; }
|
||||
void setFilterAttachment(bool b) { mFilterAttachment = b; }
|
||||
|
||||
void setRegexSearch(bool b) { mRegexSearch = b; }
|
||||
void setBeacons(bool b) { mBeacons = b; }
|
||||
|
||||
void setExcludeAttachment(bool b) { mExcludeAttachment = b; }
|
||||
void setExcludeTempary(bool b) { mExcludeTempary = b; }
|
||||
void setExcludePhysics(bool b) { mExcludePhysics = b; }
|
||||
|
||||
void setFilterForSaleMin(S32 s) { mFilterForSaleMin = s; }
|
||||
void setFilterForSaleMax(S32 s) { mFilterForSaleMax = s; }
|
||||
|
||||
void setFilterClickAction(bool b) { mFilterClickAction = b; }
|
||||
void setFilterClickActionType(U8 u) { mFilterClickActionType = u; }
|
||||
|
||||
void setFilterDistance(bool b) { mFilterDistance = b; }
|
||||
void setFilterDistanceMin(S32 s) { mFilterDistanceMin = s; }
|
||||
void setFilterDistanceMax(S32 s) { mFilterDistanceMax = s; }
|
||||
|
||||
private:
|
||||
void results();
|
||||
void checkRegion();
|
||||
void cancel();
|
||||
void search();
|
||||
void onCommitLine(class LLLineEditor* line, void* user_data);
|
||||
void requestIfNeeded(class LLViewerObject *objectp);
|
||||
void onDoubleClick();
|
||||
void requestObjectProperties(const std::vector<U32>& request_list, bool select);
|
||||
void matchObject(FSObjectProperties& details, LLViewerObject* objectp);
|
||||
void getName(LLUUID& id, std::string& name, BOOL group, bool& name_requested);
|
||||
|
||||
enum OBJECT_COLUMN_ORDER
|
||||
{
|
||||
LIST_OBJECT_NAME,
|
||||
LIST_OBJECT_DESC,
|
||||
LIST_OBJECT_OWNER,
|
||||
LIST_OBJECT_GROUP
|
||||
};
|
||||
void updateCounterText();
|
||||
bool regexTest(std::string text);
|
||||
void findObjects();
|
||||
|
||||
S32 mRequested;
|
||||
bool mRefresh;
|
||||
S32 mSearchableObjects;
|
||||
bool mActive;
|
||||
|
||||
std::string mSearchName;
|
||||
std::string mSearchDescription;
|
||||
std::string mSearchOwner;
|
||||
std::string mSearchGroup;
|
||||
std::string mSearchCreator;
|
||||
std::string mSearchLastOwner;
|
||||
|
||||
bool mRegexSearch;
|
||||
boost::regex mRegexSearchName;
|
||||
boost::regex mRegexSearchDescription;
|
||||
boost::regex mRegexSearchOwner;
|
||||
boost::regex mRegexSearchGroup;
|
||||
boost::regex mRegexSearchCreator;
|
||||
boost::regex mRegexSearchLastOwner;
|
||||
|
||||
LLTextBox* mCounterText;
|
||||
LLScrollListCtrl* mResultList;
|
||||
LLFrameTimer mLastUpdateTimer;
|
||||
|
||||
std::map<LLUUID, AObjectDetails> mObjectDetails;
|
||||
|
||||
std::string mSearchedName;
|
||||
std::string mSearchedDesc;
|
||||
std::string mSearchedOwner;
|
||||
std::string mSearchedGroup;
|
||||
std::vector<LLUUID> mNamesRequested;
|
||||
|
||||
LLViewerRegion* mLastRegion;
|
||||
|
||||
class FSParcelChangeObserver;
|
||||
friend class FSParcelChangeObserver;
|
||||
FSParcelChangeObserver* mParcelChangedObserver;
|
||||
|
||||
// Used for checking to see if a floater has been created.
|
||||
// Can not be trusted as a singleton pointer, don't use as a pointer.
|
||||
FSAreaSearch* mInstance;
|
||||
|
||||
LLTabContainer* mTab;
|
||||
FSPanelAreaSearchList* mPanelList;
|
||||
FSPanelAreaSearchFind* mPanelFind;
|
||||
FSPanelAreaSearchFilter* mPanelFilter;
|
||||
FSPanelAreaSearchOptions* mPanelOptions;
|
||||
FSPanelAreaSearchAdvanced* mPanelAdvanced;
|
||||
|
||||
bool mBeacons;
|
||||
LLColor4 mBeaconColor;
|
||||
LLColor4 mBeaconTextColor;
|
||||
S32 mBeaconLineWidth;
|
||||
|
||||
bool mExcludeAttachment;
|
||||
bool mExcludeTempary;
|
||||
bool mExcludePhysics;
|
||||
|
||||
bool mFilterLocked;
|
||||
bool mFilterPhysicial;
|
||||
bool mFilterTemporary;
|
||||
bool mFilterPhantom;
|
||||
bool mFilterAttachment;
|
||||
|
||||
bool mFilterForSale;
|
||||
S32 mFilterForSaleMin;
|
||||
S32 mFilterForSaleMax;
|
||||
|
||||
bool mFilterDistance;
|
||||
S32 mFilterDistanceMin;
|
||||
S32 mFilterDistanceMax;
|
||||
|
||||
bool mFilterClickAction;
|
||||
U8 mFilterClickActionType;
|
||||
|
||||
protected:
|
||||
static void* createPanelList(void* data);
|
||||
static void* createPanelFind(void* data);
|
||||
static void* createPanelFilter(void* data);
|
||||
static void* createPanelAdvanced(void* data);
|
||||
static void* createPanelOptions(void* data);
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
// List panel
|
||||
// displays the found objects
|
||||
//------------------------------------------------------------
|
||||
class FSPanelAreaSearchList
|
||||
: public LLPanel
|
||||
{
|
||||
LOG_CLASS(FSPanelAreaSearchList);
|
||||
public:
|
||||
FSPanelAreaSearchList(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchList();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
|
||||
|
||||
void setCounterText();
|
||||
void setCounterText(LLStringUtil::format_map_t args);
|
||||
void updateScrollList();
|
||||
void updateName(LLUUID id, std::string name);
|
||||
void touchObject(LLViewerObject* objectp);
|
||||
|
||||
LLScrollListCtrl* getResultList() { return mResultList; }
|
||||
|
||||
void setAgentLastPosition(LLVector3d d) { mAgentLastPosition = d; }
|
||||
LLVector3d getAgentLastPosition() { return mAgentLastPosition; }
|
||||
|
||||
private:
|
||||
void onDoubleClick();
|
||||
void onClickRefresh();
|
||||
void buyObject(FSObjectProperties& details, LLViewerObject* objectp);
|
||||
void onCommitCheckboxBeacons();
|
||||
|
||||
LLContextMenu* mPopupMenu;
|
||||
bool onContextMenuItemClick(const LLSD& userdata);
|
||||
bool onContextMenuItemEnable(const LLSD& userdata);
|
||||
|
||||
LLVector3d mAgentLastPosition;
|
||||
|
||||
FSAreaSearch* mFSAreaSearch;
|
||||
LLButton* mRefreshButton;
|
||||
LLScrollListCtrl* mResultList;
|
||||
LLCheckBoxCtrl* mCheckboxBeacons;
|
||||
LLTextBox* mCounterText;
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
// Find panel
|
||||
// UI for what objects to search for
|
||||
//------------------------------------------------------------
|
||||
class FSPanelAreaSearchFind
|
||||
: public LLPanel
|
||||
{
|
||||
LOG_CLASS(FSPanelAreaSearchFind);
|
||||
public:
|
||||
FSPanelAreaSearchFind(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchFind();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
LLLineEditor* mNameLineEditor;
|
||||
LLLineEditor* mDescriptionLineEditor;
|
||||
LLLineEditor* mOwnerLineEditor;
|
||||
LLLineEditor* mGroupLineEditor;
|
||||
LLLineEditor* mCreatorLineEditor;
|
||||
LLLineEditor* mLastOwnerLineEditor;
|
||||
LLCheckBoxCtrl* mCheckboxRegex;
|
||||
|
||||
private:
|
||||
void onButtonClickedClear();
|
||||
|
||||
FSAreaSearch* mFSAreaSearch;
|
||||
|
||||
LLButton* mSearchButton;
|
||||
LLButton* mClearButton;
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
// Filter panel
|
||||
// "filter" the list to certion object types.
|
||||
//------------------------------------------------------------
|
||||
class FSPanelAreaSearchFilter
|
||||
: public LLPanel
|
||||
{
|
||||
LOG_CLASS(FSPanelAreaSearchFilter);
|
||||
public:
|
||||
FSPanelAreaSearchFilter(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchFilter();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
private:
|
||||
void onCommitCheckbox();
|
||||
void onCommitSpin();
|
||||
void onCommitCombo();
|
||||
|
||||
FSAreaSearch* mFSAreaSearch;
|
||||
LLCheckBoxCtrl* mCheckboxForSale;
|
||||
LLCheckBoxCtrl* mCheckboxPhysical;
|
||||
LLCheckBoxCtrl* mCheckboxTemporary;
|
||||
LLCheckBoxCtrl* mCheckboxLocked;
|
||||
LLCheckBoxCtrl* mCheckboxPhantom;
|
||||
LLCheckBoxCtrl* mCheckboxDistance;
|
||||
LLSpinCtrl* mSpinDistanceMinValue;
|
||||
LLSpinCtrl* mSpinDistanceMaxValue;
|
||||
LLSpinCtrl* mSpinForSaleMinValue;
|
||||
LLSpinCtrl* mSpinForSaleMaxValue;
|
||||
LLButton* mButtonApply;
|
||||
LLComboBox* mComboClickAction;
|
||||
LLCheckBoxCtrl* mCheckboxAttachment;
|
||||
LLCheckBoxCtrl* mCheckboxExcludeAttachment;
|
||||
LLCheckBoxCtrl* mCheckboxExcludePhysics;
|
||||
LLCheckBoxCtrl* mCheckboxExcludeTempary;
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
// Options panel
|
||||
//------------------------------------------------------------
|
||||
class FSPanelAreaSearchOptions
|
||||
: public LLPanel
|
||||
{
|
||||
LOG_CLASS(FSPanelAreaSearchOptions);
|
||||
public:
|
||||
FSPanelAreaSearchOptions(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchOptions();
|
||||
|
||||
// not used
|
||||
// /*virtual*/ BOOL postBuild();
|
||||
|
||||
private:
|
||||
void onCommitCheckboxDisplayColumn(const LLSD& userdata);
|
||||
|
||||
FSAreaSearch* mFSAreaSearch;
|
||||
|
||||
std::map<std::string, LLScrollListColumn::Params> mColumnParms;
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
// Advanced panel
|
||||
//------------------------------------------------------------
|
||||
class FSPanelAreaSearchAdvanced
|
||||
: public LLPanel
|
||||
{
|
||||
LOG_CLASS(FSPanelAreaSearchAdvanced);
|
||||
public:
|
||||
FSPanelAreaSearchAdvanced(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchAdvanced();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
LLCheckBoxCtrl* mCheckboxClickTouch;
|
||||
LLCheckBoxCtrl* mCheckboxClickBuy;
|
||||
|
||||
private:
|
||||
FSAreaSearch* mFSAreaSearch;
|
||||
};
|
||||
|
|
@ -2685,9 +2685,11 @@ void register_viewer_callbacks(LLMessageSystem* msg)
|
|||
|
||||
msg->setHandlerFuncFast(_PREHASH_ImprovedInstantMessage, process_improved_im);
|
||||
msg->setHandlerFuncFast(_PREHASH_ScriptQuestion, process_script_question);
|
||||
msg->setHandlerFuncFast(_PREHASH_ObjectProperties, LLSelectMgr::processObjectProperties, NULL);
|
||||
//msg->setHandlerFuncFast(_PREHASH_ObjectPropertiesFamily, LLSelectMgr::processObjectPropertiesFamily, NULL);
|
||||
msg->setHandlerFuncFast(_PREHASH_ObjectPropertiesFamily, process_object_properties_family, NULL); //KC
|
||||
// <FS:Techwolf Lupindo> area search
|
||||
//msg->setHandlerFuncFast(_PREHASH_ObjectProperties, LLSelectMgr::processObjectProperties, NULL);
|
||||
msg->setHandlerFuncFast(_PREHASH_ObjectProperties, process_object_properties, NULL);
|
||||
// </FS:Techwolf Lupindo> area search
|
||||
msg->setHandlerFuncFast(_PREHASH_ObjectPropertiesFamily, LLSelectMgr::processObjectPropertiesFamily, NULL);
|
||||
msg->setHandlerFunc("ForceObjectSelect", LLSelectMgr::processForceObjectSelect);
|
||||
|
||||
msg->setHandlerFuncFast(_PREHASH_MoneyBalanceReply, process_money_balance_reply, NULL);
|
||||
|
|
|
|||
|
|
@ -118,6 +118,11 @@ void handle_zoom_to_object(LLUUID object_id);
|
|||
void handle_object_return();
|
||||
void handle_object_delete();
|
||||
|
||||
// <FS:Techwolf Lupindo> area search
|
||||
// expose this function so other classes can call it
|
||||
void handle_object_edit();
|
||||
// <FS:Techwolf Lupindo>
|
||||
|
||||
void handle_buy_land();
|
||||
|
||||
// Takes avatar UUID, or if no UUID passed, uses last selected object
|
||||
|
|
|
|||
|
|
@ -5380,17 +5380,19 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data)
|
|||
}
|
||||
}
|
||||
|
||||
//ObjectPropertiesFamily -KC
|
||||
void process_object_properties_family(LLMessageSystem *msg, void**user_data)
|
||||
// <FS:Techwolf Lupindo> area search
|
||||
void process_object_properties(LLMessageSystem *msg, void**user_data)
|
||||
{
|
||||
// Send the result to the corresponding requesters.
|
||||
LLSelectMgr::processObjectPropertiesFamily(msg, user_data);
|
||||
LLSelectMgr::processObjectProperties(msg, user_data);
|
||||
|
||||
FSAreaSearch* area_search_floater = dynamic_cast<FSAreaSearch*>(LLFloaterReg::getInstance("area_search"));
|
||||
FSAreaSearch* area_search_floater = LLFloaterReg::getTypedInstance<FSAreaSearch>("area_search");
|
||||
if( area_search_floater )
|
||||
area_search_floater->processObjectPropertiesFamily(msg);
|
||||
{
|
||||
area_search_floater->processObjectProperties(msg);
|
||||
}
|
||||
}
|
||||
|
||||
// </FS:Techwolf Lupindo> area search
|
||||
|
||||
void process_time_synch(LLMessageSystem *mesgsys, void **user_data)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -84,7 +84,11 @@ void process_object_update(LLMessageSystem *mesgsys, void **user_data);
|
|||
void process_compressed_object_update(LLMessageSystem *mesgsys, void **user_data);
|
||||
void process_cached_object_update(LLMessageSystem *mesgsys, void **user_data);
|
||||
void process_terse_object_update_improved(LLMessageSystem *mesgsys, void **user_data);
|
||||
void process_object_properties_family(LLMessageSystem *msg, void**user_data);
|
||||
|
||||
// <FS:Techwolf Lupindo> area search
|
||||
// send object properties to all classes that need it
|
||||
void process_object_properties(LLMessageSystem *msg, void**user_data);
|
||||
// </FS:Techwolf Lupindo> area search
|
||||
|
||||
void send_simulator_throttle_settings(const LLHost &host);
|
||||
void process_kill_object( LLMessageSystem *mesgsys, void **user_data);
|
||||
|
|
|
|||
|
|
@ -1,170 +1,673 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater
|
||||
name="area_search"
|
||||
help_topic="fs_area_search"
|
||||
title="Area Search for Objects"
|
||||
min_width="425"
|
||||
min_height="250"
|
||||
width="600"
|
||||
height="400"
|
||||
save_rect="true"
|
||||
can_resize="true"
|
||||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_drag_on_left="false">
|
||||
<floater.string name="ListedPendingTotalBlank" value="Listed/Pending/Total"/>
|
||||
<floater.string name="ListedPendingTotalFilled" value="[LISTED] Listed/[PENDING] Pending/[TOTAL] Total"/>
|
||||
<text
|
||||
name="name_label"
|
||||
top_pad="10"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="12"
|
||||
width="200">
|
||||
Name search string:
|
||||
</text>
|
||||
<text
|
||||
name="desc_label"
|
||||
bottom_delta="0"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="218"
|
||||
width="200">
|
||||
Description search string:
|
||||
</text>
|
||||
<line_editor
|
||||
name="Name query chunk"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left="10"
|
||||
bottom_delta="20"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<line_editor
|
||||
name="Description query chunk"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20" width="200"
|
||||
left_delta="206"
|
||||
bottom_delta="0"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<text
|
||||
name="owner_label"
|
||||
bottom_delta="20"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="12"
|
||||
width="200">
|
||||
Owner search string:
|
||||
</text>
|
||||
<text
|
||||
name="group_label"
|
||||
bottom_delta="0"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="218"
|
||||
width="200">
|
||||
Group search string:
|
||||
</text>
|
||||
<line_editor
|
||||
name="Owner query chunk"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left="10"
|
||||
bottom_delta="20"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<line_editor
|
||||
name="Group query chunk"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left_delta="206"
|
||||
bottom_delta="0"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<scroll_list
|
||||
name="result_list"
|
||||
left="10"
|
||||
right="-10"
|
||||
top="90"
|
||||
bottom="-32"
|
||||
follows="left|top|bottom|right"
|
||||
can_resize="true"
|
||||
column_padding="0"
|
||||
draw_heading="true"
|
||||
multi_select="false"
|
||||
search_column="1">
|
||||
<column
|
||||
name="Name"
|
||||
label="Name"
|
||||
dynamicwidth="true"
|
||||
tool_tip="Double click on any entry to get a position beacon"/>
|
||||
<column
|
||||
name="Description"
|
||||
label="Description"
|
||||
dynamicwidth="true"
|
||||
tool_tip="Double click on any entry to get a position beacon"/>
|
||||
<column
|
||||
name="Owner"
|
||||
label="Owner"
|
||||
dynamicwidth="true"
|
||||
tool_tip="Double click on any entry to get a position beacon"/>
|
||||
<column
|
||||
name="Group"
|
||||
label="Group"
|
||||
dynamicwidth="true"
|
||||
tool_tip="Double click on any entry to get a position beacon"/>
|
||||
</scroll_list>
|
||||
<button
|
||||
name="Refresh"
|
||||
label="Refresh"
|
||||
font="SansSerif"
|
||||
mouse_opaque="true"
|
||||
height="20"
|
||||
width="80"
|
||||
left="10"
|
||||
bottom="-6"
|
||||
follows="left|bottom"/>
|
||||
<button
|
||||
name="Stop"
|
||||
label="Stop"
|
||||
font="SansSerif"
|
||||
mouse_opaque="true"
|
||||
height="20"
|
||||
width="80"
|
||||
left_delta="85"
|
||||
bottom="-6"
|
||||
follows="left|bottom"/>
|
||||
<text
|
||||
name="counter"
|
||||
height="15"
|
||||
width="220"
|
||||
left_delta="85"
|
||||
bottom="-9"
|
||||
follows="left|bottom">
|
||||
Listed/Pending/Total
|
||||
</text>
|
||||
name="area_search"
|
||||
help_topic="fs_area_search"
|
||||
title="Area Search for Objects"
|
||||
min_width="430"
|
||||
min_height="255"
|
||||
width="610"
|
||||
height="435"
|
||||
save_rect="true"
|
||||
can_resize="true"
|
||||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_drag_on_left="false">
|
||||
<tab_container
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="1"
|
||||
right="-1"
|
||||
name="area_searchtab"
|
||||
tab_position="top"
|
||||
tab_height="20"
|
||||
tab_min_width="67"
|
||||
bottom="430"
|
||||
top="2">
|
||||
<panel
|
||||
border="true"
|
||||
follows="all"
|
||||
label="List"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="area_search_list_panel"
|
||||
top="0"
|
||||
height="435"
|
||||
width="610" >
|
||||
<panel.string
|
||||
name="ListedPendingTotalBlank">
|
||||
Listed | Pending | Total
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="ListedPendingTotalFilled">
|
||||
[LISTED] Listed | [PENDING] Pending | [TOTAL] Total
|
||||
</panel.string>
|
||||
<scroll_list
|
||||
name="result_list"
|
||||
left="5"
|
||||
right="-5"
|
||||
height="395"
|
||||
top="5"
|
||||
follows="left|top|bottom|right"
|
||||
column_padding="0"
|
||||
draw_heading="true"
|
||||
multi_select="true"
|
||||
search_column="1">
|
||||
<scroll_list.columns
|
||||
name="distance"
|
||||
label="Dist"
|
||||
width="40" />
|
||||
<scroll_list.columns
|
||||
name="name"
|
||||
label="Name"
|
||||
width="140" />
|
||||
<scroll_list.columns
|
||||
name="description"
|
||||
label="Description"
|
||||
width="140" />
|
||||
<scroll_list.columns
|
||||
name="owner"
|
||||
label="Owner"
|
||||
width="140" />
|
||||
<scroll_list.columns
|
||||
name="group"
|
||||
label="Group"
|
||||
width="140"
|
||||
tool_tip="What group the object is set to."/>
|
||||
<scroll_list.columns
|
||||
name="creator"
|
||||
label="Creator"
|
||||
width="140" />
|
||||
<scroll_list.columns
|
||||
name="last_owner"
|
||||
label="Last Owner"
|
||||
width="140"
|
||||
tool_tip="Who owned it last."/>
|
||||
</scroll_list>
|
||||
<button
|
||||
name="Refresh"
|
||||
label="Refresh"
|
||||
font="SansSerif"
|
||||
mouse_opaque="true"
|
||||
height="20"
|
||||
width="80"
|
||||
left="10"
|
||||
bottom="-6"
|
||||
follows="left|bottom"/>
|
||||
<text
|
||||
name="counter"
|
||||
height="15"
|
||||
width="220"
|
||||
left_delta="85"
|
||||
bottom="-9"
|
||||
follows="left|bottom">
|
||||
Listed/Pending/Total
|
||||
</text>
|
||||
<check_box
|
||||
follows="right|bottom"
|
||||
height="16"
|
||||
left_pad="180"
|
||||
width="80"
|
||||
name="beacons"
|
||||
label="Show beacons"
|
||||
bottom="-9" />
|
||||
</panel>
|
||||
<panel
|
||||
border="true"
|
||||
follows="all"
|
||||
label="Find"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0"
|
||||
help_topic="area_search_find_tab"
|
||||
name="area_search_find_panel" >
|
||||
<text
|
||||
name="name_label"
|
||||
top_pad="10"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="12"
|
||||
width="200">
|
||||
Name:
|
||||
</text>
|
||||
<text
|
||||
name="desc_label"
|
||||
bottom_delta="0"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="218"
|
||||
width="200">
|
||||
Description:
|
||||
</text>
|
||||
<line_editor
|
||||
name="name_search"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left="10"
|
||||
bottom_delta="20"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<line_editor
|
||||
name="description_search"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20" width="200"
|
||||
left_delta="206"
|
||||
bottom_delta="0"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<text
|
||||
name="owner_label"
|
||||
bottom_delta="20"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="12"
|
||||
width="200">
|
||||
Owner:
|
||||
</text>
|
||||
<text
|
||||
name="group_label"
|
||||
bottom_delta="0"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="218"
|
||||
width="200">
|
||||
Group:
|
||||
</text>
|
||||
<line_editor
|
||||
name="owner_search"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left="10"
|
||||
bottom_delta="20"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<line_editor
|
||||
name="group_search"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left_delta="206"
|
||||
bottom_delta="0"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<text
|
||||
name="creator_label"
|
||||
bottom_delta="20"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="12"
|
||||
width="200">
|
||||
Creator:
|
||||
</text>
|
||||
<text
|
||||
name="last_owner_label"
|
||||
bottom_delta="0"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="218"
|
||||
width="200">
|
||||
Last owner:
|
||||
</text>
|
||||
<line_editor
|
||||
name="creator_search"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left="10"
|
||||
bottom_delta="20"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<line_editor
|
||||
name="last_owner_search"
|
||||
tool_tip=""
|
||||
bevel_style="in"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
height="20"
|
||||
width="200"
|
||||
left_delta="206"
|
||||
bottom_delta="0"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
max_length_chars="256"
|
||||
mouse_opaque="true" />
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="regular_expression"
|
||||
label="Use regular expression"
|
||||
top_pad="10" />
|
||||
<button
|
||||
name="search"
|
||||
label="Search"
|
||||
mouse_opaque="true"
|
||||
height="20"
|
||||
width="80"
|
||||
left="10"
|
||||
bottom="-6"
|
||||
follows="left|bottom"/>
|
||||
<button
|
||||
name="clear"
|
||||
label="Clear"
|
||||
mouse_opaque="true"
|
||||
height="20"
|
||||
width="80"
|
||||
left_pad="10"
|
||||
bottom="-6"
|
||||
follows="left|bottom"/>
|
||||
</panel>
|
||||
<panel
|
||||
border="true"
|
||||
follows="all"
|
||||
label="Filter"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0"
|
||||
help_topic="area_search_filter_tab"
|
||||
name="area_search_filter_panel" >
|
||||
<text
|
||||
name="only_list"
|
||||
height="15"
|
||||
follows="top|left"
|
||||
left="5">
|
||||
Only list objects that are:
|
||||
</text>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
top_pad="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="filter_locked"
|
||||
label="Locked"
|
||||
width="80"
|
||||
/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="filter_physical"
|
||||
label="Physical"
|
||||
width="80" />
|
||||
<check_box
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="filter_phantom"
|
||||
label="Phantom"
|
||||
left_pad="0"
|
||||
width="80"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="filter_temporary"
|
||||
label="Temporary"
|
||||
left_pad="0"
|
||||
width="80"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
name="filter_attachment"
|
||||
label="Attachment"
|
||||
left_pad="0"
|
||||
width="80"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="filter_for_sale"
|
||||
label="For Sale between"
|
||||
top_pad="10"
|
||||
width="120"/>
|
||||
<spinner
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
increment="1"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
max_val="999999999"
|
||||
min_val="0"
|
||||
name="min_price"
|
||||
top_delta="0"
|
||||
width="80" />
|
||||
<text
|
||||
name="and"
|
||||
height="10"
|
||||
follows="top|left"
|
||||
left_pad="5"
|
||||
top_delta="4"
|
||||
width="22">
|
||||
and
|
||||
</text>
|
||||
<spinner
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
increment="1"
|
||||
initial_value="999999"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
max_val="999999999"
|
||||
min_val="0"
|
||||
name="max_price"
|
||||
top_delta="-4"
|
||||
width="80" />
|
||||
<text
|
||||
name="mouse_text"
|
||||
height="18"
|
||||
follows="top|left"
|
||||
left="15"
|
||||
top_pad="25"
|
||||
width="100">
|
||||
Mouse click action
|
||||
</text>
|
||||
<combo_box
|
||||
height="23"
|
||||
follows="top|left"
|
||||
name="click_action"
|
||||
left_pad="0"
|
||||
tool_tip="Action that is performed when clicking on an object."
|
||||
width="80" >
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label=" "
|
||||
name="click_blank"
|
||||
value="blank" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Any"
|
||||
name="click_any"
|
||||
value="any" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Touch"
|
||||
name="click_touch"
|
||||
value="touch" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Sit"
|
||||
name="click_sit"
|
||||
value="sit" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Buy"
|
||||
name="click_buy"
|
||||
value="buy" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Pay"
|
||||
name="click_pay"
|
||||
value="pay" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Open"
|
||||
name="click_open"
|
||||
value="open" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Play"
|
||||
name="click_play"
|
||||
value="play" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Open Media"
|
||||
name="click_open_media"
|
||||
value="open_media" />
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Zoom"
|
||||
name="click_zoom"
|
||||
value="zoom" />
|
||||
</combo_box>
|
||||
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="filter_distance"
|
||||
label="Distance between"
|
||||
top_pad="10"
|
||||
width="120"/>
|
||||
<spinner
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
increment="1"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
max_val="999999999"
|
||||
min_val="0"
|
||||
name="min_distance"
|
||||
top_delta="0"
|
||||
width="80" />
|
||||
<text
|
||||
name="and"
|
||||
height="10"
|
||||
follows="top|left"
|
||||
left_pad="5"
|
||||
top_delta="4"
|
||||
width="22">
|
||||
and
|
||||
</text>
|
||||
<spinner
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
increment="1"
|
||||
initial_value="999999"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
max_val="999999999"
|
||||
min_val="0"
|
||||
name="max_distance"
|
||||
top_delta="-4"
|
||||
width="80" />
|
||||
|
||||
<text
|
||||
name="only_list"
|
||||
height="15"
|
||||
top_pad="10"
|
||||
follows="top|left"
|
||||
left="5">
|
||||
Exclude objects that are:
|
||||
</text>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
top_pad="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="exclude_attachment"
|
||||
label="Attachment"
|
||||
width="80"
|
||||
/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
top_pad="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="exclude_physical"
|
||||
label="Physical"
|
||||
width="80"
|
||||
/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
top_pad="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="exclude_temporary"
|
||||
label="Temporary"
|
||||
width="80"
|
||||
/>
|
||||
<button
|
||||
name="apply"
|
||||
label="Apply"
|
||||
mouse_opaque="true"
|
||||
height="20"
|
||||
width="80"
|
||||
left="10"
|
||||
bottom="-6"
|
||||
follows="left|bottom"/>
|
||||
</panel>
|
||||
<panel
|
||||
border="true"
|
||||
follows="all"
|
||||
label="Options"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0"
|
||||
help_topic="area_search_options_tab"
|
||||
name="area_search_options_panel" >
|
||||
<text
|
||||
name="only_list"
|
||||
height="15"
|
||||
follows="top|left"
|
||||
left="5">
|
||||
Display column:
|
||||
</text>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="show_distance"
|
||||
label="distance"
|
||||
top_pad="10"
|
||||
initial_value="true">
|
||||
<check_box.commit_callback
|
||||
function="AreaSearch.DisplayColumn"
|
||||
parameter="distance" />
|
||||
</check_box>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="show_name"
|
||||
label="name"
|
||||
top_pad="10"
|
||||
initial_value="true">
|
||||
<check_box.commit_callback
|
||||
function="AreaSearch.DisplayColumn"
|
||||
parameter="name" />
|
||||
</check_box>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="show_description"
|
||||
label="description"
|
||||
top_pad="10"
|
||||
initial_value="true">
|
||||
<check_box.commit_callback
|
||||
function="AreaSearch.DisplayColumn"
|
||||
parameter="description" />
|
||||
</check_box>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="show_owner"
|
||||
label="owner"
|
||||
top_pad="10"
|
||||
initial_value="true">
|
||||
<check_box.commit_callback
|
||||
function="AreaSearch.DisplayColumn"
|
||||
parameter="owner" />
|
||||
</check_box>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="show_group"
|
||||
label="group"
|
||||
top_pad="10"
|
||||
initial_value="true">
|
||||
<check_box.commit_callback
|
||||
function="AreaSearch.DisplayColumn"
|
||||
parameter="group" />
|
||||
</check_box>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="show_creator"
|
||||
label="creator"
|
||||
top_pad="10"
|
||||
initial_value="true">
|
||||
<check_box.commit_callback
|
||||
function="AreaSearch.DisplayColumn"
|
||||
parameter="creator" />
|
||||
</check_box>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="show_last_owner"
|
||||
label="last owner"
|
||||
top_pad="10"
|
||||
initial_value="true">
|
||||
<check_box.commit_callback
|
||||
function="AreaSearch.DisplayColumn"
|
||||
parameter="last_owner" />
|
||||
</check_box>
|
||||
</panel>
|
||||
<panel
|
||||
border="true"
|
||||
follows="all"
|
||||
label="Advanced"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0"
|
||||
help_topic="area_search_advanced_tab"
|
||||
name="area_search_advanced_panel" >
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="double_click_touch"
|
||||
label="Double click touch object"
|
||||
top_pad="10" />
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="8"
|
||||
name="double_click_buy"
|
||||
label="Double click buy object"
|
||||
top_pad="10" />
|
||||
</panel>
|
||||
</tab_container>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<context_menu
|
||||
layout="topleft"
|
||||
name="Object List popup">
|
||||
<menu_item_call
|
||||
label="Script Info"
|
||||
layout="topleft"
|
||||
name="script_info">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="script" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Touch"
|
||||
layout="topleft"
|
||||
name="touch_object">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="touch" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Teleport to"
|
||||
layout="topleft"
|
||||
name="teleport_to_object">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="p_teleport" />
|
||||
<menu_item_call.on_enable
|
||||
function="AreaSearch.Enable"
|
||||
parameter="one" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Inspect"
|
||||
layout="topleft"
|
||||
name="inspect_object">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="inspect" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Edit"
|
||||
layout="topleft"
|
||||
name="edit_object">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="edit" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Return"
|
||||
layout="topleft"
|
||||
name="return_object">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="return" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Delete"
|
||||
layout="topleft"
|
||||
name="delete_object">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="delete" />
|
||||
</menu_item_call>
|
||||
<!-- <menu_item_separator
|
||||
layout="topleft" /> -->
|
||||
<menu_item_call
|
||||
label="Buy object"
|
||||
layout="topleft"
|
||||
name="object_buy">
|
||||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="buy" />
|
||||
<menu_item_call.on_enable
|
||||
function="AreaSearch.Enable"
|
||||
parameter="one" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
@ -9370,4 +9370,13 @@ Did you know you can get the classic Phoenix Viewer look with Firestorm? Go to t
|
|||
Unable to save snapshot.
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="RegExFail"
|
||||
type="alertmodal">
|
||||
Error in the regular expression:
|
||||
[EWHAT]
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
</notifications>
|
||||
|
|
|
|||
Loading…
Reference in New Issue