示例#1
0
        private void BuildNotebook()
        {
            notebook = new Notebook();
            notebook.Show();

            foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes("/Banshee/Gui/TrackEditor/NotebookPage"))
            {
                try {
                    ITrackEditorPage page = (ITrackEditorPage)node.CreateInstance();
                    if ((mode == EditorMode.Edit && (page.PageType == PageType.Edit || page.PageType == PageType.View)) ||
                        (mode == EditorMode.View && (page.PageType == PageType.View || page.PageType == PageType.ViewOnly)))
                    {
                        pages.Add(page);
                        page.Initialize(this);
                        page.Widget.Show();
                    }
                } catch (Exception e) {
                    Hyena.Log.Exception("Failed to initialize NotebookPage extension node. Ensure it implements ITrackEditorPage.", e);
                }
            }

            pages.Sort(delegate(ITrackEditorPage a, ITrackEditorPage b) { return(a.Order.CompareTo(b.Order)); });
            foreach (ITrackEditorPage page in pages)
            {
                Container container = page.Widget as Container;
                if (container == null)
                {
                    VBox box = new VBox();
                    box.PackStart(page.Widget, true, true, 0);
                    container = box;
                }
                container.BorderWidth = 12;
                notebook.AppendPage(container, page.TabWidget == null ? new Label(page.Title) : page.TabWidget);
            }

            main_vbox.PackStart(notebook, true, true, 0);
        }
示例#2
0
        private void BuildNotebook()
        {
            notebook            = new Notebook();
            notebook.Scrollable = true;
            notebook.Show();

            Gtk.Widget page_to_focus = null;
            foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes("/Banshee/Gui/TrackEditor/NotebookPage"))
            {
                try {
                    ITrackEditorPage page = (ITrackEditorPage)node.CreateInstance();
                    bool             show = false;
                    if (mode == EditorMode.Edit && (page.PageType != PageType.ViewOnly))
                    {
                        show = true;
                    }
                    else if (mode == EditorMode.View)
                    {
                        if (readonly_tabs)
                        {
                            show = page.PageType != PageType.EditOnly;
                        }
                        else
                        {
                            show = page.PageType == PageType.View || page.PageType == PageType.ViewOnly;
                        }
                    }
                    if (show)
                    {
                        if (page is StatisticsPage && mode == EditorMode.View)
                        {
                            page_to_focus = (StatisticsPage)page;
                        }
                        pages.Add(page);
                        page.Initialize(this);
                        page.Widget.Show();
                    }
                } catch (Exception e) {
                    Hyena.Log.Exception("Failed to initialize NotebookPage extension node. Ensure it implements ITrackEditorPage.", e);
                }
            }

            pages.Sort(delegate(ITrackEditorPage a, ITrackEditorPage b) { return(a.Order.CompareTo(b.Order)); });
            foreach (ITrackEditorPage page in pages)
            {
                Container container = page.Widget as Container;
                if (container == null)
                {
                    VBox box = new VBox();
                    box.PackStart(page.Widget, true, true, 0);
                    container = box;
                }
                container.BorderWidth = 12;
                notebook.AppendPage(container, page.TabWidget == null ? new Label(page.Title) : page.TabWidget);
            }

            main_vbox.PackStart(notebook, true, true, 0);
            if (page_to_focus != null)
            {
                notebook.CurrentPage = notebook.PageNum(page_to_focus);
            }
        }