Exemple #1
0
        public CreateModsTabControl()
        {
            ViewModel = WpfFactory.CreateViewModel <CreateModsTabControlModel>();

            InitializeComponent();

            var projectsTab = WpfFactory.CreateControl <ProjectsTabControl>();

            projectsTab.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            projectsTab.VerticalAlignment   = System.Windows.VerticalAlignment.Stretch;
            ProjectsTab.Content             = projectsTab;

            var guidsTab = WpfFactory.CreateControl <GuidsTabControl>();

            guidsTab.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            guidsTab.VerticalAlignment   = System.Windows.VerticalAlignment.Stretch;
            GUIDsTab.Content             = guidsTab;

            this.WhenActivated(d => {
                TabSelector
                .Events()
                .SelectionChanged
                .Select(o => o.Source as TabControl)
                .WhereNotNull()
                .Select(tabSelector => tabSelector.SelectedIndex)
                .InvokeCommand(ViewModel.SetSelectedTabCommand);
            });
        }
Exemple #2
0
        public AboutTabControl()
        {
            ViewModel = WpfFactory.CreateViewModel <AboutTabControlModel>();

            InitializeComponent();

            this.WhenActivated(d =>
            {
                ViewModel
                .WhenAnyValue(vm => vm.AboutMd)
                .ObserveOn(Dispatcher)
                .Subscribe(aboutMd =>
                {
                    MdPanel.Children.Clear();

                    /*var mrkDown = new Markdown.Xaml.Markdown();
                     * var mdDocument = mrkDown.Transform(aboutMd);
                     *
                     * var mdViewer = new FlowDocumentScrollViewer();
                     * mdViewer.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
                     * mdViewer.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
                     * mdViewer.Margin = new System.Windows.Thickness(5);
                     * mdViewer.Document = mdDocument;
                     * mdViewer.Zoom = 80.0d;*/

                    var mdViewer      = new MdXaml.MarkdownScrollViewer();
                    mdViewer.Markdown = aboutMd;

                    MdPanel.Children.Add(mdViewer);
                });
            });
        }
