소스(Core/Shell/Launcher)와 실행 PC가 받아갈 업데이트 파일(dist)을 함께 올린다. Launcher가 켤 때 이 저장소의 dist와 D:\UbisamPlatform\bin을 비교해 새 버전이면 받아간다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.0 KiB
4.0 KiB
패치 04 — 입력 컨트롤 · 표 스타일
TextBox / ComboBox / CheckBox / Button / ListBox / ListView(GridView) 를 셸과 같은 도면 톤으로 맞춥니다. 각진 모서리 · 1px 헤어라인 · 포커스는 accent 테두리 + 옅은 글로우. 라이트/다크 모두 토큰으로 전환됩니다.
전부 암시적 스타일(x:Key 없음)이라 각 View를 고칠 필요가 없습니다 — 셸 안의 모든 해당 컨트롤에 자동 적용됩니다.
예외를 두려면 그 컨트롤에 Style="{x:Null}"을 주세요.
1. 새 파일
src/UbisamBase.Core/Themes/Controls.xaml — 이 프로젝트의 code/UbisamBase.Core/Themes/Controls.xaml을 그대로 복사하세요.
2. Themes/ShellStyles.xaml
머지 목록에 Controls.xaml을 추가하고, ComboBox 드롭다운 그림자를 정의합니다.
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/UbisamBase.Core;component/Themes/Icons.xaml"/>
<ResourceDictionary Source="pack://application:,,,/UbisamBase.Core;component/Themes/Controls.xaml"/>
</ResourceDictionary.MergedDictionaries>
<DropShadowEffect x:Key="Ubisam.Effect.Popup" BlurRadius="12" ShadowDepth="3" Direction="270" Opacity="0.22" Color="#000000"/>
3. Themes/Colors.Light.xaml / Colors.Dark.xaml
입력·표 토큰을 추가합니다 (code/의 두 파일에 이미 들어 있습니다).
| 키 | 라이트 | 다크 |
|---|---|---|
Ubisam.Brush.Input.Background |
#FFFFFF | #1B1D23 |
Ubisam.Brush.Input.Border |
#C9C9CC | #33363E |
Ubisam.Brush.Input.BorderHover |
#A8A8AC | #4A4E57 |
Ubisam.Brush.Input.DisabledBackground |
#EDEDEF | #191A1F |
Ubisam.Brush.Input.DisabledBorder |
#DEDEE1 | #26282F |
Ubisam.Color.AccentGlow (Color) |
#2196F3 | #22D3EE |
Ubisam.Brush.Table.HeaderBackground |
#EDEDEF | #1B1D23 |
Ubisam.Brush.Table.RowBorder |
#EDEDEF | #1F2127 |
4. 버튼 종류
암시적 Button은 보조(외곽선) 입니다. 주 동작에는 키를 지정하세요.
<Button Content="저장" Command="{Binding SaveCommand}" Style="{StaticResource Ubisam.Style.Button.Primary}"/>
<Button Content="되돌리기" Style="{StaticResource Ubisam.Style.Button.Ghost}"/>
AllSettingsView.xaml의 "저장" 버튼에 Primary를 적용하고, 거기 붙어 있는 Padding="14,6"은 지우세요(스타일이 정합니다).
5. 확인
설정 → 설정값화면의 TextBox/ComboBox/CheckBox가 각진 모양으로 바뀌고, 클릭 시 테두리가 accent로 변하는지- ComboBox를 열면 드롭다운이 입력창 아래에 붙고, 선택 항목이 accent 채움인지
로그화면 표의 헤더가 회색 판 + 1px 경계, 행 hover/선택이 accent 틴트인지- 다크 테마로 바꿨을 때 입력창 배경이
#1B1D23으로 함께 바뀌는지 - 비활성 컨트롤이 흐리게(45%) 보이는지
주의
Controls.xaml은 폰트 리소스를DynamicResource로 참조합니다.StaticResource로 바꾸면 머지 시점 때문에 로드가 실패합니다.- 암시적
ListBox/ListBoxItem스타일이 추가되지만, 하단 탭과 서브탭 바는Style/ItemContainerStyle을 명시적으로 지정하고 있어 영향받지 않습니다. ScrollBar와Slider는 이번 패치에 없습니다 — 필요하면 알려주세요.
6. 아이콘 세트 갱신 (Icons.xaml 재발행)
Themes/Icons.xaml을 Lucide 원본 경로 기준으로 다시 만들었습니다. 이전 버전은 손으로 근사한 도형이라 실제 Lucide와 미세하게 달랐습니다 — code/UbisamBase.Core/Themes/Icons.xaml을 그대로 덮어쓰세요.
- 좌표계·스트로크 규칙은 동일(24×24, 1.5, 둥근 캡)해서 XAML 다른 곳은 고칠 필요가 없습니다.
- 리소스 키(
Ubisam.Icon.Home등)와AddMain에 넘기는 이름도 그대로입니다. - SVG 원본은
icons/폴더에 있고, 각 아이콘의 Lucide 이름은icons/readme.md표에 적어뒀습니다. 새 아이콘은 그 이름으로 lucide.dev에서 찾아 추가하세요.