199 lines
14 KiB
XML
199 lines
14 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,Auto,*">
|
||
<Menu>
|
||
<MenuItem Header="_Datei">
|
||
<MenuItem Header="Neu (leeres Projekt)" InputGesture="Ctrl+N" Click="OnNew"/>
|
||
<MenuItem Header="Öffnen …" InputGesture="Ctrl+O" Click="OnOpenPackage"/>
|
||
<Separator/>
|
||
<MenuItem Header="Speichern" InputGesture="Ctrl+S" Click="OnSave"/>
|
||
<MenuItem Header="Speichern unter …" InputGesture="Ctrl+Shift+S" Click="OnSaveAs"/>
|
||
<Separator/>
|
||
<MenuItem Header="Ausgangsvorlage importieren …" Click="OnImportStarterTemplate"/>
|
||
<Separator/>
|
||
<MenuItem Header="Beenden" Click="OnExit"/>
|
||
</MenuItem>
|
||
<MenuItem Header="_Vorlage">
|
||
<MenuItem Header="Prüfen und Vorschau" InputGesture="F5" Click="OnPreview"/>
|
||
<MenuItem Header="Aktuelles Projekt als Ausgangsvorlage speichern" Click="OnSaveStarterTemplate"/>
|
||
<Separator/>
|
||
<MenuItem Header="Ausgewählte Ausgangsvorlage bearbeiten" Click="OnEditStarterTemplate"/>
|
||
<MenuItem Header="Ausgewählte Ausgangsvorlage als neues Projekt" Click="OnUseStarterTemplate"/>
|
||
<MenuItem Header="Ausgewählte Ausgangsvorlage duplizieren" Click="OnDuplicateStarterTemplate"/>
|
||
<MenuItem Header="Ausgewählte Ausgangsvorlage exportieren …" Click="OnExportStarterTemplate"/>
|
||
</MenuItem>
|
||
<MenuItem Header="_Einfügen">
|
||
<MenuItem Header="Bild-Asset …" Click="OnImportAsset"/>
|
||
<Separator/>
|
||
<MenuItem Header="PNG/JPEG als Hintergrund …" Click="OnImportBackground"/>
|
||
<MenuItem Header="PDF als Hintergrund …" Click="OnImportPdfBackground"/>
|
||
</MenuItem>
|
||
</Menu>
|
||
<Border Grid.Row="1" Padding="18,12" Background="#172554">
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<StackPanel><TextBlock Text="Vorlagen-Designer" Foreground="White" FontWeight="Bold" FontSize="20"/>
|
||
<TextBlock Text="Portable PDF-Briefpakete · Schema 1" Foreground="#BFDBFE" FontSize="12"/></StackPanel>
|
||
<StackPanel Grid.Column="1" HorizontalAlignment="Right">
|
||
<TextBlock x:Name="DocumentNameText" Foreground="White" FontWeight="SemiBold" HorizontalAlignment="Right"/>
|
||
<TextBlock x:Name="DocumentPathText" Foreground="#BFDBFE" FontSize="11" HorizontalAlignment="Right"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
<Grid Grid.Row="2" 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="Freie Metadaten" Classes="section"/>
|
||
<Button Grid.Column="1" Content="+" Click="OnAddMetadata"/></Grid>
|
||
<DataGrid ItemsSource="{Binding MetadataItems}" SelectedItem="{Binding SelectedMetadata}"
|
||
AutoGenerateColumns="False" Height="125" CanUserResizeColumns="True">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*"/>
|
||
<DataGridTextColumn Header="Wert" Binding="{Binding Value}" Width="1.4*"/>
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
<Grid ColumnDefinitions="Auto,*">
|
||
<Button Content="Markierten Eintrag entfernen" Click="OnRemoveMetadata"/>
|
||
<TextBlock Grid.Column="1" Margin="10,0,0,0" Text="z. B. language=de-DE · report-type=letter"
|
||
FontSize="11" Opacity="0.6" VerticalAlignment="Center" TextWrapping="Wrap"/>
|
||
</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,*,Auto">
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<TextBlock Text="Visueller Layout-Editor" Classes="section"/>
|
||
<TextBlock Grid.Column="1" Text="{Binding OverlayCoordinates}" FontFamily="Monospace"
|
||
FontSize="11" VerticalAlignment="Center"/>
|
||
</Grid>
|
||
<StackPanel Grid.Row="1" Spacing="7" Margin="0,10,0,0">
|
||
<Grid ColumnDefinitions="*,8,*">
|
||
<Button Grid.Column="0" Content="Koordinaten messen" Click="OnMeasureOverlayMode"/>
|
||
<Button Grid.Column="2" Content="Elemente verschieben" Click="OnEditOverlayMode"/>
|
||
</Grid>
|
||
<Grid ColumnDefinitions="Auto,8,90,*">
|
||
<CheckBox Content="Rasterfang" IsChecked="{Binding SnapOverlayToGrid}" VerticalAlignment="Center"/>
|
||
<NumericUpDown Grid.Column="2" Value="{Binding OverlayGridSize}" Minimum="0.1" Maximum="50"
|
||
Increment="0.5" FormatString="0.##"/>
|
||
<TextBlock Grid.Column="3" Margin="8,0,0,0" Text="{Binding OverlayPageUnit}" VerticalAlignment="Center"/>
|
||
</Grid>
|
||
<TextBlock Text="{Binding SelectedOverlayElement}" FontSize="11" Opacity="0.7"/>
|
||
</StackPanel>
|
||
<Border Grid.Row="2" Margin="0,12" Background="#CBD5E1" BorderBrush="#94A3B8" BorderThickness="1">
|
||
<local:LayoutOverlayEditor PreviewImage="{Binding PreviewImage}"
|
||
LayoutSource="{Binding LayoutSource, Mode=TwoWay}"
|
||
PageWidth="{Binding OverlayPageWidth}" PageHeight="{Binding OverlayPageHeight}"
|
||
PageUnit="{Binding OverlayPageUnit}" Mode="{Binding OverlayMode}"
|
||
SnapToGrid="{Binding SnapOverlayToGrid}" GridSize="{Binding OverlayGridSize}"
|
||
MeasurementCompleted="OnOverlayMeasurementCompleted"
|
||
ElementGeometryChanged="OnOverlayElementGeometryChanged"
|
||
CursorCoordinatesChanged="OnOverlayCursorCoordinatesChanged"
|
||
ElementSelected="OnOverlayElementSelected"/>
|
||
</Border>
|
||
<StackPanel Grid.Row="3" Spacing="4"><TextBlock Text="{Binding Status}" TextWrapping="Wrap" Foreground="{Binding StatusColor}"/>
|
||
<TextBlock Text="Messen: klicken oder Bereich aufziehen. Bearbeiten: Rahmen ziehen, unten rechts skalieren; Pfeiltasten verschieben."
|
||
FontSize="11" Opacity="0.65" TextWrapping="Wrap"/></StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
</Grid>
|
||
</Grid>
|
||
</Window>
|