Alle Prompts -> wieder auf animated window

+ restyling
This commit is contained in:
2026-03-27 12:34:01 +01:00
parent 97a6fd10c2
commit 28fcfd9eef
8 changed files with 229 additions and 216 deletions

View File

@@ -61,7 +61,7 @@
</Image.ToolTip>
</Image>
</StackPanel>
<Popup
<!--<Popup
x:Name="popup_promptbaustein_all"
Width="600"
Height="400"
@@ -69,7 +69,7 @@
PlacementTarget="{Binding ElementName=btnOpenAi5}"
StaysOpen="False">
<Border x:Name="border_promptbaustein_al" BorderThickness="1" />
</Popup>
</Popup>-->
<Popup
x:Name="popup_promptbaustein_favoriten"
Placement="Top"

View File

@@ -6,6 +6,7 @@ using BS.Shared;
using BS.Shared.DataContracts.Feature.AI;
using DevExpress.Mvvm;
using DevExpress.Pdf.Native.BouncyCastle.Asn1.BC;
using DevExpress.Web.Internal.XmlProcessor;
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -46,7 +47,6 @@ namespace BeWo.View.Controls.AI
public event RoutedEventHandler OpenAiWindowClick;
public event RoutedEventHandler OpenAiPromptClick;
public event EventHandler<AiPromptbausteinPromptVM> PromptAccepted;
@@ -68,6 +68,8 @@ namespace BeWo.View.Controls.AI
set { SetValue(ActionTypeProperty, value); }
}
public AiPromptbausteinSelectionComplexViewModel AllPromptsViewModel { get; set; }
public ICommand AiPromptOpenAllCommand { get; set; }
public ICommand AiPromptOpenFavoriteCommand { get; set; }
@@ -80,7 +82,9 @@ namespace BeWo.View.Controls.AI
public void AiPromptOpenAll()
{
popup_promptbaustein_all.IsOpen = true;
//popup_promptbaustein_all.IsOpen = true;
//OpenAiPromptClick?.Invoke(this, e);
BeWoApp.MainControl.WindowService.Show(AllPromptsViewModel);
}
public void AiPromptOpenFavorite()
{
@@ -161,7 +165,6 @@ namespace BeWo.View.Controls.AI
}
private void btnOpenAi5_Click(object sender, RoutedEventArgs e)
{
//OpenAiPromptClick?.Invoke(this, e);
AiPromptOpenAll();
}
private void btnOpenAi5_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
@@ -174,11 +177,8 @@ namespace BeWo.View.Controls.AI
{
var viewmodel = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm);
viewmodel.PromptAccepted += PromptAccepted;
popup_promptbaustein_all.Closed += (s, e) => viewmodel.ResetSelection();
var view = new AiPromptbausteinComplexSelectionView(viewmodel);
view.Padding = new Thickness(3);
view.Background = FindResource("ObjectEditBackgroundBrush") as System.Windows.Media.Brush;
border_promptbaustein_al.Child = view;
viewmodel.RequestClose += (s, e) => viewmodel.ResetSelection();
AllPromptsViewModel = viewmodel;
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm, true);
viewmodel2.PromptAccepted += PromptAccepted;

View File

@@ -36,7 +36,7 @@
</Button.InputBindings>-->
</Button>
</StackPanel>
<Popup
<!--<Popup
x:Name="popup_promptbaustein_all"
Width="600"
Height="400"
@@ -44,7 +44,7 @@
PlacementTarget="{Binding ElementName=btnOpenAi5}"
StaysOpen="False">
<Border x:Name="border_promptbaustein_al" BorderThickness="1" />
</Popup>
</Popup>-->
<Popup
x:Name="popup_promptbaustein_favoriten"
Placement="Top"

View File

