112 lines
5.3 KiB
C#
112 lines
5.3 KiB
C#
#nullable enable
|
|
using Cysharp.Threading.Tasks;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
using UVC.UIToolkit;
|
|
|
|
namespace UVC.Studio.UIToolkit.Modal
|
|
{
|
|
/// <summary>
|
|
/// 설정 모달 - Database 탭 콘텐츠
|
|
/// </summary>
|
|
[UxmlElement]
|
|
public partial class UTKSettingModalContentShortcut : VisualElement, IDisposable, IUTKTabContent
|
|
{
|
|
#region Constants
|
|
private const string UXML_PATH = "Studio/UIToolkit/Modal/UTKSettingModalContentShortcutUXML";
|
|
#endregion
|
|
|
|
#region Fields
|
|
private bool _disposed;
|
|
private UTKShortcutList? _shortcutList;
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
public UTKSettingModalContentShortcut()
|
|
{
|
|
var asset = Resources.Load<VisualTreeAsset>(UXML_PATH);
|
|
if (asset != null)
|
|
{
|
|
var root = asset.Instantiate();
|
|
root.style.flexGrow = 1;
|
|
|
|
// 참조 가져오기
|
|
_shortcutList = root.Q<UTKShortcutList>("window");
|
|
if (_shortcutList != null)
|
|
{
|
|
// 변경 이벤트 구독
|
|
_shortcutList.OnDataChanged += OnDataChanged;
|
|
}
|
|
Add(root);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void OnDataChanged(UTKShortcutItemData item)
|
|
{
|
|
Debug.Log($"{item.CommandName}: Ctrl={item.UseCtrl} Key={item.Key}");
|
|
}
|
|
|
|
#region IUTKTabContent
|
|
public void Show(object? data)
|
|
{
|
|
Debug.Log($"[UTKSettingModalContentShortcut] Show called with data: {data}");
|
|
if (_shortcutList != null)
|
|
{
|
|
if(data is List<UTKShortcutItemData> shortcuts)
|
|
{
|
|
_shortcutList.SetData(shortcuts);
|
|
return;
|
|
}
|
|
// 예시 데이터 설정
|
|
var tempData = new List<UTKShortcutItemData>()
|
|
{
|
|
new() { Id = "file.new_project", CommandName = "File > New Project", UseCtrl = true, UseShift = false, UseAlt = false, Key = "N" },
|
|
new() { Id = "file.open_project", CommandName = "File > Open Project", UseCtrl = true, UseShift = true, UseAlt = false, Key = "O" },
|
|
new() { Id = "file.save_project", CommandName = "File > Save Project", UseCtrl = true, UseShift = false, UseAlt = true, Key = "S" },
|
|
new() { Id = "file.save_as", CommandName = "File > Save As...", UseCtrl = true, UseShift = true, UseAlt = true, Key = "S" },
|
|
new() { Id = "file.insert_database", CommandName = "File > Insert Database", UseCtrl = true, UseShift = true, UseAlt = false, Key = "I" },
|
|
new() { Id = "file.export_layout", CommandName = "File > Export > Layout", UseCtrl = true, UseShift = true, UseAlt = false, Key = "L" },
|
|
new() { Id = "file.export_metadata", CommandName = "File > Export > Metadata",UseCtrl = true, UseShift = true, UseAlt = false, Key = "M" },
|
|
new() { Id = "file.export_gltf", CommandName = "File > Export > glTF", UseCtrl = true, UseShift = true, UseAlt = false, Key = "G" },
|
|
new() { Id = "edit.undo", CommandName = "Edit > Undo", UseCtrl = true, UseShift = true, UseAlt = false, Key = "Z" },
|
|
new() { Id = "edit.redo", CommandName = "Edit > Redo", UseCtrl = true, UseShift = true, UseAlt = false, Key = "Y" },
|
|
new() { Id = "edit.duplicate", CommandName = "Edit > Duplicate", UseCtrl = true, UseShift = true, UseAlt = false, Key = "D" },
|
|
new() { Id = "edit.delete", CommandName = "Edit > Delete", UseCtrl = false, UseShift = true, UseAlt = false, Key = "Delete" },
|
|
new() { Id = "create.plane", CommandName = "Create > Plane", UseCtrl = true, UseShift = true, UseAlt = false, Key = "V" },
|
|
new() { Id = "tool.select", CommandName = "Select Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "1" },
|
|
new() { Id = "tool.move", CommandName = "Move Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "2" },
|
|
new() { Id = "tool.rotate", CommandName = "Rotate Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "3" },
|
|
new() { Id = "tool.scale", CommandName = "Scale Tool", UseCtrl = false, UseShift = false, UseAlt = false, Key = "4" },
|
|
};
|
|
_shortcutList.SetData(tempData);
|
|
}
|
|
}
|
|
|
|
public async UniTask Hide()
|
|
{
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region IDisposable
|
|
public void Dispose()
|
|
{
|
|
if (_disposed) return;
|
|
_disposed = true;
|
|
|
|
if (_shortcutList != null)
|
|
{
|
|
_shortcutList.OnDataChanged -= OnDataChanged;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|