Initial commit to new repository
This commit is contained in:
499
.decompiledproj/AxCopilot/Views/ModelRegistrationDialog.cs
Normal file
499
.decompiledproj/AxCopilot/Views/ModelRegistrationDialog.cs
Normal file
@@ -0,0 +1,499 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Effects;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace AxCopilot.Views;
|
||||
|
||||
internal sealed class ModelRegistrationDialog : Window
|
||||
{
|
||||
private readonly TextBox _aliasBox;
|
||||
|
||||
private readonly TextBox _modelBox;
|
||||
|
||||
private readonly TextBox _endpointBox;
|
||||
|
||||
private readonly TextBox _apiKeyBox;
|
||||
|
||||
private readonly ComboBox _authTypeBox;
|
||||
|
||||
private readonly StackPanel _cp4dPanel;
|
||||
|
||||
private readonly TextBox _cp4dUrlBox;
|
||||
|
||||
private readonly TextBox _cp4dUsernameBox;
|
||||
|
||||
private readonly PasswordBox _cp4dPasswordBox;
|
||||
|
||||
public string ModelAlias => _aliasBox.Text.Trim();
|
||||
|
||||
public string ModelName => _modelBox.Text.Trim();
|
||||
|
||||
public string Endpoint => _endpointBox.Text.Trim();
|
||||
|
||||
public string ApiKey => _apiKeyBox.Text.Trim();
|
||||
|
||||
public string AuthType => (_authTypeBox.SelectedItem as ComboBoxItem)?.Tag?.ToString() ?? "bearer";
|
||||
|
||||
public string Cp4dUrl => _cp4dUrlBox.Text.Trim();
|
||||
|
||||
public string Cp4dUsername => _cp4dUsernameBox.Text.Trim();
|
||||
|
||||
public string Cp4dPassword => _cp4dPasswordBox.Password.Trim();
|
||||
|
||||
public ModelRegistrationDialog(string service, string existingAlias = "", string existingModel = "", string existingEndpoint = "", string existingApiKey = "", string existingAuthType = "bearer", string existingCp4dUrl = "", string existingCp4dUsername = "", string existingCp4dPassword = "")
|
||||
{
|
||||
bool flag = !string.IsNullOrEmpty(existingAlias);
|
||||
base.Title = (flag ? "모델 편집" : "모델 추가");
|
||||
base.Width = 420.0;
|
||||
base.SizeToContent = SizeToContent.Height;
|
||||
base.WindowStartupLocation = WindowStartupLocation.CenterOwner;
|
||||
base.ResizeMode = ResizeMode.NoResize;
|
||||
base.WindowStyle = WindowStyle.None;
|
||||
base.AllowsTransparency = true;
|
||||
base.Background = Brushes.Transparent;
|
||||
Brush background = (Application.Current.TryFindResource("LauncherBackground") as Brush) ?? new SolidColorBrush(Color.FromRgb(26, 27, 46));
|
||||
Brush foreground = (Application.Current.TryFindResource("PrimaryText") as Brush) ?? Brushes.White;
|
||||
Brush foreground2 = (Application.Current.TryFindResource("SecondaryText") as Brush) ?? Brushes.Gray;
|
||||
Brush brush = (Application.Current.TryFindResource("AccentColor") as Brush) ?? Brushes.Blue;
|
||||
Brush background2 = (Application.Current.TryFindResource("ItemBackground") as Brush) ?? new SolidColorBrush(Color.FromRgb(42, 43, 64));
|
||||
Brush brush2 = (Application.Current.TryFindResource("BorderColor") as Brush) ?? Brushes.Gray;
|
||||
Border border = new Border
|
||||
{
|
||||
Background = background,
|
||||
CornerRadius = new CornerRadius(16.0),
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0),
|
||||
Padding = new Thickness(28.0, 24.0, 28.0, 24.0),
|
||||
Effect = new DropShadowEffect
|
||||
{
|
||||
BlurRadius = 24.0,
|
||||
ShadowDepth = 4.0,
|
||||
Opacity = 0.3,
|
||||
Color = Colors.Black
|
||||
}
|
||||
};
|
||||
StackPanel stackPanel = new StackPanel();
|
||||
StackPanel stackPanel2 = new StackPanel
|
||||
{
|
||||
Orientation = Orientation.Horizontal,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 20.0)
|
||||
};
|
||||
stackPanel2.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "\uea86",
|
||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||
FontSize = 18.0,
|
||||
Foreground = brush,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(0.0, 0.0, 10.0, 0.0)
|
||||
});
|
||||
stackPanel2.Children.Add(new TextBlock
|
||||
{
|
||||
Text = (flag ? "모델 편집" : "새 모델 등록"),
|
||||
FontSize = 17.0,
|
||||
FontWeight = FontWeights.Bold,
|
||||
Foreground = foreground,
|
||||
VerticalAlignment = VerticalAlignment.Center
|
||||
});
|
||||
stackPanel.Children.Add(stackPanel2);
|
||||
string text = ((service == "vllm") ? "vLLM" : "Ollama");
|
||||
Border border2 = new Border
|
||||
{
|
||||
Background = brush,
|
||||
CornerRadius = new CornerRadius(6.0),
|
||||
Padding = new Thickness(10.0, 3.0, 10.0, 3.0),
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 16.0),
|
||||
HorizontalAlignment = HorizontalAlignment.Left,
|
||||
Opacity = 0.85
|
||||
};
|
||||
border2.Child = new TextBlock
|
||||
{
|
||||
Text = text + " 서비스",
|
||||
FontSize = 11.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = Brushes.White
|
||||
};
|
||||
stackPanel.Children.Add(border2);
|
||||
stackPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "별칭 (표시 이름)",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 6.0)
|
||||
});
|
||||
stackPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "채팅 화면에서 표시될 이름입니다. 예: 코드 리뷰 전용, 일반 대화",
|
||||
FontSize = 11.0,
|
||||
Foreground = foreground2,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 8.0)
|
||||
});
|
||||
_aliasBox = new TextBox
|
||||
{
|
||||
Text = existingAlias,
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(12.0, 8.0, 12.0, 8.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
CaretBrush = brush,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
Border element = new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _aliasBox
|
||||
};
|
||||
stackPanel.Children.Add(element);
|
||||
stackPanel.Children.Add(new Rectangle
|
||||
{
|
||||
Height = 1.0,
|
||||
Fill = brush2,
|
||||
Margin = new Thickness(0.0, 16.0, 0.0, 16.0),
|
||||
Opacity = 0.5
|
||||
});
|
||||
stackPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "실제 모델명",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 6.0)
|
||||
});
|
||||
stackPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "서버에 배포된 실제 모델 ID (예: llama3:8b, qwen2:7b)",
|
||||
FontSize = 11.0,
|
||||
Foreground = foreground2,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 8.0)
|
||||
});
|
||||
_modelBox = new TextBox
|
||||
{
|
||||
Text = existingModel,
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(12.0, 8.0, 12.0, 8.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
CaretBrush = brush,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
Border element2 = new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _modelBox
|
||||
};
|
||||
stackPanel.Children.Add(element2);
|
||||
stackPanel.Children.Add(new Rectangle
|
||||
{
|
||||
Height = 1.0,
|
||||
Fill = brush2,
|
||||
Margin = new Thickness(0.0, 16.0, 0.0, 16.0),
|
||||
Opacity = 0.5
|
||||
});
|
||||
stackPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "서버 엔드포인트 (선택)",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 6.0)
|
||||
});
|
||||
stackPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "이 모델 전용 서버 주소. 비워두면 기본 엔드포인트를 사용합니다.",
|
||||
FontSize = 11.0,
|
||||
Foreground = foreground2,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 8.0)
|
||||
});
|
||||
_endpointBox = new TextBox
|
||||
{
|
||||
Text = existingEndpoint,
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(12.0, 8.0, 12.0, 8.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
CaretBrush = brush,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
stackPanel.Children.Add(new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _endpointBox
|
||||
});
|
||||
stackPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "인증 방식",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 10.0, 0.0, 6.0)
|
||||
});
|
||||
_authTypeBox = new ComboBox
|
||||
{
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(8.0, 6.0, 8.0, 6.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
ComboBoxItem comboBoxItem = new ComboBoxItem
|
||||
{
|
||||
Content = "Bearer 토큰 (API 키)",
|
||||
Tag = "bearer"
|
||||
};
|
||||
ComboBoxItem comboBoxItem2 = new ComboBoxItem
|
||||
{
|
||||
Content = "CP4D (IBM Cloud Pak for Data)",
|
||||
Tag = "cp4d"
|
||||
};
|
||||
_authTypeBox.Items.Add(comboBoxItem);
|
||||
_authTypeBox.Items.Add(comboBoxItem2);
|
||||
_authTypeBox.SelectedItem = ((existingAuthType == "cp4d") ? comboBoxItem2 : comboBoxItem);
|
||||
stackPanel.Children.Add(new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _authTypeBox
|
||||
});
|
||||
StackPanel apiKeyPanel = new StackPanel();
|
||||
apiKeyPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "API 키 (선택)",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 10.0, 0.0, 6.0)
|
||||
});
|
||||
_apiKeyBox = new TextBox
|
||||
{
|
||||
Text = existingApiKey,
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(12.0, 8.0, 12.0, 8.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
CaretBrush = brush,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
apiKeyPanel.Children.Add(new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _apiKeyBox
|
||||
});
|
||||
stackPanel.Children.Add(apiKeyPanel);
|
||||
_cp4dPanel = new StackPanel
|
||||
{
|
||||
Visibility = ((!(existingAuthType == "cp4d")) ? Visibility.Collapsed : Visibility.Visible)
|
||||
};
|
||||
_cp4dPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "CP4D 서버 URL",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 10.0, 0.0, 6.0)
|
||||
});
|
||||
_cp4dPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "예: https://cpd-host.example.com",
|
||||
FontSize = 11.0,
|
||||
Foreground = foreground2,
|
||||
Margin = new Thickness(0.0, 0.0, 0.0, 6.0)
|
||||
});
|
||||
_cp4dUrlBox = new TextBox
|
||||
{
|
||||
Text = existingCp4dUrl,
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(12.0, 8.0, 12.0, 8.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
CaretBrush = brush,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
_cp4dPanel.Children.Add(new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _cp4dUrlBox
|
||||
});
|
||||
_cp4dPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "사용자 이름",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 10.0, 0.0, 6.0)
|
||||
});
|
||||
_cp4dUsernameBox = new TextBox
|
||||
{
|
||||
Text = existingCp4dUsername,
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(12.0, 8.0, 12.0, 8.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
CaretBrush = brush,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
_cp4dPanel.Children.Add(new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _cp4dUsernameBox
|
||||
});
|
||||
_cp4dPanel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "비밀번호 / API 키",
|
||||
FontSize = 12.0,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = foreground,
|
||||
Margin = new Thickness(0.0, 10.0, 0.0, 6.0)
|
||||
});
|
||||
_cp4dPasswordBox = new PasswordBox
|
||||
{
|
||||
Password = existingCp4dPassword,
|
||||
FontSize = 13.0,
|
||||
Padding = new Thickness(12.0, 8.0, 12.0, 8.0),
|
||||
Foreground = foreground,
|
||||
Background = background2,
|
||||
CaretBrush = brush,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0)
|
||||
};
|
||||
_cp4dPanel.Children.Add(new Border
|
||||
{
|
||||
CornerRadius = new CornerRadius(8.0),
|
||||
ClipToBounds = true,
|
||||
Child = _cp4dPasswordBox
|
||||
});
|
||||
stackPanel.Children.Add(_cp4dPanel);
|
||||
_authTypeBox.SelectionChanged += delegate
|
||||
{
|
||||
bool flag2 = AuthType == "cp4d";
|
||||
_cp4dPanel.Visibility = ((!flag2) ? Visibility.Collapsed : Visibility.Visible);
|
||||
apiKeyPanel.Visibility = (flag2 ? Visibility.Collapsed : Visibility.Visible);
|
||||
};
|
||||
apiKeyPanel.Visibility = ((existingAuthType == "cp4d") ? Visibility.Collapsed : Visibility.Visible);
|
||||
StackPanel stackPanel3 = new StackPanel
|
||||
{
|
||||
Orientation = Orientation.Horizontal,
|
||||
Margin = new Thickness(0.0, 12.0, 0.0, 0.0)
|
||||
};
|
||||
stackPanel3.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "\ue72e",
|
||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||
FontSize = 11.0,
|
||||
Foreground = new SolidColorBrush(Color.FromRgb(56, 161, 105)),
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(0.0, 0.0, 6.0, 0.0)
|
||||
});
|
||||
stackPanel3.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "모델명은 AES-256으로 암호화되어 설정 파일에 저장됩니다",
|
||||
FontSize = 10.5,
|
||||
Foreground = foreground2,
|
||||
VerticalAlignment = VerticalAlignment.Center
|
||||
});
|
||||
stackPanel.Children.Add(stackPanel3);
|
||||
StackPanel stackPanel4 = new StackPanel
|
||||
{
|
||||
Orientation = Orientation.Horizontal,
|
||||
HorizontalAlignment = HorizontalAlignment.Right,
|
||||
Margin = new Thickness(0.0, 24.0, 0.0, 0.0)
|
||||
};
|
||||
Button button = new Button
|
||||
{
|
||||
Content = "취소",
|
||||
Width = 80.0,
|
||||
Padding = new Thickness(0.0, 8.0, 0.0, 8.0),
|
||||
Margin = new Thickness(0.0, 0.0, 10.0, 0.0),
|
||||
Background = Brushes.Transparent,
|
||||
Foreground = foreground2,
|
||||
BorderBrush = brush2,
|
||||
BorderThickness = new Thickness(1.0),
|
||||
Cursor = Cursors.Hand,
|
||||
FontSize = 13.0
|
||||
};
|
||||
button.Click += delegate
|
||||
{
|
||||
base.DialogResult = false;
|
||||
Close();
|
||||
};
|
||||
stackPanel4.Children.Add(button);
|
||||
Button button2 = new Button
|
||||
{
|
||||
Content = (flag ? "저장" : "등록"),
|
||||
Width = 80.0,
|
||||
Padding = new Thickness(0.0, 8.0, 0.0, 8.0),
|
||||
Background = brush,
|
||||
Foreground = Brushes.White,
|
||||
BorderThickness = new Thickness(0.0),
|
||||
Cursor = Cursors.Hand,
|
||||
FontSize = 13.0,
|
||||
FontWeight = FontWeights.SemiBold
|
||||
};
|
||||
button2.Click += delegate
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(_aliasBox.Text))
|
||||
{
|
||||
CustomMessageBox.Show("별칭을 입력하세요.", "입력 오류", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
_aliasBox.Focus();
|
||||
}
|
||||
else if (string.IsNullOrWhiteSpace(_modelBox.Text))
|
||||
{
|
||||
CustomMessageBox.Show("모델명을 입력하세요.", "입력 오류", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
_modelBox.Focus();
|
||||
}
|
||||
else
|
||||
{
|
||||
base.DialogResult = true;
|
||||
Close();
|
||||
}
|
||||
};
|
||||
stackPanel4.Children.Add(button2);
|
||||
stackPanel.Children.Add(stackPanel4);
|
||||
border.Child = stackPanel;
|
||||
base.Content = border;
|
||||
base.KeyDown += delegate(object _, KeyEventArgs ke)
|
||||
{
|
||||
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0009: Invalid comparison between Unknown and I4
|
||||
if ((int)ke.Key == 13)
|
||||
{
|
||||
base.DialogResult = false;
|
||||
Close();
|
||||
}
|
||||
};
|
||||
base.Loaded += delegate
|
||||
{
|
||||
_aliasBox.Focus();
|
||||
_aliasBox.SelectAll();
|
||||
};
|
||||
border.MouseLeftButtonDown += delegate(object _, MouseButtonEventArgs me)
|
||||
{
|
||||
if (me.LeftButton == MouseButtonState.Pressed)
|
||||
{
|
||||
try
|
||||
{
|
||||
DragMove();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user