Families.AutoWriter 1.0.0.0
Families 콘텐츠를 반복 작업 없이 작성·등록하도록 돕는 자동화 작성 도구입니다.
로딩중...
검색중...
일치하는것 없음
FamiliesAutoWriter.MainWindow 클래스 참조

더 자세히 ...

FamiliesAutoWriter.MainWindow에 대한 상속 다이어그램 :
FamiliesAutoWriter.MainWindow에 대한 협력 다이어그램:

클래스

class  BrowserTab

Public 멤버 함수

 MainWindow ()

Private 멤버 함수

void OnLoaded (object sender, RoutedEventArgs e)
void OnClosed (object? sender, EventArgs e)
async Task< BrowserTabCreateTabAsync (string label, string url, string? initialPrompt=null, SessionMode mode=SessionMode.Travel)
void ActivateTab (BrowserTab tab)
void CloseTab (BrowserTab tab)
void HandleNavigateTab (BrowserTab tab, string signal)
async void OnAddTabClick (object sender, RoutedEventArgs e)
async void OnNewTabNameKeyDown (object sender, KeyEventArgs e)
async Task AddTabFromInputAsync ()
void OnNavigateClick (object sender, RoutedEventArgs e)
void OnUrlKeyDown (object sender, KeyEventArgs e)
void OnBackClick (object sender, RoutedEventArgs e)
void NavigateCurrent ()
void OnClaudeClick (object sender, RoutedEventArgs e)
void OnChatGptClick (object sender, RoutedEventArgs e)
void OnGeminiClick (object sender, RoutedEventArgs e)
void NavigateTo (string url)

Private 속성

readonly List< BrowserTab_tabs = []
BrowserTab_activeTab
int _tabSeq = 0

상세한 설명

Main Window 기능과 관련 상태를 캡슐화합니다.

MainWindow.xaml.cs 파일의 19 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ MainWindow()

FamiliesAutoWriter.MainWindow.MainWindow ( )
inline

지정한 설정으로 MainWindow 클래스의 새 인스턴스를 초기화합니다.

MainWindow.xaml.cs 파일의 133 번째 라인에서 정의되었습니다.

134 {
135 InitializeComponent();
136 Loaded += OnLoaded;
137 Closed += OnClosed;
138 }

다음을 참조함 : OnClosed(), OnLoaded().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 함수 문서화

◆ ActivateTab()

void FamiliesAutoWriter.MainWindow.ActivateTab ( BrowserTab tab)
inlineprivate

Activate Tab 작업을 수행합니다.

매개변수
tabtab에 사용할 BrowserTab 값입니다.

MainWindow.xaml.cs 파일의 336 번째 라인에서 정의되었습니다.

337 {
338 _activeTab = tab;
339 var vm = (MainViewModel)DataContext;
340
341 foreach (var t in _tabs)
342 {
343 // Collapsed이면 숨겨진 WebView2에서 JS focus()가 안 됨 → Hidden으로 레이아웃 유지
344 t.WebView.Visibility = t == tab ? Visibility.Visible : Visibility.Hidden;
345 if (t.HeaderBtn != null)
346 t.HeaderBtn.IsChecked = t == tab;
347 }
348
349 UrlBox.Text = tab.CurrentUrl;
350
351 // 왼쪽 패널이 이 탭의 세션을 바라보도록 전환
352 vm.ActiveSession = tab.Session;
353
354 // 이 탭의 WebView 스크립트 실행 위임 갱신 (IsReady 여부에 따라)
355 tab.Session.ExecuteScriptAsync = async script =>
356 tab.IsReady ? await tab.WebView.ExecuteScriptAsync(script) : null;
357 }

다음을 참조함 : _activeTab, _tabs, FamiliesAutoWriter.MainWindow.BrowserTab.CurrentUrl.

다음에 의해서 참조됨 : AddTabFromInputAsync(), CloseTab(), CreateTabAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ AddTabFromInputAsync()

async Task FamiliesAutoWriter.MainWindow.AddTabFromInputAsync ( )
inlineprivate

Tab From Input Async 항목을 추가합니다.

반환값
Add Tab From Input Async 작업에서 생성한 Task 결과입니다.

MainWindow.xaml.cs 파일의 515 번째 라인에서 정의되었습니다.