Exemple #3
0
        public override void ConfigureServices(IContainer services)
        {
            var formFactory = new DiIWpfFactory(services);

            WpfFactory.Use(formFactory);

            _appThread = new Thread(() =>
            {
                _app = new HMTApp
                {
                    ShutdownMode = ShutdownMode.OnExplicitShutdown
                };

                _splashView = WpfFactory.CreateWindow <SplashView>();
                MainForm    = WpfFactory.CreateWindow <ApplicationView>();

                _app.StartApp();
            })
            {
                IsBackground = true,
                Priority     = ThreadPriority.Normal
            };
            _appThread.SetApartmentState(ApartmentState.STA);
            _appThread.Start();

            while (MainForm == null)
            {
                Thread.Yield();
            }
        }
        public ModSegmentControl()
        {
            ViewModel = WpfFactory.CreateViewModel <ModSegmentControlModel>();

            InitializeComponent();

            this.WhenActivated((d) =>
            {
                ViewModel
                .WhenAnyValue(vm => vm.CanDownload)
                .ObserveOn(Dispatcher)
                .BindTo(this, v => v.DownloadMod.IsEnabled)
                .DisposeWith(d);

                ViewModel
                .WhenAnyValue(vm => vm.CanRemove)
                .ObserveOn(Dispatcher)
                .BindTo(this, v => v.RemoveMod.IsEnabled)
                .DisposeWith(d);

                this
                .OneWayBind(ViewModel, vm => vm.Name, v => v.ModNameLabel.Text)
                .DisposeWith(d);
                this
                .OneWayBind(ViewModel, vm => vm.Author, v => v.ModAuthorLabel.Text)
                .DisposeWith(d);
                this
                .OneWayBind(ViewModel, vm => vm.Description, v => v.ModDescriptionLabel.Text)
                .DisposeWith(d);

                this
                .OneWayBind(ViewModel, vm => vm.RibbonText, v => v.RibbonPanel.Visibility, ribbonText => string.IsNullOrWhiteSpace(ribbonText.Trim()) ? System.Windows.Visibility.Hidden : System.Windows.Visibility.Visible)
                .DisposeWith(d);

                this
                .OneWayBind(ViewModel, vm => vm.RibbonColor, v => v.RibbonPanel.Background, ribbonColor => Utilities.GetColorFromBridgepourRibbonColor(ribbonColor))
                .DisposeWith(d);

                this
                .OneWayBind(ViewModel, vm => vm.RibbonText, v => v.RibbonLabel.Text)
                .DisposeWith(d);

                DownloadMod
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.DownloadModCommand)
                .DisposeWith(d);

                RemoveMod
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.RemoveModCommand)
                .DisposeWith(d);
            });
        }
        public ApplicationView()
        {
            ViewModel = WpfFactory.CreateViewModel <ApplicationViewModel>();

            InitializeComponent();

            var installModsTab = WpfFactory.CreateControl <InstallModsTabControl>();

            installModsTab.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            installModsTab.VerticalAlignment   = System.Windows.VerticalAlignment.Stretch;
            InstallModsTab.Content             = installModsTab;

            var createModsTab = WpfFactory.CreateControl <CreateModsTabControl>();

            createModsTab.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            createModsTab.VerticalAlignment   = System.Windows.VerticalAlignment.Stretch;
            CreateModsTab.Content             = createModsTab;

            var aboutTab = WpfFactory.CreateControl <AboutTabControl>();

            aboutTab.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            aboutTab.VerticalAlignment   = System.Windows.VerticalAlignment.Stretch;
            AboutTab.Content             = aboutTab;

            this.WhenActivated((d) => {
                TabSelector
                .Events()
                .SelectionChanged
                .Select(o => o.Source as TabControl)
                .WhereNotNull()
                .Select(tabSelector => tabSelector.SelectedIndex)
                .InvokeCommand(ViewModel.SetSelectedTabCommand);

                ViewModel
                .ObservableForProperty(vm => vm.InInstallModsTab)
                .Select(o => o.GetValue())
                .Subscribe((inInstallTab) =>
                {
                    if (inInstallTab && !wasInInstallTab)
                    {
                        Height          = 720;
                        Width           = 1006;
                        ResizeMode      = System.Windows.ResizeMode.NoResize;
                        wasInInstallTab = true;
                    }
                    else
                    {
                        ResizeMode      = System.Windows.ResizeMode.CanResizeWithGrip;
                        wasInInstallTab = false;
                    }
                });
            });
        }
