diff options
author | Jacek Antonelli | 2008-08-15 23:45:34 -0500 |
---|---|---|
committer | Jacek Antonelli | 2008-08-15 23:45:34 -0500 |
commit | cd17687f01420952712a500107e0f93e7ab8d5f8 (patch) | |
tree | ce48c2b706f2c1176290e39fb555fbdf6648ce01 /linden/indra/llui/llpanel.cpp | |
parent | Second Life viewer sources 1.19.0.5 (diff) | |
download | meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.zip meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.gz meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.bz2 meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.xz |
Second Life viewer sources 1.19.1.0
Diffstat (limited to 'linden/indra/llui/llpanel.cpp')
-rw-r--r-- | linden/indra/llui/llpanel.cpp | 231 |
1 files changed, 99 insertions, 132 deletions
diff --git a/linden/indra/llui/llpanel.cpp b/linden/indra/llui/llpanel.cpp index b72e104..9a3f1a2 100644 --- a/linden/indra/llui/llpanel.cpp +++ b/linden/indra/llui/llpanel.cpp | |||
@@ -60,10 +60,10 @@ | |||
60 | #include "llresizebar.h" | 60 | #include "llresizebar.h" |
61 | #include "llcriticaldamp.h" | 61 | #include "llcriticaldamp.h" |
62 | 62 | ||
63 | LLPanel::panel_map_t LLPanel::sPanelMap; | ||
64 | LLPanel::alert_queue_t LLPanel::sAlertQueue; | 63 | LLPanel::alert_queue_t LLPanel::sAlertQueue; |
65 | 64 | ||
66 | const S32 RESIZE_BAR_OVERLAP = 1; | 65 | const S32 RESIZE_BAR_OVERLAP = 1; |
66 | const S32 RESIZE_BAR_HEIGHT = 3; | ||
67 | 67 | ||
68 | void LLPanel::init() | 68 | void LLPanel::init() |
69 | { | 69 | { |
@@ -78,8 +78,7 @@ void LLPanel::init() | |||
78 | setIsChrome(FALSE); //is this a decorator to a live window or a form? | 78 | setIsChrome(FALSE); //is this a decorator to a live window or a form? |
79 | mLastTabGroup = 0; | 79 | mLastTabGroup = 0; |
80 | 80 | ||
81 | // add self to handle->panel map | 81 | mPanelHandle.bind(this); |
82 | sPanelMap[mViewHandle] = this; | ||
83 | setTabStop(FALSE); | 82 | setTabStop(FALSE); |
84 | } | 83 | } |
85 | 84 | ||
@@ -121,31 +120,11 @@ LLPanel::LLPanel(const LLString& name, const LLString& rect_control, BOOL border | |||
121 | } | 120 | } |
122 | } | 121 | } |
123 | 122 | ||
124 | void LLPanel::addBorder(LLViewBorder::EBevel border_bevel, | ||
125 | LLViewBorder::EStyle border_style, S32 border_thickness) | ||
126 | { | ||
127 | removeBorder(); | ||
128 | mBorder = new LLViewBorder( "panel border", | ||
129 | LLRect(0, mRect.getHeight(), mRect.getWidth(), 0), | ||
130 | border_bevel, border_style, border_thickness ); | ||
131 | mBorder->setSaveToXML(false); | ||
132 | addChild( mBorder ); | ||
133 | } | ||
134 | |||
135 | void LLPanel::removeBorder() | ||
136 | { | ||
137 | delete mBorder; | ||
138 | mBorder = NULL; | ||
139 | } | ||
140 | |||
141 | |||
142 | LLPanel::~LLPanel() | 123 | LLPanel::~LLPanel() |
143 | { | 124 | { |
144 | storeRectControl(); | 125 | storeRectControl(); |
145 | sPanelMap.erase(mViewHandle); | ||
146 | } | 126 | } |
147 | 127 | ||
148 | |||
149 | // virtual | 128 | // virtual |
150 | EWidgetType LLPanel::getWidgetType() const | 129 | EWidgetType LLPanel::getWidgetType() const |
151 | { | 130 | { |
@@ -159,7 +138,7 @@ LLString LLPanel::getWidgetTag() const | |||
159 | } | 138 | } |
160 | 139 | ||
161 | // virtual | 140 | // virtual |
162 | BOOL LLPanel::isPanel() | 141 | BOOL LLPanel::isPanel() const |
163 | { | 142 | { |
164 | return TRUE; | 143 | return TRUE; |
165 | } | 144 | } |
@@ -170,6 +149,24 @@ BOOL LLPanel::postBuild() | |||
170 | return TRUE; | 149 | return TRUE; |
171 | } | 150 | } |
172 | 151 | ||
152 | void LLPanel::addBorder(LLViewBorder::EBevel border_bevel, | ||
153 | LLViewBorder::EStyle border_style, S32 border_thickness) | ||
154 | { | ||
155 | removeBorder(); | ||
156 | mBorder = new LLViewBorder( "panel border", | ||
157 | LLRect(0, getRect().getHeight(), getRect().getWidth(), 0), | ||
158 | border_bevel, border_style, border_thickness ); | ||
159 | mBorder->setSaveToXML(false); | ||
160 | addChild( mBorder ); | ||
161 | } | ||
162 | |||
163 | void LLPanel::removeBorder() | ||
164 | { | ||
165 | delete mBorder; | ||
166 | mBorder = NULL; | ||
167 | } | ||
168 | |||
169 | |||
173 | // virtual | 170 | // virtual |
174 | void LLPanel::clearCtrls() | 171 | void LLPanel::clearCtrls() |
175 | { | 172 | { |
@@ -200,8 +197,8 @@ void LLPanel::draw() | |||
200 | { | 197 | { |
201 | //RN: I don't see the point of this | 198 | //RN: I don't see the point of this |
202 | S32 left = 0;//LLPANEL_BORDER_WIDTH; | 199 | S32 left = 0;//LLPANEL_BORDER_WIDTH; |
203 | S32 top = mRect.getHeight();// - LLPANEL_BORDER_WIDTH; | 200 | S32 top = getRect().getHeight();// - LLPANEL_BORDER_WIDTH; |
204 | S32 right = mRect.getWidth();// - LLPANEL_BORDER_WIDTH; | 201 | S32 right = getRect().getWidth();// - LLPANEL_BORDER_WIDTH; |
205 | S32 bottom = 0;//LLPANEL_BORDER_WIDTH; | 202 | S32 bottom = 0;//LLPANEL_BORDER_WIDTH; |
206 | 203 | ||
207 | if (mBgOpaque ) | 204 | if (mBgOpaque ) |
@@ -281,13 +278,13 @@ BOOL LLPanel::handleKey(KEY key, MASK mask, BOOL called_from_parent) | |||
281 | if( (mask == MASK_SHIFT) && (KEY_TAB == key)) | 278 | if( (mask == MASK_SHIFT) && (KEY_TAB == key)) |
282 | { | 279 | { |
283 | //SHIFT-TAB | 280 | //SHIFT-TAB |
284 | LLView* cur_focus = gFocusMgr.getKeyboardFocus(); | 281 | LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus(); |
285 | if (cur_focus && gFocusMgr.childHasKeyboardFocus(this)) | 282 | if (cur_focus && gFocusMgr.childHasKeyboardFocus(this)) |
286 | { | 283 | { |
287 | LLView* focus_root = cur_focus; | 284 | LLUICtrl* focus_root = cur_focus; |
288 | while(cur_focus->getParent()) | 285 | while(cur_focus->getParentUICtrl()) |
289 | { | 286 | { |
290 | cur_focus = cur_focus->getParent(); | 287 | cur_focus = cur_focus->getParentUICtrl(); |
291 | if (cur_focus->isFocusRoot()) | 288 | if (cur_focus->isFocusRoot()) |
292 | { | 289 | { |
293 | // this is the root-most focus root found so far | 290 | // this is the root-most focus root found so far |
@@ -296,7 +293,7 @@ BOOL LLPanel::handleKey(KEY key, MASK mask, BOOL called_from_parent) | |||
296 | } | 293 | } |
297 | handled = focus_root->focusPrevItem(FALSE); | 294 | handled = focus_root->focusPrevItem(FALSE); |
298 | } | 295 | } |
299 | else if (!cur_focus && mIsFocusRoot) | 296 | else if (!cur_focus && isFocusRoot()) |
300 | { | 297 | { |
301 | handled = focusLastItem(); | 298 | handled = focusLastItem(); |
302 | if (!handled) | 299 | if (!handled) |
@@ -310,13 +307,13 @@ BOOL LLPanel::handleKey(KEY key, MASK mask, BOOL called_from_parent) | |||
310 | if( (mask == MASK_NONE ) && (KEY_TAB == key)) | 307 | if( (mask == MASK_NONE ) && (KEY_TAB == key)) |
311 | { | 308 | { |
312 | //TAB | 309 | //TAB |
313 | LLView* cur_focus = gFocusMgr.getKeyboardFocus(); | 310 | LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus(); |
314 | if (cur_focus && gFocusMgr.childHasKeyboardFocus(this)) | 311 | if (cur_focus && gFocusMgr.childHasKeyboardFocus(this)) |
315 | { | 312 | { |
316 | LLView* focus_root = cur_focus; | 313 | LLUICtrl* focus_root = cur_focus; |
317 | while(cur_focus->getParent()) | 314 | while(cur_focus->getParentUICtrl()) |
318 | { | 315 | { |
319 | cur_focus = cur_focus->getParent(); | 316 | cur_focus = cur_focus->getParentUICtrl(); |
320 | if (cur_focus->isFocusRoot()) | 317 | if (cur_focus->isFocusRoot()) |
321 | { | 318 | { |
322 | focus_root = cur_focus; | 319 | focus_root = cur_focus; |
@@ -324,7 +321,7 @@ BOOL LLPanel::handleKey(KEY key, MASK mask, BOOL called_from_parent) | |||
324 | } | 321 | } |
325 | handled = focus_root->focusNextItem(FALSE); | 322 | handled = focus_root->focusNextItem(FALSE); |
326 | } | 323 | } |
327 | else if (!cur_focus && mIsFocusRoot) | 324 | else if (!cur_focus && isFocusRoot()) |
328 | { | 325 | { |
329 | handled = focusFirstItem(); | 326 | handled = focusFirstItem(); |
330 | if (!handled) | 327 | if (!handled) |
@@ -408,12 +405,12 @@ void LLPanel::requires(LLString name, EWidgetType type) | |||
408 | mRequirements[name] = type; | 405 | mRequirements[name] = type; |
409 | } | 406 | } |
410 | 407 | ||
411 | BOOL LLPanel::checkRequirements() | 408 | BOOL LLPanel::checkRequirements() const |
412 | { | 409 | { |
413 | BOOL retval = TRUE; | 410 | BOOL retval = TRUE; |
414 | LLString message; | 411 | LLString message; |
415 | 412 | ||
416 | for (requirements_map_t::iterator i = mRequirements.begin(); i != mRequirements.end(); ++i) | 413 | for (requirements_map_t::const_iterator i = mRequirements.begin(); i != mRequirements.end(); ++i) |
417 | { | 414 | { |
418 | if (!this->getCtrlByNameAndType(i->first, i->second)) | 415 | if (!this->getCtrlByNameAndType(i->first, i->second)) |
419 | { | 416 | { |
@@ -489,21 +486,6 @@ void LLPanel::setFocus(BOOL b) | |||
489 | } | 486 | } |
490 | } | 487 | } |
491 | 488 | ||
492 | void LLPanel::setBackgroundColor(const LLColor4& color) | ||
493 | { | ||
494 | mBgColorOpaque = color; | ||
495 | } | ||
496 | |||
497 | LLColor4 LLPanel::getBackgroundColor() | ||
498 | { | ||
499 | return mBgColorOpaque; | ||
500 | } | ||
501 | |||
502 | void LLPanel::setTransparentColor(const LLColor4& color) | ||
503 | { | ||
504 | mBgColorAlpha = color; | ||
505 | } | ||
506 | |||
507 | void LLPanel::setBorderVisible(BOOL b) | 489 | void LLPanel::setBorderVisible(BOOL b) |
508 | { | 490 | { |
509 | if (mBorder) | 491 | if (mBorder) |
@@ -512,18 +494,18 @@ void LLPanel::setBorderVisible(BOOL b) | |||
512 | } | 494 | } |
513 | } | 495 | } |
514 | 496 | ||
515 | LLView* LLPanel::getCtrlByNameAndType(const LLString& name, EWidgetType type) | 497 | LLUICtrl* LLPanel::getCtrlByNameAndType(const LLString& name, EWidgetType type) const |
516 | { | 498 | { |
517 | LLView* view = getChildByName(name, TRUE); | 499 | LLView* view = getChildByName(name, TRUE); |
518 | if (view) | 500 | if (view && view->isCtrl()) |
519 | { | 501 | { |
520 | if (type == WIDGET_TYPE_DONTCARE || view->getWidgetType() == type) | 502 | if (type == WIDGET_TYPE_DONTCARE || view->getWidgetType() == type) |
521 | { | 503 | { |
522 | return view; | 504 | return (LLUICtrl*)view; |
523 | } | 505 | } |
524 | else | 506 | else |
525 | { | 507 | { |
526 | llwarns << "Widget " << name << " has improper type in panel " << mName << "\n" | 508 | llwarns << "Widget " << name << " has improper type in panel " << getName() << "\n" |
527 | << "Is: \t\t" << view->getWidgetType() << "\n" | 509 | << "Is: \t\t" << view->getWidgetType() << "\n" |
528 | << "Should be: \t" << type | 510 | << "Should be: \t" << type |
529 | << llendl; | 511 | << llendl; |
@@ -536,17 +518,6 @@ LLView* LLPanel::getCtrlByNameAndType(const LLString& name, EWidgetType type) | |||
536 | return NULL; | 518 | return NULL; |
537 | } | 519 | } |
538 | 520 | ||
539 | // static | ||
540 | LLPanel* LLPanel::getPanelByHandle(LLViewHandle handle) | ||
541 | { | ||
542 | if (!sPanelMap.count(handle)) | ||
543 | { | ||
544 | return NULL; | ||
545 | } | ||
546 | |||
547 | return sPanelMap[handle]; | ||
548 | } | ||
549 | |||
550 | // virtual | 521 | // virtual |
551 | LLXMLNodePtr LLPanel::getXML(bool save_children) const | 522 | LLXMLNodePtr LLPanel::getXML(bool save_children) const |
552 | { | 523 | { |
@@ -734,7 +705,7 @@ void LLPanel::setPanelParameters(LLXMLNodePtr node, LLView* parent) | |||
734 | setLabel(label); | 705 | setLabel(label); |
735 | } | 706 | } |
736 | 707 | ||
737 | LLString LLPanel::getFormattedUIString(const LLString& name, const LLString::format_map_t& args) const | 708 | LLString LLPanel::getString(const LLString& name, const LLString::format_map_t& args) const |
738 | { | 709 | { |
739 | ui_string_map_t::const_iterator found_it = mUIStrings.find(name); | 710 | ui_string_map_t::const_iterator found_it = mUIStrings.find(name); |
740 | if (found_it != mUIStrings.end()) | 711 | if (found_it != mUIStrings.end()) |
@@ -744,6 +715,7 @@ LLString LLPanel::getFormattedUIString(const LLString& name, const LLString::for | |||
744 | formatted_string.setArgList(args); | 715 | formatted_string.setArgList(args); |
745 | return formatted_string.getString(); | 716 | return formatted_string.getString(); |
746 | } | 717 | } |
718 | llerrs << "Failed to find string " << name << " in panel " << getName() << llendl; | ||
747 | return LLString::null; | 719 | return LLString::null; |
748 | } | 720 | } |
749 | 721 | ||
@@ -754,13 +726,14 @@ LLUIString LLPanel::getUIString(const LLString& name) const | |||
754 | { | 726 | { |
755 | return found_it->second; | 727 | return found_it->second; |
756 | } | 728 | } |
729 | llerrs << "Failed to find string " << name << " in panel " << getName() << llendl; | ||
757 | return LLUIString(LLString::null); | 730 | return LLUIString(LLString::null); |
758 | } | 731 | } |
759 | 732 | ||
760 | 733 | ||
761 | void LLPanel::childSetVisible(const LLString& id, bool visible) | 734 | void LLPanel::childSetVisible(const LLString& id, bool visible) |
762 | { | 735 | { |
763 | LLView* child = getChildByName(id, true); | 736 | LLView* child = getChild<LLView>(id); |
764 | if (child) | 737 | if (child) |
765 | { | 738 | { |
766 | child->setVisible(visible); | 739 | child->setVisible(visible); |
@@ -769,7 +742,7 @@ void LLPanel::childSetVisible(const LLString& id, bool visible) | |||
769 | 742 | ||
770 | bool LLPanel::childIsVisible(const LLString& id) const | 743 | bool LLPanel::childIsVisible(const LLString& id) const |
771 | { | 744 | { |
772 | LLView* child = getChildByName(id, true); | 745 | LLView* child = getChild<LLView>(id); |
773 | if (child) | 746 | if (child) |
774 | { | 747 | { |
775 | return (bool)child->getVisible(); | 748 | return (bool)child->getVisible(); |
@@ -779,7 +752,7 @@ bool LLPanel::childIsVisible(const LLString& id) const | |||
779 | 752 | ||
780 | void LLPanel::childSetEnabled(const LLString& id, bool enabled) | 753 | void LLPanel::childSetEnabled(const LLString& id, bool enabled) |
781 | { | 754 | { |
782 | LLView* child = getChildByName(id, true); | 755 | LLView* child = getChild<LLView>(id); |
783 | if (child) | 756 | if (child) |
784 | { | 757 | { |
785 | child->setEnabled(enabled); | 758 | child->setEnabled(enabled); |
@@ -788,7 +761,7 @@ void LLPanel::childSetEnabled(const LLString& id, bool enabled) | |||
788 | 761 | ||
789 | void LLPanel::childSetTentative(const LLString& id, bool tentative) | 762 | void LLPanel::childSetTentative(const LLString& id, bool tentative) |
790 | { | 763 | { |
791 | LLView* child = getChildByName(id, true); | 764 | LLView* child = getChild<LLView>(id); |
792 | if (child) | 765 | if (child) |
793 | { | 766 | { |
794 | child->setTentative(tentative); | 767 | child->setTentative(tentative); |
@@ -797,7 +770,7 @@ void LLPanel::childSetTentative(const LLString& id, bool tentative) | |||
797 | 770 | ||
798 | bool LLPanel::childIsEnabled(const LLString& id) const | 771 | bool LLPanel::childIsEnabled(const LLString& id) const |
799 | { | 772 | { |
800 | LLView* child = getChildByName(id, true); | 773 | LLView* child = getChild<LLView>(id); |
801 | if (child) | 774 | if (child) |
802 | { | 775 | { |
803 | return (bool)child->getEnabled(); | 776 | return (bool)child->getEnabled(); |
@@ -808,7 +781,7 @@ bool LLPanel::childIsEnabled(const LLString& id) const | |||
808 | 781 | ||
809 | void LLPanel::childSetToolTip(const LLString& id, const LLString& msg) | 782 | void LLPanel::childSetToolTip(const LLString& id, const LLString& msg) |
810 | { | 783 | { |
811 | LLView* child = getChildByName(id, true); | 784 | LLView* child = getChild<LLView>(id); |
812 | if (child) | 785 | if (child) |
813 | { | 786 | { |
814 | child->setToolTip(msg); | 787 | child->setToolTip(msg); |
@@ -817,7 +790,7 @@ void LLPanel::childSetToolTip(const LLString& id, const LLString& msg) | |||
817 | 790 | ||
818 | void LLPanel::childSetRect(const LLString& id, const LLRect& rect) | 791 | void LLPanel::childSetRect(const LLString& id, const LLRect& rect) |
819 | { | 792 | { |
820 | LLView* child = getChildByName(id, true); | 793 | LLView* child = getChild<LLView>(id); |
821 | if (child) | 794 | if (child) |
822 | { | 795 | { |
823 | child->setRect(rect); | 796 | child->setRect(rect); |
@@ -826,7 +799,7 @@ void LLPanel::childSetRect(const LLString& id, const LLRect& rect) | |||
826 | 799 | ||
827 | bool LLPanel::childGetRect(const LLString& id, LLRect& rect) const | 800 | bool LLPanel::childGetRect(const LLString& id, LLRect& rect) const |
828 | { | 801 | { |
829 | LLView* child = getChildByName(id, true); | 802 | LLView* child = getChild<LLView>(id); |
830 | if (child) | 803 | if (child) |
831 | { | 804 | { |
832 | rect = child->getRect(); | 805 | rect = child->getRect(); |
@@ -837,7 +810,7 @@ bool LLPanel::childGetRect(const LLString& id, LLRect& rect) const | |||
837 | 810 | ||
838 | void LLPanel::childSetFocus(const LLString& id, BOOL focus) | 811 | void LLPanel::childSetFocus(const LLString& id, BOOL focus) |
839 | { | 812 | { |
840 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 813 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
841 | if (child) | 814 | if (child) |
842 | { | 815 | { |
843 | child->setFocus(focus); | 816 | child->setFocus(focus); |
@@ -846,7 +819,7 @@ void LLPanel::childSetFocus(const LLString& id, BOOL focus) | |||
846 | 819 | ||
847 | BOOL LLPanel::childHasFocus(const LLString& id) | 820 | BOOL LLPanel::childHasFocus(const LLString& id) |
848 | { | 821 | { |
849 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 822 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
850 | if (child) | 823 | if (child) |
851 | { | 824 | { |
852 | return child->hasFocus(); | 825 | return child->hasFocus(); |
@@ -861,7 +834,7 @@ BOOL LLPanel::childHasFocus(const LLString& id) | |||
861 | 834 | ||
862 | void LLPanel::childSetFocusChangedCallback(const LLString& id, void (*cb)(LLFocusableElement*, void*), void* user_data) | 835 | void LLPanel::childSetFocusChangedCallback(const LLString& id, void (*cb)(LLFocusableElement*, void*), void* user_data) |
863 | { | 836 | { |
864 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 837 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
865 | if (child) | 838 | if (child) |
866 | { | 839 | { |
867 | child->setFocusChangedCallback(cb, user_data); | 840 | child->setFocusChangedCallback(cb, user_data); |
@@ -870,7 +843,7 @@ void LLPanel::childSetFocusChangedCallback(const LLString& id, void (*cb)(LLFocu | |||
870 | 843 | ||
871 | void LLPanel::childSetCommitCallback(const LLString& id, void (*cb)(LLUICtrl*, void*), void *userdata ) | 844 | void LLPanel::childSetCommitCallback(const LLString& id, void (*cb)(LLUICtrl*, void*), void *userdata ) |
872 | { | 845 | { |
873 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 846 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
874 | if (child) | 847 | if (child) |
875 | { | 848 | { |
876 | child->setCommitCallback(cb); | 849 | child->setCommitCallback(cb); |
@@ -880,7 +853,7 @@ void LLPanel::childSetCommitCallback(const LLString& id, void (*cb)(LLUICtrl*, v | |||
880 | 853 | ||
881 | void LLPanel::childSetDoubleClickCallback(const LLString& id, void (*cb)(void*), void *userdata ) | 854 | void LLPanel::childSetDoubleClickCallback(const LLString& id, void (*cb)(void*), void *userdata ) |
882 | { | 855 | { |
883 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 856 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
884 | if (child) | 857 | if (child) |
885 | { | 858 | { |
886 | child->setDoubleClickCallback(cb); | 859 | child->setDoubleClickCallback(cb); |
@@ -893,7 +866,7 @@ void LLPanel::childSetDoubleClickCallback(const LLString& id, void (*cb)(void*), | |||
893 | 866 | ||
894 | void LLPanel::childSetValidate(const LLString& id, BOOL (*cb)(LLUICtrl*, void*)) | 867 | void LLPanel::childSetValidate(const LLString& id, BOOL (*cb)(LLUICtrl*, void*)) |
895 | { | 868 | { |
896 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 869 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
897 | if (child) | 870 | if (child) |
898 | { | 871 | { |
899 | child->setValidateBeforeCommit(cb); | 872 | child->setValidateBeforeCommit(cb); |
@@ -902,7 +875,7 @@ void LLPanel::childSetValidate(const LLString& id, BOOL (*cb)(LLUICtrl*, void*)) | |||
902 | 875 | ||
903 | void LLPanel::childSetUserData(const LLString& id, void* userdata) | 876 | void LLPanel::childSetUserData(const LLString& id, void* userdata) |
904 | { | 877 | { |
905 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 878 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
906 | if (child) | 879 | if (child) |
907 | { | 880 | { |
908 | child->setCallbackUserData(userdata); | 881 | child->setCallbackUserData(userdata); |
@@ -911,16 +884,16 @@ void LLPanel::childSetUserData(const LLString& id, void* userdata) | |||
911 | 884 | ||
912 | void LLPanel::childSetColor(const LLString& id, const LLColor4& color) | 885 | void LLPanel::childSetColor(const LLString& id, const LLColor4& color) |
913 | { | 886 | { |
914 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 887 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
915 | if (child) | 888 | if (child) |
916 | { | 889 | { |
917 | child->setColor(color); | 890 | child->setColor(color); |
918 | } | 891 | } |
919 | } | 892 | } |
920 | 893 | ||
921 | LLCtrlSelectionInterface* LLPanel::childGetSelectionInterface(const LLString& id) | 894 | LLCtrlSelectionInterface* LLPanel::childGetSelectionInterface(const LLString& id) const |
922 | { | 895 | { |
923 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 896 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
924 | if (child) | 897 | if (child) |
925 | { | 898 | { |
926 | return child->getSelectionInterface(); | 899 | return child->getSelectionInterface(); |
@@ -928,9 +901,9 @@ LLCtrlSelectionInterface* LLPanel::childGetSelectionInterface(const LLString& id | |||
928 | return NULL; | 901 | return NULL; |
929 | } | 902 | } |
930 | 903 | ||
931 | LLCtrlListInterface* LLPanel::childGetListInterface(const LLString& id) | 904 | LLCtrlListInterface* LLPanel::childGetListInterface(const LLString& id) const |
932 | { | 905 | { |
933 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 906 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
934 | if (child) | 907 | if (child) |
935 | { | 908 | { |
936 | return child->getListInterface(); | 909 | return child->getListInterface(); |
@@ -938,9 +911,9 @@ LLCtrlListInterface* LLPanel::childGetListInterface(const LLString& id) | |||
938 | return NULL; | 911 | return NULL; |
939 | } | 912 | } |
940 | 913 | ||
941 | LLCtrlScrollInterface* LLPanel::childGetScrollInterface(const LLString& id) | 914 | LLCtrlScrollInterface* LLPanel::childGetScrollInterface(const LLString& id) const |
942 | { | 915 | { |
943 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 916 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
944 | if (child) | 917 | if (child) |
945 | { | 918 | { |
946 | return child->getScrollInterface(); | 919 | return child->getScrollInterface(); |
@@ -950,7 +923,7 @@ LLCtrlScrollInterface* LLPanel::childGetScrollInterface(const LLString& id) | |||
950 | 923 | ||
951 | void LLPanel::childSetValue(const LLString& id, LLSD value) | 924 | void LLPanel::childSetValue(const LLString& id, LLSD value) |
952 | { | 925 | { |
953 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 926 | LLView* child = getChild<LLView>(id, true); |
954 | if (child) | 927 | if (child) |
955 | { | 928 | { |
956 | child->setValue(value); | 929 | child->setValue(value); |
@@ -959,7 +932,7 @@ void LLPanel::childSetValue(const LLString& id, LLSD value) | |||
959 | 932 | ||
960 | LLSD LLPanel::childGetValue(const LLString& id) const | 933 | LLSD LLPanel::childGetValue(const LLString& id) const |
961 | { | 934 | { |
962 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 935 | LLView* child = getChild<LLView>(id, true); |
963 | if (child) | 936 | if (child) |
964 | { | 937 | { |
965 | return child->getValue(); | 938 | return child->getValue(); |
@@ -970,7 +943,7 @@ LLSD LLPanel::childGetValue(const LLString& id) const | |||
970 | 943 | ||
971 | BOOL LLPanel::childSetTextArg(const LLString& id, const LLString& key, const LLStringExplicit& text) | 944 | BOOL LLPanel::childSetTextArg(const LLString& id, const LLString& key, const LLStringExplicit& text) |
972 | { | 945 | { |
973 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 946 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
974 | if (child) | 947 | if (child) |
975 | { | 948 | { |
976 | return child->setTextArg(key, text); | 949 | return child->setTextArg(key, text); |
@@ -980,7 +953,7 @@ BOOL LLPanel::childSetTextArg(const LLString& id, const LLString& key, const LLS | |||
980 | 953 | ||
981 | BOOL LLPanel::childSetLabelArg(const LLString& id, const LLString& key, const LLStringExplicit& text) | 954 | BOOL LLPanel::childSetLabelArg(const LLString& id, const LLString& key, const LLStringExplicit& text) |
982 | { | 955 | { |
983 | LLView* child = getChildByName(id, true); | 956 | LLView* child = getChild<LLView>(id); |
984 | if (child) | 957 | if (child) |
985 | { | 958 | { |
986 | return child->setLabelArg(key, text); | 959 | return child->setLabelArg(key, text); |
@@ -1000,7 +973,7 @@ BOOL LLPanel::childSetToolTipArg(const LLString& id, const LLString& key, const | |||
1000 | 973 | ||
1001 | void LLPanel::childSetMinValue(const LLString& id, LLSD min_value) | 974 | void LLPanel::childSetMinValue(const LLString& id, LLSD min_value) |
1002 | { | 975 | { |
1003 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 976 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
1004 | if (child) | 977 | if (child) |
1005 | { | 978 | { |
1006 | child->setMinValue(min_value); | 979 | child->setMinValue(min_value); |
@@ -1009,7 +982,7 @@ void LLPanel::childSetMinValue(const LLString& id, LLSD min_value) | |||
1009 | 982 | ||
1010 | void LLPanel::childSetMaxValue(const LLString& id, LLSD max_value) | 983 | void LLPanel::childSetMaxValue(const LLString& id, LLSD max_value) |
1011 | { | 984 | { |
1012 | LLUICtrl* child = (LLUICtrl*)getChildByName(id, true); | 985 | LLUICtrl* child = getChild<LLUICtrl>(id, true); |
1013 | if (child) | 986 | if (child) |
1014 | { | 987 | { |
1015 | child->setMaxValue(max_value); | 988 | child->setMaxValue(max_value); |
@@ -1018,16 +991,16 @@ void LLPanel::childSetMaxValue(const LLString& id, LLSD max_value) | |||
1018 | 991 | ||
1019 | void LLPanel::childShowTab(const LLString& id, const LLString& tabname, bool visible) | 992 | void LLPanel::childShowTab(const LLString& id, const LLString& tabname, bool visible) |
1020 | { | 993 | { |
1021 | LLTabContainerCommon* child = LLUICtrlFactory::getTabContainerByName(this, id); | 994 | LLTabContainer* child = LLUICtrlFactory::getTabContainerByName(this, id); |
1022 | if (child) | 995 | if (child) |
1023 | { | 996 | { |
1024 | child->selectTabByName(tabname); | 997 | child->selectTabByName(tabname); |
1025 | } | 998 | } |
1026 | } | 999 | } |
1027 | 1000 | ||
1028 | LLPanel *LLPanel::childGetVisibleTab(const LLString& id) | 1001 | LLPanel *LLPanel::childGetVisibleTab(const LLString& id) const |
1029 | { | 1002 | { |
1030 | LLTabContainerCommon* child = LLUICtrlFactory::getTabContainerByName(this, id); | 1003 | LLTabContainer* child = LLUICtrlFactory::getTabContainerByName(this, id); |
1031 | if (child) | 1004 | if (child) |
1032 | { | 1005 | { |
1033 | return child->getCurrentPanel(); | 1006 | return child->getCurrentPanel(); |
@@ -1037,7 +1010,7 @@ LLPanel *LLPanel::childGetVisibleTab(const LLString& id) | |||
1037 | 1010 | ||
1038 | void LLPanel::childSetTabChangeCallback(const LLString& id, const LLString& tabname, void (*on_tab_clicked)(void*, bool), void *userdata) | 1011 | void LLPanel::childSetTabChangeCallback(const LLString& id, const LLString& tabname, void (*on_tab_clicked)(void*, bool), void *userdata) |
1039 | { | 1012 | { |
1040 | LLTabContainerCommon* child = LLUICtrlFactory::getTabContainerByName(this, id); | 1013 | LLTabContainer* child = LLUICtrlFactory::getTabContainerByName(this, id); |
1041 | if (child) | 1014 | if (child) |
1042 | { | 1015 | { |
1043 | LLPanel *panel = child->getPanelByName(tabname); | 1016 | LLPanel *panel = child->getPanelByName(tabname); |
@@ -1049,11 +1022,6 @@ void LLPanel::childSetTabChangeCallback(const LLString& id, const LLString& tabn | |||
1049 | } | 1022 | } |
1050 | } | 1023 | } |
1051 | 1024 | ||
1052 | void LLPanel::childSetText(const LLString& id, const LLStringExplicit& text) | ||
1053 | { | ||
1054 | childSetValue(id, LLSD(text)); | ||
1055 | } | ||
1056 | |||
1057 | void LLPanel::childSetKeystrokeCallback(const LLString& id, void (*keystroke_callback)(LLLineEditor* caller, void* user_data), void *user_data) | 1025 | void LLPanel::childSetKeystrokeCallback(const LLString& id, void (*keystroke_callback)(LLLineEditor* caller, void* user_data), void *user_data) |
1058 | { | 1026 | { |
1059 | LLLineEditor* child = LLUICtrlFactory::getLineEditorByName(this, id); | 1027 | LLLineEditor* child = LLUICtrlFactory::getLineEditorByName(this, id); |
@@ -1076,11 +1044,6 @@ void LLPanel::childSetPrevalidate(const LLString& id, BOOL (*func)(const LLWStri | |||
1076 | } | 1044 | } |
1077 | } | 1045 | } |
1078 | 1046 | ||
1079 | LLString LLPanel::childGetText(const LLString& id) | ||
1080 | { | ||
1081 | return childGetValue(id).asString(); | ||
1082 | } | ||
1083 | |||
1084 | void LLPanel::childSetWrappedText(const LLString& id, const LLString& text, bool visible) | 1047 | void LLPanel::childSetWrappedText(const LLString& id, const LLString& text, bool visible) |
1085 | { | 1048 | { |
1086 | LLTextBox* child = (LLTextBox*)getCtrlByNameAndType(id, WIDGET_TYPE_TEXT_BOX); | 1049 | LLTextBox* child = (LLTextBox*)getCtrlByNameAndType(id, WIDGET_TYPE_TEXT_BOX); |
@@ -1111,7 +1074,7 @@ void LLPanel::childSetActionTextbox(const LLString& id, void(*function)(void*)) | |||
1111 | 1074 | ||
1112 | void LLPanel::childSetControlName(const LLString& id, const LLString& control_name) | 1075 | void LLPanel::childSetControlName(const LLString& id, const LLString& control_name) |
1113 | { | 1076 | { |
1114 | LLView* view = getChildByName(id, TRUE); | 1077 | LLView* view = getChild<LLView>(id); |
1115 | if (view) | 1078 | if (view) |
1116 | { | 1079 | { |
1117 | view->setControlName(control_name, NULL); | 1080 | view->setControlName(control_name, NULL); |
@@ -1161,7 +1124,7 @@ void LLPanel::storeRectControl() | |||
1161 | { | 1124 | { |
1162 | if( !mRectControl.empty() ) | 1125 | if( !mRectControl.empty() ) |
1163 | { | 1126 | { |
1164 | LLUI::sConfigGroup->setRect( mRectControl, mRect ); | 1127 | LLUI::sConfigGroup->setRect( mRectControl, getRect() ); |
1165 | } | 1128 | } |
1166 | } | 1129 | } |
1167 | 1130 | ||
@@ -1231,6 +1194,19 @@ LLLayoutStack::~LLLayoutStack() | |||
1231 | std::for_each(mPanels.begin(), mPanels.end(), DeletePointer()); | 1194 | std::for_each(mPanels.begin(), mPanels.end(), DeletePointer()); |
1232 | } | 1195 | } |
1233 | 1196 | ||
1197 | // virtual | ||
1198 | EWidgetType LLLayoutStack::getWidgetType() const | ||
1199 | { | ||
1200 | return WIDGET_TYPE_LAYOUT_STACK; | ||
1201 | } | ||
1202 | |||
1203 | // virtual | ||
1204 | LLString LLLayoutStack::getWidgetTag() const | ||
1205 | { | ||
1206 | return LL_LAYOUT_STACK_TAG; | ||
1207 | } | ||
1208 | |||
1209 | |||
1234 | void LLLayoutStack::draw() | 1210 | void LLLayoutStack::draw() |
1235 | { | 1211 | { |
1236 | updateLayout(); | 1212 | updateLayout(); |
@@ -1343,23 +1319,13 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactor | |||
1343 | return layout_stackp; | 1319 | return layout_stackp; |
1344 | } | 1320 | } |
1345 | 1321 | ||
1346 | S32 LLLayoutStack::getMinWidth() | ||
1347 | { | ||
1348 | return mMinWidth; | ||
1349 | } | ||
1350 | |||
1351 | S32 LLLayoutStack::getMinHeight() | ||
1352 | { | ||
1353 | return mMinHeight; | ||
1354 | } | ||
1355 | |||
1356 | S32 LLLayoutStack::getDefaultHeight(S32 cur_height) | 1322 | S32 LLLayoutStack::getDefaultHeight(S32 cur_height) |
1357 | { | 1323 | { |
1358 | // if we are spanning our children (crude upward propagation of size) | 1324 | // if we are spanning our children (crude upward propagation of size) |
1359 | // then don't enforce our size on our children | 1325 | // then don't enforce our size on our children |
1360 | if (mOrientation == HORIZONTAL) | 1326 | if (mOrientation == HORIZONTAL) |
1361 | { | 1327 | { |
1362 | cur_height = llmax(mMinHeight, mRect.getHeight()); | 1328 | cur_height = llmax(mMinHeight, getRect().getHeight()); |
1363 | } | 1329 | } |
1364 | 1330 | ||
1365 | return cur_height; | 1331 | return cur_height; |
@@ -1371,7 +1337,7 @@ S32 LLLayoutStack::getDefaultWidth(S32 cur_width) | |||
1371 | // then don't enforce our size on our children | 1337 | // then don't enforce our size on our children |
1372 | if (mOrientation == VERTICAL) | 1338 | if (mOrientation == VERTICAL) |
1373 | { | 1339 | { |
1374 | cur_width = llmax(mMinWidth, mRect.getWidth()); | 1340 | cur_width = llmax(mMinWidth, getRect().getWidth()); |
1375 | } | 1341 | } |
1376 | 1342 | ||
1377 | return cur_width; | 1343 | return cur_width; |
@@ -1497,15 +1463,15 @@ void LLLayoutStack::updateLayout(BOOL force_resize) | |||
1497 | S32 pixels_to_distribute; | 1463 | S32 pixels_to_distribute; |
1498 | if (mOrientation == HORIZONTAL) | 1464 | if (mOrientation == HORIZONTAL) |
1499 | { | 1465 | { |
1500 | pixels_to_distribute = mRect.getWidth() - total_width; | 1466 | pixels_to_distribute = getRect().getWidth() - total_width; |
1501 | } | 1467 | } |
1502 | else //VERTICAL | 1468 | else //VERTICAL |
1503 | { | 1469 | { |
1504 | pixels_to_distribute = mRect.getHeight() - total_height; | 1470 | pixels_to_distribute = getRect().getHeight() - total_height; |
1505 | } | 1471 | } |
1506 | 1472 | ||
1507 | S32 cur_x = 0; | 1473 | S32 cur_x = 0; |
1508 | S32 cur_y = mRect.getHeight(); | 1474 | S32 cur_y = getRect().getHeight(); |
1509 | 1475 | ||
1510 | for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) | 1476 | for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) |
1511 | { | 1477 | { |
@@ -1643,18 +1609,19 @@ void LLLayoutStack::updateLayout(BOOL force_resize) | |||
1643 | if (force_resize == FALSE | 1609 | if (force_resize == FALSE |
1644 | // layout did not complete by reaching target position | 1610 | // layout did not complete by reaching target position |
1645 | && ((mOrientation == VERTICAL && cur_y != -mPanelSpacing) | 1611 | && ((mOrientation == VERTICAL && cur_y != -mPanelSpacing) |
1646 | || (mOrientation == HORIZONTAL && cur_x != mRect.getWidth() + mPanelSpacing))) | 1612 | || (mOrientation == HORIZONTAL && cur_x != getRect().getWidth() + mPanelSpacing))) |
1647 | { | 1613 | { |
1648 | // do another layout pass with all stacked elements contributing | 1614 | // do another layout pass with all stacked elements contributing |
1649 | // even those that don't usually resize | 1615 | // even those that don't usually resize |
1650 | llassert_always(force_resize == FALSE); | 1616 | llassert_always(force_resize == FALSE); |
1651 | updateLayout(TRUE); | 1617 | updateLayout(TRUE); |
1652 | } | 1618 | } |
1653 | } | 1619 | } // end LLLayoutStack::updateLayout |
1654 | 1620 | ||
1655 | LLLayoutStack::LLEmbeddedPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) | 1621 | |
1622 | LLLayoutStack::LLEmbeddedPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const | ||
1656 | { | 1623 | { |
1657 | e_panel_list_t::iterator panel_it; | 1624 | e_panel_list_t::const_iterator panel_it; |
1658 | for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) | 1625 | for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) |
1659 | { | 1626 | { |
1660 | if ((*panel_it)->mPanel == panelp) | 1627 | if ((*panel_it)->mPanel == panelp) |