void DrawAsBrowser(Gdk.EventExpose evnt) { var alloc = Allocation; Gdk.GC bgc = new Gdk.GC(GdkWindow); var c = new HslColor(VisualStyle.PadBackgroundColor.Value); c.L *= 0.7; bgc.RgbFgColor = c; bool first = true; bool last = true; TabStrip tabStrip = null; if (Parent is TabStrip.TabStripBox) { var tsb = (TabStrip.TabStripBox)Parent; var cts = tsb.Children; first = cts[0] == this; last = cts[cts.Length - 1] == this; tabStrip = tsb.TabStrip; } if (Active || (first && last)) { Gdk.GC gc = new Gdk.GC(GdkWindow); gc.RgbFgColor = VisualStyle.PadBackgroundColor.Value; evnt.Window.DrawRectangle(gc, true, alloc); if (!first) { evnt.Window.DrawLine(bgc, alloc.X, alloc.Y, alloc.X, alloc.Y + alloc.Height - 1); } if (!(last && first) && !(tabStrip != null && tabStrip.VisualStyle.ExpandedTabs.Value && last)) { evnt.Window.DrawLine(bgc, alloc.X + alloc.Width - 1, alloc.Y, alloc.X + alloc.Width - 1, alloc.Y + alloc.Height - 1); } gc.Dispose(); } else { Gdk.GC gc = new Gdk.GC(GdkWindow); gc.RgbFgColor = tabStrip != null ? tabStrip.VisualStyle.InactivePadBackgroundColor.Value : frame.DefaultVisualStyle.InactivePadBackgroundColor.Value; evnt.Window.DrawRectangle(gc, true, alloc); gc.Dispose(); evnt.Window.DrawLine(bgc, alloc.X, alloc.Y + alloc.Height - 1, alloc.X + alloc.Width - 1, alloc.Y + alloc.Height - 1); } bgc.Dispose(); }
void LayoutWidgets() { if (!needsRelayout) { return; } needsRelayout = false; // Create the needed notebooks and place the widgets in there List <DockGroup> tabbedGroups = new List <DockGroup> (); GetTabbedGroups(layout, tabbedGroups); for (int n = 0; n < tabbedGroups.Count; n++) { DockGroup grp = tabbedGroups [n]; TabStrip ts; if (n < notebooks.Count) { ts = notebooks [n]; } else { ts = new TabStrip(frame); ts.Show(); notebooks.Add(ts); ts.Parent = this; } frame.UpdateRegionStyle(grp); ts.VisualStyle = grp.VisualStyle; grp.UpdateNotebook(ts); } // Remove spare tab strips for (int n = notebooks.Count - 1; n >= tabbedGroups.Count; n--) { TabStrip ts = notebooks [n]; notebooks.RemoveAt(n); ts.Clear(); ts.Unparent(); ts.Destroy(); } // Create and add the required splitters int reqSpliters = CountRequiredSplitters(layout); for (int n = 0; n < splitters.Count; n++) { var s = splitters [n]; if (s.Parent != null) { Remove(s); } } // Hide the splitters that are not required for (int n = reqSpliters; n < splitters.Count; n++) { splitters[n].Hide(); } // Add widgets to the container layout.LayoutWidgets(); // Create and add the required splitters for (int n = 0; n < reqSpliters; n++) { if (n < splitters.Count) { var s = splitters [n]; if (!s.Visible) { s.Show(); } Add(s); } else { var s = new SplitterWidget(); splitters.Add(s); s.Show(); Add(s); } } }
void LayoutWidgets() { if (!needsRelayout) return; needsRelayout = false; // Create the needed notebooks and place the widgets in there List<DockGroup> tabbedGroups = new List<DockGroup>(); GetTabbedGroups(layout, tabbedGroups); for (int n = 0; n < tabbedGroups.Count; n++) { DockGroup grp = tabbedGroups[n]; TabStrip ts; if (n < notebooks.Count) { ts = notebooks[n]; } else { ts = new TabStrip(frame); ts.Show(); notebooks.Add(ts); ts.Parent = this; } frame.UpdateRegionStyle(grp); ts.VisualStyle = grp.VisualStyle; grp.UpdateNotebook(ts); } // Remove spare tab strips for (int n = notebooks.Count - 1; n >= tabbedGroups.Count; n--) { TabStrip ts = notebooks[n]; notebooks.RemoveAt(n); ts.Clear(); ts.Unparent(); ts.Destroy(); } // Create and add the required splitters int reqSpliters = CountRequiredSplitters(layout); for (int n = 0; n < splitters.Count; n++) { var s = splitters[n]; if (s.Parent != null) Remove(s); } // Hide the splitters that are not required for (int n = reqSpliters; n < splitters.Count; n++) splitters[n].Hide(); // Add widgets to the container layout.LayoutWidgets(); // Create and add the required splitters for (int n = 0; n < reqSpliters; n++) { if (n < splitters.Count) { var s = splitters[n]; if (!s.Visible) s.Show(); Add(s); } else { var s = new SplitterWidget(); splitters.Add(s); s.Show(); Add(s); } } }
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 ResetNotebook() { boundTabStrip = null; }
public override void CopyFrom(DockObject other) { base.CopyFrom (other); DockGroup grp = (DockGroup) other; dockObjects = new List<DockObject> (); foreach (DockObject ob in grp.dockObjects) { DockObject cob = ob.Clone (); cob.ParentGroup = this; dockObjects.Add (cob); } type = grp.type; ResetVisibleGroups (); boundTabStrip = null; tabFocus = null; }
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; }