internal void ShowDockPopupMenu(uint time, TabStrip tabstrip = null) { Menu menu = new Menu(); MenuItem citem; // Close menuitem if ((Behavior & DockItemBehavior.CantClose) == 0) { citem = new MenuItem(Catalog.GetString("Close")); citem.Activated += delegate { Close(); }; menu.Append(citem); } { citem = new MenuItem(this.Status==DockItemStatus.AutoHide ? Catalog.GetString("Restore" ) : Catalog.GetString("Minimize")); citem.Activated += (o, e) => { TitleTab.OnClickDock(o, e); if(this.Status==DockItemStatus.AutoHide) (o as MenuItem).Name = this.Status==DockItemStatus.AutoHide ? Catalog.GetString("Restore" ) : Catalog.GetString("Minimize"); }; menu.Append(citem); } #if false // Hide menuitem if ((Behavior & DockItemBehavior.CantClose) == 0 && (Behavior & DockItemBehavior.CloseOnHide) == 0) { citem = new MenuItem (Catalog.GetString("Hide")); citem.Activated += delegate { Visible = false; }; menu.Append (citem); } // Auto Hide menuitem if ((Behavior & DockItemBehavior.CantAutoHide) == 0 && Status != DockItemStatus.AutoHide) { citem = new MenuItem (Catalog.GetString("Minimize")); citem.Activated += delegate { Status = DockItemStatus.AutoHide; }; menu.Append (citem); } #endif if (Status != DockItemStatus.Dockable) { // Dockable menuitem citem = new MenuItem(Catalog.GetString("Dock")); citem.Activated += delegate { Status = DockItemStatus.Dockable; }; menu.Append(citem); } // Floating menuitem if ((Behavior & DockItemBehavior.NeverFloating) == 0 && Status != DockItemStatus.Floating) { citem = new MenuItem(Catalog.GetString("Undock")); citem.Activated += delegate { Status = DockItemStatus.Floating; }; menu.Append(citem); } // flip tab menuitem if (tabstrip != null && (Behavior & DockItemBehavior.NeverFloating) == 0 && Status != DockItemStatus.Floating && (Status == DockItemStatus.Dockable || Status == DockItemStatus.AutoHide)) { citem = new MenuItem(Catalog.GetString("Toggle Horizontal/Vertical Tab Layout")); citem.Activated += (o, e) => { tabstrip.Flip(); }; menu.Append(citem); } if (menu.Children.Length == 0) { menu.Destroy(); return; } ShowingContextMemu = true; menu.ShowAll(); menu.Hidden += (o, e) => { ShowingContextMemu = false; }; menu.Popup(null, null, null, 3, time); }
internal void UpdateNotebook(TabStrip ts) { Gtk.Widget oldpage = null; int oldtab = -1; if (tabFocus != null) { oldpage = tabFocus.Item.Widget; tabFocus = null; } else if (boundTabStrip != null) { oldpage = boundTabStrip.CurrentPage; oldtab = boundTabStrip.CurrentTab; } ts.Clear (); // Add missing pages foreach (DockObject ob in VisibleObjects) { DockGroupItem it = ob as DockGroupItem; ts.AddTab (it.Item.TitleTab); } if (boundTabStrip != ts) { boundTabStrip = ts; if (boundTabStrip.isVertical != isVertical) boundTabStrip.Flip(); } if (oldpage != null) { boundTabStrip.CurrentPage = oldpage; } else if (currentTabPage != -1 && currentTabPage < boundTabStrip.TabCount) { boundTabStrip.CurrentTab = currentTabPage; } // Discard the currentTabPage value. Current page is now tracked by the tab strip currentTabPage = -1; if (boundTabStrip.CurrentTab == -1) { if (oldtab != -1) { if (oldtab < boundTabStrip.TabCount) boundTabStrip.CurrentTab = oldtab; else boundTabStrip.CurrentTab = boundTabStrip.TabCount - 1; } else boundTabStrip.CurrentTab = 0; } if (Frame.CompactGuiLevel == 3 && IsNextToMargin (PositionType.Bottom, true)) boundTabStrip.BottomPadding = 3; else boundTabStrip.BottomPadding = 0; }