aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llui/llmenugl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/llui/llmenugl.cpp')
-rw-r--r--linden/indra/llui/llmenugl.cpp82
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
526public: 528public:
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
552LLXMLNodePtr 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
547void LLMenuItemSeparatorGL::draw( void ) 561void 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
641LLXMLNodePtr 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
627void LLMenuItemTearOffGL::doIt() 650void 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
971LLXMLNodePtr LLMenuItemCheckGL::getXML(bool save_children) const 999LLXMLNodePtr 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
3033public: 3082public:
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
3110LLXMLNodePtr 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
3059void LLPieMenuBranch::buildDrawLabel( void ) 3121void LLPieMenuBranch::buildDrawLabel( void )
3060{ 3122{
@@ -3136,6 +3198,16 @@ LLPieMenu::LLPieMenu(const std::string& name)
3136} 3198}
3137 3199
3138 3200
3201// virtual
3202LLXMLNodePtr 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
3139void LLPieMenu::initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *factory) 3211void 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;