변경 목적: Agent Compare 아래 비교본의 개발 문서와 런처 소스를 기준으로 현재 AX Commander에 빠져 있던 신규 런처 기능을 동일한 흐름으로 옮겨, 비교본 수준의 기능 폭을 현재 제품에 반영했습니다. 핵심 수정사항: 비교본의 신규 런처 핸들러 다수를 src/AxCopilot/Handlers로 이식하고 App.xaml.cs 등록 흐름에 연결했습니다. 빠른 링크, 파일 태그, 알림 센터, 포모도로, 파일 브라우저, 핫키 관리, OCR, 세션/스케줄/매크로, Git/정규식/네트워크/압축/해시/UUID/JWT/QR 등 AX Commander 기능을 추가했습니다. 핵심 수정사항: 신규 기능이 실제 동작하도록 AppSettings 확장, SchedulerService/FileTagService/NotificationCenterService/IconCacheService/UrlTemplateEngine/PomodoroService 추가, 배치 이름변경/세션/스케줄/매크로 편집 창 추가, NotificationService와 Symbols 보강, QR/OCR용 csproj 의존성과 Windows 타겟 프레임워크를 반영했습니다. 문서 반영: README.md와 docs/DEVELOPMENT.md에 비교본 기반 런처 기능 이식 이력과 검증 결과를 업데이트했습니다. 검증 결과: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 실행 기준 경고 0개, 오류 0개를 확인했습니다.
87 lines
2.9 KiB
C#
87 lines
2.9 KiB
C#
using System.IO;
|
|
using AxCopilot.SDK;
|
|
using AxCopilot.Services;
|
|
using AxCopilot.Themes;
|
|
|
|
namespace AxCopilot.Handlers;
|
|
|
|
/// <summary>
|
|
/// L5-5: 배치 파일 이름변경 핸들러. "batchren" 프리픽스로 사용합니다.
|
|
/// 예: batchren → 기능 소개 + 창 열기
|
|
/// batchren C:\work\*.xlsx → 해당 패턴 파일을 창에 미리 로드
|
|
/// </summary>
|
|
public class BatchRenameHandler : IActionHandler
|
|
{
|
|
public string? Prefix => "batchren";
|
|
|
|
public PluginMetadata Metadata => new(
|
|
"BatchRename",
|
|
"배치 파일 이름변경 — batchren",
|
|
"1.0",
|
|
"AX");
|
|
|
|
public Task<IEnumerable<LauncherItem>> GetItemsAsync(string query, CancellationToken ct)
|
|
{
|
|
var q = query.Trim();
|
|
|
|
var items = new List<LauncherItem>
|
|
{
|
|
new LauncherItem(
|
|
"배치 파일 이름변경 창 열기",
|
|
"변수 패턴 또는 정규식으로 여러 파일을 한 번에 이름변경합니다",
|
|
null,
|
|
string.IsNullOrWhiteSpace(q) ? "__open__" : q,
|
|
Symbol: Symbols.Rename),
|
|
|
|
new LauncherItem(
|
|
"변수: {name} 원본명 · {n} 순번 · {n:3} 세 자리 · {date} 날짜",
|
|
"예: 보고서_{n:3}_{date} → 보고서_001_2026-04-04.xlsx",
|
|
null, null,
|
|
Symbol: Symbols.Info),
|
|
|
|
new LauncherItem(
|
|
"변수: {ext} 확장자 · {date:yyyyMMdd} 날짜 형식 지정",
|
|
"정규식 모드: /old_pattern/new_text/ → 패턴 일치 부분 치환",
|
|
null, null,
|
|
Symbol: Symbols.Info),
|
|
};
|
|
|
|
return Task.FromResult<IEnumerable<LauncherItem>>(items);
|
|
}
|
|
|
|
public Task ExecuteAsync(LauncherItem item, CancellationToken ct)
|
|
{
|
|
var dataStr = item.Data as string;
|
|
if (dataStr == null) return Task.CompletedTask;
|
|
|
|
System.Windows.Application.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
var win = new Views.BatchRenameWindow();
|
|
|
|
// 초기 경로 패턴이 지정된 경우 파일 미리 로드
|
|
if (dataStr != "__open__" && !string.IsNullOrWhiteSpace(dataStr))
|
|
{
|
|
try
|
|
{
|
|
var dir = Path.GetDirectoryName(dataStr);
|
|
var glob = Path.GetFileName(dataStr);
|
|
if (!string.IsNullOrWhiteSpace(dir) && Directory.Exists(dir))
|
|
{
|
|
var files = Directory.GetFiles(dir, glob ?? "*");
|
|
Array.Sort(files);
|
|
win.AddFiles(files);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogService.Warn($"BatchRenameHandler: 초기 로드 실패 — {ex.Message}");
|
|
}
|
|
}
|
|
|
|
win.Show();
|
|
});
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|