소스(Core/Shell/Launcher)와 실행 PC가 받아갈 업데이트 파일(dist)을 함께 올린다. Launcher가 켤 때 이 저장소의 dist와 D:\UbisamPlatform\bin을 비교해 새 버전이면 받아간다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
274 lines
15 KiB
XML
274 lines
15 KiB
XML
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:conv="clr-namespace:UbisamBase.Core.Converters"
|
|
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
|
|
|
<ResourceDictionary.MergedDictionaries>
|
|
<ResourceDictionary Source="pack://application:,,,/UbisamBase.Core;component/Themes/Icons.xaml"/>
|
|
<ResourceDictionary Source="pack://application:,,,/UbisamBase.Core;component/Themes/Controls.xaml"/>
|
|
</ResourceDictionary.MergedDictionaries>
|
|
|
|
<conv:BoolToVisibilityConverter x:Key="BoolToVis"/>
|
|
<conv:FirstCharacterConverter x:Key="FirstCharConverter"/>
|
|
<conv:ToastTypeToBrushConverter x:Key="ToastTypeToBrush"/>
|
|
<conv:IconKeyToGeometryConverter x:Key="IconToGeometry"/>
|
|
|
|
<!-- ComboBox 드롭다운 그림자 -->
|
|
<DropShadowEffect x:Key="Ubisam.Effect.Popup" BlurRadius="12" ShadowDepth="3" Direction="270" Opacity="0.22" Color="#000000"/>
|
|
|
|
<!-- 타이포: Barlow가 설치돼 있으면 쓰고, 없으면 Segoe UI로 폴백 -->
|
|
<FontFamily x:Key="Ubisam.Font.Heading">Barlow Condensed, Segoe UI</FontFamily>
|
|
<FontFamily x:Key="Ubisam.Font.Body">Barlow, Segoe UI</FontFamily>
|
|
|
|
<!-- 좌/우측 네비게이션 아이템: 아이콘 위 + 라벨 아래, 선택 시 좌측 accent 바 -->
|
|
<Style x:Key="Ubisam.Style.SidebarItem" TargetType="ListBoxItem">
|
|
<Setter Property="Padding" Value="14,20"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.Foreground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ListBoxItem">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
BorderThickness="3,0,0,0"
|
|
BorderBrush="Transparent"
|
|
Padding="{TemplateBinding Padding}">
|
|
<StackPanel Orientation="Vertical" HorizontalAlignment="Center">
|
|
<TextBlock Text="{Binding Icon}"
|
|
FontFamily="Segoe Fluent Icons, Segoe MDL2 Assets"
|
|
FontSize="26"
|
|
HorizontalAlignment="Center"/>
|
|
<TextBlock Text="{Binding Title}"
|
|
FontSize="13"
|
|
Margin="0,8,0,0"
|
|
HorizontalAlignment="Center"
|
|
TextWrapping="Wrap"
|
|
TextAlignment="Center"
|
|
MaxWidth="100"/>
|
|
</StackPanel>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="Ubisam.Style.SidebarBar.Vertical" TargetType="ListBox">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.Background}"/>
|
|
<Setter Property="BorderThickness" Value="0,0,1,0"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.SubTabBar.Border}"/>
|
|
<Setter Property="Padding" Value="0,20"/>
|
|
<Setter Property="ItemContainerStyle" Value="{StaticResource Ubisam.Style.SidebarItem}"/>
|
|
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
|
|
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
|
|
<Setter Property="ItemsPanel">
|
|
<Setter.Value>
|
|
<ItemsPanelTemplate>
|
|
<StackPanel Orientation="Vertical"/>
|
|
</ItemsPanelTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 하단 네비게이션 아이템: 아이콘 위 + 라벨 아래. 칸 구분선도, 선택 배경 틴트도 없다.
|
|
선택 표시는 아래 SidebarBar.Horizontal 템플릿의 인디케이터 바가 미끄러져 오면서 담당한다. -->
|
|
<Style x:Key="Ubisam.Style.SidebarItem.Horizontal" TargetType="ListBoxItem">
|
|
<Setter Property="Padding" Value="30,13,30,14"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.Foreground}"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="13.5"/>
|
|
<Setter Property="FontWeight" Value="Medium"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ListBoxItem">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
Padding="{TemplateBinding Padding}">
|
|
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
|
|
<Path x:Name="Ico"
|
|
Data="{Binding Icon, Converter={StaticResource IconToGeometry}}"
|
|
Stroke="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}"
|
|
StrokeThickness="1.5"
|
|
StrokeStartLineCap="Round"
|
|
StrokeEndLineCap="Round"
|
|
StrokeLineJoin="Round"
|
|
Width="22" Height="22"
|
|
Stretch="Uniform"
|
|
Margin="0,0,0,7"
|
|
HorizontalAlignment="Center"/>
|
|
<TextBlock Text="{Binding Title}"
|
|
HorizontalAlignment="Center"
|
|
TextTrimming="CharacterEllipsis"/>
|
|
</StackPanel>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<!-- icon 인자를 생략한 탭은 아이콘 자리를 아예 접어 라벨만 남긴다 -->
|
|
<DataTrigger Binding="{Binding Icon, Converter={StaticResource IconToGeometry}}" Value="{x:Null}">
|
|
<Setter TargetName="Ico" Property="Visibility" Value="Collapsed"/>
|
|
</DataTrigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
<MultiTrigger>
|
|
<MultiTrigger.Conditions>
|
|
<Condition Property="IsMouseOver" Value="True"/>
|
|
<Condition Property="IsSelected" Value="False"/>
|
|
</MultiTrigger.Conditions>
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</MultiTrigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 하단 탭 바: 탭을 가운데 모으고, 바닥에 accent 인디케이터를 하나 둔다.
|
|
인디케이터의 위치·너비는 ShellWindow.xaml.cs가 선택 변경 시 애니메이션으로 옮긴다. -->
|
|
<Style x:Key="Ubisam.Style.SidebarBar.Horizontal" TargetType="ListBox">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.Background}"/>
|
|
<Setter Property="BorderThickness" Value="0,1,0,0"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.SubTabBar.Border}"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="ItemContainerStyle" Value="{StaticResource Ubisam.Style.SidebarItem.Horizontal}"/>
|
|
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
|
|
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/>
|
|
<Setter Property="ItemsPanel">
|
|
<Setter.Value>
|
|
<ItemsPanelTemplate>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"/>
|
|
</ItemsPanelTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ListBox">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}">
|
|
<Grid>
|
|
<ItemsPresenter/>
|
|
<Border x:Name="SelectionIndicator"
|
|
Height="3"
|
|
Width="0"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Bottom"
|
|
Background="{DynamicResource Ubisam.Brush.Accent}">
|
|
<Border.RenderTransform>
|
|
<TranslateTransform x:Name="SelectionIndicatorShift" X="0"/>
|
|
</Border.RenderTransform>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 하단 서브탭: 각진 세그먼트(라운드 제거) -->
|
|
<Style x:Key="Ubisam.Style.SubTabItem" TargetType="ListBoxItem">
|
|
<Setter Property="Padding" Value="22,11"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource Ubisam.Font.Body}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.SubTabBar.Foreground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ListBoxItem">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
BorderThickness="1,0,0,0"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.SubTabBar.Border}"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.SubTabBar.SelectedBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.SubTabBar.SelectedForeground}"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.SubTabBar.HoverBackground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="Ubisam.Style.SubTabBar" TargetType="ListBox">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.SubTabBar.Background}"/>
|
|
<Setter Property="BorderThickness" Value="0,1,0,0"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.SubTabBar.Border}"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="ItemContainerStyle" Value="{StaticResource Ubisam.Style.SubTabItem}"/>
|
|
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
|
|
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/>
|
|
<Setter Property="ItemsPanel">
|
|
<Setter.Value>
|
|
<ItemsPanelTemplate>
|
|
<StackPanel Orientation="Horizontal"/>
|
|
</ItemsPanelTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 상단바의 계정/바탕화면/종료 같은 유틸리티 버튼: 각진 헤어라인 박스 -->
|
|
<Style x:Key="Ubisam.Style.ChromeButton" TargetType="Button">
|
|
<Setter Property="Padding" Value="14,7"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource Ubisam.Font.Body}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.Foreground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
CornerRadius="0"
|
|
BorderThickness="1"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.SubTabBar.Border}"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 빈 뷰 슬롯 배경(사선 해치). 모듈이 마운트되기 전 영역 표시용. -->
|
|
<DrawingBrush x:Key="Ubisam.Brush.SlotHatch"
|
|
TileMode="Tile"
|
|
Viewport="0,0,9,9"
|
|
ViewportUnits="Absolute">
|
|
<DrawingBrush.Drawing>
|
|
<GeometryDrawing>
|
|
<GeometryDrawing.Pen>
|
|
<Pen Thickness="1" Brush="{DynamicResource Ubisam.Brush.Slot.Hatch}"/>
|
|
</GeometryDrawing.Pen>
|
|
<GeometryDrawing.Geometry>
|
|
<LineGeometry StartPoint="0,9" EndPoint="9,0"/>
|
|
</GeometryDrawing.Geometry>
|
|
</GeometryDrawing>
|
|
</DrawingBrush.Drawing>
|
|
</DrawingBrush>
|
|
|
|
</ResourceDictionary>
|