Exemple #6
0
        public SplashView()
        {
            ViewModel = WpfFactory.CreateViewModel <SplashViewModel>();

            InitializeComponent();

            this.WhenActivated((d) =>
            {
                ViewModel
                .ObservableForProperty(vm => vm.AppLoadStage)
                .Select(o => o.GetValue())
                .Select(state => state switch
                {
                    AppLoadStage.Preload => "App Loading",
                    AppLoadStage.Load => "App Starting",
                    _ => throw new ArgumentOutOfRangeException("Invalid App State")
                })
                .BindTo(this, v => v.AppLoadingStateLabel.Text)
                .DisposeWith(d);
            });
        public GuidsTabControl()
        {
            ViewModel = WpfFactory.CreateViewModel <GuidsTabControlModel>();

            InitializeComponent();

            this.WhenActivated(d =>
            {
                SaveGuidsBtn
                .Events()
                .Click
                .Select(_ => Unit.Default)
                .InvokeCommand(ViewModel.SaveGuidsCommand)
                .DisposeWith(d);

                AddGuidBtn
                .Events()
                .Click
                .Select(_ => Unit.Default)
                .InvokeCommand(ViewModel.AddGuidCommand)
                .DisposeWith(d);

                RemoveGuidBtn
                .Events()
                .Click
                .Select(_ => Unit.Default)
                .InvokeCommand(ViewModel.RemoveGuidCommand)
                .DisposeWith(d);
            });

            GuidDataGrid.ItemsSource       = ViewModel.GuidList;
            GuidDataGrid.SelectionChanged += (_, _) =>
            {
                ViewModel.SelectedItem = GuidDataGrid.SelectedItem as GuidTableRowItem;
            };
        }
Exemple #8
0
        public ProjectsTabControl()
        {
            ViewModel = WpfFactory.CreateViewModel <ProjectsTabControlModel>();
            ViewModel.OnAssetsUpdate += () =>
            {
                Dispatcher.Invoke(() =>
                {
                    RenderFiles(ViewModel.SelectedProject);
                });
            };

            InitializeComponent();

            this.WhenActivated(d =>
            {
                RefreshBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.RefreshCommand)
                .DisposeWith(d);

                AddProjectBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.AddProjectCommand)
                .DisposeWith(d);

                StageBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.StageCommand)
                .DisposeWith(d);

                PackageBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.PackageCommand)
                .DisposeWith(d);

                CopyModBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.CopyModCommand)
                .DisposeWith(d);

                LaunchGameBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.StartGameCommand)
                .DisposeWith(d);

                DevExpressBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.DevExpressCommand)
                .DisposeWith(d);

                /*GameVersionSelectorCombo
                 *  .Events()
                 *  .SelectionChanged
                 *  .Select(e => e.Source as ComboBox)
                 *  .Select(c => c.SelectedIndex)
                 *  .InvokeCommand(ViewModel.SetGameVersionCommand)
                 *  .DisposeWith(d);*/

                /*ViewModel
                 *  .WhenAnyValue(vm => vm.SelectedGame)
                 *  .Select(gameVersion => (int)gameVersion)
                 *  .BindTo(this, v => v.GameVersionSelectorCombo.SelectedIndex)
                 *  .DisposeWith(d);*/

                ProjectsList
                .Events()
                .SelectionChanged
                .Select(e => ((ListItem <Guid, string>?)ProjectsList.SelectedItem)?.Key)
                .WhereNotNull()
                .BindTo(ViewModel, vm => vm.SelectedProject)
                .DisposeWith(d);

                ViewModel
                .WhenAnyValue(vm => vm.SelectedProject)
                .WhereNotNull()
                .Where(v => v != Guid.Empty)
                .Subscribe(RenderFiles)
                .DisposeWith(d);

                ViewModel
                .WhenAnyValue(vm => vm.ProjectList)
                .Select(list => list
                        .ToList()
                        .Select(project => new ListItem <Guid, string>(project.Id, project.Name)))
                .Subscribe(items => {
                    ProjectsList.Dispatcher.InvokeAsync(() => {
                        ProjectsList.ItemsSource = items;

                        if (items.Any() && ViewModel.SelectedProject == Guid.Empty)
                        {
                            ProjectsList.SelectedIndex = 0;
                        }
                    });
                })
                .DisposeWith(d);

                TreeViewAddContextBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.AddProjectFilesCommand)
                .DisposeWith(d);

                TreeViewDeleteContextBtn
                .Events()
                .Click
                .Select(e =>
                {
                    var selectedItems = FilesTreeView.SelectedItems
                                        .Cast <FileTreeViewNode>()
                                        .ToList();

                    return(selectedItems
                           .Select(item => item.FileId)
                           .ToList() as IReadOnlyCollection <Guid>);
                })
                .InvokeCommand(ViewModel.DeleteAssetsCommand)
                .DisposeWith(d);

                ListBoxDeleteContextBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.DeleteProjectCommand)
                .DisposeWith(d);

                ListBoxEditContextBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.EditProjectCommand)
                .DisposeWith(d);
            });

            FilesTreeView.SelectedItemChanged += FilesTreeView_SelectedItemChanged;
            FilesTreeView.Focusable            = true;
        }
