コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        public Widget Resolve(ViewModelBase viewModel)
        {
            foreach (var rule in registeredViews)
            {
                if (rule.IsMath(viewModel))
                {
                    return(rule.CreateView(viewModel));
                }
            }

            return(nextResolver.Resolve(viewModel));
        }
コード例 #4
0
        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
        }