添加了标识更新

但是只有界面没有功能
This commit is contained in:
CortexCore 2023-07-11 00:14:36 +08:00
parent d8d34766c0
commit ca824c3b32
21 changed files with 742 additions and 126 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwecc0c326uwp"
path="res://.godot/imported/dashicons_update.png-a2c0bcc4086adb8b526fe8b615a06538.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Artists/Art/Icons/dashicons_update.png"
dest_files=["res://.godot/imported/dashicons_update.png-a2c0bcc4086adb8b526fe8b615a06538.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -0,0 +1,6 @@
[gd_resource type="Resource" script_class="RegularExpressionResource" load_steps=2 format=3 uid="uid://jor5dw3bmy6k"]
[ext_resource type="Script" path="res://BITKit/Scripts/Text/RegularExpressionResource.cs" id="1_gfvy2"]
[resource]
script = ExtResource("1_gfvy2")

View File

@ -0,0 +1,27 @@
[gd_scene load_steps=2 format=3 uid="uid://btc6smeueu517"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_yrfyl"]
[node name="LineEditTemplate" type="PanelContainer" node_paths=PackedStringArray("label", "labels", "lineEdit", "lineEdits")]
script = ExtResource("1_yrfyl")
label = NodePath("MarginContainer/Layout/Label")
labels = []
lineEdit = NodePath("MarginContainer/Layout/LineEdit")
lineEdits = []
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
theme_type_variation = &"Margin_16px"
[node name="Layout" type="HBoxContainer" parent="MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/Layout"]
layout_mode = 2
size_flags_horizontal = 3
text = "格式 e.g.温湿度"
[node name="LineEdit" type="LineEdit" parent="MarginContainer/Layout"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "温湿度 e.g 42"

View File

@ -0,0 +1,39 @@
[gd_scene load_steps=3 format=3 uid="uid://b57xrg2ye60dy"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_vmd75"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e8vip"]
bg_color = Color(1, 1, 1, 0.501961)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[node name="Option-Button" type="PanelContainer" node_paths=PackedStringArray("button", "labels", "lineEdits")]
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("1_vmd75")
button = NodePath("Button")
labels = []
lineEdits = []
[node name="Button" type="Button" parent="."]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
text = "模板类型"
alignment = 0
[node name="Panel" type="Panel" parent="Button"]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = -35.0
offset_top = -4.0
offset_right = -27.0
offset_bottom = 4.0
grow_horizontal = 0
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_e8vip")

View File

@ -0,0 +1,17 @@
[gd_scene format=3 uid="uid://dqd08tc6xidpy"]
[node name="标题栏Template" type="VBoxContainer"]
[node name="Title" type="Label" parent="."]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "标识更新"
[node name="Context" type="Label" parent="."]
layout_mode = 2
size_flags_horizontal = 0
text = "通常该过程是自动更新的,但有时候会有需要手动更新标识的情况"
[node name="占位符" type="Control" parent="."]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2

View File

@ -2,7 +2,7 @@
[resource]
bg_color = Color(1, 1, 1, 0.0313726)
corner_radius_top_left = 16
corner_radius_top_right = 16
corner_radius_bottom_right = 16
corner_radius_bottom_left = 16
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8

View File

@ -72,6 +72,24 @@ layout_mode = 2
theme_type_variation = &"SideTab"
text = "SideBar 1"
[node name="VBoxContainer2" type="VBoxContainer" parent="Scroll/HBoxContainer/VBoxContainer"]
layout_mode = 2
[node name="Button" type="Button" parent="Scroll/HBoxContainer/VBoxContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"Option"
text = "Option 1"
[node name="Button2" type="Button" parent="Scroll/HBoxContainer/VBoxContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"Option"
text = "Option 1"
[node name="Button3" type="Button" parent="Scroll/HBoxContainer/VBoxContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"Option"
text = "Option 1"
[node name="VBoxContainer2" type="VBoxContainer" parent="Scroll/HBoxContainer"]
custom_minimum_size = Vector2(512, 0)
layout_mode = 2

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,59 @@
using Godot;
using System;
// ReSharper disable MemberCanBePrivate.Global
namespace BITKit;
public partial class NodeBuilder : Node
{
[Export] private bool clearOnStart = true;
[Export] private bool clearTemplateOnly = true;
[Export] private Control container;
[ExportCategory("UX")]
[Export] private Control emptyHints;
[ExportCategory("Template")]
[Export] private PackedScene template;
public override void _Ready()
{
if (clearOnStart)
{
Clear();
}
}
public Node Build()
{
var instance = template.Instantiate();
if (container is not null)
{
container.AddChild(instance);
}
else
{
AddChild(instance);
}
emptyHints?.Hide();
return instance;
}
public T Build<T>() where T : Node
{
var instance = Build() as T;
return instance;
}
public void Clear()
{
emptyHints?.Show();
if (clearTemplateOnly)
{
foreach (var x in container is not null ? container.GetChildren() : GetChildren())
{
if(x.SceneFilePath == template.ResourcePath)
x.QueueFree();
}
}
else
{
MathNode.ClearChild(container is not null ? container:this);
}
}
}

View File

@ -28,7 +28,7 @@ public static partial class MathNode
return nodes.Distinct();
}
public static void RemoveAllChild(Node self)
public static void ClearChild(Node self)
{
foreach (var x in self.GetChildren())
{

View File

@ -0,0 +1,26 @@
using Godot;
using System;
using System.Runtime.InteropServices.ComTypes;
using System.Text.RegularExpressions;
using BITKit;
namespace BITKit;
[GlobalClass]
public partial class RegularExpressionResource : TextValidationResource
{
[Export] private string regex;
[Export] private string errorReason;
public override bool IsTextValid(string text, out string _errorReason)
{
switch (Regex.IsMatch(text, regex))
{
case true:
_errorReason = string.Empty;
return true;
case false:
_errorReason = errorReason;
return false;
}
}
}

View File

@ -0,0 +1,14 @@
using System;
using Godot;
namespace BITKit;
[GlobalClass]
public partial class TextValidationResource:Resource,ITextValidation
{
public virtual bool IsTextValid(string text,out string errorReason)
{
throw new NotImplementedException();
}
}

View File

@ -0,0 +1,28 @@
using Godot;
using System;
using BITKit;
namespace BITFactory;
public partial class UXLineEdit : LineEdit
{
[Export] private TextValidationResource textValidation;
[Export] private RichTextLabel hints;
public override void _Ready()
{
TextChanged += OnTextChanged;
}
private void OnTextChanged(string newText)
{
if (textValidation is not null && textValidation.IsTextValid(newText,out var errorReason) is false)
{
hints.Text = $"[color=red]{errorReason}[/color]";
}
else
{
hints.Text = string.Empty;
}
}
}

View File

@ -22,6 +22,10 @@ public partial class UXWindowService : Control
ShowWindow(window);
};
}
if(tabs.Count>0)
{
ShowWindow(windows[0]);
}
}
private void ShowWindow(CanvasItem window)
{
@ -30,6 +34,12 @@ public partial class UXWindowService : Control
//if(window.Visible is true && window != x)
x.Hide();
}
var index = windows.IndexOf(window as Control);
if (index is not -1)
{
tabs[index].ButtonPressed = true;
}
window.Show();
}
}

View File

@ -60,8 +60,8 @@ public partial class IDIS_RegisterService : Node
private void OnItemClicked(long index, Vector2 atPosition, long mouseButtonIndex)
{
MathNode.RemoveAllChild(registerContainer);
MathNode.RemoveAllChild(referenceContainer);
MathNode.ClearChild(registerContainer);
MathNode.ClearChild(referenceContainer);
var template = templateService.templates[(int)index];
@ -153,6 +153,7 @@ public partial class IDIS_RegisterService : Node
registerProgress.Visible = false;
registerButton.Disabled = false;
hints.Text = "注册成功";
tween.Stop();
};
tween.Play();

View File

@ -32,15 +32,20 @@ public partial class IDIS_SearchService : Node
public override void _Ready()
{
MathNode.RemoveAllChild(searchCandidateContainer);
MathNode.RemoveAllChild(valueContainer);
MathNode.ClearChild(searchCandidateContainer);
MathNode.ClearChild(valueContainer);
searchEdit.TextChanged += Search;
//searchEdit.FocusExited += Clear;
}
private void Search()
{
Search(searchEdit.Text);
}
private void Search(string word)
{
MathNode.RemoveAllChild(searchCandidateContainer);
MathNode.ClearChild(searchCandidateContainer);
if (service.Query(word, out IDIS_Query[] queries) is false) return;
if(queries.Length is 1 && queries.First().Handle == word)return;
foreach (var query in queries)
@ -68,7 +73,7 @@ public partial class IDIS_SearchService : Node
private async void Clear()
{
await Task.Delay(100);
MathNode.RemoveAllChild(searchCandidateContainer);
MathNode.ClearChild(searchCandidateContainer);
}
private void QueryIDIS(IDIS_Query query)
{
@ -79,8 +84,8 @@ public partial class IDIS_SearchService : Node
createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss");
createTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss");
MathNode.RemoveAllChild(valueContainer);
MathNode.RemoveAllChild(referenceContainer);
MathNode.ClearChild(valueContainer);
MathNode.ClearChild(referenceContainer);
foreach (var categoryGroup in query.Datas.GroupBy(x=>x.Category))
{

View File

@ -0,0 +1,62 @@
using Godot;
using System;
using BITFactory;
namespace BITFactory;
public partial class IDIS_THService : Node
{
[ExportCategory("Services")]
[Export] private IDIS_Service service;
[Export] private 湿Reader thReader;
[ExportCategory("UI 绑定")]
[Export] private Button submitButton;
[Export] private LineEdit handleEdit;
[Export] private LineEdit temperatureEdit;
[Export] private LineEdit humidityEdit;
[Export] private RichTextLabel hintsLabel;
public override void _Ready()
{
submitButton.Pressed += Submit;
}
private void Submit()
{
switch (handleEdit.Text, temperatureEdit.Text, humidityEdit.Text)
{
case ("", _, _):
hintsLabel.Text = "请输入标识码";
return;
case (_, "", _):
hintsLabel.Text = "请输入温度";
return;
case (_, _, ""):
hintsLabel.Text = "请输入湿度";
return;
}
try
{
if (service.Update(handleEdit.Text, "温度", humidityEdit.Text) is false)
{
hintsLabel.Text = "温度更新失败: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
return;
}
if (service.Update(handleEdit.Text, "湿度", temperatureEdit.Text) is false)
{
hintsLabel.Text = "湿度更新失败: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
return;
}
hintsLabel.Text = "更新成功: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
catch (Exception e)
{
hintsLabel.Text = e.Message;
throw;
}
}
private void UpdateByReader()
{
}
}

View File

@ -62,7 +62,7 @@ public partial class IDIS_TemplateService : Node
templateDescriptionEdit.TextChanged += OnTemplateDescriptionChanged;
MathNode.RemoveAllChild(container);
MathNode.ClearChild(container);
EnsureConfigure();
}
@ -108,7 +108,7 @@ public partial class IDIS_TemplateService : Node
private void EnsureConfigure()
{
itemList.Clear();
MathNode.RemoveAllChild(container);
MathNode.ClearChild(container);
foreach (var x in templates)
{

View File

@ -1,54 +1,48 @@
using Godot;
using System;
using BITFactory;
using BITKit;
namespace BITFactory;
public partial class IDIS_UpdateService : Node
{
[ExportCategory("Services")]
[ExportCategory("Service")]
[Export] private IDIS_Service service;
[Export] private IDIS_TemplateService templateService;
[ExportCategory("UI 绑定")]
[Export] private Button submitButton;
[Export] private NodeBuilder indexBuilder;
[Export] private NodeBuilder templateBuilder;
[Export] private LineEdit handleEdit;
[Export] private LineEdit temperatureEdit;
[Export] private LineEdit humidityEdit;
[Export] private RichTextLabel hintsLabel;
private ButtonGroup _buttonGroup;
public override void _Ready()
{
submitButton.Pressed += Submit;
_buttonGroup = new ButtonGroup();
Refresh();
}
private void Submit()
private void Refresh()
{
switch (handleEdit.Text, temperatureEdit.Text, humidityEdit.Text)
templateBuilder.Clear();
indexBuilder.Clear();
foreach (var x in templateService.templates)
{
case ("", _, _):
hintsLabel.Text = "请输入标识码";
return;
case (_, "", _):
hintsLabel.Text = "请输入温度";
return;
case (_, _, ""):
hintsLabel.Text = "请输入湿度";
return;
var container = indexBuilder.Build<UXContainer>();
container.button.Text = x.TemplateName;
container.button.ButtonPressed = true;
container.button.ButtonGroup = _buttonGroup;
container.button.Pressed +=()=> Entry(x);
}
try
}
private void Entry(IDIS_Template template)
{
templateBuilder.Clear();
foreach (var x in template.Formats)
{
if (service.Update(handleEdit.Text, "温度", humidityEdit.Text) is false)
{
hintsLabel.Text = "温度更新失败: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
return;
}
if (service.Update(handleEdit.Text, "湿度", temperatureEdit.Text) is false)
{
hintsLabel.Text = "湿度更新失败: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
return;
}
hintsLabel.Text = "更新成功: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
catch (Exception e)
{
hintsLabel.Text = e.Message;
throw;
var container = templateBuilder.Build<UXContainer>();
container.Text = x.format;
container.lineEdit.PlaceholderText = x.hint;
}
}
}

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=32 format=3 uid="uid://cngf2h2a5ne4a"]
[gd_scene load_steps=43 format=3 uid="uid://cngf2h2a5ne4a"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_c78kh"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="2_mn1rn"]
@ -11,30 +11,49 @@
[ext_resource type="Texture2D" uid="uid://b447jkohs1utw" path="res://Artists/Art/Icons/icon_material-symbols_bookmark-manager.png" id="5_e7iy7"]
[ext_resource type="Texture2D" uid="uid://chdrm4pbi6cm5" path="res://Artists/Art/Icons/icon_fluent-mdl2_registry-editor.png" id="6_sgyjo"]
[ext_resource type="Texture2D" uid="uid://cadf2webkrl7h" path="res://BITKit/Art/Icons/icon_subscriber-identity-module.png" id="7_tx7hw"]
[ext_resource type="Texture2D" uid="uid://cwecc0c326uwp" path="res://Artists/Art/Icons/dashicons_update.png" id="8_1y7bw"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_RegisterService.cs" id="8_6uwr0"]
[ext_resource type="Texture2D" uid="uid://sq1oh4tippad" path="res://Artists/Art/Icons/icon_temperature-celsius.png" id="8_488ak"]
[ext_resource type="Texture2D" uid="uid://c38luts5hc5fj" path="res://Artists/Art/Icons/Arrows/icon_chevron-left-rounded.png" id="9_78wam"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXServiceProxy.cs" id="11_qsxmx"]
[ext_resource type="StyleBox" uid="uid://be603nq0xbeaa" path="res://Artists/Themes/Factory-Panel.tres" id="13_6i2vs"]
[ext_resource type="PackedScene" uid="uid://dqd08tc6xidpy" path="res://Artists/Templates/标题栏Template.tscn" id="13_7vm0l"]
[ext_resource type="Texture2D" uid="uid://dyxw5ocfiamgi" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/标准ModbusRTU图片.jpg" id="13_jkuq8"]
[ext_resource type="PackedScene" uid="uid://42locm7i2wvy" path="res://Mods/工业数据采集与分析应用分享/Templates/标识引用模板.tscn" id="14_0l0dn"]
[ext_resource type="Texture2D" uid="uid://dn7q7grbfr7kh" path="res://addons/ui_design_tool/assets/icons/refresh-white-18dp.svg" id="14_niy17"]
[ext_resource type="PackedScene" uid="uid://b57xrg2ye60dy" path="res://Artists/Templates/Option_Button.tscn" id="14_pcoc2"]
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/NodeBuilder.cs" id="14_q0cb2"]
[ext_resource type="Texture2D" uid="uid://57gvsjws6ulq" path="res://BITKit/Art/Containers/container_border_64.png" id="14_sy0v3"]
[ext_resource type="Texture2D" uid="uid://8ekdl6dgus50" path="res://Artists/Art/Icons/carbon_no-image.png" id="15_i4f2k"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_SearchService.cs" id="16_14syv"]
[ext_resource type="PackedScene" uid="uid://btc6smeueu517" path="res://Artists/Templates/LineEditTemplate.tscn" id="16_il4as"]
[ext_resource type="Script" path="res://BITKit/Scripts/Resource/StringResource.cs" id="17_vci8w"]
[ext_resource type="PackedScene" uid="uid://dghty7km181mc" path="res://Mods/工业数据采集与分析应用分享/Templates/关联标识.tscn" id="19_abuse"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXLineEdit.cs" id="19_egw0i"]
[ext_resource type="PackedScene" uid="uid://d1rpv4oovnljv" path="res://Mods/工业数据采集与分析应用分享/Templates/传感器数据模板.tscn" id="19_qxvds"]
[ext_resource type="Script" path="res://BITKit/Scripts/Text/RegularExpressionResource.cs" id="20_h53sw"]
[ext_resource type="PackedScene" uid="uid://cccx8fmmfttth" path="res://Mods/工业数据采集与分析应用分享/Templates/标识数据模板.tscn" id="20_kicyn"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_UpdateService.cs" id="26_a6qku"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/温湿度Reader.cs" id="27_q8j7q"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_THService.cs" id="30_jn688"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nfm72"]
bg_color = Color(0.172549, 0.168627, 0.188235, 1)
bg_color = Color(1, 1, 1, 0.0313726)
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_clkje"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1rin1"]
[sub_resource type="Resource" id="Resource_dtmqv"]
script = ExtResource("20_h53sw")
regex = "^\\d{3,5}$"
errorReason = "输入1-4位整数"
[sub_resource type="Resource" id="Resource_di31i"]
script = ExtResource("20_h53sw")
regex = "^\\d{1,2}$"
errorReason = "输入不是数字"
[sub_resource type="Resource" id="Resource_ktam2"]
script = ExtResource("17_vci8w")
value = "Panel"
@ -76,8 +95,8 @@ layout_mode = 2
layout_mode = 2
size_flags_vertical = 3
script = ExtResource("3_sfip0")
tabs = [NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识模板-button"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/Button3"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/Button2"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/Button4")]
windows = [NodePath("Horizontal Layout/内容/标识模板"), NodePath("Horizontal Layout/内容/标注注册"), NodePath("Horizontal Layout/内容/标识解析"), NodePath("Horizontal Layout/内容/温湿度传感器")]
tabs = [NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识模板-button"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/注册标识"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/更新标识"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识解析"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/温湿度传感器")]
windows = [NodePath("Horizontal Layout/内容/标识模板"), NodePath("Horizontal Layout/内容/标注注册"), NodePath("Horizontal Layout/内容/标识更新"), NodePath("Horizontal Layout/内容/标识解析"), NodePath("Horizontal Layout/内容/温湿度传感器")]
[node name="Horizontal Layout" type="HBoxContainer" parent="Layout/UX Window Service"]
layout_mode = 2
@ -132,9 +151,9 @@ expand_icon = true
[node name="Label3" type="Label" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
layout_mode = 2
text = "注册"
text = "注册与更新"
[node name="Button3" type="Button" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
[node name="注册标识" type="Button" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"SideTab"
toggle_mode = true
@ -143,11 +162,20 @@ text = "注册标识"
icon = ExtResource("6_sgyjo")
expand_icon = true
[node name="更新标识" type="Button" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"SideTab"
toggle_mode = true
button_group = ExtResource("3_wv1s6")
text = "更新标识"
icon = ExtResource("8_1y7bw")
expand_icon = true
[node name="Label4" type="Label" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
layout_mode = 2
text = "查询"
[node name="Button2" type="Button" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
[node name="标识解析" type="Button" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"SideTab"
toggle_mode = true
@ -160,7 +188,7 @@ expand_icon = true
layout_mode = 2
text = "实训"
[node name="Button4" type="Button" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
[node name="温湿度传感器" type="Button" parent="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"SideTab"
toggle_mode = true
@ -187,11 +215,27 @@ theme_override_styles/panel = SubResource("StyleBoxEmpty_clkje")
[node name="标识模板" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容"]
visible = false
layout_mode = 2
theme_type_variation = &"Margin_16px"
theme_override_constants/margin_left = 64
theme_override_constants/margin_top = 64
theme_override_constants/margin_right = 64
theme_override_constants/margin_bottom = 128
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板"]
layout_mode = 2
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer" instance=ExtResource("13_7vm0l")]
layout_mode = 2
[node name="Title" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/标题栏Template" index="0"]
text = "标识模板"
[node name="Context" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/标题栏Template" index="1"]
text = "在注册与更新标识之前,我们需要一个创建标识模板,
然后我们可以通过创建的模板注册标识"
[node name="占位符" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/标题栏Template" index="2"]
visible = false
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
@ -304,33 +348,39 @@ layout_mode = 2
size_flags_horizontal = 3
text = "分类"
[node name="Format-Container" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="Format-Container" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="标识模板格式" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container" instance=ExtResource("3_gmthc")]
layout_mode = 2
[node name="标识模板格式" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container" instance=ExtResource("3_gmthc")]
layout_mode = 2
[node name="标识模板格式2" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
[node name="标识模板格式2" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
layout_mode = 2
lineEdits = [NodePath("../标识模板格式/HBoxContainer/name-edit"), NodePath("../标识模板格式/HBoxContainer/hint-edit")]
[node name="标识模板格式3" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
[node name="标识模板格式3" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
layout_mode = 2
lineEdits = [NodePath("../标识模板格式/HBoxContainer/name-edit"), NodePath("../标识模板格式/HBoxContainer/hint-edit")]
[node name="标识模板格式4" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
[node name="标识模板格式4" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
layout_mode = 2
lineEdits = [NodePath("../标识模板格式/HBoxContainer/name-edit"), NodePath("../标识模板格式/HBoxContainer/hint-edit")]
[node name="标识模板格式5" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
[node name="标识模板格式5" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
layout_mode = 2
lineEdits = [NodePath("../标识模板格式/HBoxContainer/name-edit"), NodePath("../标识模板格式/HBoxContainer/hint-edit")]
[node name="标识模板格式6" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
[node name="标识模板格式6" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
layout_mode = 2
lineEdits = [NodePath("../标识模板格式/HBoxContainer/name-edit"), NodePath("../标识模板格式/HBoxContainer/hint-edit")]
[node name="标识模板格式7" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
[node name="标识模板格式7" parent="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container" node_paths=PackedStringArray("lineEdits") instance=ExtResource("3_gmthc")]
layout_mode = 2
lineEdits = [NodePath("../标识模板格式/HBoxContainer/name-edit"), NodePath("../标识模板格式/HBoxContainer/hint-edit")]
@ -348,21 +398,36 @@ text = "保存注册模板"
[node name="标注注册" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容"]
visible = false
layout_mode = 2
theme_type_variation = &"Margin_16px"
theme_override_constants/margin_left = 64
theme_override_constants/margin_top = 64
theme_override_constants/margin_right = 64
theme_override_constants/margin_bottom = 128
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册"]
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer"]
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer" instance=ExtResource("13_7vm0l")]
layout_mode = 2
[node name="Title" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/标题栏Template" index="0"]
text = "注册标识"
[node name="Context" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/标题栏Template" index="1"]
text = "当我们创建标识模板后,我们就可以通过标识模板快速注册标识"
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer"]
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "选择标识模板"
[node name="ItemList" type="ItemList" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer"]
[node name="ItemList" type="ItemList" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
auto_height = true
@ -372,72 +437,72 @@ item_1/text = "2"
item_2/text = "3"
item_3/text = "4"
[node name="VSeparator" type="VSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer"]
[node name="VSeparator" type="VSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="VBoxContainer2" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer"]
[node name="VBoxContainer2" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2"]
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "在这里填写注册表单"
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2"]
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2"]
layout_mode = 2
[node name="handle-edit" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/HBoxContainer"]
[node name="handle-edit" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "留空则自动创建标识"
caret_blink = true
caret_blink_interval = 0.5
[node name="generate-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/HBoxContainer"]
[node name="generate-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/HBoxContainer"]
layout_mode = 2
text = "生成标识"
[node name="MarginContainer" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2"]
[node name="MarginContainer" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"Margin_16px"
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识值"
[node name="register-container" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
[node name="register-container" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识引用"
[node name="reference-container" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
[node name="reference-container" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="addReference-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
[node name="addReference-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer"]
layout_mode = 2
text = "添加引用"
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2"]
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2"]
layout_mode = 2
text = "等待操作"
[node name="register-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2"]
[node name="register-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2"]
layout_mode = 2
text = "注册标识"
[node name="ProgressBar" type="ProgressBar" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/register-button"]
[node name="ProgressBar" type="ProgressBar" parent="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/register-button"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -448,6 +513,128 @@ mouse_filter = 2
theme_override_styles/background = SubResource("StyleBoxEmpty_1rin1")
show_percentage = false
[node name="标识更新" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容"]
layout_mode = 2
theme_override_constants/margin_left = 64
theme_override_constants/margin_top = 64
theme_override_constants/margin_right = 64
theme_override_constants/margin_bottom = 128
[node name="Layout" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新"]
layout_mode = 2
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout" instance=ExtResource("13_7vm0l")]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 128
[node name="VBoxContainer2" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2"]
layout_mode = 2
text = "模板列表"
[node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2"]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2
theme_override_constants/separation = 12
script = ExtResource("14_q0cb2")
emptyHints = NodePath("Label2")
template = ExtResource("14_pcoc2")
[node name="Option-Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer/NodeBuilder" instance=ExtResource("14_pcoc2")]
layout_mode = 2
[node name="Option-Button2" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer/NodeBuilder" instance=ExtResource("14_pcoc2")]
layout_mode = 2
[node name="Option-Button3" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer/NodeBuilder" instance=ExtResource("14_pcoc2")]
layout_mode = 2
[node name="Option-Button4" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer/NodeBuilder" instance=ExtResource("14_pcoc2")]
layout_mode = 2
[node name="Option-Button5" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer/NodeBuilder" instance=ExtResource("14_pcoc2")]
layout_mode = 2
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer/NodeBuilder"]
layout_mode = 2
text = "oops,没有找到标识模板,去创建模板吧!"
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 8
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer"]
layout_mode = 2
text = "通过模板更新标识数据"
[node name="LineEditTemplate" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer" instance=ExtResource("16_il4as")]
layout_mode = 2
[node name="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/LineEditTemplate/MarginContainer/Layout" index="0"]
text = "标识码"
[node name="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/LineEditTemplate/MarginContainer/Layout" index="1"]
placeholder_text = "88.123.99/XXXXXXXXXXXXXXXX"
[node name="generate-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/LineEditTemplate/MarginContainer/Layout" index="2"]
visible = false
layout_mode = 2
text = "生成标识"
flat = true
[node name="GridContainer" type="GridContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer"]
layout_mode = 2
columns = 2
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/GridContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "格式"
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/GridContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "数据"
[node name="NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2
script = ExtResource("14_q0cb2")
emptyHints = NodePath("EmptyHints")
template = ExtResource("16_il4as")
[node name="LineEditTemplate" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/NodeBuilder" instance=ExtResource("16_il4as")]
layout_mode = 2
[node name="EmptyHints" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/NodeBuilder"]
custom_minimum_size = Vector2(0, 256)
layout_mode = 2
size_flags_vertical = 3
text = "选择一个模板,然后我们开始更新"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout"]
layout_mode = 2
alignment = 2
[node name="Button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer2"]
custom_minimum_size = Vector2(256, 0)
layout_mode = 2
text = "更新标识"
icon = ExtResource("8_1y7bw")
expand_icon = true
[node name="标识解析" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容"]
visible = false
layout_mode = 2
@ -473,18 +660,26 @@ layout_mode = 2
theme_type_variation = &"SearchBar"
placeholder_text = "搜索标识"
[node name="queryLast-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标识解析/Search/SearchEdit"]
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识解析/Search/SearchEdit"]
layout_mode = 1
anchors_preset = 11
anchor_left = 1.0
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -16.0
grow_horizontal = 0
grow_horizontal = 2
grow_vertical = 2
alignment = 2
[node name="queryLast-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标识解析/Search/SearchEdit/HBoxContainer"]
layout_mode = 2
text = "查询上一个"
flat = true
[node name="refresh-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/标识解析/Search/SearchEdit/HBoxContainer"]
layout_mode = 2
text = "搜索和刷新"
icon = ExtResource("14_niy17")
flat = true
[node name="PanelContainer" type="PanelContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识解析/Search"]
layout_mode = 2
theme_override_styles/panel = ExtResource("13_6i2vs")
@ -651,7 +846,6 @@ theme_type_variation = &"HeaderSmall"
text = "引用的标识"
[node name="引用标识" type="HFlowContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin2"]
custom_minimum_size = Vector2(900, 0)
layout_mode = 2
theme_override_constants/h_separation = 16
@ -677,17 +871,28 @@ theme_override_constants/v_separation = 16
columns = 2
[node name="温湿度传感器" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容"]
visible = false
layout_mode = 2
theme_override_constants/margin_left = 64
theme_override_constants/margin_top = 100
theme_override_constants/margin_top = 64
theme_override_constants/margin_right = 64
theme_override_constants/margin_bottom = 64
theme_override_constants/margin_bottom = 28
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器"]
layout_mode = 2
size_flags_horizontal = 0
theme_override_constants/separation = 32
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer" instance=ExtResource("13_7vm0l")]
layout_mode = 2
[node name="Title" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/标题栏Template" index="0"]
text = "温湿度传感器数据采集"
[node name="Context" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/标题栏Template" index="1"]
text = "我们可以通过输入地址和IP快速从Modbus采集温湿度传感器的数据
也可以手动更新温湿度的标识,取决于你的使用场景"
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer"]
layout_mode = 2
@ -699,7 +904,7 @@ text = "已获取的传感器数据"
[node name="GridContainer2" type="GridContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer"]
layout_mode = 2
columns = 2
columns = 3
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2"]
layout_mode = 2
@ -710,14 +915,28 @@ layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "传感器的IP"
[node name="hints-0" type="RichTextLabel" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2"]
custom_minimum_size = Vector2(128, 0)
layout_mode = 2
bbcode_enabled = true
fit_content = true
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2"]
layout_mode = 2
text = "Port:"
[node name="LineEdit2" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2"]
[node name="LineEdit2" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2" node_paths=PackedStringArray("hints")]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "传感器的端口"
script = ExtResource("19_egw0i")
textValidation = SubResource("Resource_dtmqv")
hints = NodePath("../hints-1")
[node name="hints-1" type="RichTextLabel" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2"]
custom_minimum_size = Vector2(256, 0)
layout_mode = 2
bbcode_enabled = true
[node name="GridContainer" type="GridContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer"]
layout_mode = 2
@ -756,36 +975,58 @@ theme_override_colors/font_color = Color(0.509804, 0.509804, 0.509804, 1)
text = "手动提交数据"
[node name="GridContainer2" type="GridContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2"]
custom_minimum_size = Vector2(512, 0)
layout_mode = 2
columns = 2
columns = 3
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
[node name="Label-0" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
layout_mode = 2
text = "标识码:"
[node name="LineEdit" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
[node name="LineEdit-0" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "88.123.99/xxxxxxxxxxxxxxxx"
[node name="hints-0" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
layout_mode = 2
text = "88.123.99开头"
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
layout_mode = 2
text = "温度:"
[node name="LineEdit2" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
[node name="LineEdit2" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2" node_paths=PackedStringArray("hints")]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "42"
script = ExtResource("19_egw0i")
textValidation = SubResource("Resource_di31i")
hints = NodePath("../hints-1")
[node name="hints-1" type="RichTextLabel" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
layout_mode = 2
bbcode_enabled = true
text = "输入正确的温度"
fit_content = true
[node name="Label3" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
layout_mode = 2
text = "湿度:"
[node name="LineEdit3" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
[node name="LineEdit3" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2" node_paths=PackedStringArray("hints")]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "50"
script = ExtResource("19_egw0i")
textValidation = SubResource("Resource_di31i")
hints = NodePath("../hints-2")
[node name="hints-2" type="RichTextLabel" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2"]
layout_mode = 2
bbcode_enabled = true
[node name="更新温湿度-button2" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2"]
layout_mode = 2
@ -809,7 +1050,7 @@ newFormatButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容
itemList = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer/ItemList")
templateNameEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/name-edit")
templateDescriptionEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/description-edit")
container = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/Format-Container")
container = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/Format-Container")
templateCreateTimeLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/GridContainer/createTime-label")
templateUpdateTimeLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/HBoxContainer/VBoxContainer2/VBoxContainer/GridContainer/updateTime-label")
templateContainer = ExtResource("3_gmthc")
@ -818,15 +1059,15 @@ templateContainer = ExtResource("3_gmthc")
script = ExtResource("8_6uwr0")
service = NodePath("../标识解析服务")
templateService = NodePath("../标识模板服务")
templateList = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer/ItemList")
handleEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/HBoxContainer/handle-edit")
generateHandleButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/HBoxContainer/generate-button")
registerContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer/register-container")
registerButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/register-button")
registerProgress = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/register-button/ProgressBar")
referenceContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer/reference-container")
addReferenceButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer/addReference-button")
hints = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/HBoxContainer/VBoxContainer2/Label2")
templateList = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer/ItemList")
handleEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/HBoxContainer/handle-edit")
generateHandleButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/HBoxContainer/generate-button")
registerContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer/register-container")
registerButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/register-button")
registerProgress = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/register-button/ProgressBar")
referenceContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer/reference-container")
addReferenceButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/MarginContainer/VBoxContainer/addReference-button")
hints = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/HBoxContainer/VBoxContainer2/Label2")
[node name="标识搜索服务" type="Node" parent="." node_paths=PackedStringArray("service", "searchEdit", "searchCandidateContainer", "searchEditPadding", "handleLabel", "createTimeLabel", "updateTimeLabel", "valueContainer", "referenceContainer")]
script = ExtResource("16_14syv")
@ -844,11 +1085,12 @@ valueTemplate = ExtResource("19_abuse")
referenceTemplate = ExtResource("14_0l0dn")
categoryTemplate = ExtResource("20_kicyn")
[node name="温湿度标识更新服务" type="Node" parent="." node_paths=PackedStringArray("service", "submitButton", "handleEdit", "temperatureEdit", "humidityEdit", "hintsLabel")]
script = ExtResource("26_a6qku")
[node name="温湿度标识更新服务" type="Node" parent="." node_paths=PackedStringArray("service", "thReader", "submitButton", "handleEdit", "temperatureEdit", "humidityEdit", "hintsLabel")]
script = ExtResource("30_jn688")
service = NodePath("../标识解析服务")
thReader = NodePath("../温湿度传感器Reader")
submitButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/更新温湿度-button2")
handleEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2/LineEdit")
handleEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2/LineEdit-0")
temperatureEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2/LineEdit2")
humidityEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/GridContainer2/LineEdit3")
hintsLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer2/Label3")
@ -861,7 +1103,20 @@ ipEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿
portEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2/LineEdit2")
hintsLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/RichTextLabel")
[node name="标识更新服务" type="Node" parent="." node_paths=PackedStringArray("service", "templateService", "indexBuilder", "templateBuilder", "handleEdit")]
script = ExtResource("26_a6qku")
service = NodePath("../标识解析服务")
templateService = NodePath("../标识模板服务")
indexBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer/NodeBuilder")
templateBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/NodeBuilder")
handleEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/LineEditTemplate/MarginContainer/Layout/LineEdit")
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/Button5" to="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/Button5" method="Return"]
[connection signal="draw" from="Layout/UX Window Service/Horizontal Layout/内容/标注注册" to="标识注册服务" method="Rebuild"]
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/内容/标识解析/Search/SearchEdit/HBoxContainer/refresh-button" to="标识搜索服务" method="Search"]
[editable path="Layout/UX Window Service/Horizontal Layout/内容/标识模板/VBoxContainer/标题栏Template"]
[editable path="Layout/UX Window Service/Horizontal Layout/内容/标注注册/VBoxContainer/标题栏Template"]
[editable path="Layout/UX Window Service/Horizontal Layout/内容/标识更新/Layout/HBoxContainer/VBoxContainer/LineEditTemplate"]
[editable path="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/标题栏Template"]
[editable path="Layout/UX Window Service/Horizontal Layout/内容/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer/传感器数据模板2"]