@@ -46,6 +46,15 @@ namespace BeWo.View.Controls.AI
public static readonly DependencyProperty ActionTypeProperty =
DependencyProperty.Register("ActionType", typeof(AiActionType), typeof(AiPromptbausteinButton), new PropertyMetadata(AiActionType.ServiceRecord, OnActionTypeChanged));
public event EventHandler<AiPromptbausteinPromptVM> PromptAccepted;
public AiPromptbausteinSelectionComplexViewModel AllPromptsViewModel { get; set; }
public AiPromptbausteinButton()
{
InitializeComponent();
}
public AiPromptbausteinButtonState State
{
get { return (AiPromptbausteinButtonState)GetValue(StateProperty); }
@@ -63,13 +72,6 @@ namespace BeWo.View.Controls.AI
set { SetValue(CanExecuteProperty, value); }
}
public event EventHandler<AiPromptbausteinPromptVM> PromptAccepted;
public AiPromptbausteinButton()
{
InitializeComponent();
}
private static void OnStateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = (AiPromptbausteinButton)d;
@@ -91,7 +93,7 @@ namespace BeWo.View.Controls.AI
public void AiPromptOpenAll()
{
popup_promptbaustein_all.IsOpen = true;
BeWoApp.MainControl.WindowService.Show(AllPromptsViewModel);
}
public void AiPromptOpenFavorite()
{
@@ -113,11 +115,8 @@ namespace BeWo.View.Controls.AI
{
var viewmodel = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm);
viewmodel.PromptAccepted += PromptAccepted;
popup_promptbaustein_all.Closed += (s, e) => viewmodel.ResetSelection();
var view = new AiPromptbausteinComplexSelectionView(viewmodel);
view.Padding = new Thickness(3);
view.Background = FindResource("ObjectEditBackgroundBrush") as System.Windows.Media.Brush;
border_promptbaustein_al.Child = view;
viewmodel.RequestClose += (s, e) => viewmodel.ResetSelection();
AllPromptsViewModel = viewmodel;
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm, true);
viewmodel2.PromptAccepted += PromptAccepted;

View File