516 {
517 var label = NewTabNameBox.Text.Trim();
518 if (string.IsNullOrEmpty(label)) label = $"탭 {_tabSeq + 1}";
519
520 var modeItem = NewTabModeBox.SelectedItem as System.Windows.Controls.ComboBoxItem;
521 var isCooking = modeItem?.Content?.ToString() == "요리";
522 var mode = isCooking ? SessionMode.Cooking : SessionMode.Travel;
523 var prompt = isCooking ? WriterSession.BuildCookingPrompt([]) : WriterSession.BuildTravelPrompt([]);
524
525 var tab = await CreateTabAsync(label, "https://claude.ai/new", prompt, mode);
526 ActivateTab(tab);
527
528 NewTabNameBox.Clear();
529 NewTabNameBox.Focus();
530 }

다음을 참조함 : ActivateTab(), FamiliesAutoWriter.ViewModels.WriterSession.BuildCookingPrompt(), FamiliesAutoWriter.ViewModels.WriterSession.BuildTravelPrompt(), FamiliesAutoWriter.ViewModels.Cooking, CreateTabAsync().

다음에 의해서 참조됨 : OnNewTabNameKeyDown().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CloseTab()

void FamiliesAutoWriter.MainWindow.CloseTab ( BrowserTab tab)
inlineprivate

Close Tab 작업을 수행합니다.

매개변수
tabtab에 사용할 BrowserTab 값입니다.

MainWindow.xaml.cs 파일의 376 번째 라인에서 정의되었습니다.

377 {
378 if (_tabs.Count <= 1) return;
379
380 var vm = (MainViewModel)DataContext;
381 var idx = _tabs.IndexOf(tab);
382 tab.Session.StopAutomation();
383 _tabs.Remove(tab);
384 vm.Sessions.Remove(tab.Session);
385
386 if (tab.HeaderBtn != null)
387 TabHeaderPanel.Children.Remove(tab.HeaderBtn);
388 WebViewHost.Children.Remove(tab.WebView);
389
390 if (_activeTab == tab)
391 {
392 var next = idx < _tabs.Count ? _tabs[idx] : _tabs[^1];
393 ActivateTab(next);
394 }
395 }

다음을 참조함 : _activeTab, _tabs, ActivateTab(), FamiliesAutoWriter.MainWindow.BrowserTab.HeaderBtn, FamiliesAutoWriter.MainWindow.BrowserTab.Session, FamiliesAutoWriter.ViewModels.WriterSession.StopAutomation(), FamiliesAutoWriter.MainWindow.BrowserTab.WebView.

다음에 의해서 참조됨 : CreateTabAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CreateTabAsync()

async Task< BrowserTab > FamiliesAutoWriter.MainWindow.CreateTabAsync ( string label,
string url,
string? initialPrompt = null,
SessionMode mode = SessionMode::Travel )
inlineprivate

Tab Async 값을 생성합니다.

매개변수
labellabel에 사용할 string 값입니다.
urlurl에 사용할 string 값입니다.
initialPromptinitial Prompt에 사용할 string? 값입니다.
modemode에 사용할 SessionMode 값입니다.
반환값
Create Tab Async 작업에서 생성한 Task<BrowserTab> 결과입니다.

MainWindow.xaml.cs 파일의 249 번째 라인에서 정의되었습니다.

