protected bool ShowModalWindow(IPanel panel, IPanel parent) { var dialog = panel as Gtk.Dialog; if (dialog != null) { dialog.TransientFor = ((Bin)parent).Toplevel as Window; dialog.Response += HandleModalWindowResponse; dialog.Center(); panel.OnLoad(); } else { ExternalWindow modalWindow = new ExternalWindow(); modalWindow.Resizable = false; modalWindow.DefaultWidth = (panel as Gtk.Bin).WidthRequest; modalWindow.DefaultHeight = (panel as Gtk.Bin).HeightRequest; modalWindow.Title = panel.Title; modalWindow.Modal = true; modalWindow.TransientFor = ((Bin)parent).Toplevel as Window; modalWindow.DeleteEvent += HandleModalWindowDeleteEvent; Widget widget = panel as Gtk.Widget; modalWindow.Add(widget); modalWindow.SetPosition(WindowPosition.CenterOnParent); modalWindow.ShowAll(); panel.OnLoad(); } return(true); }
Notebook CreateNewWindow(Notebook source, Widget page, int x, int y) { ExternalWindow window; EventBox box; Notebook notebook; window = new ExternalWindow(); if (page == timeline) { window.Title = Catalog.GetString("Timeline"); } else if (page == dashboardhpaned) { window.Title = Catalog.GetString("Analysis dashboard"); } else if (page == playspositionviewer1) { window.Title = Catalog.GetString("Zonal tags viewer"); } notebook = new Notebook(); notebook.ShowTabs = false; notebook.CanFocus = false; //notebook.Group = source.Group; window.Add(notebook); window.SetDefaultSize(page.Allocation.Width, page.Allocation.Height); window.Move(x, y); window.ShowAll(); activeWindows.Add(window); window.DeleteEvent += (o, args) => { Widget pa = notebook.CurrentPageWidget; activeWindows.Remove(window); notebook.Remove(pa); source.AppendPage(pa, null); SetTabProps(pa, source.NPages == 0); notebook.Destroy(); }; return(notebook); }