Exemple #9
0
        public InstallModsTabControl()
        {
            ViewModel = WpfFactory.CreateViewModel <InstallModsTabControlModel>();

            InitializeComponent();

            this.WhenActivated(d => {
                RefreshBtn
                .Events()
                .Click
                .Select(_ => Unit.Default)
                .InvokeCommand(ViewModel !.RefreshCommand)
                .DisposeWith(d);

                ClearModsBtn
                .Events()
                .Click
                .Select(_ => Unit.Default)
                .InvokeCommand(ViewModel !.ClearModsCommand)
                .DisposeWith(d);

                OpenFolderBtn
                .Events()
                .Click
                .Select(_ => Unit.Default)
                .InvokeCommand(ViewModel !.OpenModsFolderCommand)
                .DisposeWith(d);

                ViewModel
                .WhenAnyValue(vm => vm.SecondsTillRefresh)
                .ObserveOn(Dispatcher)
                .Select(seconds => seconds > 0 ? $"Refresh ({seconds})" : "Refresh")
                .BindTo(this, v => v.RefreshBtn.Header)
                .DisposeWith(d);

                ViewModel
                .WhenAnyValue(vm => vm.SecondsTillRefresh)
                .ObserveOn(Dispatcher)
                .Select(seconds => seconds == 0)
                .BindTo(this, v => v.RefreshBtn.IsEnabled)
                .DisposeWith(d);

                ViewModel
                .WhenAnyValue(vm => vm.ModList)
                .ObserveOn(Dispatcher)
                .Subscribe(mods => {
                    var modSegments = mods
                                      .Select(mod => {
                        var modSegment = WpfFactory.CreateControl <ModSegmentControl>();
                        modSegment.SetModDetails(mod);
                        ViewModel.ModsCleared += modSegment.UpdateState;

                        return(modSegment);
                    });

                    ModListPanel.Dispatcher.Invoke(() =>
                    {
                        ModListPanel.Children.Clear();

                        foreach (var modSegment in modSegments)
                        {
                            ModListPanel.Children.Add(modSegment);
                        }
                    });
                })
                .DisposeWith(d);
            });
        }
Exemple #10
0
        public EditProjectView()
        {
            ViewModel = WpfFactory.CreateViewModel <EditProjectViewModel>();
            ViewModel.OnRequestClose += () =>
            {
                Dispatcher.Invoke(Close);
            };

            InitializeComponent();

            this.WhenActivated(d =>
            {
                ViewModel
                .WhenAnyValue(vm => vm.ProjectName)
                .Subscribe(projectName =>
                {
                    var isNewProject = ViewModel.ProjectId == Guid.Empty;

                    Title = $"{(isNewProject ? "New" : "Edit")} Project {projectName}";
                })
                .DisposeWith(d);

                this
                .Bind(ViewModel, vm => vm.ProjectName, v => v.ProjectNameTextBox.Text);
                this
                .Bind(ViewModel, vm => vm.ProjectIndex, v => v.ModIndexTextBox.Text);
                this
                .Bind(ViewModel, vm => vm.CookedAssetsDir, v => v.CookedAssetsDirTextBox.Text);
                this
                .Bind(ViewModel, vm => vm.DistDir, v => v.OutputDirTextBox.Text);

                CancelBtn
                .Events()
                .Click
                .Subscribe(e =>
                {
                    Close();
                })
                .DisposeWith(d);

                SaveBtn
                .Events()
                .Click
                .Select(e => Unit.Default)
                .InvokeCommand(ViewModel.SaveProjectInfoCommand)
                .DisposeWith(d);

                SelectCookedAssetsDirBtn
                .Events()
                .Click
                .Select(e => SelectDirMode.SelectCookedAssetsDir)
                .InvokeCommand(ViewModel.SelectAssetsDirCommand)
                .DisposeWith(d);

                SelectOutputDirBtn
                .Events()
                .Click
                .Select(e => SelectDirMode.SelectOutputDir)
                .InvokeCommand(ViewModel.SelectAssetsDirCommand)
                .DisposeWith(d);
            });
        }