250 {
251 var vm = (MainViewModel)DataContext;
252 var session = new WriterSession(initialPrompt) { Mode = mode };
253
254 var wv = new WebView2 { Visibility = Visibility.Hidden };
255 WebViewHost.Children.Add(wv);
256
257 var tab = new BrowserTab
258 {
259 Id = $"tab{++_tabSeq}",
260 Label = label,
261 WebView = wv,
262 Session = session,
263 CurrentUrl = url,
264 };
265 session.NavigateTab = signal => HandleNavigateTab(tab, signal);
266 _tabs.Add(tab);
267 vm.Sessions.Add(session);
268
269 // 탭 헤더 버튼 생성
270 var btnPanel = new StackPanel { Orientation = Orientation.Horizontal };
271 btnPanel.Children.Add(new TextBlock
272 {
273 Text = label,
274 VerticalAlignment = VerticalAlignment.Center,
275 Margin = new Thickness(0, 0, 6, 0),
276 });
277 var close = new Button
278 {
279 Content = "×",
280 Background = Brushes.Transparent,
281 BorderThickness = new Thickness(0),
282 Foreground = new SolidColorBrush(Color.FromRgb(0x94, 0xa3, 0xb8)),
283 FontSize = 13,
284 Cursor = Cursors.Hand,
285 Padding = new Thickness(0),
286 Width = 16,
287 };
288 close.Click += (_, _) => CloseTab(tab);
289 btnPanel.Children.Add(close);
290
291 var toggle = new ToggleButton
292 {
293 Content = btnPanel,
294 Style = (Style)Resources["TabBtn"],
295 Margin = new Thickness(0, 0, 3, 0),
296 Tag = tab,
297 };
298 toggle.Click += (_, _) => ActivateTab(tab);
299 tab.HeaderBtn = toggle;
300 TabHeaderPanel.Children.Add(toggle);
301
302 // WebView2 초기화
303 await wv.EnsureCoreWebView2Async();
304 tab.IsReady = true;
305 tab.Session.ExecuteScriptAsync = async script =>
306 tab.IsReady ? await wv.ExecuteScriptAsync(script) : null;
307
308 wv.CoreWebView2.SourceChanged += (_, _) =>
309 {
310 tab.CurrentUrl = wv.CoreWebView2.Source;
311 if (_activeTab == tab)
312 Dispatcher.Invoke(() => UrlBox.Text = tab.CurrentUrl);
313 };
314 wv.CoreWebView2.Navigate(url);
315
316 return tab;
317 }

다음을 참조함 : _activeTab, _tabs, ActivateTab(), CloseTab(), HandleNavigateTab().

다음에 의해서 참조됨 : AddTabFromInputAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ HandleNavigateTab()

void FamiliesAutoWriter.MainWindow.HandleNavigateTab ( BrowserTab tab,
string signal )
inlineprivate

Handle Navigate Tab 작업을 수행합니다.

매개변수
tabtab에 사용할 BrowserTab 값입니다.
signalsignal에 사용할 string 값입니다.

MainWindow.xaml.cs 파일의 422 번째 라인에서 정의되었습니다.

423 {
424 if (!tab.IsReady) return;
425
426 var currentUrl = tab.CurrentUrl;
427 string newUrl;
428 if (currentUrl.Contains("chatgpt.com", StringComparison.OrdinalIgnoreCase))
429 newUrl = "https://chatgpt.com/";
430 else if (currentUrl.Contains("gemini.google.com", StringComparison.OrdinalIgnoreCase))
431 newUrl = "https://gemini.google.com/app";
432 else
433 newUrl = "https://claude.ai/new";
434
435 Dispatcher.Invoke(() =>
436 {
437 tab.WebView.CoreWebView2.Navigate(newUrl);
438 tab.CurrentUrl = newUrl;
439 if (_activeTab == tab)
440 UrlBox.Text = newUrl;
441 });
442 }

다음을 참조함 : _activeTab, FamiliesAutoWriter.MainWindow.BrowserTab.CurrentUrl, FamiliesAutoWriter.MainWindow.BrowserTab.IsReady, FamiliesAutoWriter.MainWindow.BrowserTab.WebView.

다음에 의해서 참조됨 : CreateTabAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NavigateCurrent()

void FamiliesAutoWriter.MainWindow.NavigateCurrent ( )
inlineprivate

Navigate Current 작업을 수행합니다.

MainWindow.xaml.cs 파일의 617 번째 라인에서 정의되었습니다.

618 {
619 if (_activeTab == null || !_activeTab.IsReady) return;
620 var url = UrlBox.Text.Trim();
621 if (!url.StartsWith("http", StringComparison.OrdinalIgnoreCase)) url = "https://" + url;
622 UrlBox.Text = url;
623 _activeTab.WebView.CoreWebView2.Navigate(url);
624 }

다음을 참조함 : _activeTab.

다음에 의해서 참조됨 : OnUrlKeyDown().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NavigateTo()

void FamiliesAutoWriter.MainWindow.NavigateTo ( string url)
inlineprivate

Navigate To 작업을 수행합니다.

매개변수
urlurl에 사용할 string 값입니다.

MainWindow.xaml.cs 파일의 719 번째 라인에서 정의되었습니다.

720 {
721 if (_activeTab == null || !_activeTab.IsReady) return;
722 UrlBox.Text = url;
723 _activeTab.WebView.CoreWebView2.Navigate(url);
724 }

