refactor: CycleUiHelper 重命名为 FairyUiHelper
对齐 FairyView 宿主命名。环线/充电/按钮/门进程的 Stop 改为 override,避免隐藏基类;Kiva.ForceStop 改为 override。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -95,7 +95,7 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
LoadBoxFields(b);
|
||||
ClearButtonFields();
|
||||
}
|
||||
}, height: CycleUiHelper.TableHeightPx(8), enableSearch: true);
|
||||
}, height: FairyUiHelper.TableHeightPx(8), enableSearch: true);
|
||||
|
||||
pb.SeparatorText("按钮盒编辑");
|
||||
var (ip, _) = pb.TextInput("1. IP", _boxIp, alwaysReturnString: true);
|
||||
@@ -130,7 +130,7 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
_selectedBtnIdx = i;
|
||||
LoadButtonFields(btn);
|
||||
}
|
||||
}, height: CycleUiHelper.TableHeightPx(6), enableSearch: true);
|
||||
}, height: FairyUiHelper.TableHeightPx(6), enableSearch: true);
|
||||
|
||||
pb.SeparatorText("按钮编辑");
|
||||
var (bIdx, _) = pb.TextInput("5. 按钮编码", _btnIndex, alwaysReturnString: true);
|
||||
@@ -264,9 +264,9 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
private void AddBox()
|
||||
{
|
||||
if (!TryParseBoxInput(out var index, out var ip, out var port, out var type, false, out var err))
|
||||
{ CycleUiHelper.Alert("错误", err); return; }
|
||||
if (_boxes.Any(b => b.Index == index)) { CycleUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_boxes.Any(b => b.Ip == ip)) { CycleUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
{ FairyUiHelper.Alert("错误", err); return; }
|
||||
if (_boxes.Any(b => b.Index == index)) { FairyUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_boxes.Any(b => b.Ip == ip)) { FairyUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
|
||||
var box = new ButtonBoxModel { Index = index, Ip = ip, Port = port, Type = type };
|
||||
_boxes.Add(box);
|
||||
@@ -279,23 +279,23 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
private void SaveBox()
|
||||
{
|
||||
var cur = GetSelectedBox();
|
||||
if (cur == null) { CycleUiHelper.Alert("提示", "请先选择按钮盒"); return; }
|
||||
if (cur == null) { FairyUiHelper.Alert("提示", "请先选择按钮盒"); return; }
|
||||
if (!TryParseBoxInput(out var index, out var ip, out var port, out var type, true, out var err))
|
||||
{ CycleUiHelper.Alert("错误", err); return; }
|
||||
if (_boxes.Any(b => b.Index == index && b != cur)) { CycleUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_boxes.Any(b => b.Ip == ip && b != cur)) { CycleUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
{ FairyUiHelper.Alert("错误", err); return; }
|
||||
if (_boxes.Any(b => b.Index == index && b != cur)) { FairyUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_boxes.Any(b => b.Ip == ip && b != cur)) { FairyUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
|
||||
cur.Index = index; cur.Ip = ip; cur.Port = port; cur.Type = type;
|
||||
SaveData();
|
||||
CycleUiHelper.Alert("提示", "保存成功");
|
||||
FairyUiHelper.Alert("提示", "保存成功");
|
||||
_panel?.Repaint();
|
||||
}
|
||||
|
||||
private void ConfirmDeleteBox()
|
||||
{
|
||||
var cur = GetSelectedBox();
|
||||
if (cur == null) { CycleUiHelper.Alert("提示", "请选择要删除的按钮盒"); return; }
|
||||
CycleUiHelper.ConfirmThen($"删除编码为 {cur.Index} 的按钮盒?", () =>
|
||||
if (cur == null) { FairyUiHelper.Alert("提示", "请选择要删除的按钮盒"); return; }
|
||||
FairyUiHelper.ConfirmThen($"删除编码为 {cur.Index} 的按钮盒?", () =>
|
||||
{
|
||||
_boxes.Remove(cur);
|
||||
_selectedBoxIdx = -1;
|
||||
@@ -311,10 +311,10 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
private void AddButton()
|
||||
{
|
||||
var box = GetSelectedBox();
|
||||
if (box == null) { CycleUiHelper.Alert("提示", "请先选择按钮盒"); return; }
|
||||
if (box == null) { FairyUiHelper.Alert("提示", "请先选择按钮盒"); return; }
|
||||
if (!TryParseButtonInput(out var index, out var delay, out var err))
|
||||
{ CycleUiHelper.Alert("错误", err); return; }
|
||||
if (box.Buttons.Any(b => b.Index == index)) { CycleUiHelper.Alert("错误", $"按钮编码 {index} 已存在"); return; }
|
||||
{ FairyUiHelper.Alert("错误", err); return; }
|
||||
if (box.Buttons.Any(b => b.Index == index)) { FairyUiHelper.Alert("错误", $"按钮编码 {index} 已存在"); return; }
|
||||
|
||||
box.Buttons.Add(new ButtonModel
|
||||
{
|
||||
@@ -335,10 +335,10 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
{
|
||||
var box = GetSelectedBox();
|
||||
var btn = GetSelectedButton();
|
||||
if (box == null || btn == null) { CycleUiHelper.Alert("提示", "请先选择按钮"); return; }
|
||||
if (box == null || btn == null) { FairyUiHelper.Alert("提示", "请先选择按钮"); return; }
|
||||
if (!TryParseButtonInput(out var index, out var delay, out var err))
|
||||
{ CycleUiHelper.Alert("错误", err); return; }
|
||||
if (box.Buttons.Any(b => b.Index == index && b != btn)) { CycleUiHelper.Alert("错误", $"按钮编码 {index} 已存在"); return; }
|
||||
{ FairyUiHelper.Alert("错误", err); return; }
|
||||
if (box.Buttons.Any(b => b.Index == index && b != btn)) { FairyUiHelper.Alert("错误", $"按钮编码 {index} 已存在"); return; }
|
||||
|
||||
btn.Index = index;
|
||||
btn.TriggerMission = _triggerMission.Trim();
|
||||
@@ -347,7 +347,7 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
btn.TriggerState = _triggerStateNames[_triggerStateIdx];
|
||||
btn.TriggerDelay = delay;
|
||||
SaveData();
|
||||
CycleUiHelper.Alert("提示", "保存成功");
|
||||
FairyUiHelper.Alert("提示", "保存成功");
|
||||
_panel?.Repaint();
|
||||
}
|
||||
|
||||
@@ -355,8 +355,8 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
{
|
||||
var box = GetSelectedBox();
|
||||
var btn = GetSelectedButton();
|
||||
if (box == null || btn == null) { CycleUiHelper.Alert("提示", "请选择要删除的按钮"); return; }
|
||||
CycleUiHelper.ConfirmThen($"删除编码为 {btn.Index} 的按钮?", () =>
|
||||
if (box == null || btn == null) { FairyUiHelper.Alert("提示", "请选择要删除的按钮"); return; }
|
||||
FairyUiHelper.ConfirmThen($"删除编码为 {btn.Index} 的按钮?", () =>
|
||||
{
|
||||
box.Buttons.Remove(btn);
|
||||
_selectedBtnIdx = -1;
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
/// </summary>
|
||||
[MethodMember(Name = "停止进程")]
|
||||
[I18N.DocumentTranslation(Name = "Stop Mission", locale = "en")]
|
||||
public void Stop()
|
||||
public override void Stop()
|
||||
{
|
||||
StopInternalAsync().GetAwaiter().GetResult();
|
||||
status.status = "/";
|
||||
@@ -768,7 +768,7 @@ namespace StandardScene.ExtendDevice.ButtonBox
|
||||
public static void OpenViewer()
|
||||
{
|
||||
try { ButtonBoxManager.Open(); }
|
||||
catch (Exception ex) { CycleUiHelper.Alert("错误", $"打开按钮盒管理界面失败: {ex.Message}"); }
|
||||
catch (Exception ex) { FairyUiHelper.Alert("错误", $"打开按钮盒管理界面失败: {ex.Message}"); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
LoadControllerFields(c);
|
||||
ClearDoorFields();
|
||||
}
|
||||
}, height: CycleUiHelper.TableHeightPx(8), enableSearch: true);
|
||||
}, height: FairyUiHelper.TableHeightPx(8), enableSearch: true);
|
||||
|
||||
pb.SeparatorText("控制器编辑");
|
||||
var (ip, _) = pb.TextInput("1. IP", _ctrlIp, alwaysReturnString: true);
|
||||
@@ -127,7 +127,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
_selectedDoorIdx = i;
|
||||
LoadDoorFields(d);
|
||||
}
|
||||
}, height: CycleUiHelper.TableHeightPx(6), enableSearch: true);
|
||||
}, height: FairyUiHelper.TableHeightPx(6), enableSearch: true);
|
||||
|
||||
pb.SeparatorText("门编辑");
|
||||
var (dIdx, _) = pb.TextInput("5. 门编码", _doorIndex, alwaysReturnString: true);
|
||||
@@ -256,11 +256,11 @@ namespace StandardScene.ExtendDevice.Door
|
||||
{
|
||||
if (!TryParseControllerInput(out var index, out var ip, out var port, out var type, false, out var err))
|
||||
{
|
||||
CycleUiHelper.Alert("错误", err);
|
||||
FairyUiHelper.Alert("错误", err);
|
||||
return;
|
||||
}
|
||||
if (_controllers.Any(c => c.Index == index)) { CycleUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_controllers.Any(c => c.Ip == ip)) { CycleUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
if (_controllers.Any(c => c.Index == index)) { FairyUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_controllers.Any(c => c.Ip == ip)) { FairyUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
|
||||
var c = new DoorControllerModel { Index = index, Ip = ip, Port = port, Type = type };
|
||||
_controllers.Add(c);
|
||||
@@ -273,14 +273,14 @@ namespace StandardScene.ExtendDevice.Door
|
||||
private void SaveController()
|
||||
{
|
||||
var cur = GetSelectedController();
|
||||
if (cur == null) { CycleUiHelper.Alert("提示", "请先选择要保存的门控制器"); return; }
|
||||
if (cur == null) { FairyUiHelper.Alert("提示", "请先选择要保存的门控制器"); return; }
|
||||
if (!TryParseControllerInput(out var index, out var ip, out var port, out var type, true, out var err))
|
||||
{
|
||||
CycleUiHelper.Alert("错误", err);
|
||||
FairyUiHelper.Alert("错误", err);
|
||||
return;
|
||||
}
|
||||
if (_controllers.Any(c => c.Index == index && c != cur)) { CycleUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_controllers.Any(c => c.Ip == ip && c != cur)) { CycleUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
if (_controllers.Any(c => c.Index == index && c != cur)) { FairyUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
|
||||
if (_controllers.Any(c => c.Ip == ip && c != cur)) { FairyUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
|
||||
|
||||
cur.Index = index;
|
||||
cur.Ip = ip;
|
||||
@@ -288,15 +288,15 @@ namespace StandardScene.ExtendDevice.Door
|
||||
cur.Type = type;
|
||||
SaveData();
|
||||
_status = "门控制器已保存";
|
||||
CycleUiHelper.Alert("提示", "保存成功");
|
||||
FairyUiHelper.Alert("提示", "保存成功");
|
||||
_panel?.Repaint();
|
||||
}
|
||||
|
||||
private void ConfirmDeleteController()
|
||||
{
|
||||
var cur = GetSelectedController();
|
||||
if (cur == null) { CycleUiHelper.Alert("提示", "请选择要删除的门控制器"); return; }
|
||||
CycleUiHelper.ConfirmThen($"删除编码为 {cur.Index} 的门控制器?", () =>
|
||||
if (cur == null) { FairyUiHelper.Alert("提示", "请选择要删除的门控制器"); return; }
|
||||
FairyUiHelper.ConfirmThen($"删除编码为 {cur.Index} 的门控制器?", () =>
|
||||
{
|
||||
_controllers.Remove(cur);
|
||||
_selectedCtrlIdx = -1;
|
||||
@@ -312,13 +312,13 @@ namespace StandardScene.ExtendDevice.Door
|
||||
private void AddDoor()
|
||||
{
|
||||
var ctrl = GetSelectedController();
|
||||
if (ctrl == null) { CycleUiHelper.Alert("提示", "请先选择门控制器"); return; }
|
||||
if (ctrl == null) { FairyUiHelper.Alert("提示", "请先选择门控制器"); return; }
|
||||
if (!TryParseDoorInput(out var index, out var cAddr, out var oAddr, false, out var err))
|
||||
{
|
||||
CycleUiHelper.Alert("错误", err);
|
||||
FairyUiHelper.Alert("错误", err);
|
||||
return;
|
||||
}
|
||||
if (ctrl.Doors.Any(d => d.Index == index)) { CycleUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
|
||||
if (ctrl.Doors.Any(d => d.Index == index)) { FairyUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
|
||||
|
||||
var door = new DoorModel
|
||||
{
|
||||
@@ -338,13 +338,13 @@ namespace StandardScene.ExtendDevice.Door
|
||||
{
|
||||
var ctrl = GetSelectedController();
|
||||
var door = GetSelectedDoor();
|
||||
if (ctrl == null || door == null) { CycleUiHelper.Alert("提示", "请先选择要保存的门"); return; }
|
||||
if (ctrl == null || door == null) { FairyUiHelper.Alert("提示", "请先选择要保存的门"); return; }
|
||||
if (!TryParseDoorInput(out var index, out var cAddr, out var oAddr, true, out var err))
|
||||
{
|
||||
CycleUiHelper.Alert("错误", err);
|
||||
FairyUiHelper.Alert("错误", err);
|
||||
return;
|
||||
}
|
||||
if (ctrl.Doors.Any(d => d.Index == index && d != door)) { CycleUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
|
||||
if (ctrl.Doors.Any(d => d.Index == index && d != door)) { FairyUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
|
||||
|
||||
door.Index = index;
|
||||
door.ControlAddress = cAddr;
|
||||
@@ -352,7 +352,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
door.NoControl = _doorNoControl;
|
||||
SaveData();
|
||||
_status = "门已保存";
|
||||
CycleUiHelper.Alert("提示", "保存成功");
|
||||
FairyUiHelper.Alert("提示", "保存成功");
|
||||
_panel?.Repaint();
|
||||
}
|
||||
|
||||
@@ -360,8 +360,8 @@ namespace StandardScene.ExtendDevice.Door
|
||||
{
|
||||
var ctrl = GetSelectedController();
|
||||
var door = GetSelectedDoor();
|
||||
if (ctrl == null || door == null) { CycleUiHelper.Alert("提示", "请选择要删除的门"); return; }
|
||||
CycleUiHelper.ConfirmThen($"删除编码为 {door.Index} 的门?", () =>
|
||||
if (ctrl == null || door == null) { FairyUiHelper.Alert("提示", "请选择要删除的门"); return; }
|
||||
FairyUiHelper.ConfirmThen($"删除编码为 {door.Index} 的门?", () =>
|
||||
{
|
||||
ctrl.Doors.Remove(door);
|
||||
_selectedDoorIdx = -1;
|
||||
|
||||
@@ -141,7 +141,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
/// </summary>
|
||||
[MethodMember(Name = "停止进程")]
|
||||
[I18N.DocumentTranslation(Name = "Stop Mission", locale = "en")]
|
||||
public void Stop()
|
||||
public override void Stop()
|
||||
{
|
||||
StopInternalAsync().GetAwaiter().GetResult();
|
||||
status.status = "/";
|
||||
@@ -1017,7 +1017,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
CycleUiHelper.Alert("错误", $"打开门控监控界面失败: {ex.Message}");
|
||||
FairyUiHelper.Alert("错误", $"打开门控监控界面失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
LabelCell(row, door, FormatCars(door));
|
||||
LabelCell(row, door, door.ControlAddress.ToString());
|
||||
LabelCell(row, door, door.OpenStatusAddress.ToString());
|
||||
}, height: CycleUiHelper.TableHeightPx(18), enableSearch: true);
|
||||
}, height: FairyUiHelper.TableHeightPx(18), enableSearch: true);
|
||||
|
||||
pb.Separator();
|
||||
pb.Label("手动控制");
|
||||
@@ -161,7 +161,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
{
|
||||
if (!_selectedDoor.HasValue)
|
||||
{
|
||||
CycleUiHelper.Alert("提示", "请先选择要控制的门");
|
||||
FairyUiHelper.Alert("提示", "请先选择要控制的门");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -170,17 +170,17 @@ namespace StandardScene.ExtendDevice.Door
|
||||
var mission = GetMission();
|
||||
if (mission == null)
|
||||
{
|
||||
CycleUiHelper.Alert("错误", "未找到门控进程");
|
||||
FairyUiHelper.Alert("错误", "未找到门控进程");
|
||||
return;
|
||||
}
|
||||
|
||||
var (controllerIndex, doorIndex) = _selectedDoor.Value;
|
||||
mission.SetManualDoorControl(controllerIndex, doorIndex, true);
|
||||
CycleUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动打开(10秒)");
|
||||
FairyUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动打开(10秒)");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
CycleUiHelper.Alert("错误", $"设置门打开目标失败: {ex.Message}");
|
||||
FairyUiHelper.Alert("错误", $"设置门打开目标失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
{
|
||||
if (!_selectedDoor.HasValue)
|
||||
{
|
||||
CycleUiHelper.Alert("提示", "请先选择要控制的门");
|
||||
FairyUiHelper.Alert("提示", "请先选择要控制的门");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
var mission = GetMission();
|
||||
if (mission == null)
|
||||
{
|
||||
CycleUiHelper.Alert("错误", "未找到门控进程");
|
||||
FairyUiHelper.Alert("错误", "未找到门控进程");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -205,15 +205,15 @@ namespace StandardScene.ExtendDevice.Door
|
||||
var success = mission.SetManualDoorControl(controllerIndex, doorIndex, false);
|
||||
if (!success)
|
||||
{
|
||||
CycleUiHelper.Alert("提示", "门存在车辆占用,禁止手动关闭。");
|
||||
FairyUiHelper.Alert("提示", "门存在车辆占用,禁止手动关闭。");
|
||||
return;
|
||||
}
|
||||
|
||||
CycleUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动关闭(10秒)");
|
||||
FairyUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动关闭(10秒)");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
CycleUiHelper.Alert("错误", $"设置门关闭目标失败: {ex.Message}");
|
||||
FairyUiHelper.Alert("错误", $"设置门关闭目标失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ namespace StandardScene.ExtendDevice.Door
|
||||
{
|
||||
if (!_selectedDoor.HasValue)
|
||||
{
|
||||
CycleUiHelper.Alert("提示", "请先选择要清空占用的门");
|
||||
FairyUiHelper.Alert("提示", "请先选择要清空占用的门");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -230,17 +230,17 @@ namespace StandardScene.ExtendDevice.Door
|
||||
var mission = GetMission();
|
||||
if (mission == null)
|
||||
{
|
||||
CycleUiHelper.Alert("错误", "未找到门控进程");
|
||||
FairyUiHelper.Alert("错误", "未找到门控进程");
|
||||
return;
|
||||
}
|
||||
|
||||
var (controllerIndex, doorIndex) = _selectedDoor.Value;
|
||||
mission.ClearCarsInArea(controllerIndex, doorIndex);
|
||||
CycleUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已清空占用");
|
||||
FairyUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已清空占用");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
CycleUiHelper.Alert("错误", $"清空占用失败: {ex.Message}");
|
||||
FairyUiHelper.Alert("错误", $"清空占用失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user