Uitrol 27-09-2026 18:30

This commit is contained in:
jf
2026-09-27 18:30:45 +02:00
parent a705574d3c
commit 0518e48582
2 changed files with 144 additions and 92 deletions
@@ -1,14 +1,16 @@
<Window x:Class="MijnBesluit.Uitroller.Instellingenvenster"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Instellingen" Height="620" Width="560"
Title="Instellingen" Height="620" Width="640"
Icon="uitroller.ico"
WindowStartupLocation="CenterOwner" Background="#F4F5F7"
TextOptions.TextFormattingMode="Ideal" UseLayoutRounding="True"
FontFamily="Segoe UI">
<!-- Zelfde palet en stijlen als Hoofdvenster.xaml, hier los gehouden omdat dit een eigen
venster is (geen gedeeld resource-woordenboek in dit project). -->
venster is (geen gedeeld resource-woordenboek in dit project). Indeling (Grid per groep:
label/veld/knop, groepen recht onder elkaar) is overgenomen van RenH.Uitroller, zodat
instellingenschermen van verschillende projecten er hetzelfde uitzien. -->
<Window.Resources>
<SolidColorBrush x:Key="Vlak" Color="#FFFFFF" />
<SolidColorBrush x:Key="Rand" Color="#E3E6EC" />
@@ -25,7 +27,7 @@
<Setter Property="Foreground" Value="{StaticResource Tekst}" />
<Setter Property="BorderBrush" Value="{StaticResource RandDonker}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Padding" Value="14,7" />
<Setter Property="Padding" Value="12,6" />
<Setter Property="FontSize" Value="13" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="SnapsToDevicePixels" Value="True" />
@@ -81,6 +83,7 @@
</Style>
<Style TargetType="GroupBox">
<Setter Property="Margin" Value="0,0,0,12" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
@@ -96,12 +99,6 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="VeldLabel" TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource TekstDof}" />
<Setter Property="Margin" Value="0,0,0,3" />
<Setter Property="FontSize" Value="12" />
</Style>
</Window.Resources>
<Grid Margin="18">
@@ -119,105 +116,108 @@
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<StackPanel>
<GroupBox Header="Server en geheim" Margin="0,0,0,14">
<StackPanel>
<TextBlock Text="Server" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldServer" Margin="0,0,0,10" />
<GroupBox Header="Mappen en e-mail">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Projectmap" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="0" Grid.Column="1" x:Name="VeldProjectmap" Margin="0,5" />
<Button Grid.Row="0" Grid.Column="2" Content="Bladeren…" Margin="8,5,0,5" Click="Bladeren_Projectmap" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Publicatiemap" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="1" Grid.Column="1" x:Name="VeldPublicatiemap" Margin="0,5" />
<Button Grid.Row="1" Grid.Column="2" Content="Bladeren…" Margin="8,5,0,5" Click="Bladeren_Publicatiemap" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="E-mailadres (test)" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="2" Grid.Column="1" x:Name="VeldEmail" Margin="0,5" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Auto-verversen (sec)" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="3" Grid.Column="1" x:Name="VeldGiteaVerversen" Margin="0,5" Width="90" HorizontalAlignment="Left"
ToolTip="Elke zoveel seconden vernieuwen de Gitea-knoppen zich vanzelf. 0 = uit; minimaal 10." />
</Grid>
</GroupBox>
<GroupBox Header="Server en geheim">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="14" />
<ColumnDefinition Width="120" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Text="Geheim" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldGeheim" />
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock Text="Poort" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldPoort" />
</StackPanel>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Server" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="0" Grid.Column="1" x:Name="VeldServer" Margin="0,5,8,5" />
<TextBox Grid.Row="0" Grid.Column="2" x:Name="VeldPoort" Margin="0,5" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Geheim" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="1" Grid.Column="1" x:Name="VeldGeheim" Grid.ColumnSpan="2" Margin="0,5" />
</Grid>
</StackPanel>
</GroupBox>
<GroupBox Header="Mappen" Margin="0,0,0,14">
<StackPanel>
<TextBlock Text="Projectmap" Style="{StaticResource VeldLabel}" />
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" x:Name="VeldProjectmap" />
<Button Grid.Column="2" Content="Bladeren…" Click="Bladeren_Projectmap" />
</Grid>
<TextBlock Text="Publicatiemap" Style="{StaticResource VeldLabel}" />
<GroupBox Header="Lokaal testen">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" x:Name="VeldPublicatiemap" />
<Button Grid.Column="2" Content="Bladeren…" Click="Bladeren_Publicatiemap" />
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Testadres" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="0" Grid.Column="1" x:Name="VeldTestadres" Grid.ColumnSpan="2" Margin="0,5" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Chrome.exe" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="1" Grid.Column="1" x:Name="VeldChrome" Margin="0,5" />
<Button Grid.Row="1" Grid.Column="2" Content="Bladeren…" Margin="8,5,0,5" Click="Bladeren_Chrome" />
</Grid>
</StackPanel>
</GroupBox>
<GroupBox Header="Lokaal testen" Margin="0,0,0,14">
<StackPanel>
<TextBlock Text="Testadres (van MijnBesluit.Web, launchSettings.json)" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldTestadres" Margin="0,0,0,10" />
<TextBlock Text="Chrome.exe (leeg = de gewone plek)" Style="{StaticResource VeldLabel}" />
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" x:Name="VeldChrome" />
<Button Grid.Column="2" Content="Bladeren…" Click="Bladeren_Chrome" />
</Grid>
<TextBlock Text="E-mailadres (invullen bij inloggen tijdens lokaal testen)" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldEmail" />
</StackPanel>
</GroupBox>
<GroupBox Header="Gitea (alleen invullen als de git-remote 'origin' ontbreekt of niet te ontleden is)">
<StackPanel>
<TextBlock Text="Basis-URL" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldGiteaUrl" Margin="0,0,0,10" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="14" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Text="Eigenaar" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldGiteaEigenaar" />
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock Text="Repo" Style="{StaticResource VeldLabel}" />
<TextBox x:Name="VeldGiteaRepo" />
</StackPanel>
</Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="Auto-verversen (sec, 0 = uit, minimaal 10)" Style="{StaticResource VeldLabel}" Margin="0,10,0,3" />
<TextBox x:Name="VeldGiteaVerversen" Width="120" HorizontalAlignment="Left" />
</StackPanel>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Basis-URL" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="4" x:Name="VeldGiteaUrl" Margin="0,5" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Eigenaar" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="1" Grid.Column="1" x:Name="VeldGiteaEigenaar" Margin="0,5" />
<TextBlock Grid.Row="1" Grid.Column="3" Text="Repo" VerticalAlignment="Center" Margin="0,5" Foreground="{StaticResource TekstDof}" />
<TextBox Grid.Row="1" Grid.Column="4" x:Name="VeldGiteaRepo" Margin="0,5" />
</Grid>
</GroupBox>
</StackPanel>
</ScrollViewer>
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,16,0,0">
<Button Content="Annuleren" Margin="0,0,10,0" Click="Annuleren_Click" />
<Button Content="Opslaan" Style="{StaticResource Primair}" Click="Opslaan_Click" />
<Button Content="Opslaan" Style="{StaticResource Primair}" Padding="18,7" Margin="0,0,8,0" Click="Opslaan_Click" IsDefault="True" />
<Button Content="Annuleren" Padding="18,7" Click="Annuleren_Click" IsCancel="True" />
</StackPanel>
</Grid>
</Window>
@@ -14,12 +14,19 @@ namespace MijnBesluit.Uitroller;
public partial class Instellingenvenster : Window
{
private readonly Instellingen _instellingen;
private readonly Vensterstand _vensterstand =
Vensterstand.Lees(Instellingen.InstellingenVensterPad, Instellingen.InstellingenVensterPadNaastExe);
public Instellingenvenster(Instellingen instellingen)
{
InitializeComponent();
_instellingen = instellingen;
VeldenVullen();
// Positie/grootte van de vorige keer terugzetten en bij sluiten weer bewaren (eigen
// bestand, los van het hoofdvenster). Geport van RenH.Uitroller.
VensterstandTerugzetten();
Closing += (_, __) => VensterstandBewaren();
}
private void VeldenVullen()
@@ -38,6 +45,51 @@ public partial class Instellingenvenster : Window
VeldGiteaVerversen.Text = _instellingen.GiteaVerversSeconden.ToString();
}
/// <summary>Zet het venster terug op de onthouden plek en grootte, mits die nog (deels) op een
/// beeldscherm valt (anders opent hij gecentreerd op de eigenaar, zoals in de XAML).</summary>
private void VensterstandTerugzetten()
{
if (!_vensterstand.Bruikbaar) return;
double schermL = SystemParameters.VirtualScreenLeft;
double schermB = SystemParameters.VirtualScreenTop;
double schermBr = SystemParameters.VirtualScreenWidth;
double schermH = SystemParameters.VirtualScreenHeight;
const double kier = 60;
bool zichtbaar =
(_vensterstand.Links + _vensterstand.Breedte) > schermL + kier &&
_vensterstand.Links < schermL + schermBr - kier &&
(_vensterstand.Boven + _vensterstand.Hoogte) > schermB + kier &&
_vensterstand.Boven < schermB + schermH - kier;
if (!zichtbaar) return;
WindowStartupLocation = WindowStartupLocation.Manual;
Left = _vensterstand.Links;
Top = _vensterstand.Boven;
Width = _vensterstand.Breedte;
Height = _vensterstand.Hoogte;
if (_vensterstand.Gemaximaliseerd) WindowState = WindowState.Maximized;
}
/// <summary>Bewaart de huidige plek en grootte (RestoreBounds bij gemaximaliseerd), in het eigen
/// bestand van het instellingenscherm.</summary>
private void VensterstandBewaren()
{
Rect b = WindowState == WindowState.Normal
? new Rect(Left, Top, Width, Height)
: RestoreBounds;
if (b.IsEmpty || b.Width < 1 || b.Height < 1) return;
_vensterstand.Links = b.Left;
_vensterstand.Boven = b.Top;
_vensterstand.Breedte = b.Width;
_vensterstand.Hoogte = b.Height;
_vensterstand.Gemaximaliseerd = WindowState == WindowState.Maximized;
_vensterstand.Bewaar(Instellingen.InstellingenVensterPad);
}
private static void Kies(System.Windows.Controls.TextBox veld)
{
var dlg = new Microsoft.Win32.OpenFolderDialog { Title = "Kies een map" };