Пример #1
0
        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();
        }
Пример #2
0
        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();
        }
Пример #3
0
        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();
        }
Пример #4
0
        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 ();
        }
Пример #5
0
        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 ();
        }
Пример #6
0
        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 ();
        }