public void AddPage(BaseContextPage page) { Hyena.Log.DebugFormat("Adding context page {0}", page.Id); // TODO delay adding the page.Widget until the page is first activated, // that way we don't even create those objects unless used var frame = new Hyena.Widgets.RoundedFrame(); frame.Add(page.Widget); frame.Show(); // TODO implement DnD? /*if (page is ITrackContextPage) { * Gtk.Drag.DestSet (frame, DestDefaults.Highlight | DestDefaults.Motion, * new TargetEntry [] { Banshee.Gui.DragDrop.DragDropTarget.UriList }, * Gdk.DragAction.Default); * frame.DragDataReceived += delegate(object o, DragDataReceivedArgs args) { * }; * }*/ page.Widget.Show(); notebook.AppendPage(frame, null); pane_pages[page] = frame; // Setup the tab-like button that switches the notebook to this page var tab_image = new Image(IconThemeUtils.LoadIcon(22, page.IconNames)); var toggle_button = new RadioButton(radio_group) { Child = tab_image, DrawIndicator = false, Relief = ReliefStyle.None }; TooltipSetter.Set(tooltip_host, toggle_button, page.Name); toggle_button.Clicked += (s, e) => { if (pane_pages.ContainsKey(page)) { if (page.State == ContextState.Loaded) { notebook.CurrentPage = notebook.PageNum(pane_pages[page]); } SetActivePage(page); } }; toggle_button.ShowAll(); vbox.PackStart(toggle_button, false, false, 0); pane_tabs[page] = toggle_button; pages.Add(page); if (initialized && pages.Count == 1) { SetActivePage(page); toggle_button.Active = true; } UpdateVisibility(); }
private void SetActivePage(BaseContextPage page) { if (page == null || page == active_page) { return; } if (active_page != null) { active_page.StateChanged -= OnActivePageStateChanged; } active_page = page; active_page.StateChanged += OnActivePageStateChanged; LastContextPageSchema.Set(page.Id); OnActivePageStateChanged(active_page.State); SetCurrentTrackForActivePage(); }
public void RemovePage(BaseContextPage page) { Hyena.Log.DebugFormat("Removing context page {0}", page.Id); // Remove the notebook page notebook.RemovePage(notebook.PageNum(pane_pages[page])); pane_pages.Remove(page); // Remove the tab button bool was_active = pane_tabs[page].Active; vbox.Remove(pane_tabs[page]); pane_tabs.Remove(page); pages.Remove(page); // Set a new page as the default if (was_active) { ActivateFirstPage(); } UpdateVisibility(); }
public void RemovePage (BaseContextPage page) { Hyena.Log.DebugFormat ("Removing context page {0}", page.Id); // Remove the notebook page notebook.RemovePage (notebook.PageNum (pane_pages[page])); pane_pages.Remove (page); // Remove the tab button bool was_active = pane_tabs[page].Active; vbox.Remove (pane_tabs[page]); pane_tabs.Remove (page); pages.Remove (page); // Set a new page as the default if (was_active) { ActivateFirstPage (); } UpdateVisibility (); }
public void AddPage (BaseContextPage page) { Hyena.Log.DebugFormat ("Adding context page {0}", page.Id); // TODO delay adding the page.Widget until the page is first activated, // that way we don't even create those objects unless used var frame = new Hyena.Widgets.RoundedFrame (); frame.Add (page.Widget); frame.Show (); // TODO implement DnD? /*if (page is ITrackContextPage) { Gtk.Drag.DestSet (frame, DestDefaults.Highlight | DestDefaults.Motion, new TargetEntry [] { Banshee.Gui.DragDrop.DragDropTarget.UriList }, Gdk.DragAction.Default); frame.DragDataReceived += delegate(object o, DragDataReceivedArgs args) { }; }*/ page.Widget.Show (); notebook.AppendPage (frame, null); pane_pages[page] = frame; // Setup the tab-like button that switches the notebook to this page var tab_image = new Image (IconThemeUtils.LoadIcon (22, page.IconNames)); var toggle_button = new RadioButton (radio_group) { Child = tab_image, DrawIndicator = false, Relief = ReliefStyle.None }; TooltipSetter.Set (tooltip_host, toggle_button, page.Name); toggle_button.Clicked += (s, e) => { if (pane_pages.ContainsKey (page)) { if (page.State == ContextState.Loaded) { notebook.CurrentPage = notebook.PageNum (pane_pages[page]); } SetActivePage (page); } }; toggle_button.ShowAll (); vbox.PackStart (toggle_button, false, false, 0); pane_tabs[page] = toggle_button; pages.Add (page); if (initialized && pages.Count == 1) { SetActivePage (page); toggle_button.Active = true; } UpdateVisibility (); }
private void SetActivePage (BaseContextPage page) { if (page == null || page == active_page) return; if (active_page != null) active_page.StateChanged -= OnActivePageStateChanged; active_page = page; active_page.StateChanged += OnActivePageStateChanged; LastContextPageSchema.Set (page.Id); OnActivePageStateChanged (active_page.State); SetCurrentTrackForActivePage (); }