다음을 참조함 : _activeTab.

◆ OnAddTabClick()

async void FamiliesAutoWriter.MainWindow.OnAddTabClick ( object sender,
RoutedEventArgs e )
inlineprivate

Add Tab Click 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 469 번째 라인에서 정의되었습니다.

469=> await AddTabFromInputAsync();

◆ OnBackClick()

void FamiliesAutoWriter.MainWindow.OnBackClick ( object sender,
RoutedEventArgs e )
inlineprivate

Back Click 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 607 번째 라인에서 정의되었습니다.

607=> _activeTab?.WebView.GoBack();

다음을 참조함 : _activeTab.

◆ OnChatGptClick()

void FamiliesAutoWriter.MainWindow.OnChatGptClick ( object sender,
RoutedEventArgs e )
inlineprivate

Chat Gpt Click 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 676 번째 라인에서 정의되었습니다.

676=> NavigateTo("https://chatgpt.com/");

◆ OnClaudeClick()

void FamiliesAutoWriter.MainWindow.OnClaudeClick ( object sender,
RoutedEventArgs e )
inlineprivate

Claude Click 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 651 번째 라인에서 정의되었습니다.

651=> NavigateTo("https://claude.ai/new");

◆ OnClosed()

void FamiliesAutoWriter.MainWindow.OnClosed ( object? sender,
EventArgs e )
inlineprivate

Closed 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 194 번째 라인에서 정의되었습니다.

195 {
196 foreach (var tab in _tabs)
197 tab.Session.StopAutomation();
198 }

다음을 참조함 : _tabs.

다음에 의해서 참조됨 : MainWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnGeminiClick()

void FamiliesAutoWriter.MainWindow.OnGeminiClick ( object sender,
RoutedEventArgs e )
inlineprivate

Gemini Click 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 701 번째 라인에서 정의되었습니다.

701=> NavigateTo("https://gemini.google.com/app");

◆ OnLoaded()

void FamiliesAutoWriter.MainWindow.OnLoaded ( object sender,
RoutedEventArgs e )
inlineprivate

Loaded 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 165 번째 라인에서 정의되었습니다.

166 {
167 NewTabNameBox.Focus();
168 }

다음에 의해서 참조됨 : MainWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnNavigateClick()

void FamiliesAutoWriter.MainWindow.OnNavigateClick ( object sender,
RoutedEventArgs e )
inlineprivate

Navigate Click 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 557 번째 라인에서 정의되었습니다.

557=> NavigateCurrent();

◆ OnNewTabNameKeyDown()

async void FamiliesAutoWriter.MainWindow.OnNewTabNameKeyDown ( object sender,
KeyEventArgs e )
inlineprivate

New Tab Name Key Down 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 494 번째 라인에서 정의되었습니다.

495 {
496 if (e.Key == Key.Enter) await AddTabFromInputAsync();
497 }

다음을 참조함 : AddTabFromInputAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnUrlKeyDown()

void FamiliesAutoWriter.MainWindow.OnUrlKeyDown ( object sender,
KeyEventArgs e )
inlineprivate

Url Key Down 이벤트 또는 상태 변경을 처리합니다.

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

MainWindow.xaml.cs 파일의 582 번째 라인에서 정의되었습니다.

582{ if (e.Key == Key.Enter) NavigateCurrent(); }

다음을 참조함 : NavigateCurrent().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _activeTab

BrowserTab? FamiliesAutoWriter.MainWindow._activeTab
private

active Tab 값을 보관합니다.

MainWindow.xaml.cs 파일의 114 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ActivateTab(), CloseTab(), CreateTabAsync(), HandleNavigateTab(), NavigateCurrent(), NavigateTo(), OnBackClick().

◆ _tabs

readonly List<BrowserTab> FamiliesAutoWriter.MainWindow._tabs = []
private

tabs 값을 보관합니다.

MainWindow.xaml.cs 파일의 105 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ActivateTab(), CloseTab(), CreateTabAsync(), OnClosed().

◆ _tabSeq

int FamiliesAutoWriter.MainWindow._tabSeq = 0
private

tab Seq 값을 보관합니다.

MainWindow.xaml.cs 파일의 123 번째 라인에서 정의되었습니다.


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: