diff options
Diffstat (limited to 'linden/indra/newview')
-rw-r--r-- | linden/indra/newview/floatergridmanager.cpp | 217 | ||||
-rw-r--r-- | linden/indra/newview/floatergridmanager.h | 6 | ||||
-rw-r--r-- | linden/indra/newview/hippoGridManager.cpp | 194 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_grid_manager.xml | 12 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/notifications.xml | 41 |
5 files changed, 305 insertions, 165 deletions
diff --git a/linden/indra/newview/floatergridmanager.cpp b/linden/indra/newview/floatergridmanager.cpp index efd02ca..1ca7ae3 100644 --- a/linden/indra/newview/floatergridmanager.cpp +++ b/linden/indra/newview/floatergridmanager.cpp | |||
@@ -53,32 +53,6 @@ FloaterGridManager::~FloaterGridManager() | |||
53 | 53 | ||
54 | BOOL FloaterGridManager::postBuild() | 54 | BOOL FloaterGridManager::postBuild() |
55 | { | 55 | { |
56 | /*requires<LLScrollListCtrl>("grid_selector"); | ||
57 | requires<LLLineEditor>("gridnick"); | ||
58 | requires<LLLineEditor>("gridname"); | ||
59 | requires<LLLineEditor>("loginuri"); | ||
60 | requires<LLLineEditor>("loginpage"); | ||
61 | requires<LLLineEditor>("helperuri"); | ||
62 | requires<LLLineEditor>("website"); | ||
63 | requires<LLLineEditor>("support"); | ||
64 | requires<LLLineEditor>("register"); | ||
65 | requires<LLLineEditor>("password"); | ||
66 | requires<LLLineEditor>("first_name"); | ||
67 | requires<LLLineEditor>("last_name"); | ||
68 | requires<LLLineEditor>("avatar_password"); | ||
69 | //requires<LLLineEditor>("search"); | ||
70 | requires<LLButton>("btn_delete"); | ||
71 | requires<LLButton>("btn_add"); | ||
72 | requires<LLButton>("btn_copy"); | ||
73 | requires<LLButton>("set_default"); | ||
74 | requires<LLButton>("btn_gridinfo");*/ | ||
75 | //requires<LLButton>("btn_help_render_compat"); | ||
76 | |||
77 | /*if (!checkRequirements()) | ||
78 | { | ||
79 | return false; | ||
80 | }*/ | ||
81 | |||
82 | LLLineEditor* password_edit = getChild<LLLineEditor>("avatar_password"); | 56 | LLLineEditor* password_edit = getChild<LLLineEditor>("avatar_password"); |
83 | if (password_edit) | 57 | if (password_edit) |
84 | { | 58 | { |
@@ -105,49 +79,120 @@ BOOL FloaterGridManager::postBuild() | |||
105 | return TRUE; | 79 | return TRUE; |
106 | } | 80 | } |
107 | 81 | ||
82 | void FloaterGridManager::clearInfo() | ||
83 | { | ||
84 | //getChild<LLScrollListCtrl>("grid_selector")->clear(); | ||
85 | //getChild<LLLineEditor>("gridnick")->clear(); | ||
86 | //getChild<LLLineEditor>("gridname")->clear(); | ||
87 | //getChild<LLLineEditor>("loginuri")->clear(); | ||
88 | getChild<LLLineEditor>("loginpage")->clear(); | ||
89 | getChild<LLLineEditor>("helperuri")->clear(); | ||
90 | getChild<LLLineEditor>("website")->clear(); | ||
91 | getChild<LLLineEditor>("support")->clear(); | ||
92 | getChild<LLLineEditor>("register")->clear(); | ||
93 | getChild<LLLineEditor>("password")->clear(); | ||
94 | //getChild<LLLineEditor>("first_name")->clear(); | ||
95 | //getChild<LLLineEditor>("last_name")->clear(); | ||
96 | //getChild<LLLineEditor>("avatar_password")->clear(); | ||
97 | //getChild<LLLineEditor>("search")->clear(); | ||
98 | //getChild<LLButton>("btn_delete"); | ||
99 | //getChild<LLButton>("btn_add") | ||
100 | //getChild<LLButton>("btn_copy"); | ||
101 | //getChild<LLButton>("set_default")->setEnabled(FALSE); | ||
102 | getChild<LLButton>("btn_gridinfo")->setEnabled(TRUE); | ||
103 | //getChild<LLButton>("btn_clear"); | ||
104 | //getChild<LLButton>("btn_help_render_compat")->setEnabled(FALSE); | ||
105 | } | ||
106 | |||
107 | void FloaterGridManager::draw() | ||
108 | { | ||
109 | refresh(); | ||
110 | |||
111 | LLFloater::draw(); | ||
112 | } | ||
113 | |||
114 | void FloaterGridManager::refresh() | ||
115 | { | ||
116 | //TODO: these should just be set in a prompt | ||
117 | bool can_edit = (!getChild<LLLineEditor>("gridnick")->getText().empty() && | ||
118 | !getChild<LLLineEditor>("loginuri")->getText().empty() && | ||
119 | getChild<LLLineEditor>("gridnick")->getText() != "<required>" && | ||
120 | getChild<LLLineEditor>("loginuri")->getText() != "<required>"); | ||
121 | |||
122 | //getChild<LLLineEditor>("gridname"); | ||
123 | getChild<LLLineEditor>("loginpage")->setEnabled(can_edit); | ||
124 | getChild<LLLineEditor>("helperuri")->setEnabled(can_edit); | ||
125 | getChild<LLLineEditor>("website")->setEnabled(can_edit); | ||
126 | getChild<LLLineEditor>("support")->setEnabled(can_edit); | ||
127 | getChild<LLLineEditor>("register")->setEnabled(can_edit); | ||
128 | getChild<LLLineEditor>("password")->setEnabled(can_edit); | ||
129 | //getChild<LLLineEditor>("first_name")->setEnabled(can_edit); | ||
130 | //getChild<LLLineEditor>("last_name")->setEnabled(can_edit); | ||
131 | //getChild<LLLineEditor>("avatar_password")->setEnabled(can_edit); | ||
132 | //getChild<LLLineEditor>("search")->setEnabled(can_edit); | ||
133 | getChild<LLButton>("btn_delete")->setEnabled(can_edit); | ||
134 | //getChild<LLButton>("btn_add") | ||
135 | //getChild<LLButton>("btn_copy")->setEnabled(can_edit); | ||
136 | //getChild<LLButton>("set_default")->setEnabled(can_dit); | ||
137 | getChild<LLButton>("btn_gridinfo")->setEnabled(can_edit); | ||
138 | getChild<LLButton>("btn_clear")->setEnabled(can_edit); | ||
139 | //getChild<LLButton>("btn_help_render_compat")->setEnabled(can_edit); | ||
140 | } | ||
141 | |||
108 | void FloaterGridManager::refreshGrids() | 142 | void FloaterGridManager::refreshGrids() |
109 | { | 143 | { |
110 | const std::string &defaultGrid = gHippoGridManager->getDefaultGridNick(); | ||
111 | LLScrollListCtrl *grids = FloaterGridManager::getInstance()->getChild<LLScrollListCtrl>("grid_selector"); | 144 | LLScrollListCtrl *grids = FloaterGridManager::getInstance()->getChild<LLScrollListCtrl>("grid_selector"); |
112 | grids->deleteAllItems(); | 145 | std::string lastSelectedItem; |
146 | LLSD element; | ||
113 | 147 | ||
114 | S32 selectIndex = -1; | 148 | if (grids->getFirstSelected()) |
115 | S32 i = 0; | ||
116 | if (defaultGrid != "") | ||
117 | { | 149 | { |
118 | LLSD value; | 150 | lastSelectedItem = grids->getFirstSelected()->getValue().asString(); |
119 | value["id"] = defaultGrid; | ||
120 | value["columns"][0]["column"] = "grid"; | ||
121 | value["columns"][0]["value"] = defaultGrid; | ||
122 | grids->addElement(value); | ||
123 | selectIndex = i++; | ||
124 | } | 151 | } |
125 | 152 | ||
126 | HippoGridManager::GridIterator it = gHippoGridManager->beginGrid(); | 153 | grids->deleteAllItems(); |
127 | HippoGridManager::GridIterator end = gHippoGridManager->endGrid(); | 154 | |
128 | for (it; it != end; ++it) | 155 | for (HippoGridManager::GridIterator it = gHippoGridManager->beginGrid(); it != gHippoGridManager->endGrid(); ++it) |
129 | { | 156 | { |
130 | const std::string &grid = it->second->getGridNick(); | 157 | std::string grid_nick = it->second->getGridNick(); |
131 | if (grid != defaultGrid) | 158 | // There's no reason why empty grids nicks should be in this list, ugh |
159 | if (!grid_nick.empty() && grid_nick != gHippoGridManager->getCurrentGridNick()) | ||
132 | { | 160 | { |
133 | LLSD value; | 161 | element["id"] = grid_nick; |
134 | value["id"] = grid; | 162 | element["columns"][0]["column"] = "grid"; |
135 | value["columns"][0]["column"] = "grid"; | 163 | element["columns"][0]["type"] = "text"; |
136 | value["columns"][0]["value"] = grid; | 164 | element["columns"][0]["value"] = grid_nick; |
137 | grids->addElement(value); | 165 | grids->addElement(element, ADD_BOTTOM); |
138 | |||
139 | if (grid == FloaterGridManager::getInstance()->getCurGrid()) | ||
140 | { | ||
141 | selectIndex = i; | ||
142 | } | ||
143 | i++; | ||
144 | } | 166 | } |
145 | } | 167 | } |
146 | 168 | ||
169 | // Setting the default needs to be rethought. | ||
170 | // Right now, we just use the last-selected grid, | ||
171 | // but leaving this as the current behavior for now | ||
172 | if (!gHippoGridManager->getCurrentGridNick().empty()) | ||
173 | { | ||
174 | element["id"] = gHippoGridManager->getCurrentGridNick(); | ||
175 | element["columns"][0]["column"] = "grid"; | ||
176 | element["columns"][0]["type"] = "text"; | ||
177 | element["columns"][0]["font-style"] = "BOLD"; | ||
178 | element["columns"][0]["value"] = gHippoGridManager->getCurrentGridNick(); | ||
179 | grids->addElement(element, ADD_TOP); | ||
180 | } | ||
181 | |||
182 | // Reselect the item if we had one selected | ||
183 | if (lastSelectedItem.empty()) | ||
184 | { | ||
185 | grids->selectItemByLabel(gHippoGridManager->getCurrentGridNick()); | ||
186 | } | ||
187 | else | ||
188 | { | ||
189 | grids->selectItemByLabel(lastSelectedItem); | ||
190 | } | ||
191 | |||
192 | // TODO: get rid of all this state junk | ||
147 | if ((FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)) | 193 | if ((FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)) |
148 | { | 194 | { |
149 | grids->addElement("<new>"); | 195 | grids->addElement("<new>", ADD_BOTTOM); |
150 | selectIndex = i++; | ||
151 | } | 196 | } |
152 | 197 | ||
153 | //if (selectIndex >= 0) | 198 | //if (selectIndex >= 0) |
@@ -161,9 +206,10 @@ void FloaterGridManager::refreshGrids() | |||
161 | 206 | ||
162 | // FloaterGridManager::getInstance()->childSetTextArg("default_grid", "[DEFAULT]", (defaultGrid != "")? defaultGrid: " "); | 207 | // FloaterGridManager::getInstance()->childSetTextArg("default_grid", "[DEFAULT]", (defaultGrid != "")? defaultGrid: " "); |
163 | 208 | ||
164 | FloaterGridManager::getInstance()->childSetEnabled("btn_delete", (selectIndex >= 0)); | 209 | FloaterGridManager::getInstance()->childSetEnabled("btn_delete", grids->getItemCount() > 0); |
165 | FloaterGridManager::getInstance()->childSetEnabled("btn_copy", (FloaterGridManager::getInstance()->getState() == NORMAL) && (selectIndex >= 0)); | 210 | |
166 | // FloaterGridManager::getInstance()->childSetEnabled("set_default", (FloaterGridManager::getInstance()->getState() == NORMAL) && (selectIndex > 0)); | 211 | FloaterGridManager::getInstance()->childSetEnabled("btn_copy", (FloaterGridManager::getInstance()->getState() == NORMAL) && (grids->getItemCount() > 0)); |
212 | // FloaterGridManager::getInstance()->childSetEnabled("set_default", (FloaterGridManager::getInstance()->getState() == NORMAL) && (grids->getItemCount() > 0)); | ||
167 | FloaterGridManager::getInstance()->childSetEnabled("gridnick", (FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)); | 213 | FloaterGridManager::getInstance()->childSetEnabled("gridnick", (FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)); |
168 | 214 | ||
169 | if (FloaterGridManager::getInstance()->getState() == NORMAL) | 215 | if (FloaterGridManager::getInstance()->getState() == NORMAL) |
@@ -309,15 +355,15 @@ bool FloaterGridManager::createNewGrid() | |||
309 | 355 | ||
310 | if (gridnick.empty()) | 356 | if (gridnick.empty()) |
311 | { | 357 | { |
312 | //KOW gViewerWindow->alertXml("GridsNoNick"); | 358 | LLNotifications::instance().add("GridsNoNick"); |
313 | return false; | 359 | return false; |
314 | } | 360 | } |
315 | 361 | ||
316 | if (gHippoGridManager->getGrid(gridnick)) | 362 | if (gHippoGridManager->getGrid(gridnick)) |
317 | { | 363 | { |
318 | //LLStringUtil::format_map_t args; | 364 | LLSD args; |
319 | //args["[NAME]"] = gridnick; | 365 | args["[NAME]"] = gridnick; |
320 | //KOW gViewerWindow->alertXml("GridExists", args); | 366 | LLNotifications::instance().add("GridExists", args); |
321 | return false; | 367 | return false; |
322 | } | 368 | } |
323 | 369 | ||
@@ -325,9 +371,9 @@ bool FloaterGridManager::createNewGrid() | |||
325 | std::string loginuri = childGetValue("loginuri"); | 371 | std::string loginuri = childGetValue("loginuri"); |
326 | if ((loginuri.empty()) || (loginuri == "<required>")) | 372 | if ((loginuri.empty()) || (loginuri == "<required>")) |
327 | { | 373 | { |
328 | //LLStringUtil::format_map_t args; | 374 | LLSD args; |
329 | //args["[NAME]"] = gridnick; | 375 | args["[NAME]"] = gridnick; |
330 | //KOW gViewerWindow->alertXml("GridsNoLoginUri", args); | 376 | LLNotifications::instance().add("GridsNoLoginUri", args); |
331 | return false; | 377 | return false; |
332 | } | 378 | } |
333 | 379 | ||
@@ -365,7 +411,7 @@ void FloaterGridManager::retrieveGridInfo() | |||
365 | std::string loginuri = childGetValue("loginuri"); | 411 | std::string loginuri = childGetValue("loginuri"); |
366 | if ((loginuri == "") || (loginuri == "<required>")) | 412 | if ((loginuri == "") || (loginuri == "<required>")) |
367 | { | 413 | { |
368 | //KOW gViewerWindow->alertXml("GridInfoNoLoginUri"); | 414 | LLNotifications::instance().add("GridInfoNoLoginUri"); |
369 | return; | 415 | return; |
370 | } | 416 | } |
371 | 417 | ||
@@ -408,7 +454,7 @@ void FloaterGridManager::retrieveGridInfo() | |||
408 | } | 454 | } |
409 | else | 455 | else |
410 | { | 456 | { |
411 | //KOW gViewerWindow->alertXml("GridInfoError"); | 457 | LLNotifications::instance().add("GridInfoError"); |
412 | } | 458 | } |
413 | 459 | ||
414 | if (cleanupGrid) delete grid; | 460 | if (cleanupGrid) delete grid; |
@@ -533,8 +579,7 @@ void FloaterGridManager::onClickApply(void* data) | |||
533 | // static | 579 | // static |
534 | void FloaterGridManager::onClickClear(void* data) | 580 | void FloaterGridManager::onClickClear(void* data) |
535 | { | 581 | { |
536 | gHippoGridManager->discardAndReload(); | 582 | FloaterGridManager::getInstance()->clearInfo(); |
537 | FloaterGridManager::getInstance()->update(); | ||
538 | } | 583 | } |
539 | 584 | ||
540 | //static | 585 | //static |
@@ -595,38 +640,6 @@ void FloaterGridManager::onClickCancel(void* data) | |||
595 | //FloaterGridManager::getInstance()->childSetVisible("server_combo", TRUE); | 640 | //FloaterGridManager::getInstance()->childSetVisible("server_combo", TRUE); |
596 | //} | 641 | //} |
597 | 642 | ||
598 | //void FloaterGridManager::newShow(const std::string &grid, bool initialLogin) | ||
599 | //{ | ||
600 | // llinfos << "newShow called" << llendl; | ||
601 | // /*if (!FloaterGridManager::getInstance()) | ||
602 | // { | ||
603 | // FloaterGridManager::sGrid = grid; | ||
604 | // FloaterGridManager::sIsInitialLogin = initialLogin; | ||
605 | // FloaterGridManager::getInstance() = new FloaterGridManager(); | ||
606 | // | ||
607 | // llinfos << "FloaterGridManager::getInstance() assigned. FloaterGridManager::getInstance()=" << FloaterGridManager::getInstance() << llendl; | ||
608 | // }*/ | ||
609 | // | ||
610 | // llinfos << "newshow called" << llendl; | ||
611 | // FloaterGridManager::getInstance()->setCurGrid(gHippoGridManager->getCurrentGridNick()); | ||
612 | // refreshGrids(); | ||
613 | // | ||
614 | // FloaterGridManager::getInstance()->open(); | ||
615 | // // we're important | ||
616 | // //FloaterGridManager::getInstance()->setFrontmost(TRUE); | ||
617 | // //FloaterGridManager::getInstance()->setFocus(TRUE); | ||
618 | // | ||
619 | //} | ||
620 | |||
621 | //void FloaterGridManager::show(const LLRect &rect, BOOL show_server, | ||
622 | // void (*callback)(S32 option, void* user_data), | ||
623 | // void* callback_data) | ||
624 | //{ | ||
625 | // // we don't need a grid passed in because this is old-style login | ||
626 | // std::string grid = ""; | ||
627 | // newShow(grid, TRUE); | ||
628 | //} | ||
629 | |||
630 | //void FloaterGridManager::setFocus(BOOL b) | 643 | //void FloaterGridManager::setFocus(BOOL b) |
631 | //{ | 644 | //{ |
632 | // if(b != hasFocus()) | 645 | // if(b != hasFocus()) |
diff --git a/linden/indra/newview/floatergridmanager.h b/linden/indra/newview/floatergridmanager.h index 16720bd..55517f5 100644 --- a/linden/indra/newview/floatergridmanager.h +++ b/linden/indra/newview/floatergridmanager.h | |||
@@ -30,6 +30,12 @@ public: | |||
30 | //void setDefault(); | 30 | //void setDefault(); |
31 | void cancel(); | 31 | void cancel(); |
32 | 32 | ||
33 | void clearInfo(); | ||
34 | |||
35 | virtual void draw(); | ||
36 | |||
37 | void refresh(); | ||
38 | |||
33 | // new-style login methods | 39 | // new-style login methods |
34 | virtual std::string& getPassword(); | 40 | virtual std::string& getPassword(); |
35 | virtual void setPassword(std::string &password); | 41 | virtual void setPassword(std::string &password); |
diff --git a/linden/indra/newview/hippoGridManager.cpp b/linden/indra/newview/hippoGridManager.cpp index e89e3ff..c9f2549 100644 --- a/linden/indra/newview/hippoGridManager.cpp +++ b/linden/indra/newview/hippoGridManager.cpp | |||
@@ -1,4 +1,4 @@ | |||
1 | 1 | // Ported to Imprudence from the Hippo OpenSim Viewer by Jacek Antonelli | |
2 | 2 | ||
3 | #include "llviewerprecompiledheaders.h" | 3 | #include "llviewerprecompiledheaders.h" |
4 | 4 | ||
@@ -173,11 +173,16 @@ void HippoGridInfo::setPlatform(const std::string &platform) | |||
173 | for (unsigned i=0; i<platform.size(); i++) | 173 | for (unsigned i=0; i<platform.size(); i++) |
174 | tmp[i] = tolower(tmp[i]); | 174 | tmp[i] = tolower(tmp[i]); |
175 | 175 | ||
176 | if (tmp == "opensim") { | 176 | if (tmp == "opensim") |
177 | { | ||
177 | setPlatform(PLATFORM_OPENSIM); | 178 | setPlatform(PLATFORM_OPENSIM); |
178 | } else if (tmp == "secondlife") { | 179 | } |
180 | else if (tmp == "secondlife") | ||
181 | { | ||
179 | setPlatform(PLATFORM_SECONDLIFE); | 182 | setPlatform(PLATFORM_SECONDLIFE); |
180 | } else { | 183 | } |
184 | else | ||
185 | { | ||
181 | setPlatform(PLATFORM_OTHER); | 186 | setPlatform(PLATFORM_OTHER); |
182 | llwarns << "Unknown platform '" << platform << "'." << llendl; | 187 | llwarns << "Unknown platform '" << platform << "'." << llendl; |
183 | } | 188 | } |
@@ -278,13 +283,20 @@ std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const | |||
278 | if (mPlatform == PLATFORM_SECONDLIFE) | 283 | if (mPlatform == PLATFORM_SECONDLIFE) |
279 | { | 284 | { |
280 | // Second Life defaults | 285 | // Second Life defaults |
281 | if (ty == SEARCH_ALL_EMPTY) { | 286 | if (ty == SEARCH_ALL_EMPTY) |
287 | { | ||
282 | return gSavedSettings.getString("SearchURLDefault"); | 288 | return gSavedSettings.getString("SearchURLDefault"); |
283 | } else if (ty == SEARCH_ALL_QUERY) { | 289 | } |
290 | else if (ty == SEARCH_ALL_QUERY) | ||
291 | { | ||
284 | return gSavedSettings.getString("SearchURLQuery"); | 292 | return gSavedSettings.getString("SearchURLQuery"); |
285 | } else if (ty == SEARCH_ALL_TEMPLATE) { | 293 | } |
294 | else if (ty == SEARCH_ALL_TEMPLATE) | ||
295 | { | ||
286 | return gSavedSettings.getString("SearchURLSuffix2"); | 296 | return gSavedSettings.getString("SearchURLSuffix2"); |
287 | } else { | 297 | } |
298 | else | ||
299 | { | ||
288 | llinfos << "Illegal search URL type " << ty << llendl; | 300 | llinfos << "Illegal search URL type " << ty << llendl; |
289 | return ""; | 301 | return ""; |
290 | } | 302 | } |
@@ -292,13 +304,20 @@ std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const | |||
292 | else | 304 | else |
293 | { | 305 | { |
294 | // OpenSim and other web search defaults | 306 | // OpenSim and other web search defaults |
295 | if (ty == SEARCH_ALL_EMPTY) { | 307 | if (ty == SEARCH_ALL_EMPTY) |
308 | { | ||
296 | return gSavedSettings.getString("SearchURLDefaultOpenSim"); | 309 | return gSavedSettings.getString("SearchURLDefaultOpenSim"); |
297 | } else if (ty == SEARCH_ALL_QUERY) { | 310 | } |
311 | else if (ty == SEARCH_ALL_QUERY) | ||
312 | { | ||
298 | return gSavedSettings.getString("SearchURLQueryOpenSim"); | 313 | return gSavedSettings.getString("SearchURLQueryOpenSim"); |
299 | } else if (ty == SEARCH_ALL_TEMPLATE) { | 314 | } |
315 | else if (ty == SEARCH_ALL_TEMPLATE) | ||
316 | { | ||
300 | return gSavedSettings.getString("SearchURLSuffixOpenSim"); | 317 | return gSavedSettings.getString("SearchURLSuffixOpenSim"); |
301 | } else { | 318 | } |
319 | else | ||
320 | { | ||
302 | llinfos << "Illegal search URL type " << ty << llendl; | 321 | llinfos << "Illegal search URL type " << ty << llendl; |
303 | return ""; | 322 | return ""; |
304 | } | 323 | } |
@@ -307,13 +326,20 @@ std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const | |||
307 | else | 326 | else |
308 | { | 327 | { |
309 | // Use the old search all | 328 | // Use the old search all |
310 | if (ty == SEARCH_ALL_EMPTY) { | 329 | if (ty == SEARCH_ALL_EMPTY) |
330 | { | ||
311 | return (mSearchUrl + "panel=All&"); | 331 | return (mSearchUrl + "panel=All&"); |
312 | } else if (ty == SEARCH_ALL_QUERY) { | 332 | } |
333 | else if (ty == SEARCH_ALL_QUERY) | ||
334 | { | ||
313 | return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"); | 335 | return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"); |
314 | } else if (ty == SEARCH_ALL_TEMPLATE) { | 336 | } |
337 | else if (ty == SEARCH_ALL_TEMPLATE) | ||
338 | { | ||
315 | return "lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]"; | 339 | return "lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]"; |
316 | } else { | 340 | } |
341 | else | ||
342 | { | ||
317 | llinfos << "Illegal search URL type " << ty << llendl; | 343 | llinfos << "Illegal search URL type " << ty << llendl; |
318 | return ""; | 344 | return ""; |
319 | } | 345 | } |
@@ -360,33 +386,38 @@ void HippoGridInfo::onXmlElementEnd(void *userData, const XML_Char *name) | |||
360 | void HippoGridInfo::onXmlCharacterData(void *userData, const XML_Char *s, int len) | 386 | void HippoGridInfo::onXmlCharacterData(void *userData, const XML_Char *s, int len) |
361 | { | 387 | { |
362 | HippoGridInfo *self = (HippoGridInfo*)userData; | 388 | HippoGridInfo *self = (HippoGridInfo*)userData; |
363 | switch (self->mXmlState) { | 389 | switch (self->mXmlState) |
364 | 390 | { | |
365 | case XML_GRIDNICK: { | 391 | case XML_GRIDNICK: |
392 | { | ||
366 | if (self->mGridNick == "") self->mGridNick.assign(s, len); | 393 | if (self->mGridNick == "") self->mGridNick.assign(s, len); |
367 | self->mGridNick = sanitizeGridNick(self->mGridNick); | 394 | self->mGridNick = sanitizeGridNick(self->mGridNick); |
368 | break; | 395 | break; |
369 | } | 396 | } |
370 | 397 | ||
371 | case XML_PLATFORM: { | 398 | case XML_PLATFORM: |
399 | { | ||
372 | std::string platform(s, len); | 400 | std::string platform(s, len); |
373 | self->setPlatform(platform); | 401 | self->setPlatform(platform); |
374 | break; | 402 | break; |
375 | } | 403 | } |
376 | 404 | ||
377 | case XML_LOGINURI: { | 405 | case XML_LOGINURI: |
406 | { | ||
378 | std::string loginuri(s, len); | 407 | std::string loginuri(s, len); |
379 | self->mLoginUri = sanitizeUri( loginuri ); | 408 | self->mLoginUri = sanitizeUri( loginuri ); |
380 | break; | 409 | break; |
381 | } | 410 | } |
382 | 411 | ||
383 | case XML_HELPERURI: { | 412 | case XML_HELPERURI: |
413 | { | ||
384 | std::string helperuri(s, len); | 414 | std::string helperuri(s, len); |
385 | self->mHelperUri = sanitizeUri( helperuri ); | 415 | self->mHelperUri = sanitizeUri( helperuri ); |
386 | break; | 416 | break; |
387 | } | 417 | } |
388 | 418 | ||
389 | case XML_SEARCH: { | 419 | case XML_SEARCH: |
420 | { | ||
390 | //self->mSearchUrl.assign(s, len); | 421 | //self->mSearchUrl.assign(s, len); |
391 | //sanitizeQueryUrl(mSearchUrl); | 422 | //sanitizeQueryUrl(mSearchUrl); |
392 | break; | 423 | break; |
@@ -426,7 +457,8 @@ bool HippoGridInfo::retrieveGridInfo() | |||
426 | XML_SetElementHandler(parser, onXmlElementStart, onXmlElementEnd); | 457 | XML_SetElementHandler(parser, onXmlElementStart, onXmlElementEnd); |
427 | XML_SetCharacterDataHandler(parser, onXmlCharacterData); | 458 | XML_SetCharacterDataHandler(parser, onXmlCharacterData); |
428 | mXmlState = XML_VOID; | 459 | mXmlState = XML_VOID; |
429 | if (!XML_Parse(parser, reply.data(), reply.size(), TRUE)) { | 460 | if (!XML_Parse(parser, reply.data(), reply.size(), TRUE)) |
461 | { | ||
430 | llwarns << "XML Parse Error: " << XML_ErrorString(XML_GetErrorCode(parser)) << llendl; | 462 | llwarns << "XML Parse Error: " << XML_ErrorString(XML_GetErrorCode(parser)) << llendl; |
431 | success = false; | 463 | success = false; |
432 | } | 464 | } |
@@ -477,7 +509,8 @@ void HippoGridInfo::formatFee(std::string &fee, int cost, bool showFree) const | |||
477 | // static | 509 | // static |
478 | const char *HippoGridInfo::getPlatformString(Platform platform) | 510 | const char *HippoGridInfo::getPlatformString(Platform platform) |
479 | { | 511 | { |
480 | static const char *platformStrings[PLATFORM_LAST] = { | 512 | static const char *platformStrings[PLATFORM_LAST] = |
513 | { | ||
481 | "Other", "OpenSim", "SecondLife" | 514 | "Other", "OpenSim", "SecondLife" |
482 | }; | 515 | }; |
483 | 516 | ||
@@ -492,11 +525,15 @@ std::string HippoGridInfo::sanitizeGridNick(std::string &gridnick) | |||
492 | { | 525 | { |
493 | std::string tmp; | 526 | std::string tmp; |
494 | int size = gridnick.size(); | 527 | int size = gridnick.size(); |
495 | for (int i=0; i<size; i++) { | 528 | for (int i=0; i<size; i++) |
529 | { | ||
496 | char c = gridnick[i]; | 530 | char c = gridnick[i]; |
497 | if ((c == '_') || isalnum(c)) { | 531 | if ((c == '_') || isalnum(c)) |
532 | { | ||
498 | tmp += tolower(c); | 533 | tmp += tolower(c); |
499 | } else if (isspace(c)) { | 534 | } |
535 | else if (isspace(c)) | ||
536 | { | ||
500 | tmp += "_"; | 537 | tmp += "_"; |
501 | } | 538 | } |
502 | } | 539 | } |
@@ -543,7 +580,9 @@ void HippoGridInfo::initFallback() | |||
543 | 580 | ||
544 | HippoGridManager::HippoGridManager() : | 581 | HippoGridManager::HippoGridManager() : |
545 | mConnectedGrid(0), | 582 | mConnectedGrid(0), |
546 | mDefaultGridsVersion(0) | 583 | mDefaultGridsVersion(0), |
584 | mCurrentGrid("osgrid"), | ||
585 | mDefaultGrid("osgrid") | ||
547 | { | 586 | { |
548 | } | 587 | } |
549 | 588 | ||
@@ -556,7 +595,8 @@ HippoGridManager::~HippoGridManager() | |||
556 | void HippoGridManager::cleanup() | 595 | void HippoGridManager::cleanup() |
557 | { | 596 | { |
558 | std::map<std::string, HippoGridInfo*>::iterator it, end = mGridInfo.end(); | 597 | std::map<std::string, HippoGridInfo*>::iterator it, end = mGridInfo.end(); |
559 | for (it=mGridInfo.begin(); it != end; ++it) { | 598 | for (it=mGridInfo.begin(); it != end; ++it) |
599 | { | ||
560 | delete it->second; | 600 | delete it->second; |
561 | } | 601 | } |
562 | mGridInfo.clear(); | 602 | mGridInfo.clear(); |
@@ -589,9 +629,12 @@ HippoGridInfo* HippoGridManager::getGrid(const std::string &grid) const | |||
589 | { | 629 | { |
590 | std::map<std::string, HippoGridInfo*>::const_iterator it; | 630 | std::map<std::string, HippoGridInfo*>::const_iterator it; |
591 | it = mGridInfo.find(grid); | 631 | it = mGridInfo.find(grid); |
592 | if (it != mGridInfo.end()) { | 632 | if (it != mGridInfo.end()) |
633 | { | ||
593 | return it->second; | 634 | return it->second; |
594 | } else { | 635 | } |
636 | else | ||
637 | { | ||
595 | return 0; | 638 | return 0; |
596 | } | 639 | } |
597 | } | 640 | } |
@@ -606,9 +649,12 @@ HippoGridInfo* HippoGridManager::getConnectedGrid() const | |||
606 | HippoGridInfo* HippoGridManager::getCurrentGrid() const | 649 | HippoGridInfo* HippoGridManager::getCurrentGrid() const |
607 | { | 650 | { |
608 | HippoGridInfo *grid = getGrid(mCurrentGrid); | 651 | HippoGridInfo *grid = getGrid(mCurrentGrid); |
609 | if (grid) { | 652 | if (grid) |
653 | { | ||
610 | return grid; | 654 | return grid; |
611 | } else { | 655 | } |
656 | else | ||
657 | { | ||
612 | return &HippoGridInfo::FALLBACK_GRIDINFO; | 658 | return &HippoGridInfo::FALLBACK_GRIDINFO; |
613 | } | 659 | } |
614 | } | 660 | } |
@@ -620,6 +666,10 @@ const std::string& HippoGridManager::getDefaultGridNick() const | |||
620 | 666 | ||
621 | const std::string& HippoGridManager::getCurrentGridNick() const | 667 | const std::string& HippoGridManager::getCurrentGridNick() const |
622 | { | 668 | { |
669 | if (mCurrentGrid.empty()) | ||
670 | { | ||
671 | return mDefaultGrid; | ||
672 | } | ||
623 | return mCurrentGrid; | 673 | return mCurrentGrid; |
624 | } | 674 | } |
625 | 675 | ||
@@ -633,12 +683,14 @@ void HippoGridManager::addGrid(HippoGridInfo *grid) | |||
633 | { | 683 | { |
634 | if (!grid) return; | 684 | if (!grid) return; |
635 | const std::string &nick = grid->getGridNick(); | 685 | const std::string &nick = grid->getGridNick(); |
636 | if (nick == "") { | 686 | if (nick == "") |
687 | { | ||
637 | llwarns << "Ignoring to try adding grid with empty nick." << llendl; | 688 | llwarns << "Ignoring to try adding grid with empty nick." << llendl; |
638 | delete grid; | 689 | delete grid; |
639 | return; | 690 | return; |
640 | } | 691 | } |
641 | if (mGridInfo.find(nick) != mGridInfo.end()) { | 692 | if (mGridInfo.find(nick) != mGridInfo.end()) |
693 | { | ||
642 | llwarns << "Ignoring to try adding existing grid " << nick << '.' << llendl; | 694 | llwarns << "Ignoring to try adding existing grid " << nick << '.' << llendl; |
643 | delete grid; | 695 | delete grid; |
644 | return; | 696 | return; |
@@ -667,13 +719,20 @@ void HippoGridManager::deleteGrid(const std::string &grid) | |||
667 | void HippoGridManager::setDefaultGrid(const std::string &grid) | 719 | void HippoGridManager::setDefaultGrid(const std::string &grid) |
668 | { | 720 | { |
669 | GridIterator it = mGridInfo.find(grid); | 721 | GridIterator it = mGridInfo.find(grid); |
670 | if (it != mGridInfo.end()) { | 722 | if (it != mGridInfo.end()) |
723 | { | ||
671 | mDefaultGrid = grid; | 724 | mDefaultGrid = grid; |
672 | } else if (mGridInfo.find("secondlife") != mGridInfo.end()) { | 725 | } |
726 | else if (mGridInfo.find("secondlife") != mGridInfo.end()) | ||
727 | { | ||
673 | mDefaultGrid = "secondlife"; | 728 | mDefaultGrid = "secondlife"; |
674 | } else if (!mGridInfo.empty()) { | 729 | } |
730 | else if (!mGridInfo.empty()) | ||
731 | { | ||
675 | mDefaultGrid = mGridInfo.begin()->first; | 732 | mDefaultGrid = mGridInfo.begin()->first; |
676 | } else { | 733 | } |
734 | else | ||
735 | { | ||
677 | mDefaultGrid = ""; | 736 | mDefaultGrid = ""; |
678 | } | 737 | } |
679 | } | 738 | } |
@@ -682,9 +741,12 @@ void HippoGridManager::setDefaultGrid(const std::string &grid) | |||
682 | void HippoGridManager::setCurrentGrid(const std::string &grid) | 741 | void HippoGridManager::setCurrentGrid(const std::string &grid) |
683 | { | 742 | { |
684 | GridIterator it = mGridInfo.find(grid); | 743 | GridIterator it = mGridInfo.find(grid); |
685 | if (it != mGridInfo.end()) { | 744 | if (it != mGridInfo.end()) |
745 | { | ||
686 | mCurrentGrid = grid; | 746 | mCurrentGrid = grid; |
687 | } else if (!mGridInfo.empty()) { | 747 | } |
748 | else if (!mGridInfo.empty()) | ||
749 | { | ||
688 | llwarns << "Unknown grid '" << grid << "'. Setting to default grid." << llendl; | 750 | llwarns << "Unknown grid '" << grid << "'. Setting to default grid." << llendl; |
689 | mCurrentGrid = mDefaultGrid; | 751 | mCurrentGrid = mDefaultGrid; |
690 | } | 752 | } |
@@ -722,7 +784,8 @@ void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer) | |||
722 | 784 | ||
723 | // check response, return on error | 785 | // check response, return on error |
724 | S32 status = response["status"].asInteger(); | 786 | S32 status = response["status"].asInteger(); |
725 | if ((status != 200) || !response["body"].isArray()) { | 787 | if ((status != 200) || !response["body"].isArray()) |
788 | { | ||
726 | llinfos << "GridInfo Update failed (" << status << "): " | 789 | llinfos << "GridInfo Update failed (" << status << "): " |
727 | << (response["body"].isString()? response["body"].asString(): "<unknown error>") | 790 | << (response["body"].isString()? response["body"].asString(): "<unknown error>") |
728 | << llendl; | 791 | << llendl; |
@@ -737,13 +800,15 @@ void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer) | |||
737 | { | 800 | { |
738 | llifstream infile; | 801 | llifstream infile; |
739 | infile.open(fileName.c_str()); | 802 | infile.open(fileName.c_str()); |
740 | if(!infile.is_open()) { | 803 | if (!infile.is_open()) |
804 | { | ||
741 | llwarns << "Cannot find grid info file " << fileName << " to load." << llendl; | 805 | llwarns << "Cannot find grid info file " << fileName << " to load." << llendl; |
742 | return; | 806 | return; |
743 | } | 807 | } |
744 | 808 | ||
745 | LLSD gridInfo; | 809 | LLSD gridInfo; |
746 | if (LLSDSerialize::fromXML(gridInfo, infile) <= 0) { | 810 | if (LLSDSerialize::fromXML(gridInfo, infile) <= 0) |
811 | { | ||
747 | llwarns << "Unable to parse grid info file " << fileName << '.' << llendl; | 812 | llwarns << "Unable to parse grid info file " << fileName << '.' << llendl; |
748 | return; | 813 | return; |
749 | } | 814 | } |
@@ -755,17 +820,21 @@ void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer) | |||
755 | 820 | ||
756 | void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) | 821 | void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) |
757 | { | 822 | { |
758 | if (mergeIfNewer) { | 823 | if (mergeIfNewer) |
824 | { | ||
759 | LLSD::array_const_iterator it, end = gridInfo.endArray(); | 825 | LLSD::array_const_iterator it, end = gridInfo.endArray(); |
760 | for (it = gridInfo.beginArray(); it != end; ++it) { | 826 | for (it = gridInfo.beginArray(); it != end; ++it) |
827 | { | ||
761 | LLSD gridMap = *it; | 828 | LLSD gridMap = *it; |
762 | if (gridMap.has("default_grids_version")) { | 829 | if (gridMap.has("default_grids_version")) |
830 | { | ||
763 | int version = gridMap["default_grids_version"]; | 831 | int version = gridMap["default_grids_version"]; |
764 | if (version <= mDefaultGridsVersion) return; | 832 | if (version <= mDefaultGridsVersion) return; |
765 | else break; | 833 | else break; |
766 | } | 834 | } |
767 | } | 835 | } |
768 | if (it == end) { | 836 | if (it == end) |
837 | { | ||
769 | llwarns << "Grid data has no version number." << llendl; | 838 | llwarns << "Grid data has no version number." << llendl; |
770 | return; | 839 | return; |
771 | } | 840 | } |
@@ -774,19 +843,26 @@ void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) | |||
774 | llinfos << "Loading grid data." << llendl; | 843 | llinfos << "Loading grid data." << llendl; |
775 | 844 | ||
776 | LLSD::array_const_iterator it, end = gridInfo.endArray(); | 845 | LLSD::array_const_iterator it, end = gridInfo.endArray(); |
777 | for (it = gridInfo.beginArray(); it != end; ++it) { | 846 | for (it = gridInfo.beginArray(); it != end; ++it) |
847 | { | ||
778 | LLSD gridMap = *it; | 848 | LLSD gridMap = *it; |
779 | if (gridMap.has("default_grids_version")) { | 849 | if (gridMap.has("default_grids_version")) |
850 | { | ||
780 | mDefaultGridsVersion = gridMap["default_grids_version"]; | 851 | mDefaultGridsVersion = gridMap["default_grids_version"]; |
781 | } else if (gridMap.has("gridnick") && gridMap.has("loginuri")) { | 852 | } |
853 | else if (gridMap.has("gridnick") && gridMap.has("loginuri")) | ||
854 | { | ||
782 | std::string gridnick = gridMap["gridnick"]; | 855 | std::string gridnick = gridMap["gridnick"]; |
783 | HippoGridInfo *grid; | 856 | HippoGridInfo *grid; |
784 | GridIterator it = mGridInfo.find(gridnick); | 857 | GridIterator it = mGridInfo.find(gridnick); |
785 | bool newGrid = (it == mGridInfo.end()); | 858 | bool newGrid = (it == mGridInfo.end()); |
786 | if (newGrid) { | 859 | if (newGrid) |
860 | { | ||
787 | // create new grid info | 861 | // create new grid info |
788 | grid = new HippoGridInfo(gridnick); | 862 | grid = new HippoGridInfo(gridnick); |
789 | } else { | 863 | } |
864 | else | ||
865 | { | ||
790 | // update existing grid info | 866 | // update existing grid info |
791 | grid = it->second; | 867 | grid = it->second; |
792 | } | 868 | } |
@@ -822,7 +898,8 @@ void HippoGridManager::saveFile() | |||
822 | // add grids | 898 | // add grids |
823 | S32 i = 1; | 899 | S32 i = 1; |
824 | GridIterator it, end = mGridInfo.end(); | 900 | GridIterator it, end = mGridInfo.end(); |
825 | for (it = mGridInfo.begin(); it != end; ++it, i++) { | 901 | for (it = mGridInfo.begin(); it != end; ++it, i++) |
902 | { | ||
826 | HippoGridInfo *grid = it->second; | 903 | HippoGridInfo *grid = it->second; |
827 | gridInfo[i]["gridnick"] = grid->getGridNick(); | 904 | gridInfo[i]["gridnick"] = grid->getGridNick(); |
828 | gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform()); | 905 | gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform()); |
@@ -846,11 +923,14 @@ void HippoGridManager::saveFile() | |||
846 | std::string fileName = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grid_info.xml"); | 923 | std::string fileName = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grid_info.xml"); |
847 | llofstream file; | 924 | llofstream file; |
848 | file.open(fileName.c_str()); | 925 | file.open(fileName.c_str()); |
849 | if (file.is_open()) { | 926 | if (file.is_open()) |
927 | { | ||
850 | LLSDSerialize::toPrettyXML(gridInfo, file); | 928 | LLSDSerialize::toPrettyXML(gridInfo, file); |
851 | file.close(); | 929 | file.close(); |
852 | llinfos << "Saved grids to " << fileName << llendl; | 930 | llinfos << "Saved grids to " << fileName << llendl; |
853 | } else { | 931 | } |
932 | else | ||
933 | { | ||
854 | llerrs << "Unable to open grid info file: " << fileName << llendl; | 934 | llerrs << "Unable to open grid info file: " << fileName << llendl; |
855 | } | 935 | } |
856 | } | 936 | } |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_grid_manager.xml b/linden/indra/newview/skins/default/xui/en-us/floater_grid_manager.xml index df7b2a0..8d3e101 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_grid_manager.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_grid_manager.xml | |||
@@ -14,10 +14,10 @@ | |||
14 | </text> | 14 | </text> |
15 | 15 | ||
16 | <scroll_list background_visible="true" bottom_delta="65" draw_border="true" | 16 | <scroll_list background_visible="true" bottom_delta="65" draw_border="true" |
17 | draw_stripes="true" | 17 | draw_stripes="false" sort_column="0" |
18 | follows="top|left|bottom" height="300" left="10" multi_select="false" | 18 | follows="top|left|bottom" height="300" left="10" multi_select="false" |
19 | name="grid_selector" width="170"> | 19 | name="grid_selector" width="170"> |
20 | <column label="" name="grid" width="200" /> | 20 | <column label="Grid List" name="grid" width="170" /> |
21 | </scroll_list> | 21 | </scroll_list> |
22 | 22 | ||
23 | <!-- Grid Selector Buttons --> | 23 | <!-- Grid Selector Buttons --> |
@@ -122,7 +122,7 @@ | |||
122 | halign="center" follows="left|top" scale_image="true" | 122 | halign="center" follows="left|top" scale_image="true" |
123 | font="SansSerifSmall" mouse_opaque="true" /> | 123 | font="SansSerifSmall" mouse_opaque="true" /> |
124 | <button bottom_delta="0" follows="left|top" font="SansSerifSmall" halign="center" | 124 | <button bottom_delta="0" follows="left|top" font="SansSerifSmall" halign="center" |
125 | height="18" label="Clear All" left_delta="104" | 125 | height="18" label="Clear Info" left_delta="104" |
126 | mouse_opaque="true" name="btn_clear" scale_image="true" width="100" /> | 126 | mouse_opaque="true" name="btn_clear" scale_image="true" width="100" /> |
127 | 127 | ||
128 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 128 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
@@ -247,13 +247,13 @@ | |||
247 | height="24" label="Connect" label_selected="Connect" | 247 | height="24" label="Connect" label_selected="Connect" |
248 | left="280" mouse_opaque="true" name="connect_btn" scale_image="TRUE" | 248 | left="280" mouse_opaque="true" name="connect_btn" scale_image="TRUE" |
249 | width="100" /> --> | 249 | width="100" /> --> |
250 | <button bottom="8" follows="right|bottom" font="SansSerif" halign="center" | 250 | <button bottom="2" follows="right|bottom" font="SansSerif" halign="center" |
251 | height="24" label="Apply" label_selected="Apply" left="-108" | 251 | height="24" label="Apply" label_selected="Apply" left="-108" |
252 | mouse_opaque="true" name="btn_apply" scale_image="TRUE" width="100" /> | 252 | mouse_opaque="true" name="btn_apply" scale_image="TRUE" width="100" /> |
253 | <button bottom="8" follows="right|bottom" font="SansSerif" halign="center" | 253 | <button bottom="2" follows="right|bottom" font="SansSerif" halign="center" |
254 | height="24" label="Cancel" label_selected="Cancel" left_delta="-104" | 254 | height="24" label="Cancel" label_selected="Cancel" left_delta="-104" |
255 | mouse_opaque="true" name="btn_cancel" scale_image="TRUE" width="100" /> | 255 | mouse_opaque="true" name="btn_cancel" scale_image="TRUE" width="100" /> |
256 | <button bottom="8" follows="right|bottom" font="SansSerif" halign="center" | 256 | <button bottom="2" follows="right|bottom" font="SansSerif" halign="center" |
257 | height="24" label="OK" label_selected="OK" left_delta="-104" | 257 | height="24" label="OK" label_selected="OK" left_delta="-104" |
258 | mouse_opaque="true" name="btn_ok" scale_image="TRUE" width="100" /> | 258 | mouse_opaque="true" name="btn_ok" scale_image="TRUE" width="100" /> |
259 | <!-- | 259 | <!-- |
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml index 5677073..57c401e 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml | |||
@@ -6864,6 +6864,47 @@ You have been disconnected from the region you were in. Unable to continue. | |||
6864 | </notification> | 6864 | </notification> |
6865 | 6865 | ||
6866 | <notification | 6866 | <notification |
6867 | icon="alertmodal.tga" | ||
6868 | name="GridsNoNick" | ||
6869 | type="alertmodal"> | ||
6870 | Cannot save new grid information. | ||
6871 | |||
6872 | You need to specify a unique grid nickname. | ||
6873 | </notification> | ||
6874 | |||
6875 | <notification | ||
6876 | icon="alertmodal.tga" | ||
6877 | name="GridsNoLoginUri" | ||
6878 | type="alertmodal"> | ||
6879 | Cannot save new grid '[NAME]'. | ||
6880 | |||
6881 | You need to specify a login URI. | ||
6882 | </notification> | ||
6883 | |||
6884 | <notification | ||
6885 | icon="alertmodal.tga" | ||
6886 | name="GridExists" | ||
6887 | type="alertmodal"> | ||
6888 | Cannot save new grid '[NAME]'. | ||
6889 | |||
6890 | A grid with the same nickname already exists. | ||
6891 | </notification> | ||
6892 | |||
6893 | <notification | ||
6894 | icon="alertmodal.tga" | ||
6895 | name="GridInfoNoLoginUri" | ||
6896 | type="alertmodal"> | ||
6897 | A login URI is required to retrieve the grid info. | ||
6898 | </notification> | ||
6899 | |||
6900 | <notification | ||
6901 | icon="alertmodal.tga" | ||
6902 | name="GridInfoError" | ||
6903 | type="alertmodal"> | ||
6904 | Cannot retrieve grid info from server. | ||
6905 | </notification> | ||
6906 | |||
6907 | <notification | ||
6867 | icon="alert.tga" | 6908 | icon="alert.tga" |
6868 | name="IMLogNotFound" | 6909 | name="IMLogNotFound" |
6869 | type="alert"> | 6910 | type="alert"> |