ui(manager): search for DataGrid

This commit is contained in:
Pascal
2025-11-19 07:21:19 +01:00
parent 2cbe25e0f8
commit e57d2316de
6 changed files with 445 additions and 262 deletions

View File

@@ -11,32 +11,46 @@ namespace ModpackUpdater.Apps.Manager.LangRes {
using System;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class GeneralLangRes {
private static System.Resources.ResourceManager resourceMan;
private static global::System.Resources.ResourceManager resourceMan;
private static System.Globalization.CultureInfo resourceCulture;
private static global::System.Globalization.CultureInfo resourceCulture;
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal GeneralLangRes() {
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
public static System.Resources.ResourceManager ResourceManager {
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ModpackUpdater.Apps.Manager.LangRes.GeneralLangRes", typeof(GeneralLangRes).Assembly);
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ModpackUpdater.Apps.Manager.LangRes.GeneralLangRes", typeof(GeneralLangRes).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
public static System.Globalization.CultureInfo Culture {
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
@@ -45,274 +59,418 @@ namespace ModpackUpdater.Apps.Manager.LangRes {
}
}
public static string ModlistForVersionX {
get {
return ResourceManager.GetString("ModlistForVersionX", resourceCulture);
}
}
public static string GitLabInstanceUrl {
get {
return ResourceManager.GetString("GitLabInstanceUrl", resourceCulture);
}
}
public static string GitLabApiToken {
get {
return ResourceManager.GetString("GitLabApiToken", resourceCulture);
}
}
public static string RepositoryId {
get {
return ResourceManager.GetString("RepositoryId", resourceCulture);
}
}
public static string RootFolderPath {
get {
return ResourceManager.GetString("RootFolderPath", resourceCulture);
}
}
public static string FileLocationOfInstallJson {
get {
return ResourceManager.GetString("FileLocationOfInstallJson", resourceCulture);
}
}
public static string FileLocationOfUpdateJson {
get {
return ResourceManager.GetString("FileLocationOfUpdateJson", resourceCulture);
}
}
public static string ModpackConfigUrl {
get {
return ResourceManager.GetString("ModpackConfigUrl", resourceCulture);
}
}
public static string Remove {
get {
return ResourceManager.GetString("Remove", resourceCulture);
}
}
public static string WorkspacePreferences {
get {
return ResourceManager.GetString("WorkspacePreferences", resourceCulture);
}
}
public static string SaveWorkspace {
get {
return ResourceManager.GetString("SaveWorkspace", resourceCulture);
}
}
public static string NewWorkspace {
get {
return ResourceManager.GetString("NewWorkspace", resourceCulture);
}
}
public static string RecentWorkspaces {
get {
return ResourceManager.GetString("RecentWorkspaces", resourceCulture);
}
}
public static string Workspace {
get {
return ResourceManager.GetString("Workspace", resourceCulture);
}
}
public static string CreateUpdate {
get {
return ResourceManager.GetString("CreateUpdate", resourceCulture);
}
}
public static string RemoveUpdate {
get {
return ResourceManager.GetString("RemoveUpdate", resourceCulture);
}
}
public static string Update {
get {
return ResourceManager.GetString("Update", resourceCulture);
}
}
public static string Tools {
get {
return ResourceManager.GetString("Tools", resourceCulture);
}
}
public static string Updates {
get {
return ResourceManager.GetString("Updates", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Add.
/// </summary>
public static string Add {
get {
return ResourceManager.GetString("Add", resourceCulture);
}
}
public static string Public {
/// <summary>
/// Looks up a localized string similar to Create update.
/// </summary>
public static string CreateUpdate {
get {
return ResourceManager.GetString("Public", resourceCulture);
}
}
public static string Id {
get {
return ResourceManager.GetString("Id", resourceCulture);
}
}
public static string Side {
get {
return ResourceManager.GetString("Side", resourceCulture);
}
}
public static string UpdateType {
get {
return ResourceManager.GetString("UpdateType", resourceCulture);
}
}
public static string SourceType {
get {
return ResourceManager.GetString("SourceType", resourceCulture);
}
}
public static string DestinationPath {
get {
return ResourceManager.GetString("DestinationPath", resourceCulture);
}
}
public static string State {
get {
return ResourceManager.GetString("State", resourceCulture);
}
}
public static string InheritFrom {
get {
return ResourceManager.GetString("InheritFrom", resourceCulture);
}
}
public static string SourcePath {
get {
return ResourceManager.GetString("SourcePath", resourceCulture);
}
}
public static string IsDirectory {
get {
return ResourceManager.GetString("IsDirectory", resourceCulture);
}
}
public static string General {
get {
return ResourceManager.GetString("General", resourceCulture);
}
}
public static string Name {
get {
return ResourceManager.GetString("Name", resourceCulture);
}
}
public static string IsExtra {
get {
return ResourceManager.GetString("IsExtra", resourceCulture);
return ResourceManager.GetString("CreateUpdate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Destination.
/// </summary>
public static string Destination {
get {
return ResourceManager.GetString("Destination", resourceCulture);
}
}
public static string Source {
/// <summary>
/// Looks up a localized string similar to Destination path.
/// </summary>
public static string DestinationPath {
get {
return ResourceManager.GetString("Source", resourceCulture);
return ResourceManager.GetString("DestinationPath", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to File location of &quot;install.json&quot;.
/// </summary>
public static string FileLocationOfInstallJson {
get {
return ResourceManager.GetString("FileLocationOfInstallJson", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to File location of &quot;update.json&quot;.
/// </summary>
public static string FileLocationOfUpdateJson {
get {
return ResourceManager.GetString("FileLocationOfUpdateJson", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to General.
/// </summary>
public static string General {
get {
return ResourceManager.GetString("General", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to GitLab Api token.
/// </summary>
public static string GitLabApiToken {
get {
return ResourceManager.GetString("GitLabApiToken", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to GitLab instance url.
/// </summary>
public static string GitLabInstanceUrl {
get {
return ResourceManager.GetString("GitLabInstanceUrl", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Id.
/// </summary>
public static string Id {
get {
return ResourceManager.GetString("Id", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Inherit from.
/// </summary>
public static string InheritFrom {
get {
return ResourceManager.GetString("InheritFrom", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Is directory.
/// </summary>
public static string IsDirectory {
get {
return ResourceManager.GetString("IsDirectory", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Is extra.
/// </summary>
public static string IsExtra {
get {
return ResourceManager.GetString("IsExtra", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Is Zip archive.
/// </summary>
public static string IsZipArchive {
get {
return ResourceManager.GetString("IsZipArchive", resourceCulture);
}
}
public static string SourceOwner {
get {
return ResourceManager.GetString("SourceOwner", resourceCulture);
}
}
public static string SourceName {
get {
return ResourceManager.GetString("SourceName", resourceCulture);
}
}
public static string SourceRegex {
get {
return ResourceManager.GetString("SourceRegex", resourceCulture);
}
}
public static string SourceUrl {
get {
return ResourceManager.GetString("SourceUrl", resourceCulture);
}
}
public static string ZipArchivePath {
get {
return ResourceManager.GetString("ZipArchivePath", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Metadata.
/// </summary>
public static string Metadata {
get {
return ResourceManager.GetString("Metadata", resourceCulture);
}
}
public static string Website {
/// <summary>
/// Looks up a localized string similar to Modlist for v{0}.
/// </summary>
public static string ModlistForVersionX {
get {
return ResourceManager.GetString("Website", resourceCulture);
return ResourceManager.GetString("ModlistForVersionX", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Modpack config url.
/// </summary>
public static string ModpackConfigUrl {
get {
return ResourceManager.GetString("ModpackConfigUrl", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Name.
/// </summary>
public static string Name {
get {
return ResourceManager.GetString("Name", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to New workspace.
/// </summary>
public static string NewWorkspace {
get {
return ResourceManager.GetString("NewWorkspace", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Public.
/// </summary>
public static string Public {
get {
return ResourceManager.GetString("Public", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Recent workspace.
/// </summary>
public static string RecentWorkspaces {
get {
return ResourceManager.GetString("RecentWorkspaces", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Remove.
/// </summary>
public static string Remove {
get {
return ResourceManager.GetString("Remove", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Remove update.
/// </summary>
public static string RemoveUpdate {
get {
return ResourceManager.GetString("RemoveUpdate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Repository Id.
/// </summary>
public static string RepositoryId {
get {
return ResourceManager.GetString("RepositoryId", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Root folder path.
/// </summary>
public static string RootFolderPath {
get {
return ResourceManager.GetString("RootFolderPath", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Save workspace.
/// </summary>
public static string SaveWorkspace {
get {
return ResourceManager.GetString("SaveWorkspace", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Search.
/// </summary>
public static string Search {
get {
return ResourceManager.GetString("Search", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Select.
/// </summary>
public static string Select {
get {
return ResourceManager.GetString("Select", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Select root folder.
/// </summary>
public static string SelectRootFolder {
get {
return ResourceManager.GetString("SelectRootFolder", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Side.
/// </summary>
public static string Side {
get {
return ResourceManager.GetString("Side", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Source.
/// </summary>
public static string Source {
get {
return ResourceManager.GetString("Source", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Source name.
/// </summary>
public static string SourceName {
get {
return ResourceManager.GetString("SourceName", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Source owner.
/// </summary>
public static string SourceOwner {
get {
return ResourceManager.GetString("SourceOwner", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Source path.
/// </summary>
public static string SourcePath {
get {
return ResourceManager.GetString("SourcePath", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Source RegEx.
/// </summary>
public static string SourceRegex {
get {
return ResourceManager.GetString("SourceRegex", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Source type.
/// </summary>
public static string SourceType {
get {
return ResourceManager.GetString("SourceType", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Source URL.
/// </summary>
public static string SourceUrl {
get {
return ResourceManager.GetString("SourceUrl", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to State.
/// </summary>
public static string State {
get {
return ResourceManager.GetString("State", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
public static string Tools {
get {
return ResourceManager.GetString("Tools", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Update.
/// </summary>
public static string Update {
get {
return ResourceManager.GetString("Update", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Updates.
/// </summary>
public static string Updates {
get {
return ResourceManager.GetString("Updates", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Update type.
/// </summary>
public static string UpdateType {
get {
return ResourceManager.GetString("UpdateType", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Website.
/// </summary>
public static string Website {
get {
return ResourceManager.GetString("Website", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Workspace.
/// </summary>
public static string Workspace {
get {
return ResourceManager.GetString("Workspace", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Workspace preferences.
/// </summary>
public static string WorkspacePreferences {
get {
return ResourceManager.GetString("WorkspacePreferences", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to ZIP archive path.
/// </summary>
public static string ZipArchivePath {
get {
return ResourceManager.GetString("ZipArchivePath", resourceCulture);
}
}
}
}

View File

@@ -252,4 +252,7 @@
<data name="SelectRootFolder" xml:space="preserve">
<value>Select root folder</value>
</data>
<data name="Search" xml:space="preserve">
<value>Search</value>
</data>
</root>

View File

@@ -8,7 +8,7 @@
xmlns:symbols="clr-namespace:Pilz.UI.Symbols;assembly=Pilz.UI"
xmlns:mainWindow="clr-namespace:ModpackUpdater.Apps.Manager.Ui.Models.MainWindow"
xmlns:langRes="clr-namespace:ModpackUpdater.Apps.Manager.LangRes"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="450"
x:Class="ModpackUpdater.Apps.Manager.Ui.MainWindow"
Title="Minecraft Modpack Manager"
WindowState="Maximized"
@@ -109,44 +109,55 @@
Orientation="Horizontal"
VerticalAlignment="Center">
<!-- Panel: Menu list -->
<StackPanel
Orientation="Horizontal">
<!-- Button: Add action -->
<pilz:ImageButton
x:Name="ButtonAddAction"
Text="{x:Static langRes:GeneralLangRes.Add}"
ImageSource="{x:Static local:MainWindow.ButtonImageAddAction}"
Background="Transparent"
Click="ButtonAddAction_OnClick"/>
<!-- Button: Remove action -->
<pilz:ImageButton
x:Name="ButtonRemoveAction"
Text="{x:Static langRes:GeneralLangRes.Remove}"
ImageSource="{x:Static local:MainWindow.ButtonImageRemoveAction}"
Background="Transparent"
Click="ButtonRemoveAction_OnClick"/>
</StackPanel>
<!-- TextBox: Search -->
<TextBox
Width="200"
Watermark="{x:Static langRes:GeneralLangRes.Search}"
Text="{Binding CurrentGridRows.SearchText}"/>
<!-- Panel: Menu -->
<ContentControl
Content="{Binding SelectedTreeNode}">
Content="{Binding SelectedTreeNode}"
>
<ContentControl.DataTemplates>
<DataTemplate
DataType="mainWindow:ActionSetTreeNode">
<StackPanel
Orientation="Horizontal">
Orientation="Horizontal"
Spacing="6">
<!-- TextBox: Version -->
<TextBox
Margin="3, 0, 3, 0"
Width="100"
Text="{Binding Version}"/>
<!-- CheckBox: Is public -->
<CheckBox
Margin="3, 0, 3, 0"
Content="{x:Static langRes:GeneralLangRes.Public}"
IsChecked="{Binding IsPublic}"/>
<!-- Button: Add action -->
<pilz:ImageButton
x:Name="ButtonAddAction"
Text="{x:Static langRes:GeneralLangRes.Add}"
ImageSource="{x:Static local:MainWindow.ButtonImageAddAction}"
Background="Transparent"
Click="ButtonAddAction_OnClick"/>
<!-- Button: Remove action -->
<pilz:ImageButton
x:Name="ButtonRemoveAction"
Text="{x:Static langRes:GeneralLangRes.Remove}"
ImageSource="{x:Static local:MainWindow.ButtonImageRemoveAction}"
Background="Transparent"
Click="ButtonRemoveAction_OnClick"/>
</StackPanel>
</DataTemplate>

View File

@@ -29,10 +29,6 @@ public class DynamicDataView<T> : INotifyPropertyChanged where T : notnull
public string? SearchText
{
get => searchText;
set
{
searchText = value;
searchTextSubject.OnNext(value);
}
set => searchTextSubject.OnNext(searchText = value);
}
}

View File

@@ -65,6 +65,21 @@ public class MainWindowViewModel : INotifyPropertyChanged
private static Func<MainWindowGridRow, bool> FilterGridRows(string? searchText)
{
return n => string.IsNullOrWhiteSpace(searchText) || true;
return n => string.IsNullOrWhiteSpace(searchText)
|| (!string.IsNullOrWhiteSpace(n.Name) && n.Name.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.InheritFrom) && n.InheritFrom.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.InheritedDestPath) && n.InheritedDestPath.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.InheritedId) && n.InheritedId.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.InheritedSide) && n.InheritedSide.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.InheritedSourceType) && n.InheritedSourceType.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.InheritedUpdateType) && n.InheritedUpdateType.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.SourceName) && n.SourceName.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.SourceOwner) && n.SourceOwner.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.SourceRegex) && n.SourceRegex.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.SourceTag) && n.SourceTag.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.SourceUrl) && n.SourceUrl.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.SrcPath) && n.SrcPath.Contains(searchText))
|| (!string.IsNullOrWhiteSpace(n.Website) && n.Website.Contains(searchText))
;
}
}

View File

@@ -25,7 +25,7 @@
<!-- TextBox: Search -->
<TextBox
Grid.Row="0"
Watermark="Search"
Watermark="{x:Static langRes:GeneralLangRes.Search}"
Text="{Binding Updates.SearchText}"/>
<!-- ScrollViewer: Updates -->