port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using Intromat.ViewModels;
namespace Intromat.Views
{
public enum ESupportedFileTypes
{
Network,
Shader
}
/// <summary>
/// Interaction logic for NewFileWindow.xaml
/// </summary>
public partial class NewFileWindow
{
public NewFileWindow()
{
InitializeComponent();
Type.SelectedItem = ESupportedFileTypes.Network;
}
public Func<FileViewModel>? Result { get; set; }
public static Func<FileViewModel>? Show(Window? owner, MainViewModel mainVm, string? defaultValue = null)
{
var window = new NewFileWindow
{
MainViewModel = mainVm,
Owner = owner
};
if (defaultValue != null)
window.FileName.Text = defaultValue;
window.FileName.SelectAll();
window.FileName.Focus();
window.UpdateResult();
return window.ShowDialog() == true ? window.Result : null;
}
public MainViewModel? MainViewModel { get; set; }
private void Type_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
UpdateResult();
}
private void Name_OnTextChanged(object sender, TextChangedEventArgs e)
{
UpdateResult();
}
private void UpdateResult()
{
if (MainViewModel == null)
return;
var module = MainViewModel.Explorer.CurrentModule!;
var parent = MainViewModel.Explorer.CurrentFolder!;
Result = (ESupportedFileTypes)Type.SelectedItem switch
{
ESupportedFileTypes.Network => () => new DocumentViewModel(MainViewModel, module, parent, FileName.Text),
ESupportedFileTypes.Shader => () => new ShaderFileViewModel(MainViewModel, module, parent, FileName.Text),
_ => throw new NotImplementedException()
};
}
private void ButtonOK_OnClick(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
private void ButtonCancel_OnClick(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
private void NewFileWindow_OnClosing(object sender, CancelEventArgs e)
{
if (DialogResult != true)
Result = null;
}
}
}