Compare commits

..

2 Commits

Author SHA1 Message Date
Elias Fierke
5172de332c [feat:] added "new file" button for wiki and therefore
implemented the usage of NamingWindow
2026-01-18 16:15:25 +01:00
Elias Fierke
d478fd5129 [feat:] simple MessageBox-lik naming window 2026-01-18 16:14:37 +01:00
4 changed files with 98 additions and 3 deletions

View File

@@ -257,9 +257,10 @@
<Grid ColumnDefinitions="300,*">
<Border Grid.Column="0" Background="#FFF" BorderBrush="#DDD" BorderThickness="0,0,1,0">
<StackPanel>
<TextBlock Text="Wiki" FontSize="18" Margin="12" />
<Button Content="+ Hinzufügen" Margin="10" x:Name="BtnWikiAddFile"
Click="BtnWikiAddFile_OnClick" />
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<TreeView Name="NavTree" Margin="8" />
<TreeView Name="NavTree" Margin="10" />
</ScrollViewer>
</StackPanel>
</Border>

View File

@@ -15,11 +15,11 @@ public partial class MainWindow : Window
public static MainWindow _instance;
private Country _selectedCountry;
private string _selectedWikiFilePath;
private bool _suppressCountryRefresh;
private WikiService _wikiService;
public Uri filePath;
private string _selectedWikiFilePath;
public MainWindow()
{
@@ -872,4 +872,19 @@ public partial class MainWindow : Window
new List<string> { countryie.ThreeLetterCode, countryie.TwoLetterCode }));
RefreshCountryView();
}
private async void BtnWikiAddFile_OnClick(object? sender, RoutedEventArgs e)
{
var result = await NamingWindow.Show(this);
if (result != null)
try
{
File.WriteAllText(Path.Combine(Global._instance.wiki_storage_path, result), "");
PopulateNavTree();
}
catch (Exception ex)
{
MessageBox.Show(this, ex.StackTrace, "Fehler");
}
}
}

19
NamingWindow.axaml Normal file
View File

@@ -0,0 +1,19 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Logof_Client.NamingWindow"
Title="NamingWindow">
<StackPanel Orientation="Vertical">
<TextBlock Name="Text" Margin="10" TextWrapping="Wrap" />
<TextBox Name="Input" Margin="10" />
<StackPanel HorizontalAlignment="Right" Margin="5" Orientation="Horizontal" Name="Buttons">
<StackPanel.Styles>
<Style Selector="Button">
<Setter Property="Margin" Value="5" />
</Style>
</StackPanel.Styles>
</StackPanel>
</StackPanel>
</Window>

60
NamingWindow.axaml.cs Normal file
View File

@@ -0,0 +1,60 @@
using System;
using System.Threading.Tasks;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace Logof_Client;
public partial class NamingWindow : Window
{
public NamingWindow()
{
AvaloniaXamlLoader.Load(this);
//InitializeComponent();
}
public static Task<string> Show(Window parent, string input = "", string info = "Bitte geben Sie einen Namen ein:")
{
try
{
var wind = new NamingWindow
{
Title = "Name eingeben"
};
wind.FindControl<TextBlock>("Text").Text = info;
var buttonPanel = wind.FindControl<StackPanel>("Buttons");
var inputBox = wind.FindControl<TextBox>("Input");
inputBox.Text = input;
string res = null;
void AddButton(string caption)
{
var btn = new Button { Content = caption };
btn.Click += (_, __) =>
{
res = inputBox.Text;
wind.Close();
};
buttonPanel.Children.Add(btn);
}
AddButton("Ok");
var tcs = new TaskCompletionSource<string>();
wind.Closed += delegate { tcs.TrySetResult(res); };
if (parent != null)
wind.ShowDialog(parent);
else wind.Show();
return tcs.Task;
}
catch (Exception ex)
{
Console.WriteLine("Error while showing naming window: " + ex.Message);
return null;
}
}
}