using System.ComponentModel; namespace MergeHub { /// /// 설정 탭에 자동 생성되는 편집 화면의 원본. /// D:\UbisamConfig\Settings\MergeHubSettings.json 으로 저장된다. /// public class MergeHubSettings { [Category("저장소")] [DisplayName("기본 저장소 경로")] public string DefaultRepositoryPath { get; set; } = string.Empty; [Category("저장소")] [DisplayName("기본 원격 이름")] public string DefaultRemoteName { get; set; } = "origin"; // Git 저장소가 아닐 때 처음부터 비교해 둘 두 파일. 비워 두면 아무것도 열지 않는다. [Category("파일 비교 (Git 아님)")] [DisplayName("기본 왼쪽 파일")] public string DefaultLeftFile { get; set; } = string.Empty; [Category("파일 비교 (Git 아님)")] [DisplayName("기본 오른쪽 파일")] public string DefaultRightFile { get; set; } = string.Empty; // 발표·교육용. 상단 "데모" 버튼이 이 두 경로를 오가며 Git 있는 화면과 없는 화면을 바로 보여 준다. // 비워 두면 버튼이 나오지 않는다. [Category("데모")] [DisplayName("데모: .git 있는 폴더")] public string DemoGitPath { get; set; } = string.Empty; [Category("데모")] [DisplayName("데모: .git 없는 폴더")] public string DemoPlainPath { get; set; } = string.Empty; [Category("사내 Gitea")] [DisplayName("서버 주소")] public string GiteaUrl { get; set; } = string.Empty; [Category("사내 Gitea")] [DisplayName("계정")] public string GiteaUserName { get; set; } = string.Empty; [Category("비교 옵션")] [DisplayName("공백 변경 무시")] public bool IgnoreWhitespace { get; set; } [Category("비교 옵션")] [DisplayName("공백 무시 단계 (0=전부 비교, 1=개수만, 2=전부)")] public int WhitespaceMode { get; set; } [Category("비교 옵션")] [DisplayName("대소문자 무시")] public bool IgnoreCase { get; set; } [Category("비교 옵션")] [DisplayName("줄 필터 사용")] public bool UseLineFilters { get; set; } = true; /// /// 차이로 세지 않을 줄의 정규식. 줄바꿈으로 구분해 여러 개를 적는다. /// 매번 바뀌는 타임스탬프·빌드번호처럼 내용이 아닌 것을 걸러내는 용도다. /// [Category("비교 옵션")] [DisplayName("줄 필터 정규식 (한 줄에 하나)")] public string LineFilters { get; set; } = string.Empty; /// /// C# 파일을 비교하기 전에 중괄호 줄바꿈을 맞출 스타일(6차 추가). /// AURORA = 형식 · 메서드 중괄호만 새 줄, 나머지와 else/catch/finally 는 같은 줄. Default = Visual Studio 기본(모두 새 줄). /// 켜면 편집 칸의 결과도 그 스타일로 저장된다. /// [Category("비교 옵션")] [DisplayName("C# 코드 스타일 맞춤 (None=끔 · Aurora · Default)")] public MergeHub.Services.CSharpBraceStyle CSharpBraceStyle { get; set; } = MergeHub.Services.CSharpBraceStyle.None; [Category("비교 옵션")] [DisplayName("단어 단위 diff")] public bool WordLevelDiff { get; set; } = true; [Category("비교 옵션")] [DisplayName("문법 강조 (C# 키워드·접근제한자·문자열)")] public bool SyntaxHighlight { get; set; } = true; [Category("비교 옵션")] [DisplayName("커밋 조회 개수")] public int CommitPageSize { get; set; } = 200; [Category("머지 주석")] [DisplayName("반영한 줄에 주석 남기기")] public bool InsertMergeComment { get; set; } = true; /// /// 비교하고 병합할 때 머지 주석을 무시할지(6차 B-5). 주석은 소스에 그대로 남는다 - 보는 방식만 바뀐다. /// 켜면 비교 화면(두 칸 · 네 칸 · 폴더)에서 차이로 세지 않고, git 병합에서 주석만 다른 충돌은 자동으로 푼다. /// [Category("머지 주석")] [DisplayName("비교·병합에서 머지 주석 무시 (사람이 '// [이름] 2026-01-01' 모양으로 쓴 주석도 무시됨)")] public bool IgnoreMergeNotes { get; set; } = true; [Category("머지 주석")] [DisplayName("작성자 (비우면 git config user.name)")] public string MergeCommentAuthor { get; set; } = string.Empty; /// /// Git 탭의 원격 칸을 펼쳐 두었는지. /// /// 설정 화면에는 안 내놓는다(Browsable). 화면에서 접고 펴는 것이지 /// 사람이 설정 목록에서 찾아 고칠 값이 아니다. 여기 두는 까닭은 /// 다음에 켤 때도 그대로여야 하기 때문이다. /// [Browsable(false)] public bool GitRemoteExpanded { get; set; } /// /// 파일 비교 오른쪽 칸에서 한 번 정하면 그대로인 것들(저장 형식 · 비교 규칙 · 편집 잠금)을 /// 펼쳐 두었는지. 설정 화면에는 안 내놓는다 — 화면에서 접고 펴는 값이다. /// [Browsable(false)] public bool ActionsRulesExpanded { get; set; } } }