refactor: SimpleLite 迁移到 Simple3,插件窗体改用 FairyView ForceFloat
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
using LoopViewerApp;
|
||||
using Newtonsoft.Json;
|
||||
using SimpleLite.RCS;
|
||||
using SimpleLite.RCS.CarTypes;
|
||||
using Simple3.RCS;
|
||||
using Simple3.RCS.CarTypes;
|
||||
using SimpleCore;
|
||||
using SimpleCore.Compiler;
|
||||
using SimpleCore.Library;
|
||||
@@ -2177,10 +2177,13 @@ namespace StandardScene.Chained
|
||||
StopAll();
|
||||
}
|
||||
|
||||
[MethodMember(Name = "一键上线所有AGV", Description = "将所有已初始化的正常 AGV 标记为在线")]
|
||||
[MethodMember(Name = "一键上线所有AGV", Description = "将所有已初始化的正常 AGV 标记为在线",
|
||||
RequiresPlatformConfirm = true,
|
||||
ConfirmMessage = "确认将所有已初始化的正常 AGV 一键上线?")]
|
||||
public void OnlineAllCars()
|
||||
{
|
||||
CycleUiHelper.ConfirmThen("确认将所有已初始化的正常 AGV 一键上线?", () => Task.Run(OnlineAllCarsCore));
|
||||
// 确认由 MethodMember.ConfirmMessage + ObjectEditorParity/SafeUI 居中弹出,此处勿再套 CycleUiHelper。
|
||||
Task.Run(OnlineAllCarsCore);
|
||||
}
|
||||
|
||||
private void OnlineAllCarsCore()
|
||||
@@ -2200,10 +2203,13 @@ namespace StandardScene.Chained
|
||||
Diagnosis.Post($"[AbstractLoopMission] 一键上线所有AGV:已上线 {count} 台", "Loop-OnlineAll", true);
|
||||
}
|
||||
|
||||
[MethodMember(Name = "一键结束所有AGV任务", Description = "停止环线调度并清除所有 AGV 的环线任务分配")]
|
||||
[MethodMember(Name = "一键结束所有AGV任务", Description = "停止环线调度并清除所有 AGV 的环线任务分配",
|
||||
RequiresPlatformConfirm = true,
|
||||
ConfirmMessage = "确认停止环线调度并结束所有 AGV 的环线任务?")]
|
||||
public void StopAllCarTasks()
|
||||
{
|
||||
CycleUiHelper.ConfirmThen("确认停止环线调度并结束所有 AGV 的环线任务?", () => Task.Run(StopAllCarTasksCore));
|
||||
// 确认由 MethodMember.ConfirmMessage + ObjectEditorParity/SafeUI 居中弹出,此处勿再套 CycleUiHelper。
|
||||
Task.Run(StopAllCarTasksCore);
|
||||
}
|
||||
|
||||
private void StopAllCarTasksCore()
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
using IoTClient.Common.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using SimpleLite;
|
||||
using SimpleLite.RCS;
|
||||
using SimpleLite.RCS.CarTypes;
|
||||
using SimpleLite.CADTools;
|
||||
using SimpleLite.Props;
|
||||
using SimpleLite.UI;
|
||||
using Simple3;
|
||||
using Simple3.RCS;
|
||||
using Simple3.RCS.CarTypes;
|
||||
using Simple3.CADTools;
|
||||
using Simple3.Props;
|
||||
using Simple3.UI;
|
||||
using SimpleCore;
|
||||
using SimpleCore.Compiler;
|
||||
using SimpleCore.Library;
|
||||
|
||||
@@ -4,9 +4,9 @@ using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using CycleGUI;
|
||||
using FairyView;
|
||||
using StandardScene.Model;
|
||||
using SimpleLite;
|
||||
using Simple3;
|
||||
using SimpleCore;
|
||||
using SimpleCore.Library;
|
||||
using StandardScene.Utils;
|
||||
@@ -76,7 +76,7 @@ namespace StandardScene.Chained
|
||||
|
||||
var panel = GUI.DeclarePanel()
|
||||
.ShowTitle("任务列表")
|
||||
.SetDefaultDocking(Panel.Docking.None)
|
||||
.ForceFloat()
|
||||
.InitSize(1500, 620) // 列宽按内容自适应(SizingFixedFit),给足初始宽度避免 10 列横向拥挤
|
||||
.InitPos(false, 0, 0, 0.5f, 0.5f, 0.5f, 0.5f);
|
||||
_panel = panel;
|
||||
@@ -140,7 +140,7 @@ namespace StandardScene.Chained
|
||||
if (op == 0) CycleUiHelper.ConfirmThen($"是否结束任务 {taskCode}?", () => Task.Run(() => CancelDelivery(taskCode)));
|
||||
else if (op == 1) CycleUiHelper.ConfirmThen($"是否重发任务 {taskCode}?", () => Task.Run(() => ResendDelivery(taskCode)));
|
||||
else if (op == 2) CycleUiHelper.ConfirmThen($"是否换车重发任务 {taskCode}?", () => Task.Run(() => ChangeCarResendDelivery(taskCode)));
|
||||
}, height: 18, enableSearch: true);
|
||||
}, height: CycleUiHelper.TableHeightPx(18), enableSearch: true);
|
||||
|
||||
if (!string.IsNullOrEmpty(_status))
|
||||
{
|
||||
|
||||
@@ -2,8 +2,8 @@ using IoTClient.Clients.PLC;
|
||||
using IoTClient.Common.Enums;
|
||||
using LessokajiWeaverUtilities.Utilities;
|
||||
using Newtonsoft.Json;
|
||||
using SimpleLite.RCS;
|
||||
using SimpleLite.RCS.CarTypes;
|
||||
using Simple3.RCS;
|
||||
using Simple3.RCS.CarTypes;
|
||||
using SimpleCore.Library;
|
||||
using StandardScene.Chained;
|
||||
using StandardScene.Model;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using CycleGUI;
|
||||
using FairyView;
|
||||
using Newtonsoft.Json;
|
||||
using SimpleCore.Library;
|
||||
using StandardScene.Model;
|
||||
@@ -68,7 +68,7 @@ namespace LoopViewerApp
|
||||
|
||||
var panel = GUI.DeclarePanel()
|
||||
.ShowTitle("任务列表管理器")
|
||||
.SetDefaultDocking(Panel.Docking.None)
|
||||
.ForceFloat()
|
||||
.InitSize(1080, 620)
|
||||
.InitPos(false, 0, 0, 0.5f, 0.5f, 0.5f, 0.5f);
|
||||
_panel = panel;
|
||||
@@ -116,7 +116,7 @@ namespace LoopViewerApp
|
||||
|
||||
if (row.ButtonGroup(new[] { "编辑" }, new[] { "编辑该任务" }) == 0)
|
||||
OpenEditDialog(t);
|
||||
}, height: 18, enableSearch: true);
|
||||
}, height: CycleUiHelper.TableHeightPx(18), enableSearch: true);
|
||||
|
||||
if (!string.IsNullOrEmpty(_status))
|
||||
{
|
||||
@@ -175,8 +175,8 @@ namespace LoopViewerApp
|
||||
int kindIdx = isAdd ? 0 : Math.Max(0, Array.IndexOf(KindNames, existing.Kind.ToString()));
|
||||
int startIdx = Math.Max(0, Array.IndexOf(StartTypeNames,
|
||||
(isAdd ? TaskStartType.AutoLoop : existing.StartType).ToString()));
|
||||
string curText = (isAdd ? 0 : Clamp(existing.CurrentStationId, 0, 1000000)).ToString();
|
||||
string tgtText = (isAdd ? 0 : Clamp(existing.TargetStationId, 0, 1000000)).ToString();
|
||||
string curText = (isAdd ? 0 : existing.CurrentStationId).ToString();
|
||||
string tgtText = (isAdd ? 0 : existing.TargetStationId).ToString();
|
||||
string trafficText = (isAdd ? 0 : Clamp(existing.TrafficControl, 0, 1000)).ToString();
|
||||
string priText = (isAdd ? 1 : Clamp(existing.Priority, 0, 100)).ToString();
|
||||
bool via = !isAdd && existing.IsViaPoint;
|
||||
@@ -187,7 +187,7 @@ namespace LoopViewerApp
|
||||
// 故采用与 DeliveryViewer 相同的普通浮动面板(非模态、不停靠):Begin/End 路径,X 关闭干净,下拉弹窗 z 序正常。
|
||||
var dlg = GUI.DeclarePanel()
|
||||
.ShowTitle(isAdd ? "新增任务" : $"编辑任务 ID: {existing.Id}")
|
||||
.SetDefaultDocking(Panel.Docking.None)
|
||||
.ForceFloat()
|
||||
.InitSize(420, 380)
|
||||
.InitPos(false, 0, 0, 0.5f, 0.5f, 0.5f, 0.5f);
|
||||
_dialog = dlg;
|
||||
@@ -204,9 +204,9 @@ namespace LoopViewerApp
|
||||
// 控件 id 由 ImHashStr(prompt) 经 Encoding.ASCII 计算:中文会被压成 '?',导致同字数纯中文标签
|
||||
// (如“当前站点/目标站点”“任务类别/启动类型”)哈希相同而抛 Duplicated id。故各标签加唯一 ASCII 序号前缀以区分。
|
||||
pb.DropdownBox("1. 任务类别", KindNames, ref kindIdx);
|
||||
var (c, _) = pb.TextInput("2. 当前站点 (0~1000000)", curText, alwaysReturnString: true);
|
||||
var (c, _) = pb.TextInput("2. 当前站点", curText, alwaysReturnString: true);
|
||||
curText = c;
|
||||
var (tg, _) = pb.TextInput("3. 目标站点 (0~1000000)", tgtText, alwaysReturnString: true);
|
||||
var (tg, _) = pb.TextInput("3. 目标站点", tgtText, alwaysReturnString: true);
|
||||
tgtText = tg;
|
||||
var (tf, _) = pb.TextInput("4. 流量控制 (0~1000)", trafficText, alwaysReturnString: true);
|
||||
trafficText = tf;
|
||||
@@ -224,8 +224,8 @@ namespace LoopViewerApp
|
||||
pb.Separator();
|
||||
if (pb.Button("保存", distinct: "loop-edit-save"))
|
||||
{
|
||||
if (!TryParseClamp(curText, 0, 1000000, out var cur)) { err = "当前站点需为 0~1000000 的整数"; return; }
|
||||
if (!TryParseClamp(tgtText, 0, 1000000, out var tgt)) { err = "目标站点需为 0~1000000 的整数"; return; }
|
||||
if (!int.TryParse((curText ?? "").Trim(), out var cur)) { err = "当前站点需为整数"; return; }
|
||||
if (!int.TryParse((tgtText ?? "").Trim(), out var tgt)) { err = "目标站点需为整数"; return; }
|
||||
if (!TryParseClamp(trafficText, 0, 1000, out var traffic)) { err = "流量控制需为 0~1000 的整数"; return; }
|
||||
if (!TryParseClamp(priText, 0, 100, out var pri)) { err = "优先级需为 0~100 的整数"; return; }
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
using Newtonsoft.Json;
|
||||
using SimpleLite;
|
||||
using SimpleLite.RCS;
|
||||
using SimpleLite.RCS.CarTypes;
|
||||
using SimpleLite.RCS.Signal;
|
||||
using SimpleLite.CADTools;
|
||||
using SimpleLite.Props;
|
||||
using SimpleLite.UI;
|
||||
using Simple3;
|
||||
using Simple3.RCS;
|
||||
using Simple3.RCS.CarTypes;
|
||||
using Simple3.RCS.Signal;
|
||||
using Simple3.CADTools;
|
||||
using Simple3.Props;
|
||||
using Simple3.UI;
|
||||
using SimpleCore;
|
||||
using SimpleCore.Compiler;
|
||||
using SimpleCore.Library;
|
||||
@@ -325,7 +325,9 @@ namespace StandardScene.Chained
|
||||
/// 一键初始化所有小车
|
||||
/// 将状态为"正常"或"上线"且未初始化的小车进行重置
|
||||
/// </summary>
|
||||
[MethodMember(Name = "一键初始化")]
|
||||
[MethodMember(Name = "一键初始化",
|
||||
RequiresPlatformConfirm = true,
|
||||
ConfirmMessage = "确认一键初始化所有未初始化的小车?将中断相关任务。")]
|
||||
public void ResetAll()
|
||||
{
|
||||
foreach (var car in SimpleLib.GetAllCars().OfType<Car>().Where(c => c.lstatus.Contains("正常") || c.lstatus.Contains("上线")))
|
||||
@@ -465,7 +467,7 @@ namespace StandardScene.Chained
|
||||
{
|
||||
G.pushStatus("选择取货位");
|
||||
// 等待用户在UI中选择取货点
|
||||
var pt1 = await Program.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var pt1 = await Startup.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
|
||||
// 创建运输任务:从小车当前位置到选择的取货点
|
||||
var d = new TransportDelivery
|
||||
@@ -516,7 +518,7 @@ namespace StandardScene.Chained
|
||||
{
|
||||
G.pushStatus("选择取货位");
|
||||
// 等待用户在UI中选择放货点(注释写的是"取货位"但实际是放货点)
|
||||
var pt1 = await Program.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var pt1 = await Startup.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var srcSite = SimpleLib.GetSite(pt1.site);
|
||||
|
||||
// 创建运输任务:从小车当前位置到选择的放货点
|
||||
@@ -555,12 +557,12 @@ namespace StandardScene.Chained
|
||||
{
|
||||
G.pushStatus("选择取货位");
|
||||
// 等待用户在UI中选择取货点
|
||||
var pt1 = await Program.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var pt1 = await Startup.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var srcSite = SimpleLib.GetSite(pt1.site);
|
||||
|
||||
G.pushStatus("选择放货位");
|
||||
// 等待用户在UI中选择放货点
|
||||
var pt2 = await Program.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var pt2 = await Startup.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var dstSite = SimpleLib.GetSite(pt2.site);
|
||||
|
||||
// 创建完整的运输任务:从取货点到放货点
|
||||
@@ -592,7 +594,7 @@ namespace StandardScene.Chained
|
||||
{
|
||||
G.pushStatus("选择前往的站点");
|
||||
// 等待用户在UI中选择目标站点
|
||||
var pt1 = await Program.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var pt1 = await Startup.UI.getPoint(new UIOps.getPointOptions() { site = true });
|
||||
var srcSite = SimpleLib.GetSite(pt1.site);
|
||||
|
||||
// 创建移动任务:起点和终点相同(只移动到目标点,不执行取放货操作)
|
||||
|
||||
Reference in New Issue
Block a user