131 lines
9.6 KiB
XML
131 lines
9.6 KiB
XML
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:local="clr-namespace:LehrerApp.TemplateDesigner"
|
||
x:Class="LehrerApp.TemplateDesigner.MainWindow" x:DataType="local:DesignerViewModel" Title="LehrerApp Vorlagen-Designer"
|
||
Width="1320" Height="860" MinWidth="1050" MinHeight="700" WindowStartupLocation="CenterScreen">
|
||
<Grid RowDefinitions="Auto,*">
|
||
<Border Padding="18,12" Background="#172554">
|
||
<Grid ColumnDefinitions="*,Auto,8,Auto,8,Auto">
|
||
<StackPanel><TextBlock Text="Vorlagen-Designer" Foreground="White" FontWeight="Bold" FontSize="20"/>
|
||
<TextBlock Text="Portable PDF-Briefpakete · Schema 1" Foreground="#BFDBFE" FontSize="12"/></StackPanel>
|
||
<Button Grid.Column="1" Content="Neues Projekt" Click="OnNew"/>
|
||
<Button Grid.Column="3" Content="Paket öffnen …" Click="OnOpenPackage"/>
|
||
<Button Grid.Column="5" Content="Exportieren …" Click="OnExport" IsEnabled="{Binding CanExport}"/>
|
||
</Grid>
|
||
</Border>
|
||
<Grid Grid.Row="1" ColumnDefinitions="460,*,390">
|
||
<ScrollViewer Grid.Column="0" Padding="18">
|
||
<StackPanel Spacing="14">
|
||
<Grid ColumnDefinitions="*,Auto"><TextBlock Text="Meine Ausgangsvorlagen" Classes="section"/>
|
||
<Button Grid.Column="1" Content="Importieren …" Click="OnImportStarterTemplate"/></Grid>
|
||
<ComboBox ItemsSource="{Binding StarterTemplates}" SelectedItem="{Binding SelectedStarterTemplate}"
|
||
DisplayMemberBinding="{Binding Display}" PlaceholderText="Noch keine Ausgangsvorlage"/>
|
||
<TextBlock Text="{Binding SelectedStarterTemplate.Description}" FontSize="12" Opacity="0.7"
|
||
TextWrapping="Wrap"/>
|
||
<Grid ColumnDefinitions="*,8,*,8,*" RowDefinitions="Auto,8,Auto,8,Auto">
|
||
<Button Grid.Column="0" Content="Vorschau" Click="OnPreviewStarterTemplate"/>
|
||
<Button Grid.Column="2" Content="Bearbeiten" Click="OnEditStarterTemplate"/>
|
||
<Button Grid.Column="4" Content="Als neues Projekt" Click="OnUseStarterTemplate"/>
|
||
<Button Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Content="Aktuelles Projekt speichern/aktualisieren"
|
||
Click="OnSaveStarterTemplate"/>
|
||
<Button Grid.Row="2" Grid.Column="4" Content="Duplizieren" Click="OnDuplicateStarterTemplate"/>
|
||
<Button Grid.Row="4" Grid.Column="0" Content="Exportieren …" Click="OnExportStarterTemplate"/>
|
||
<Button Grid.Row="4" Grid.Column="2" Content="Löschen" Click="OnDeleteStarterTemplate"/>
|
||
</Grid>
|
||
<TextBlock Text="Ausgangsvorlagen werden lokal gespeichert. Beim Erstellen eines neuen Projekts bleiben Original und Briefkopf unverändert."
|
||
FontSize="11" Opacity="0.6" TextWrapping="Wrap"/>
|
||
<Separator/>
|
||
|
||
<TextBlock Text="Paket" Classes="section"/>
|
||
<Grid ColumnDefinitions="*,10,*" RowDefinitions="Auto,Auto">
|
||
<StackPanel><TextBlock Text="Stabile ID" Classes="label"/><TextBox Text="{Binding TemplateId}"/></StackPanel>
|
||
<StackPanel Grid.Column="2"><TextBlock Text="Name" Classes="label"/><TextBox Text="{Binding TemplateName}"/></StackPanel>
|
||
<StackPanel Grid.Row="1" Grid.ColumnSpan="3" Margin="0,8,0,0"><TextBlock Text="Beschreibung" Classes="label"/><TextBox Text="{Binding Description}"/></StackPanel>
|
||
</Grid>
|
||
<Grid ColumnDefinitions="*,8,*,8,*">
|
||
<StackPanel><TextBlock Text="Breite" Classes="label"/><NumericUpDown Value="{Binding PageWidth}" Minimum="10" Maximum="2000"/></StackPanel>
|
||
<StackPanel Grid.Column="2"><TextBlock Text="Höhe" Classes="label"/><NumericUpDown Value="{Binding PageHeight}" Minimum="10" Maximum="2000"/></StackPanel>
|
||
<StackPanel Grid.Column="4"><TextBlock Text="Einheit" Classes="label"/><ComboBox ItemsSource="{Binding Units}" SelectedItem="{Binding Unit}"/></StackPanel>
|
||
</Grid>
|
||
|
||
<Grid ColumnDefinitions="*,Auto"><TextBlock Text="Platzhalter & Beispieldaten" Classes="section"/>
|
||
<Button Grid.Column="1" Content="+" Click="OnAddPlaceholder"/></Grid>
|
||
<DataGrid x:Name="PlaceholderGrid" ItemsSource="{Binding Placeholders}" SelectedItem="{Binding SelectedPlaceholder}"
|
||
AutoGenerateColumns="False" Height="210" CanUserResizeColumns="True">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*"/>
|
||
<DataGridTextColumn Header="Typ" Binding="{Binding Type}" Width="105" IsReadOnly="True"/>
|
||
<DataGridCheckBoxColumn Header="Pflicht" Binding="{Binding Required}" Width="58"/>
|
||
<DataGridTextColumn Header="Beispiel" Binding="{Binding Sample}" Width="*"/>
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
<Grid ColumnDefinitions="Auto,10,*">
|
||
<Button Content="Markierten Platzhalter entfernen" Click="OnRemovePlaceholder"/>
|
||
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
|
||
<TextBlock Text="Typ:" VerticalAlignment="Center"/>
|
||
<ComboBox Width="130" ItemsSource="{Binding PlaceholderTypes}" SelectedItem="{Binding SelectedPlaceholder.Type}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
|
||
<Grid ColumnDefinitions="*,Auto"><TextBlock Text="Paket-Assets" Classes="section"/>
|
||
<Button Grid.Column="1" Content="+ Bild importieren …" Click="OnImportAsset"/></Grid>
|
||
<DataGrid ItemsSource="{Binding AssetItems}" SelectedItem="{Binding SelectedAsset}"
|
||
AutoGenerateColumns="False" Height="150" IsReadOnly="True" CanUserResizeColumns="True">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="Datei" Binding="{Binding Name}" Width="*"/>
|
||
<DataGridTextColumn Header="Auflösung" Binding="{Binding Dimensions}" Width="125"/>
|
||
<DataGridTextColumn Header="Größe" Binding="{Binding FileSize}" Width="70"/>
|
||
<DataGridTextColumn Header="Verwendung" Binding="{Binding Usage}" Width="105"/>
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
<Grid ColumnDefinitions="*,8,*,8,*">
|
||
<Button Grid.Column="0" Content="Als IMG einfügen" Click="OnInsertSelectedAsset"/>
|
||
<Button Grid.Column="2" Content="Ersetzen …" Click="OnReplaceSelectedAsset"/>
|
||
<Button Grid.Column="4" Content="Entfernen" Click="OnRemoveSelectedAsset"/>
|
||
</Grid>
|
||
|
||
<TextBlock Text="Element hinzufügen" Classes="section"/>
|
||
<ComboBox ItemsSource="{Binding ElementTypes}" SelectedItem="{Binding NewElementType}"/>
|
||
<Grid ColumnDefinitions="*,6,*,6,*,6,*">
|
||
<StackPanel><TextBlock Text="X" Classes="label"/><TextBox Text="{Binding NewX}"/></StackPanel>
|
||
<StackPanel Grid.Column="2"><TextBlock Text="Y" Classes="label"/><TextBox Text="{Binding NewY}"/></StackPanel>
|
||
<StackPanel Grid.Column="4"><TextBlock Text="Breite" Classes="label"/><TextBox Text="{Binding NewWidth}"/></StackPanel>
|
||
<StackPanel Grid.Column="6"><TextBlock Text="Höhe" Classes="label"/><TextBox Text="{Binding NewHeight}"/></StackPanel>
|
||
</Grid>
|
||
<StackPanel>
|
||
<TextBlock Text="IMG-Skalierung in % (nur für IMG)" Classes="label"/>
|
||
<TextBox Text="{Binding NewImageScale}" PlaceholderText="100"/>
|
||
</StackPanel>
|
||
<StackPanel><TextBlock Text="Inhalt / $Platzhalter / Assetpfad" Classes="label"/><TextBox Text="{Binding NewContent}" PlaceholderText="$Brieftext oder ein Literal"/></StackPanel>
|
||
<StackPanel><TextBlock Text="Attribute" Classes="label"/><TextBox Text="{Binding NewAttributes}" PlaceholderText="size=11 bold=true"/></StackPanel>
|
||
<Button Content="Element ins Layout übernehmen" Click="OnAddElement"/>
|
||
<Button Content="PNG/JPEG als Hintergrund importieren …" Click="OnImportBackground"/>
|
||
<Button Content="PDF als Hintergrund (300 DPI) importieren …" Click="OnImportPdfBackground"/>
|
||
<TextBlock Text="Bekannte Einschränkung: TEXTBOX-Überlauf wird in v1 nicht automatisch auf Folgeseiten verteilt."
|
||
TextWrapping="Wrap" Foreground="#B45309" FontSize="12"/>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
|
||
<Grid Grid.Column="1" RowDefinitions="Auto,*" Margin="0,18">
|
||
<Grid ColumnDefinitions="*,Auto" Margin="12,0,12,10"><TextBlock Text="Layout-DSL" Classes="section"/>
|
||
<Button Grid.Column="1" Content="Prüfen & Vorschau" Click="OnPreview"/></Grid>
|
||
<TextBox Grid.Row="1" Text="{Binding LayoutSource}" AcceptsReturn="True" TextWrapping="NoWrap"
|
||
FontFamily="Menlo,Consolas,monospace" FontSize="13" VerticalContentAlignment="Top"
|
||
ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" Margin="12"/>
|
||
</Grid>
|
||
|
||
<Border Grid.Column="2" Background="#E2E8F0" Padding="18">
|
||
<Grid RowDefinitions="Auto,*,Auto">
|
||
<TextBlock Text="PDF-Vorschau" Classes="section"/>
|
||
<Border Grid.Row="1" Margin="0,12" Background="White" BorderBrush="#94A3B8" BorderThickness="1">
|
||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
||
<Image Source="{Binding PreviewImage}" Stretch="Uniform" MaxWidth="740"/>
|
||
</ScrollViewer>
|
||
</Border>
|
||
<StackPanel Grid.Row="2" Spacing="4"><TextBlock Text="{Binding Status}" TextWrapping="Wrap" Foreground="{Binding StatusColor}"/>
|
||
<TextBlock Text="Die Vorschau wird mit derselben QuestPDF-Pipeline wie in LehrerApp erzeugt." FontSize="11" Opacity="0.65" TextWrapping="Wrap"/></StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
</Grid>
|
||
</Grid>
|
||
</Window>
|