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); }); }
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); }); }); }
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; } }); }); }
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; }; }
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; }
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); }); }
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); }); }