diff options
author | Steven Bennetts <steve@lindenlab.com> | 2009-06-21 08:04:56 +0000 |
---|---|---|
committer | Steven Bennetts <steve@lindenlab.com> | 2009-06-21 08:04:56 +0000 |
commit | 9ec432034dc3c45d7ce763eb02dae4cc7f6b8da8 (patch) | |
tree | 4a505c1e0919af52800b3ffb3eaf135e7d6f9ce6 /indra/newview/llfloatergodtools.cpp | |
parent | 351ebe9fcb76f3b99c2957004bb8493a904869ee (diff) |
merge -r 122421-124917 viewer-2.0.0-2 -> viewer-2.0.0-3
ignore-dead-branch
Diffstat (limited to 'indra/newview/llfloatergodtools.cpp')
-rw-r--r-- | indra/newview/llfloatergodtools.cpp | 194 |
1 files changed, 77 insertions, 117 deletions
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp index 4959a2913e..58cbe02d6d 100644 --- a/indra/newview/llfloatergodtools.cpp +++ b/indra/newview/llfloatergodtools.cpp @@ -73,36 +73,39 @@ #include "llsurface.h" #include "llviewercontrol.h" #include "lluictrlfactory.h" +#include "lltrans.h" #include "lltransfertargetfile.h" #include "lltransfersourcefile.h" const F32 SECONDS_BETWEEN_UPDATE_REQUESTS = 5.0f; -static LLFloaterGodTools* sGodTools = NULL; - //***************************************************************************** // LLFloaterGodTools //***************************************************************************** -// static -LLFloaterGodTools* LLFloaterGodTools::instance() +void LLFloaterGodTools::onOpen(const LLSD& key) { - if (!sGodTools) + center(); + setFocus(TRUE); +// LLPanel *panel = childGetVisibleTab("GodTools Tabs"); +// if (panel) +// panel->setFocus(TRUE); + if (mPanelObjectTools) + mPanelObjectTools->setTargetAvatar(LLUUID::null); + + if (gAgent.getRegionHost() != mCurrentHost) { - sGodTools = new LLFloaterGodTools(); - sGodTools->open(); /*Flawfinder: ignore*/ - sGodTools->center(); - sGodTools->setFocus(TRUE); + // we're in a new region + sendRegionInfoRequest(); } - return sGodTools; } // static void LLFloaterGodTools::refreshAll() { - LLFloaterGodTools* god_tools = instance(); + LLFloaterGodTools* god_tools = getInstance(); if (god_tools) { if (gAgent.getRegionHost() != god_tools->mCurrentHost) @@ -115,22 +118,16 @@ void LLFloaterGodTools::refreshAll() -LLFloaterGodTools::LLFloaterGodTools() -: LLFloater(std::string("godtools floater")), +LLFloaterGodTools::LLFloaterGodTools(const LLSD& key) +: LLFloater(), mCurrentHost(LLHost::invalid), mUpdateTimer() { - LLCallbackMap::map_t factory_map; - factory_map["grid"] = LLCallbackMap(createPanelGrid, this); - factory_map["region"] = LLCallbackMap(createPanelRegion, this); - factory_map["objects"] = LLCallbackMap(createPanelObjects, this); - factory_map["request"] = LLCallbackMap(createPanelRequest, this); - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_god_tools.xml", &factory_map); - - childSetTabChangeCallback("GodTools Tabs", "grid", onTabChanged, this); - childSetTabChangeCallback("GodTools Tabs", "region", onTabChanged, this); - childSetTabChangeCallback("GodTools Tabs", "objects", onTabChanged, this); - childSetTabChangeCallback("GodTools Tabs", "request", onTabChanged, this); + mFactoryMap["grid"] = LLCallbackMap(createPanelGrid, this); + mFactoryMap["region"] = LLCallbackMap(createPanelRegion, this); + mFactoryMap["objects"] = LLCallbackMap(createPanelObjects, this); + mFactoryMap["request"] = LLCallbackMap(createPanelRequest, this); + LLUICtrlFactory::getInstance()->buildFloater(this, "floater_god_tools.xml"); sendRegionInfoRequest(); @@ -140,14 +137,14 @@ LLFloaterGodTools::LLFloaterGodTools() // static void* LLFloaterGodTools::createPanelGrid(void *userdata) { - return new LLPanelGridTools("grid"); + return new LLPanelGridTools(); } // static void* LLFloaterGodTools::createPanelRegion(void *userdata) { LLFloaterGodTools* self = (LLFloaterGodTools*)userdata; - self->mPanelRegionTools = new LLPanelRegionTools("region"); + self->mPanelRegionTools = new LLPanelRegionTools(); return self->mPanelRegionTools; } @@ -155,20 +152,24 @@ void* LLFloaterGodTools::createPanelRegion(void *userdata) void* LLFloaterGodTools::createPanelObjects(void *userdata) { LLFloaterGodTools* self = (LLFloaterGodTools*)userdata; - self->mPanelObjectTools = new LLPanelObjectTools("objects"); + self->mPanelObjectTools = new LLPanelObjectTools(); return self->mPanelObjectTools; } // static void* LLFloaterGodTools::createPanelRequest(void *userdata) { - return new LLPanelRequestTools("region"); + return new LLPanelRequestTools(); } LLFloaterGodTools::~LLFloaterGodTools() { // children automatically deleted } +BOOL LLFloaterGodTools::postBuild() +{ + return TRUE; +} U32 LLFloaterGodTools::computeRegionFlags() const { @@ -186,9 +187,9 @@ void LLFloaterGodTools::updatePopup(LLCoordGL center, MASK mask) // virtual void LLFloaterGodTools::onClose(bool app_quitting) { - if (sGodTools) + if (getInstance()) { - sGodTools->setVisible(FALSE); + getInstance()->setVisible(FALSE); } } @@ -209,42 +210,15 @@ void LLFloaterGodTools::draw() LLFloater::draw(); } -// static -void LLFloaterGodTools::show(void *) -{ - LLFloaterGodTools* god_tools = instance(); - god_tools->open(); - LLPanel *panel = god_tools->childGetVisibleTab("GodTools Tabs"); - if (panel) panel->setFocus(TRUE); - if (god_tools->mPanelObjectTools) god_tools->mPanelObjectTools->setTargetAvatar(LLUUID::null); - - if (gAgent.getRegionHost() != god_tools->mCurrentHost) - { - // we're in a new region - god_tools->sendRegionInfoRequest(); - } -} - void LLFloaterGodTools::showPanel(const std::string& panel_name) { childShowTab("GodTools Tabs", panel_name); - open(); /*Flawfinder: ignore*/ + openFloater(); LLPanel *panel = childGetVisibleTab("GodTools Tabs"); - if (panel) panel->setFocus(TRUE); -} - - -// static -void LLFloaterGodTools::onTabChanged(void* data, bool from_click) -{ - LLPanel* panel = (LLPanel*)data; if (panel) - { panel->setFocus(TRUE); - } } - // static void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg) { @@ -299,14 +273,14 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg) } // push values to god tools, if available - if (sGodTools - && sGodTools->mPanelRegionTools - && sGodTools->mPanelObjectTools - && msg - && gAgent.isGodlike()) + if ( gAgent.isGodlike() + && instanceVisible() + && getInstance()->mPanelRegionTools + && getInstance()->mPanelObjectTools + && msg ) { - LLPanelRegionTools* rtool = sGodTools->mPanelRegionTools; - sGodTools->mCurrentHost = host; + LLPanelRegionTools* rtool = getInstance()->mPanelRegionTools; + getInstance()->mCurrentHost = host; // store locally rtool->setSimName(sim_name); @@ -319,7 +293,7 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg) rtool->setRedirectGridY(redirect_grid_y); rtool->enableAllWidgets(); - LLPanelObjectTools *otool = sGodTools->mPanelObjectTools; + LLPanelObjectTools *otool = getInstance()->mPanelObjectTools; otool->setCheckFlags(region_flags); otool->enableAllWidgets(); @@ -364,12 +338,12 @@ void LLFloaterGodTools::sendGodUpdateRegionInfo() { LLViewerRegion *regionp = gAgent.getRegion(); if (gAgent.isGodlike() - && sGodTools->mPanelRegionTools + && getInstance()->mPanelRegionTools && regionp && gAgent.getRegionHost() == mCurrentHost) { LLMessageSystem *msg = gMessageSystem; - LLPanelRegionTools *rtool = sGodTools->mPanelRegionTools; + LLPanelRegionTools *rtool = getInstance()->mPanelRegionTools; msg->newMessage("GodUpdateRegionInfo"); msg->nextBlockFast(_PREHASH_AgentData); @@ -426,15 +400,15 @@ const F32 PRICE_PER_METER_MIN = 0.f; const F32 PRICE_PER_METER_MAX = 100.f; -LLPanelRegionTools::LLPanelRegionTools(const std::string& title) -: LLPanel(title) +LLPanelRegionTools::LLPanelRegionTools() +: LLPanel() { } BOOL LLPanelRegionTools::postBuild() { childSetCommitCallback("region name", onChangeAnything, this); - childSetKeystrokeCallback("region name", onChangeSimName, this); + getChild<LLLineEditor>("region name")->setKeystrokeCallback(onChangeSimName, this); childSetPrevalidate("region name", &LLLineEditor::prevalidatePrintableNotPipe); childSetCommitCallback("check prelude", onChangePrelude, this); @@ -768,9 +742,7 @@ void LLPanelRegionTools::setPricePerMeter(S32 price) // static void LLPanelRegionTools::onChangeAnything(LLUICtrl* ctrl, void* userdata) { - if (sGodTools - && userdata - && gAgent.isGodlike()) + if (userdata && gAgent.isGodlike()) { LLPanelRegionTools* region_tools = (LLPanelRegionTools*) userdata; region_tools->childEnable("Apply"); @@ -794,9 +766,7 @@ void LLPanelRegionTools::onChangePrelude(LLUICtrl* ctrl, void* data) // static void LLPanelRegionTools::onChangeSimName(LLLineEditor* caller, void* userdata ) { - if (sGodTools - && userdata - && gAgent.isGodlike()) + if (userdata && gAgent.isGodlike()) { LLPanelRegionTools* region_tools = (LLPanelRegionTools*) userdata; region_tools->childEnable("Apply"); @@ -807,11 +777,9 @@ void LLPanelRegionTools::onChangeSimName(LLLineEditor* caller, void* userdata ) void LLPanelRegionTools::onRefresh(void* userdata) { LLViewerRegion *region = gAgent.getRegion(); - if (region - && sGodTools - && gAgent.isGodlike()) + if (region && gAgent.isGodlike()) { - sGodTools->sendRegionInfoRequest(); + LLFloaterGodTools::getInstance()->sendRegionInfoRequest(); } } @@ -819,15 +787,12 @@ void LLPanelRegionTools::onRefresh(void* userdata) void LLPanelRegionTools::onApplyChanges(void* userdata) { LLViewerRegion *region = gAgent.getRegion(); - if (region - && sGodTools - && userdata - && gAgent.isGodlike()) + if (region && userdata && gAgent.isGodlike()) { LLPanelRegionTools* region_tools = (LLPanelRegionTools*) userdata; region_tools->childDisable("Apply"); - sGodTools->sendGodUpdateRegionInfo(); + LLFloaterGodTools::getInstance()->sendGodUpdateRegionInfo(); } } @@ -890,11 +855,10 @@ void LLPanelRegionTools::onSelectRegion(void* userdata) // LEFT R2 RIGHT const F32 HOURS_TO_RADIANS = (2.f*F_PI)/24.f; -const char FLOATER_GRID_ADMIN_TITLE[] = "Grid Administration"; -LLPanelGridTools::LLPanelGridTools(const std::string& name) : - LLPanel(name) +LLPanelGridTools::LLPanelGridTools() : + LLPanel() { } @@ -919,10 +883,6 @@ void LLPanelGridTools::refresh() // static void LLPanelGridTools::onClickKickAll(void* userdata) { - S32 left, top; - gFloaterView->getNewFloaterPosition(&left, &top); - LLRect rect(left, top, left+400, top-300); - LLNotifications::instance().add("KickAllUsers", LLSD(), LLSD(), LLPanelGridTools::confirmKick); } @@ -1017,8 +977,9 @@ bool LLPanelGridTools::flushMapVisibilityCachesConfirm(const LLSD& notification, // LEFT RIGHT // Default constructor -LLPanelObjectTools::LLPanelObjectTools(const std::string& title) -: LLPanel(title), mTargetAvatar() +LLPanelObjectTools::LLPanelObjectTools() + : LLPanel(), + mTargetAvatar() { } @@ -1054,7 +1015,7 @@ void LLPanelObjectTools::setTargetAvatar(const LLUUID &target_id) mTargetAvatar = target_id; if (target_id.isNull()) { - childSetValue("target_avatar_name", "(no target)"); + childSetValue("target_avatar_name", getString("no_target")); } } @@ -1137,8 +1098,7 @@ void LLPanelObjectTools::enableAllWidgets() // static void LLPanelObjectTools::onGetTopColliders(void* userdata) { - if (sGodTools - && gAgent.isGodlike()) + if (gAgent.isGodlike()) { LLFloaterTopObjects::show(); LLFloaterTopObjects::setMode(STAT_REPORT_TOP_COLLIDERS); @@ -1149,8 +1109,7 @@ void LLPanelObjectTools::onGetTopColliders(void* userdata) // static void LLPanelObjectTools::onGetTopScripts(void* userdata) { - if (sGodTools - && gAgent.isGodlike()) + if (gAgent.isGodlike()) { LLFloaterTopObjects::show(); LLFloaterTopObjects::setMode(STAT_REPORT_TOP_SCRIPTS); @@ -1161,8 +1120,7 @@ void LLPanelObjectTools::onGetTopScripts(void* userdata) // static void LLPanelObjectTools::onGetScriptDigest(void* userdata) { - if (sGodTools - && gAgent.isGodlike()) + if (gAgent.isGodlike()) { // get the list of scripts and number of occurences of each // (useful for finding self-replicating objects) @@ -1272,7 +1230,10 @@ void LLPanelObjectTools::onClickSetBySelection(void* data) LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); panelp->mTargetAvatar = owner_id; - std::string name = "Object " + node->mName + " owned by " + owner_name; + LLStringUtil::format_map_t args; + args["[OBJECT]"] = node->mName; + args["[OWNER]"] = owner_name; + std::string name = LLTrans::getString("GodToolsObjectOwnedBy", args); panelp->childSetValue("target_avatar_name", name); } @@ -1290,9 +1251,7 @@ void LLPanelObjectTools::callbackAvatarID(const std::vector<std::string>& names, // static void LLPanelObjectTools::onChangeAnything(LLUICtrl* ctrl, void* userdata) { - if (sGodTools - && userdata - && gAgent.isGodlike()) + if (userdata && gAgent.isGodlike()) { LLPanelObjectTools* object_tools = (LLPanelObjectTools*) userdata; object_tools->childEnable("Apply"); @@ -1303,16 +1262,13 @@ void LLPanelObjectTools::onChangeAnything(LLUICtrl* ctrl, void* userdata) void LLPanelObjectTools::onApplyChanges(void* userdata) { LLViewerRegion *region = gAgent.getRegion(); - if (region - && sGodTools - && userdata - && gAgent.isGodlike()) + if (region && gAgent.isGodlike()) { LLPanelObjectTools* object_tools = (LLPanelObjectTools*) userdata; // TODO -- implement this object_tools->childDisable("Apply"); - sGodTools->sendGodUpdateRegionInfo(); + LLFloaterGodTools::getInstance()->sendGodUpdateRegionInfo(); } } @@ -1324,8 +1280,8 @@ void LLPanelObjectTools::onApplyChanges(void* userdata) const std::string SELECTION = "Selection"; const std::string AGENT_REGION = "Agent Region"; -LLPanelRequestTools::LLPanelRequestTools(const std::string& name): - LLPanel(name) +LLPanelRequestTools::LLPanelRequestTools(): + LLPanel() { } @@ -1348,9 +1304,13 @@ void LLPanelRequestTools::refresh() LLCtrlListInterface *list = childGetListInterface("destination"); if (!list) return; - list->operateOnAll(LLCtrlListInterface::OP_DELETE); - list->addSimpleElement(SELECTION); - list->addSimpleElement(AGENT_REGION); + S32 last_item = list->getItemCount(); + + if (last_item >=3) + { + list->selectItemRange(2,last_item); + list->operateOnSelection(LLCtrlListInterface::OP_DELETE); + } for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); iter != LLWorld::getInstance()->getRegionList().end(); ++iter) { @@ -1367,7 +1327,7 @@ void LLPanelRequestTools::refresh() } else { - list->selectByValue(SELECTION); + list->operateOnSelection(LLCtrlListInterface::OP_DESELECT); } } |