示例#1
0
        public TemplatesMenu(Gtk.Widget widget, Gtk.Menu menu, Wrappers.Node grp, bool recursive, WrapperFilter filter)
        {
            d_menu      = menu;
            d_filter    = filter;
            d_recursive = recursive;
            d_map       = new Dictionary <Wrappers.Wrapper, MenuInfo>();
            d_group     = grp;

            d_map[grp] = new MenuInfo(null, d_menu);

            d_widget = widget;

            if (d_widget != null)
            {
                d_menuProperty = d_widget.GetType().GetProperty("Menu");
            }

            Traverse(grp, d_menu);

            if (d_menuProperty != null)
            {
                grp.ChildRemoved += delegate {
                    if (d_menu.Children.Length == 0)
                    {
                        d_menuProperty.SetValue(d_widget, null, null);
                        grp.ChildAdded += HideShowMenu;
                    }
                };

                if (d_menu.Children.Length > 0)
                {
                    d_menuProperty.SetValue(d_widget, d_menu, null);
                }
                else
                {
                    grp.ChildAdded += HideShowMenu;
                }
            }
        }
示例#2
0
 public TemplatesMenu(Gtk.Widget widget, Wrappers.Node grp, bool recursive, WrapperFilter filter) : this(widget, new Gtk.Menu(), grp, recursive, filter)
 {
 }