340 lines
25 KiB
XML
340 lines
25 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"/>
|
||
<MenuItem Header="Aktuelle Ansicht als PDF exportieren …" Click="OnExportCurrentPdf"/>
|
||
<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="PDF als Vorlage importieren …" Click="OnImportPdfTemplate"/>
|
||
<Separator/>
|
||
<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 · Layoutformat 3" 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">
|
||
<TabControl Grid.Column="0" Margin="10">
|
||
<TabItem Header="Projekt">
|
||
<ScrollViewer Padding="8">
|
||
<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="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>
|
||
<Separator/>
|
||
<TextBlock Text="Paketdaten" 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="150" CanUserResizeColumns="True">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="Name" Binding="{Binding Name, Mode=TwoWay}" Width="*"/>
|
||
<DataGridTextColumn Header="Wert" Binding="{Binding Value, Mode=TwoWay}" Width="1.4*"/>
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
<Button Content="Markierten Metadateneintrag entfernen" HorizontalAlignment="Left" Click="OnRemoveMetadata"/>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</TabItem>
|
||
|
||
<TabItem Header="Platzhalter">
|
||
<Grid Margin="8" RowDefinitions="Auto,*,Auto,Auto">
|
||
<Grid ColumnDefinitions="*,Auto"><TextBlock Text="Platzhalter" Classes="section" VerticalAlignment="Center"/>
|
||
<Button Grid.Column="1" Content="+ Neu" Click="OnAddPlaceholder"/></Grid>
|
||
<DataGrid Grid.Row="1" Margin="0,10" ItemsSource="{Binding Placeholders}"
|
||
SelectedItem="{Binding SelectedPlaceholder, Mode=TwoWay}" AutoGenerateColumns="False"
|
||
CanUserResizeColumns="True" IsReadOnly="True">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*"/>
|
||
<DataGridTextColumn Header="Typ" Binding="{Binding Type}" Width="105"/>
|
||
<DataGridCheckBoxColumn Header="Pflicht" Binding="{Binding Required}" Width="65"/>
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
<TextBlock Grid.Row="2" IsVisible="{Binding HasNoSelectedPlaceholder}"
|
||
Text="Wähle einen Platzhalter aus oder lege einen neuen an." Opacity="0.65"
|
||
TextWrapping="Wrap" Margin="0,4,0,10"/>
|
||
<Border Grid.Row="3" IsVisible="{Binding HasSelectedPlaceholder}" Padding="12"
|
||
BorderBrush="#CBD5E1" BorderThickness="1" CornerRadius="4">
|
||
<StackPanel Spacing="8">
|
||
<TextBlock Text="Auswahl bearbeiten" FontWeight="SemiBold"/>
|
||
<Grid ColumnDefinitions="*,10,*">
|
||
<StackPanel><TextBlock Text="Name" Classes="label"/>
|
||
<TextBox Text="{Binding SelectedPlaceholder.Name, Mode=TwoWay}" PlaceholderText="z. B. Empfaenger"/></StackPanel>
|
||
<StackPanel Grid.Column="2"><TextBlock Text="Datentyp" Classes="label"/>
|
||
<ComboBox ItemsSource="{Binding PlaceholderTypes}" SelectedItem="{Binding SelectedPlaceholder.Type, Mode=TwoWay}"/></StackPanel>
|
||
</Grid>
|
||
<CheckBox Content="Pflichtwert" IsChecked="{Binding SelectedPlaceholder.Required, Mode=TwoWay}"/>
|
||
<CheckBox IsChecked="{Binding SelectedPlaceholder.IsConstant, Mode=TwoWay}"
|
||
IsEnabled="{Binding SelectedPlaceholder.SupportsConstantValue}">
|
||
<TextBlock Text="Beispielwert fest im Paket verwenden (konstant, extern nicht überschreibbar)"
|
||
TextWrapping="Wrap"/>
|
||
</CheckBox>
|
||
<StackPanel><TextBlock Text="Beispielwert / konstanter Paketwert" Classes="label"/>
|
||
<StackPanel Orientation="Horizontal" Spacing="6" Margin="0,3,0,5">
|
||
<Button Content="F" FontWeight="Bold" Padding="10,3" Click="OnBoldSelection"
|
||
IsEnabled="{Binding SelectedPlaceholder.SupportsRichText}" ToolTip.Tip="Markierten Text fett setzen"/>
|
||
<Button Content="K" FontStyle="Italic" Padding="10,3" Click="OnItalicSelection"
|
||
IsEnabled="{Binding SelectedPlaceholder.SupportsRichText}" ToolTip.Tip="Markierten Text kursiv setzen"/>
|
||
<Button Content="U̲" Padding="10,3" Click="OnUnderlineSelection"
|
||
IsEnabled="{Binding SelectedPlaceholder.SupportsRichText}" ToolTip.Tip="Markierten Text unterstreichen"/>
|
||
</StackPanel>
|
||
<TextBox x:Name="PlaceholderValueTextBox" Text="{Binding SelectedPlaceholder.Sample, Mode=TwoWay}" AcceptsReturn="True"
|
||
MinHeight="68" MaxHeight="120" TextWrapping="Wrap" PlaceholderText="Beispieldaten eingeben"/></StackPanel>
|
||
<TextBlock IsVisible="{Binding SelectedPlaceholder.SupportsRichText}"
|
||
Text="Externe Werte im Text: ${Student.LastName}. Markup: [b]fett[/b], [i]kursiv[/i], [u]unterstrichen[/u]."
|
||
FontSize="11" Opacity="0.65" TextWrapping="Wrap"/>
|
||
<StackPanel>
|
||
<TextBlock Text="Hervorhebung bei direkter Verwendung in TEXT/TEXTBOX" Classes="label"/>
|
||
<StackPanel Orientation="Horizontal" Spacing="14">
|
||
<CheckBox Content="Fett" IsChecked="{Binding SelectedPlaceholder.Bold, Mode=TwoWay}"/>
|
||
<CheckBox Content="Kursiv" IsChecked="{Binding SelectedPlaceholder.Italic, Mode=TwoWay}"/>
|
||
<CheckBox Content="Unterstrichen" IsChecked="{Binding SelectedPlaceholder.Underline, Mode=TwoWay}"/>
|
||
</StackPanel>
|
||
</StackPanel>
|
||
<Button Content="Platzhalter entfernen" HorizontalAlignment="Left" Click="OnRemovePlaceholder"/>
|
||
</StackPanel>
|
||
</Border>
|
||
</Grid>
|
||
</TabItem>
|
||
|
||
<TabItem Header="Bilder">
|
||
<Grid Margin="8" RowDefinitions="Auto,*,Auto,Auto">
|
||
<Grid ColumnDefinitions="*,Auto"><TextBlock Text="Paket-Assets" Classes="section" VerticalAlignment="Center"/>
|
||
<Button Grid.Column="1" Content="+ Importieren …" Click="OnImportAsset"/></Grid>
|
||
<DataGrid Grid.Row="1" Margin="0,10" ItemsSource="{Binding AssetItems}" SelectedItem="{Binding SelectedAsset}"
|
||
AutoGenerateColumns="False" IsReadOnly="True" CanUserResizeColumns="True">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="Datei" Binding="{Binding Name}" Width="*"/>
|
||
<DataGridTextColumn Header="Auflösung" Binding="{Binding Dimensions}" Width="110"/>
|
||
<DataGridTextColumn Header="Verwendung" Binding="{Binding Usage}" Width="105"/>
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
<Grid Grid.Row="2" 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>
|
||
<StackPanel Grid.Row="3" Margin="0,14,0,0" Spacing="8">
|
||
<TextBlock Text="Seitenhintergrund" Classes="section"/>
|
||
<Button Content="PNG/JPEG als Hintergrund importieren …" Click="OnImportBackground"/>
|
||
<Button Content="PDF als Hintergrund (300 DPI) importieren …" Click="OnImportPdfBackground"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</TabItem>
|
||
|
||
<TabItem Header="Seiten & Flows">
|
||
<ScrollViewer Padding="8">
|
||
<StackPanel Spacing="14">
|
||
<TextBlock Text="Seitentypen" Classes="section"/>
|
||
<TextBlock Text="Jeder Seitentyp beschreibt nur seine eigenen festen Elemente und Flow-Slots."
|
||
TextWrapping="Wrap" Opacity="0.7" FontSize="12"/>
|
||
<ComboBox ItemsSource="{Binding PageTemplateNames}" SelectedItem="{Binding SelectedPageTemplate, Mode=TwoWay}"/>
|
||
<Grid ColumnDefinitions="*,8,Auto">
|
||
<TextBox Text="{Binding NewPageTemplateName}" PlaceholderText="z. B. continuation"/>
|
||
<Button Grid.Column="2" Content="Seitentyp anlegen" Click="OnAddPageTemplate"/>
|
||
</Grid>
|
||
<Separator/>
|
||
<TextBlock Text="Content-Flows" Classes="section"/>
|
||
<TextBlock Text="Ein Flow läuft automatisch in den gleichnamigen Slot der ersten und anschließend der Folgeseiten."
|
||
TextWrapping="Wrap" Opacity="0.7" FontSize="12"/>
|
||
<ComboBox ItemsSource="{Binding ContentFlowNames}" SelectedItem="{Binding SelectedContentFlow, Mode=TwoWay}"/>
|
||
<Grid ColumnDefinitions="*,8,Auto">
|
||
<TextBox Text="{Binding NewFlowName}" PlaceholderText="z. B. body"/>
|
||
<Button Grid.Column="2" Content="Flow anlegen" Click="OnAddContentFlow"/>
|
||
</Grid>
|
||
<Separator/>
|
||
<TextBlock Text="Flow-Slot auf ausgewählter Seite" Classes="section"/>
|
||
<TextBlock Text="Die Bounding Box wird rechts violett gestrichelt dargestellt und kann dort verschoben und skaliert werden."
|
||
TextWrapping="Wrap" Opacity="0.7" FontSize="12"/>
|
||
<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>
|
||
<Button Content="Flow-Slot anlegen" HorizontalAlignment="Left" Click="OnAddFlowSlot"/>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</TabItem>
|
||
|
||
<TabItem Header="Elemente">
|
||
<ScrollViewer Padding="8">
|
||
<StackPanel Spacing="12">
|
||
<TextBlock Text="Element hinzufügen" Classes="section"/>
|
||
<Border BorderBrush="#93C5FD" BorderThickness="1" Background="#EFF6FF"
|
||
CornerRadius="6" Padding="12">
|
||
<StackPanel Spacing="7">
|
||
<TextBlock Text="LehrerApp-Sonderinhalte" FontWeight="SemiBold" Foreground="#1E3A8A"/>
|
||
<TextBlock Text="Kein technischer Platzhaltername nötig: Inhalt auswählen und übernehmen."
|
||
FontSize="11" Foreground="#475569" TextWrapping="Wrap"/>
|
||
<ComboBox ItemsSource="{Binding SpecialContents}"
|
||
SelectedItem="{Binding SelectedSpecialContent, Mode=TwoWay}"
|
||
DisplayMemberBinding="{Binding DisplayName}"/>
|
||
<TextBlock Text="{Binding SelectedSpecialContent.Description}" FontSize="11"
|
||
Foreground="#475569" TextWrapping="Wrap"/>
|
||
<Button Content="Für Layout vorbereiten" HorizontalAlignment="Left"
|
||
Click="OnPrepareSpecialContent"/>
|
||
</StackPanel>
|
||
</Border>
|
||
<StackPanel><TextBlock Text="Einfügen in" Classes="label"/>
|
||
<ComboBox ItemsSource="{Binding ElementScopes}" SelectedItem="{Binding NewElementScope}"/></StackPanel>
|
||
<Grid ColumnDefinitions="*,8,*">
|
||
<StackPanel><TextBlock Text="Seitentyp für feste Elemente" Classes="label"/>
|
||
<ComboBox ItemsSource="{Binding PageTemplateNames}" SelectedItem="{Binding SelectedPageTemplate}"/></StackPanel>
|
||
<StackPanel Grid.Column="2"><TextBlock Text="Content-Flow für fließende Elemente" Classes="label"/>
|
||
<ComboBox ItemsSource="{Binding ContentFlowNames}" SelectedItem="{Binding SelectedContentFlow}"/></StackPanel>
|
||
</Grid>
|
||
<StackPanel><TextBlock Text="Elementtyp" Classes="label"/>
|
||
<ComboBox ItemsSource="{Binding ElementTypes}" SelectedItem="{Binding NewElementType}"/></StackPanel>
|
||
<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"/>
|
||
<TextBlock Text="Tipp: Koordinaten können rechts im Messmodus direkt aus der Vorschau übernommen werden."
|
||
TextWrapping="Wrap" Opacity="0.65" FontSize="11"/>
|
||
<TextBlock Text="Elemente im Content-Flow verwenden Reihenfolge, gap und keep-with-next; ihre X/Y-Koordinaten werden nicht benötigt."
|
||
TextWrapping="Wrap" Foreground="#166534" FontSize="12"/>
|
||
<TextBlock Text="FLOWBOX verteilt Text automatisch über beliebig viele Seiten. TEXTBOX bleibt ein fester Bereich."
|
||
TextWrapping="Wrap" Foreground="#166534" FontSize="12"/>
|
||
<TextBlock Text="Systemvariablen ohne Deklaration: $$today, $$curPage und $$maxPageNum (z. B. "Seite $$curPage von $$maxPageNum")."
|
||
TextWrapping="Wrap" Foreground="#166534" FontSize="12"/>
|
||
<TextBlock Text="DRAWBOX und FLOWDRAWBOX nehmen deklarative Zeichenbefehle (Text, Linien, Rechtecke, Bilder) aus einer externen App entgegen."
|
||
TextWrapping="Wrap" Foreground="#166534" FontSize="12"/>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</TabItem>
|
||
</TabControl>
|
||
|
||
<Grid Grid.Column="1" RowDefinitions="Auto,*" Margin="0,18">
|
||
<Grid ColumnDefinitions="*,Auto,8,Auto" Margin="12,0,12,10"><TextBlock Text="Layout-DSL" Classes="section"/>
|
||
<Button Grid.Column="1" Content="Prüfen & Vorschau" Click="OnPreview"/>
|
||
<Button Grid.Column="3" Content="Als PDF exportieren …" Click="OnExportCurrentPdf"/></Grid>
|
||
<TabControl Grid.Row="1" Margin="12">
|
||
<TabItem Header="Skript">
|
||
<TextBox Text="{Binding LayoutSource}" AcceptsReturn="True" TextWrapping="NoWrap"
|
||
FontFamily="Menlo,Consolas,monospace" FontSize="13" VerticalContentAlignment="Top"
|
||
ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
||
</TabItem>
|
||
<TabItem Header="Folgeseiten (Legacy)" IsVisible="{Binding IsLegacyContinuationSupported}">
|
||
<Grid RowDefinitions="Auto,*">
|
||
<CheckBox Margin="8" Content="Eigenes Layout für Seite 2 und alle weiteren Seiten im Paket speichern"
|
||
IsChecked="{Binding UseContinuationLayout}"/>
|
||
<TextBox Grid.Row="1" Text="{Binding ContinuationLayoutSource}" IsEnabled="{Binding UseContinuationLayout}"
|
||
AcceptsReturn="True" TextWrapping="NoWrap" FontFamily="Menlo,Consolas,monospace" FontSize="13"
|
||
VerticalContentAlignment="Top" ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
|
||
</Grid>
|
||
</TabItem>
|
||
</TabControl>
|
||
</Grid>
|
||
|
||
<Border Grid.Column="2" Background="#E2E8F0" Padding="18">
|
||
<Grid RowDefinitions="Auto,Auto,*,Auto">
|
||
<Grid ColumnDefinitions="*,Auto">
|
||
<StackPanel><TextBlock Text="Visueller Layout-Editor" Classes="section"/>
|
||
<ComboBox ItemsSource="{Binding PageTemplateNames}" SelectedItem="{Binding SelectedPageTemplate, Mode=TwoWay}"
|
||
MinWidth="150" Margin="0,5,0,0"/>
|
||
<Button Content="Seitentyp anzeigen" Margin="0,5,0,0" Click="OnPageTemplateSelectionChanged"/></StackPanel>
|
||
<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="Auto,8,*">
|
||
<TextBlock Text="Vorschau" VerticalAlignment="Center" Classes="label"/>
|
||
<ComboBox Grid.Column="2" ItemsSource="{Binding PreviewPages}" SelectedItem="{Binding SelectedPreviewPage}"
|
||
DisplayMemberBinding="{Binding Display}" PlaceholderText="Noch nicht gerendert"/>
|
||
</Grid>
|
||
<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}"
|
||
PageTemplateName="{Binding SelectedPageTemplate}"
|
||
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>
|