@@ -3,16 +3,17 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.ViewModel.View.AI"
xmlns:local1="clr-namespace:BeWo.View.Detail.AI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:local="clr-namespace:BeWo.View.Detail.AI"
xmlns:local1="clr-namespace:BeWo.View.Detail.AI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:BeWo.ViewModel"
d:DataContext="{d:DesignInstance Type=ai:AiPromptbausteinSelectionComplexViewModel,
IsDesignTimeCreatable=True}"
d:DesignHeight="450"
d:DesignWidth="800"
Background="{StaticResource ObjectEditBackgroundBrush}"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
@@ -28,189 +29,199 @@
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="2*" MinWidth="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox
x:Name="groupBox1"
Grid.Column="0"
HorizontalAlignment="Stretch"
Header="Ordner"
Style="{StaticResource ObjectEditGroupBox}">
<TreeView
x:Name="treeView"
MinHeight="100"
Padding="4,16,4,16"
AllowDrop="True"
ContextMenuOpening="treeView_ContextMenuOpening"
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
ItemTemplate="{StaticResource ai_promptbaustein_folder_itemtemplate}"
ItemsSource="{Binding Folders.VMList, UpdateSourceTrigger=PropertyChanged}"
PreviewMouseDown="Grid_PreviewMouseDown"
PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
SelectedItemChanged="treeView_SelectedItemChanged"
TreeViewItem.Selected="treeView_Selected">
<TreeView.Resources>
<Style x:Key="igoal_treeitemstyle" TargetType="TreeViewItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
</TreeView.Resources>
<TreeView.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type Image}">
<Setter Property="Height" Value="24" />
</Style>
</ResourceDictionary>
</ContextMenu.Resources>
<MenuItem Command="{Binding OpenAddFolderDialogCommand}" Header="Neu">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding OpenEditFolderDialogCommand}" Header="Bearbeiten">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding DeleteFolderCommand}" Header="Löschen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</TreeView.ContextMenu>
</TreeView>
</GroupBox>
<GridSplitter
x:Name="splitter"
Grid.Column="1"
Width="1"
HorizontalAlignment="Center"
Background="#878890" />
<GroupBox
x:Name="groupbox2"
Grid.Column="2"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
Header="Prompts"
Style="{StaticResource ObjectEditGroupBox}">
<dxe:ListBoxEdit
x:Name="listBoxEdit1"
Padding="4,16,4,16"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
AllowDrop="False"
ContextMenuOpening="ListBox_ContextMenuOpening"
EditValue="{Binding SelectedPrompt, Mode=TwoWay}"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
SelectionMode="Single">
<dxe:ListBoxEdit.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type Image}">
<Setter Property="Height" Value="24" />
</Style>
</ResourceDictionary>
</ContextMenu.Resources>
<MenuItem Command="{Binding OpenAddPromptDialogCommand}" Header="Neu">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding OpenEditPromptDialogCommand}" Header="Bearbeiten">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem
x:Name="favorite"
Command="{Binding ChangeFavoritenStatePromptCommand}"
Header="Favorit hinzufügen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Favorites32.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding DeletePromptCommand}" Header="Löschen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</dxe:ListBoxEdit.ContextMenu>
<dxe:ListBoxEdit.ItemTemplate>
<DataTemplate>
<Grid
Margin="0,3,0,0"
Background="Transparent"
PreviewMouseDown="Grid_PreviewMouseDown_1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
Height="21"
Margin="0"
Padding="0"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"
Focusable="False"
FontWeight="{Binding FontWeight, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True"
Text="{Binding Path=Title, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
ToolTipService.ShowDuration="100000">
<TextBox.ToolTip>
<StackPanel Orientation="Vertical">
<Label Content="{Binding Path=Title, Mode=OneWay}" FontWeight="Bold" />
<TextBox
MaxWidth="500"
Padding="3,1,0,0"
VerticalAlignment="Center"
AcceptsReturn="True"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Path=Description}"
TextWrapping="Wrap" />
</StackPanel>
</TextBox.ToolTip>
</TextBox>
<TextBlock
Grid.Column="1"
Margin="0"
Padding="0"
Visibility="{Binding IsInfoVisible, Converter={StaticResource BoolVisibilityConverter}}">
<Hyperlink NavigateUri="{Binding OwnsoftRefLink}" RequestNavigate="Hyperlink_RequestNavigate">
(i)
</Hyperlink>
</TextBlock>
</Grid>
</DataTemplate>
</dxe:ListBoxEdit.ItemTemplate>
</dxe:ListBoxEdit>
</GroupBox>
<Rectangle
Grid.ColumnSpan="3"
Height="6"
Fill="{DynamicResource ServiceRecordContentBrush}" />
<Grid Grid.Row="1" Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="2*" MinWidth="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!--<GroupBox
<GroupBox
x:Name="groupBox1"
Grid.Column="0"
HorizontalAlignment="Stretch"
Header="Ordner"
Style="{StaticResource ObjectEditGroupBox}">
<TreeView
x:Name="treeView"
MinHeight="100"
Padding="4,16,4,16"
AllowDrop="True"
ContextMenuOpening="treeView_ContextMenuOpening"
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
ItemTemplate="{StaticResource ai_promptbaustein_folder_itemtemplate}"
ItemsSource="{Binding Folders.VMList, UpdateSourceTrigger=PropertyChanged}"
PreviewMouseDown="Grid_PreviewMouseDown"
PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
SelectedItemChanged="treeView_SelectedItemChanged"
TreeViewItem.Selected="treeView_Selected">
<TreeView.Resources>
<Style x:Key="igoal_treeitemstyle" TargetType="TreeViewItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
</TreeView.Resources>
<TreeView.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type Image}">
<Setter Property="Height" Value="24" />
</Style>
</ResourceDictionary>
</ContextMenu.Resources>
<MenuItem Command="{Binding OpenAddFolderDialogCommand}" Header="Neu">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding OpenEditFolderDialogCommand}" Header="Bearbeiten">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding DeleteFolderCommand}" Header="Löschen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</TreeView.ContextMenu>
</TreeView>
</GroupBox>
<GridSplitter
x:Name="splitter"
Grid.Column="1"
Width="1"
HorizontalAlignment="Center"
Background="#878890" />
<GroupBox
x:Name="groupbox2"
Grid.Column="2"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
Header="Prompts"
Style="{StaticResource ObjectEditGroupBox}">
<dxe:ListBoxEdit
x:Name="listBoxEdit1"
Padding="4,16,4,16"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
AllowDrop="False"
ContextMenuOpening="ListBox_ContextMenuOpening"
EditValue="{Binding SelectedPrompt, Mode=TwoWay}"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
SelectionMode="Single">
<dxe:ListBoxEdit.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type Image}">
<Setter Property="Height" Value="24" />
</Style>
</ResourceDictionary>
</ContextMenu.Resources>
<MenuItem Command="{Binding OpenAddPromptDialogCommand}" Header="Neu">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding OpenEditPromptDialogCommand}" Header="Bearbeiten">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem
x:Name="favorite"
Command="{Binding ChangeFavoritenStatePromptCommand}"
Header="Favorit hinzufügen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Favorites32.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding DeletePromptCommand}" Header="Löschen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</dxe:ListBoxEdit.ContextMenu>
<dxe:ListBoxEdit.ItemTemplate>
<DataTemplate>
<Grid
Margin="0,3,0,0"
Background="Transparent"
PreviewMouseDown="Grid_PreviewMouseDown_1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
Height="21"
Margin="0"
Padding="0"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"
Focusable="False"
FontWeight="{Binding FontWeight, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True"
Text="{Binding Path=Title, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
ToolTipService.ShowDuration="100000">
<TextBox.ToolTip>
<StackPanel Orientation="Vertical">
<Label Content="{Binding Path=Title, Mode=OneWay}" FontWeight="Bold" />
<TextBox
MaxWidth="500"
Padding="3,1,0,0"
VerticalAlignment="Center"
AcceptsReturn="True"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Path=Description}"
TextWrapping="Wrap" />
</StackPanel>
</TextBox.ToolTip>
</TextBox>
<TextBlock
Grid.Column="1"
Margin="0"
Padding="0"
Visibility="{Binding IsInfoVisible, Converter={StaticResource BoolVisibilityConverter}}">
<Hyperlink NavigateUri="{Binding OwnsoftRefLink}" RequestNavigate="Hyperlink_RequestNavigate">
(i)
</Hyperlink>
</TextBlock>
</Grid>
</DataTemplate>
</dxe:ListBoxEdit.ItemTemplate>
</dxe:ListBoxEdit>
</GroupBox>
<!--<GroupBox
Grid.Row="1"
Grid.Column="2"
Header="Details"
@@ -286,13 +297,14 @@ Style="{StaticResource ObjectEditGroupBox}">
IsEnabled="{Binding IsEditingMode, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>-->
<Button
Grid.Row="1"
Grid.ColumnSpan="3"
Command="{Binding SendCommand}"
Style="{StaticResource PrimaryButton}">
Absenden
</Button>
<Button
Grid.Row="1"
Grid.ColumnSpan="3"
Command="{Binding SendCommand}"
Style="{StaticResource PrimaryButton}">
Absenden
</Button>
</Grid>
</Grid>
</UserControl>

View File

@@ -1779,11 +1779,11 @@
<TextBox.InputBindings>
<KeyBinding
Key="Z"
Command="{Binding UndoActionCommand, Converter={StaticResource TestDebugConverter}}"
Command="{Binding UndoAiActionCommand}"
Modifiers="Ctrl" />
<KeyBinding
Key="Y"
Command="{Binding RedoActionCommand}"
Command="{Binding RedoAiActionCommand}"
Modifiers="Ctrl" />
</TextBox.InputBindings>
</TextBox>

View File

@@ -37,7 +37,7 @@
x:Name="rootGroupBox"
MouseDoubleClick="RootGroupBox_OnMouseDoubleClick"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" />
Style="{DynamicResource PopUpWindowStyle}" />
<Grid
x:Name="_WaitingLayer"
HorizontalAlignment="Stretch"

View File

@@ -147,9 +147,11 @@ namespace BeWo.ViewModel.View.AI
}
public void Send()
{
var selected_prompt = SelectedPrompt;
CloseDialogCommand.Execute(null);
PromptAccepted?.Invoke(this, SelectedPrompt);
PromptAccepted?.Invoke(this, selected_prompt);
}
public bool CanSend()
{