protected void OpenWindowPage(IPage page) { var gtkPage = (IGtkWindowPage)page; IWindowDialogSettings windowSettings = (IWindowDialogSettings)page.ViewModel; 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, windowSettings.IsModal ? tdiNotebook.Toplevel as Window : null, windowSettings.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 (windowSettings.EnableMinimizeMaximize) { gtkPage.GtkDialog.TypeHint = Gdk.WindowTypeHint.Normal; } gtkPage.GtkView.Show(); gtkPage.GtkDialog.Show(); MoveWindow(gtkPage.GtkDialog, windowSettings.WindowPosition); gtkPage.GtkDialog.DeleteEvent += GtkDialog_DeleteEvent; gtkPage.ViewModel.PropertyChanged += (sender, e) => gtkPage.GtkDialog.Title = gtkPage.ViewModel.Title; }
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; }
public Widget Resolve(ViewModelBase viewModel) { foreach (var rule in registeredViews) { if (rule.IsMath(viewModel)) { return(rule.CreateView(viewModel)); } } return(nextResolver.Resolve(viewModel)); }
public ExcelImportView(ExcelImportViewModel viewModel, IGtkViewResolver viewResolver) : base(viewModel) { Build(); #region Общее notebookSteps.ShowTabs = false; notebookSteps.Binding .AddBinding(viewModel, v => v.CurrentStep, w => w.CurrentPage) .InitializeFromSource(); treeviewRows.EnableGridLines = TreeViewGridLines.Both; treeviewRows.Binding.AddBinding(viewModel.ImportModel, v => v.DisplayRows, w => w.ItemsDataSource); treeviewRows.ButtonReleaseEvent += TreeviewRows_ButtonReleaseEvent; viewModel.ImportModel.PropertyChanged += IImportModel_PropertyChanged; #endregion #region Шаг 1 filechooser.Binding.AddBinding(viewModel, v => v.FileName, w => w.Filename); var Filter = new FileFilter(); Filter.AddPattern("*.xls"); Filter.AddPattern("*.xlsx"); Filter.Name = "Excel"; filechooser.AddFilter(Filter); comboSheets.SetRenderTextFunc <ImportedSheet>(x => x.Title); comboSheets.Binding.AddSource(viewModel) .AddBinding(v => v.Sheets, w => w.ItemsList) .AddBinding(v => v.SelectedSheet, w => w.SelectedItem); buttonLoad.Binding .AddBinding(viewModel, v => v.SensitiveSecondStepButton, w => w.Sensitive) .InitializeFromSource(); #endregion #region Шаг 2 spinTitleRow.Binding .AddBinding(ViewModel.ImportModel, v => v.HeaderRow, w => w.ValueAsInt) .AddBinding(ViewModel, v => v.RowsCount, w => w.Adjustment.Upper) .InitializeFromSource(); buttonReadEmployees.Binding .AddBinding(viewModel, v => v.SensitiveThirdStepButton, w => w.Sensitive) .InitializeFromSource(); labelColumnRecomendations.LabelProp = ViewModel.ImportModel.DataColumnsRecommendations; if (viewModel.ImportModel.MatchSettingsViewModel != null) { var settingsView = viewResolver.Resolve(viewModel.ImportModel.MatchSettingsViewModel); tableMatchSettings.Attach(settingsView, 0, 2, 1, 2); settingsView.Show(); } #endregion #region Шаг 3 var countersView = new CountersView(ViewModel.CountersViewModel); vboxCounters.PackStart(countersView, false, true, 2); countersView.Visible = true; eventboxLegendaNew.ModifyBg(StateType.Normal, ColorUtil.Create(ExcelImportViewModel.ColorOfNew)); eventboxLegendaChanged.ModifyBg(StateType.Normal, ColorUtil.Create(ExcelImportViewModel.ColorOfChanged)); eventboxLegendaNotFound.ModifyBg(StateType.Normal, ColorUtil.Create(ExcelImportViewModel.ColorOfNotFound)); eventboxLegendaError.ModifyBg(StateType.Normal, ColorUtil.Create(ExcelImportViewModel.ColorOfError)); eventboxLegendaSkipRows.ModifyBg(StateType.Normal, ColorUtil.Create(ExcelImportViewModel.ColorOfSkipped)); buttonSave.Binding .AddBinding(ViewModel, v => v.SensitiveSaveButton, w => w.Sensitive) .InitializeFromSource(); ViewModel.ProgressStep = progressTotal; #endregion }