protected override void OpenPage(IPage masterPage, IPage page)
        {
            //FIXME Временное решение пока не выпилим TDi, и реализуем заполнение этого через конструктор.
            page.ViewModel.NavigationManager = this;
            pages.Add(page);
            var gtkPage = (IGtkWindowPage)page;
            WindowDialogViewModelBase viewModel = (WindowDialogViewModelBase)page.ViewModel;
            var gtkMasterPage = (IGtkWindowPage)masterPage;

            gtkPage.GtkView = viewResolver.Resolve(page.ViewModel);
            if (gtkPage.GtkView == null)
            {
                throw new InvalidOperationException($"View для {page.ViewModel.GetType()} не создано через {viewResolver.GetType()}.");
            }
            gtkPage.GtkDialog = new Gtk.Dialog(gtkPage.ViewModel.Title,
                                               viewModel.IsModal ? gtkMasterPage?.GtkDialog : null,
                                               viewModel.IsModal ? DialogFlags.Modal : DialogFlags.DestroyWithParent);
            var defaultsize = gtkPage.GtkView.GetType().GetAttribute <WindowSizeAttribute>(true);

            gtkPage.GtkDialog.SetDefaultSize(defaultsize?.DefaultWidth ?? gtkPage.GtkView.WidthRequest, defaultsize?.DefaultHeight ?? gtkPage.GtkView.WidthRequest);
            gtkPage.GtkDialog.VBox.Add(gtkPage.GtkView);
            if (viewModel.EnableMinimizeMaximize)
            {
                gtkPage.GtkDialog.TypeHint = Gdk.WindowTypeHint.Normal;
            }
            gtkPage.GtkView.Show();
            gtkPage.GtkDialog.Show();
            gtkPage.GtkDialog.DeleteEvent     += GtkDialog_DeleteEvent;
            gtkPage.ViewModel.PropertyChanged += (sender, e) => gtkPage.GtkDialog.Title = gtkPage.ViewModel.Title;
        }
Ejemplo n.º 2
0
        protected void OpenWindowPage(IPage page)
        {
            var gtkPage = (IGtkWindowPage)page;
            WindowDialogViewModelBase viewModel = (WindowDialogViewModelBase)page.ViewModel;

            gtkPage.GtkView = viewResolver.Resolve(viewModel);
            if (gtkPage.GtkView == null)
            {
                throw new InvalidOperationException($"View для {page.ViewModel.GetType()} не создано через {viewResolver.GetType()}.");
            }
            gtkPage.GtkDialog = new Gtk.Dialog(gtkPage.ViewModel.Title,
                                               viewModel.IsModal ? tdiNotebook.Toplevel as Window : null,
                                               viewModel.IsModal ? DialogFlags.Modal : DialogFlags.DestroyWithParent);
            var defaultsize = gtkPage.GtkView.GetType().GetAttribute <WindowSizeAttribute>(true);

            gtkPage.GtkDialog.SetDefaultSize(defaultsize?.DefaultWidth ?? gtkPage.GtkView.WidthRequest, defaultsize?.DefaultHeight ?? gtkPage.GtkView.WidthRequest);
            gtkPage.GtkDialog.VBox.Add(gtkPage.GtkView);
            if (viewModel.EnableMinimizeMaximize)
            {
                gtkPage.GtkDialog.TypeHint = Gdk.WindowTypeHint.Normal;
            }
            gtkPage.GtkView.Show();
            gtkPage.GtkDialog.Show();
            MoveWindow(gtkPage.GtkDialog, viewModel.WindowPosition);
            gtkPage.GtkDialog.DeleteEvent     += GtkDialog_DeleteEvent;
            gtkPage.ViewModel.PropertyChanged += (sender, e) => gtkPage.GtkDialog.Title = gtkPage.ViewModel.Title;
        }