diff options
Diffstat (limited to 'linden/indra/llui/llmenugl.cpp')
-rw-r--r-- | linden/indra/llui/llmenugl.cpp | 82 |
1 files changed, 78 insertions, 4 deletions
diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp index 175bf07..b70f98b 100644 --- a/linden/indra/llui/llmenugl.cpp +++ b/linden/indra/llui/llmenugl.cpp | |||
@@ -154,6 +154,8 @@ LLXMLNodePtr LLMenuItemGL::getXML(bool save_children) const | |||
154 | { | 154 | { |
155 | LLXMLNodePtr node = LLView::getXML(); | 155 | LLXMLNodePtr node = LLView::getXML(); |
156 | 156 | ||
157 | node->setName(LL_MENU_ITEM_TAG); | ||
158 | |||
157 | node->createChild("type", TRUE)->setStringValue(getType()); | 159 | node->createChild("type", TRUE)->setStringValue(getType()); |
158 | 160 | ||
159 | node->createChild("label", TRUE)->setStringValue(mLabel); | 161 | node->createChild("label", TRUE)->setStringValue(mLabel); |
@@ -526,6 +528,8 @@ class LLMenuItemSeparatorGL : public LLMenuItemGL | |||
526 | public: | 528 | public: |
527 | LLMenuItemSeparatorGL( const std::string &name = SEPARATOR_NAME ); | 529 | LLMenuItemSeparatorGL( const std::string &name = SEPARATOR_NAME ); |
528 | 530 | ||
531 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
532 | |||
529 | virtual std::string getType() const { return "separator"; } | 533 | virtual std::string getType() const { return "separator"; } |
530 | 534 | ||
531 | // doIt() - do the primary funcationality of the menu item. | 535 | // doIt() - do the primary funcationality of the menu item. |
@@ -544,6 +548,16 @@ LLMenuItemSeparatorGL::LLMenuItemSeparatorGL( const std::string &name ) : | |||
544 | { | 548 | { |
545 | } | 549 | } |
546 | 550 | ||
551 | |||
552 | LLXMLNodePtr LLMenuItemSeparatorGL::getXML(bool save_children) const | ||
553 | { | ||
554 | LLXMLNodePtr node = LLMenuItemGL::getXML(); | ||
555 | |||
556 | node->setName(LL_MENU_ITEM_SEPARATOR_GL_TAG); | ||
557 | |||
558 | return node; | ||
559 | } | ||
560 | |||
547 | void LLMenuItemSeparatorGL::draw( void ) | 561 | void LLMenuItemSeparatorGL::draw( void ) |
548 | { | 562 | { |
549 | gGL.color4fv( getDisabledColor().mV ); | 563 | gGL.color4fv( getDisabledColor().mV ); |
@@ -624,6 +638,15 @@ LLMenuItemTearOffGL::LLMenuItemTearOffGL(LLHandle<LLFloater> parent_floater_hand | |||
624 | } | 638 | } |
625 | 639 | ||
626 | 640 | ||
641 | LLXMLNodePtr LLMenuItemTearOffGL::getXML(bool save_children) const | ||
642 | { | ||
643 | LLXMLNodePtr node = LLMenuItemGL::getXML(); | ||
644 | |||
645 | node->setName(LL_MENU_ITEM_TEAR_OFF_GL_TAG); | ||
646 | |||
647 | return node; | ||
648 | } | ||
649 | |||
627 | void LLMenuItemTearOffGL::doIt() | 650 | void LLMenuItemTearOffGL::doIt() |
628 | { | 651 | { |
629 | if (getMenu()->getTornOff()) | 652 | if (getMenu()->getTornOff()) |
@@ -821,6 +844,8 @@ LLXMLNodePtr LLMenuItemCallGL::getXML(bool save_children) const | |||
821 | { | 844 | { |
822 | LLXMLNodePtr node = LLMenuItemGL::getXML(); | 845 | LLXMLNodePtr node = LLMenuItemGL::getXML(); |
823 | 846 | ||
847 | node->setName(LL_MENU_ITEM_CALL_GL_TAG); | ||
848 | |||
824 | // Contents | 849 | // Contents |
825 | 850 | ||
826 | std::vector<LLListenerEntry> listeners = mDispatcher->getListeners(); | 851 | std::vector<LLListenerEntry> listeners = mDispatcher->getListeners(); |
@@ -830,6 +855,9 @@ LLXMLNodePtr LLMenuItemCallGL::getXML(bool save_children) const | |||
830 | std::string listener_name = findEventListener((LLSimpleListener*)itor->listener); | 855 | std::string listener_name = findEventListener((LLSimpleListener*)itor->listener); |
831 | if (!listener_name.empty()) | 856 | if (!listener_name.empty()) |
832 | { | 857 | { |
858 | // *FIX: It's not always on_click. It could be on_check, on_enable or on_visible, | ||
859 | // but there's no way to get that from the data that is stored. | ||
860 | |||
833 | LLXMLNodePtr child_node = node->createChild("on_click", FALSE); | 861 | LLXMLNodePtr child_node = node->createChild("on_click", FALSE); |
834 | child_node->createChild("function", TRUE)->setStringValue(listener_name); | 862 | child_node->createChild("function", TRUE)->setStringValue(listener_name); |
835 | child_node->createChild("filter", TRUE)->setStringValue(itor->filter.asString()); | 863 | child_node->createChild("filter", TRUE)->setStringValue(itor->filter.asString()); |
@@ -971,6 +999,9 @@ void LLMenuItemCheckGL::setCheckedControl(std::string checked_control, LLView *c | |||
971 | LLXMLNodePtr LLMenuItemCheckGL::getXML(bool save_children) const | 999 | LLXMLNodePtr LLMenuItemCheckGL::getXML(bool save_children) const |
972 | { | 1000 | { |
973 | LLXMLNodePtr node = LLMenuItemCallGL::getXML(); | 1001 | LLXMLNodePtr node = LLMenuItemCallGL::getXML(); |
1002 | |||
1003 | node->setName(LL_MENU_ITEM_CHECK_GL_TAG); | ||
1004 | |||
974 | return node; | 1005 | return node; |
975 | } | 1006 | } |
976 | 1007 | ||
@@ -1734,6 +1765,8 @@ LLXMLNodePtr LLMenuGL::getXML(bool save_children) const | |||
1734 | { | 1765 | { |
1735 | LLXMLNodePtr node = LLView::getXML(); | 1766 | LLXMLNodePtr node = LLView::getXML(); |
1736 | 1767 | ||
1768 | node->setName(LL_MENU_GL_TAG); | ||
1769 | |||
1737 | // Attributes | 1770 | // Attributes |
1738 | 1771 | ||
1739 | node->createChild("opaque", TRUE)->setBoolValue(mBgVisible); | 1772 | node->createChild("opaque", TRUE)->setBoolValue(mBgVisible); |
@@ -1904,7 +1937,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
1904 | 1937 | ||
1905 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 1938 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
1906 | 1939 | ||
1907 | if (!callback) continue; | 1940 | if (!callback) |
1941 | { | ||
1942 | lldebugs << "Ignoring \"on_check\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
1943 | continue; | ||
1944 | } | ||
1908 | 1945 | ||
1909 | new_item->addListener(callback, "on_build", userdata); | 1946 | new_item->addListener(callback, "on_build", userdata); |
1910 | } | 1947 | } |
@@ -1945,7 +1982,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
1945 | 1982 | ||
1946 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 1983 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
1947 | 1984 | ||
1948 | if (!callback) continue; | 1985 | if (!callback) |
1986 | { | ||
1987 | lldebugs << "Ignoring \"on_click\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
1988 | continue; | ||
1989 | } | ||
1949 | 1990 | ||
1950 | new_item->addListener(callback, "on_click", callback_data); | 1991 | new_item->addListener(callback, "on_click", callback_data); |
1951 | } | 1992 | } |
@@ -1975,7 +2016,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
1975 | 2016 | ||
1976 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 2017 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
1977 | 2018 | ||
1978 | if (!callback) continue; | 2019 | if (!callback) |
2020 | { | ||
2021 | lldebugs << "Ignoring \"on_enable\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
2022 | continue; | ||
2023 | } | ||
1979 | 2024 | ||
1980 | new_item->addListener(callback, "on_build", userdata); | 2025 | new_item->addListener(callback, "on_build", userdata); |
1981 | } | 2026 | } |
@@ -2015,7 +2060,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
2015 | 2060 | ||
2016 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 2061 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
2017 | 2062 | ||
2018 | if (!callback) continue; | 2063 | if (!callback) |
2064 | { | ||
2065 | lldebugs << "Ignoring \"on_visible\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
2066 | continue; | ||
2067 | } | ||
2019 | 2068 | ||
2020 | new_item->addListener(callback, "on_build", userdata); | 2069 | new_item->addListener(callback, "on_build", userdata); |
2021 | } | 2070 | } |
@@ -3033,6 +3082,8 @@ class LLPieMenuBranch : public LLMenuItemGL | |||
3033 | public: | 3082 | public: |
3034 | LLPieMenuBranch(const std::string& name, const std::string& label, LLPieMenu* branch); | 3083 | LLPieMenuBranch(const std::string& name, const std::string& label, LLPieMenu* branch); |
3035 | 3084 | ||
3085 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
3086 | |||
3036 | // called to rebuild the draw label | 3087 | // called to rebuild the draw label |
3037 | virtual void buildDrawLabel( void ); | 3088 | virtual void buildDrawLabel( void ); |
3038 | 3089 | ||
@@ -3055,6 +3106,17 @@ LLPieMenuBranch::LLPieMenuBranch(const std::string& name, | |||
3055 | mBranch->setParentMenuItem(this); | 3106 | mBranch->setParentMenuItem(this); |
3056 | } | 3107 | } |
3057 | 3108 | ||
3109 | // virtual | ||
3110 | LLXMLNodePtr LLPieMenuBranch::getXML(bool save_children) const | ||
3111 | { | ||
3112 | if (mBranch) | ||
3113 | { | ||
3114 | return mBranch->getXML(); | ||
3115 | } | ||
3116 | |||
3117 | return LLMenuItemGL::getXML(); | ||
3118 | } | ||
3119 | |||
3058 | // called to rebuild the draw label | 3120 | // called to rebuild the draw label |
3059 | void LLPieMenuBranch::buildDrawLabel( void ) | 3121 | void LLPieMenuBranch::buildDrawLabel( void ) |
3060 | { | 3122 | { |
@@ -3136,6 +3198,16 @@ LLPieMenu::LLPieMenu(const std::string& name) | |||
3136 | } | 3198 | } |
3137 | 3199 | ||
3138 | 3200 | ||
3201 | // virtual | ||
3202 | LLXMLNodePtr LLPieMenu::getXML(bool save_children) const | ||
3203 | { | ||
3204 | LLXMLNodePtr node = LLMenuGL::getXML(); | ||
3205 | |||
3206 | node->setName(LL_PIE_MENU_TAG); | ||
3207 | |||
3208 | return node; | ||
3209 | } | ||
3210 | |||
3139 | void LLPieMenu::initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *factory) | 3211 | void LLPieMenu::initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *factory) |
3140 | { | 3212 | { |
3141 | LLXMLNodePtr child; | 3213 | LLXMLNodePtr child; |
@@ -3837,6 +3909,8 @@ LLXMLNodePtr LLMenuBarGL::getXML(bool save_children) const | |||
3837 | 3909 | ||
3838 | LLXMLNodePtr node = LLMenuGL::getXML(); | 3910 | LLXMLNodePtr node = LLMenuGL::getXML(); |
3839 | 3911 | ||
3912 | node->setName(LL_MENU_BAR_GL_TAG); | ||
3913 | |||
3840 | for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) | 3914 | for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) |
3841 | { | 3915 | { |
3842 | LLMenuItemGL* child = *item_iter; | 3916 | LLMenuItemGL* child = *item_iter; |