[Phase 17-UI-A] AgentSettingsPanel 완전 통합 — 설정 버튼 직접 연결

ChatWindow.MoodMenu.cs (BtnSettings_Click 개선):
- Shift+클릭 조건 제거 → 기어 버튼 클릭 시 AgentSettingsPanel 직접 열기
- Ctrl+클릭으로 전역 SettingsWindow 열기 (기존 동작 유지)
- ToggleSettingsPanel(): _toolRegistry 패널에 전달, SettingsChanged 이벤트 연결
- OnSettingsPanelChanged() 신규: 설정 변경 시 ModelLabel·AnalyzerButton 즉시 갱신

ChatWindow.TabSwitching.cs:
- UpdateTabUI(): 설정 패널 열린 상태이면 UpdateActiveTab() 자동 호출
- 탭 전환 시 탭별 전용 설정(Cowork 검증/Code LSP 등) 패널 자동 반영

ChatWindow.xaml:
- 설정 버튼 ToolTip: "설정 패널 (Ctrl+클릭: 전역 설정)"으로 UX 안내 추가

AgentSettingsPanel.xaml.cs:
- LoadFromSettings(): ToolRegistry? 매개변수 추가 (외부 레지스트리 주입)
- BuildToolToggles(): 외부 레지스트리 우선, 없으면 ToolRegistry.CreateDefault() 폴백
- 반영 방식 개선: 리플렉션 해킹 제거 → 실제 ChatWindow._toolRegistry 참조

docs/NEXT_ROADMAP.md:
- Phase 17-UI-A 완료 항목 추가 (변경 파일 테이블, 개선 효과)

빌드: 경고 0, 오류 0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-03 21:57:58 +09:00
parent 4fa38a7b9e
commit e7aa107b16
5 changed files with 190 additions and 13 deletions

View File

@@ -43,7 +43,8 @@ public partial class AgentSettingsPanel : UserControl
}
/// <summary>현재 설정값으로 UI를 초기화합니다.</summary>
public void LoadFromSettings(SettingsService settings, string activeTab)
public void LoadFromSettings(SettingsService settings, string activeTab,
Services.Agent.ToolRegistry? toolRegistry = null)
{
_isLoading = true;
@@ -82,7 +83,7 @@ public partial class AgentSettingsPanel : UserControl
}
// 도구 토글 동적 생성
BuildToolToggles(settings);
BuildToolToggles(settings, toolRegistry);
_isLoading = false;
}
@@ -95,11 +96,13 @@ public partial class AgentSettingsPanel : UserControl
PanelCodeSettings.Visibility = tab == "Code" ? Visibility.Visible : Visibility.Collapsed;
}
private void BuildToolToggles(SettingsService settings)
private void BuildToolToggles(SettingsService settings,
Services.Agent.ToolRegistry? externalRegistry = null)
{
PanelToolToggles.Children.Clear();
var registry = CurrentApp?.GetType().GetProperty("ToolRegistry")?.GetValue(CurrentApp) as Services.Agent.ToolRegistry;
// Phase 17-UI: 외부에서 전달된 레지스트리 우선, 없으면 독립 생성
var registry = externalRegistry ?? Services.Agent.ToolRegistry.CreateDefault();
if (registry == null) return;
var disabled = new HashSet<string>(