@@ -42,123 +42,138 @@
</Grid>
</Border>
<Grid Grid.Row="2" ColumnDefinitions="460,*,390">
<ScrollViewer Grid.Column="0" Padd ing ="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 Ausgangsvor lag e"/>
<TextBlock Text ="{Binding Selected StarterTemplate.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="OnEdit StarterTemplate"/>
<Button Grid.Column="4 " Content="Als neues Projekt " Click="OnUse StarterTemplate"/>
<Button Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3 " Content="Aktuell es 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="+ Platzhalter" Click="OnAddPlaceholder"/></Grid>
<DataGrid x:Name="PlaceholderGrid" ItemsSource="{Binding Placeholders}" SelectedItem="{Binding SelectedPlaceholder}"
AutoGenerateColumns="False" Height="180" 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="58"/>
<DataGridTextColumn Header="Beispiel" Binding="{Binding Sample}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
<Border Padding="10" BorderBrush="#CBD5E1" BorderThickness="1" CornerRadius="4">
<StackPanel Spacing="8">
<TextBlock Text="Ausgewählten Platzhalter 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>
<TabControl Grid.Column="0" Marg in="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="OnImportStarterTemp lat e"/></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="OnPreview StarterTemplate"/>
<Button Grid.Column="2 " Content="Bearbeiten " Click="OnEdit StarterTemplate"/>
<Button Grid.Column="4 " Content="Als neu es 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>
<CheckBox Content="Pflichtwert" IsChecked="{Binding SelectedPlaceholder.Required, Mode=TwoWay}" />
<StackPanel>< TextBlock Text="Beispielwert für die Vorschau " Classes="label "/>
<TextBox Text="{Binding SelectedPlaceholder.Sample, Mode=TwoWay}" AcceptsReturn="True"
MinHeight="58" TextWrapping="Wrap " P laceholderText="Beispieldaten eingeben "/></StackPanel>
<Button Content="Ausgewählten Platzhalter entfernen" HorizontalAlignment="Left"
Click="OnRemovePlaceholder"/ >
<Separator />
<TextBlock Text="Paketdaten " Classes="section "/>
<Grid ColumnDefinitions="*,10,*" RowDefinitions="Auto,Auto">
<StackPanel><TextBlock Text="Stabile ID " C lasses="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>
</Bord er>
</ScrollView er>
</TabItem>
<Grid ColumnDefinitions="*,Auto"><TextBlock Text="Paket-Assets" Classes="section"/ >
<Button Grid.Colum n="1 " Content="+ Bild importieren …" Click="OnImportAsset"/></Grid >
<DataGrid ItemsSource="{Binding AssetItems}" SelectedItem="{Binding SelectedAsset}"
AutoGenerate Columns ="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"/ >
<DataGridText Column Header="Größe" Binding="{Binding FileSize}" Width="70"/ >
<DataGridTextColumn Header="Verwendung " Binding="{Binding Usag e}" 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"/>
<TabItem Header="Platzhalter" >
<Grid Margi n="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 Nam e}" Width="* "/>
<DataGridText Column Header="Typ" Binding="{Binding Type}" Width="105"/ >
<DataGridCheckBoxColumn Header="Pflicht" Binding="{Binding Required}" Width="65"/ >
</Data Grid. 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}"/>
<StackPanel><TextBlock Text="Beispielwert für die Vorschau" Classes="label"/>
<TextBox Text="{Binding SelectedPlaceholder.Sample, Mode=TwoWay}" AcceptsReturn="True"
MinHeight="68" MaxHeight="120" TextWrapping="Wrap" PlaceholderText="Beispieldaten eingeben"/></StackPanel>
<Button Content="Platzhalter entfernen" HorizontalAlignment="Left" Click="OnRemovePlaceholder"/>
</StackPanel>
</Border>
</Grid>
</TabItem>
<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 >
<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}"
AutoGenerate Columns ="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>
<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 >
</TabItem >
<TabItem Header="Elemente" >
<ScrollViewer Padding="8" >
<StackPanel Spacing="12" >
<TextBlock Text="Element hinzufügen" Classes="section"/ >
<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="Bekannte Einschränkung: TEXTBOX-Überlauf wird in v1 nicht automatisch auf Folgeseiten verteilt."
TextWrapping="Wrap" Foreground="#B45309" FontSize="12"/>
</StackPanel>
</ScrollViewer>
</TabItem>
</TabControl>
<Grid Grid.Column="1" RowDefinitions="Auto,*" Margin="0,18">
<Grid ColumnDefinitions="*,Auto" Margin="12,0,12,10"><TextBlock Text="Layout-DSL" Classes="section"/>