diff --git a/ToolsForm/.idea/.idea.ToolsForm/.idea/workspace.xml b/ToolsForm/.idea/.idea.ToolsForm/.idea/workspace.xml
index 9b35f34..589ae99 100644
--- a/ToolsForm/.idea/.idea.ToolsForm/.idea/workspace.xml
+++ b/ToolsForm/.idea/.idea.ToolsForm/.idea/workspace.xml
@@ -8,26 +8,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -37,23 +23,12 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -168,7 +143,7 @@
-
+
@@ -176,6 +151,17 @@
+
+
+
diff --git a/ToolsForm/ToolsForm/Assets/img/UploadExperiment/c.png b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/c.png
new file mode 100644
index 0000000..101c0b4
Binary files /dev/null and b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/c.png differ
diff --git a/ToolsForm/ToolsForm/Assets/img/UploadExperiment/java.png b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/java.png
new file mode 100644
index 0000000..2229fa3
Binary files /dev/null and b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/java.png differ
diff --git a/ToolsForm/ToolsForm/Assets/img/UploadExperiment/python.png b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/python.png
new file mode 100644
index 0000000..5134b43
Binary files /dev/null and b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/python.png differ
diff --git a/ToolsForm/ToolsForm/Assets/img/UploadExperiment/其他文件.png b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/其他文件.png
new file mode 100644
index 0000000..394f370
Binary files /dev/null and b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/其他文件.png differ
diff --git a/ToolsForm/ToolsForm/Assets/img/UploadExperiment/文件夹.png b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/文件夹.png
new file mode 100644
index 0000000..a217191
Binary files /dev/null and b/ToolsForm/ToolsForm/Assets/img/UploadExperiment/文件夹.png differ
diff --git a/ToolsForm/ToolsForm/Models/IdeModel.cs b/ToolsForm/ToolsForm/Models/IdeModel.cs
index 8be043d..bc1e8d4 100644
--- a/ToolsForm/ToolsForm/Models/IdeModel.cs
+++ b/ToolsForm/ToolsForm/Models/IdeModel.cs
@@ -32,7 +32,14 @@ namespace ToolsForm.Models
// IDE 的路径
private string _idePath;
-
+ private string _folderPath;
+
+ public string FolderPath
+ {
+ get => _folderPath;
+ set => _folderPath = value ?? throw new ArgumentNullException(nameof(value));
+ }
+
[JsonConverter(typeof(IDETypeEnum))]
// IDE 的类型(Python、Java 或 C)
private IDETypeEnum _ideTypeEnum;
diff --git a/ToolsForm/ToolsForm/Views/IDEWindow2.axaml.cs b/ToolsForm/ToolsForm/Views/IDEWindow2.axaml.cs
index 9961929..b582baf 100644
--- a/ToolsForm/ToolsForm/Views/IDEWindow2.axaml.cs
+++ b/ToolsForm/ToolsForm/Views/IDEWindow2.axaml.cs
@@ -59,7 +59,7 @@ public partial class IDEWindow2 : Window
// 将选择的文件夹路径显示在TextBlock上
// var image = this.FindControl("FolderPathTextBlock");
// image.Text = result;
-
+ AppDataManager.IdeModel.FolderPath = result;
Console.WriteLine(result);
}
diff --git a/ToolsForm/ToolsForm/Views/OverviewWindow.axaml b/ToolsForm/ToolsForm/Views/OverviewWindow.axaml
index 9957343..84e9ce7 100644
--- a/ToolsForm/ToolsForm/Views/OverviewWindow.axaml
+++ b/ToolsForm/ToolsForm/Views/OverviewWindow.axaml
@@ -112,7 +112,6 @@
ClipToBounds="False"
FontFamily="{StaticResource SourceLight}"
FontSize="15"
- Text="(1)创建ROS节点,用于订阅相机图像话题123"
TextWrapping="Wrap" />
diff --git a/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml b/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml
index 50aea16..1e30025 100644
--- a/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml
+++ b/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml
@@ -119,7 +119,7 @@
Canvas.Top="196"
FontFamily="{StaticResource SourceNormal}"
FontSize="15"
- Text="提交实验" />
+ Text="代码文件" />
+
+
+
+
+
+
+
diff --git a/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml.cs b/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml.cs
index 5be3c10..320f315 100644
--- a/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml.cs
+++ b/ToolsForm/ToolsForm/Views/UploadExperimentWindow.axaml.cs
@@ -1,14 +1,27 @@
using System;
+using System.Collections.ObjectModel;
+using System.IO;
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
+using Avalonia.Layout;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
+using Avalonia.Media.Imaging;
+using Avalonia.Platform;
using Avalonia.Threading;
+using ToolsForm.Models;
namespace ToolsForm.Views;
+public class FileSystemItem
+{
+ public string Name { get; set; }
+ public bool IsDirectory { get; set; }
+ public ObservableCollection Children { get; set; } = new ObservableCollection();
+}
+
public partial class UploadExperimentWindow : Window
{
private DispatcherTimer _rotationTimer1;
@@ -16,10 +29,15 @@ public partial class UploadExperimentWindow : Window
private double _rotationAngle1 = 0;
private double _rotationAngle2 = 0;
+ public ObservableCollection FileItems { get; set; } = new ObservableCollection();
+
+
public UploadExperimentWindow()
{
InitializeComponent();
+ DataContext = this; // 绑定数据上下文
+
// 初始化旋转定时器
_rotationTimer1 = new DispatcherTimer
{
@@ -35,8 +53,129 @@ public partial class UploadExperimentWindow : Window
// 开始旋转
StartLoadingAnimation();
+
+
+ CompleteLoading();
}
+
+ public void LoadDirectoryContents(string path, StackPanel container)
+ {
+ // 检查文件夹是否存在
+ if (!Directory.Exists(path))
+ throw new DirectoryNotFoundException("指定的文件夹未找到");
+
+ // 清空容器
+ container.Children.Clear();
+
+ // 获取目录信息
+ var dirInfo = new DirectoryInfo(path);
+
+ // 加载目录和文件
+ LoadContentsRecursively(dirInfo, container, 0);
+ }
+
+ private void LoadContentsRecursively(DirectoryInfo dirInfo, StackPanel container, int level)
+ {
+ // 遍历所有子目录
+ foreach (var dir in dirInfo.GetDirectories())
+ {
+ AddDirectoryToContainer(dir, container, level);
+
+ // 递归加载子目录内容
+ LoadContentsRecursively(dir, container, level + 1);
+ }
+
+ // 遍历所有文件
+ foreach (var file in dirInfo.GetFiles())
+ {
+ AddFileToContainer(file, container, level);
+ }
+ }
+
+ private void AddDirectoryToContainer(DirectoryInfo dir, StackPanel container, int level)
+ {
+ var itemPanel = new StackPanel
+ {
+ Orientation = Orientation.Horizontal,
+ Margin = new Thickness(level * 20, 1, 0, 1) // 每个层级增加缩进
+ };
+
+ var dirIcon = new Image
+ {
+ Source = new Bitmap(AssetLoader.Open(new Uri("avares://ToolsForm/Assets/img/UploadExperiment/文件夹.png"))),
+ Width = 16,
+ Height = 16,
+ Margin = new Thickness(0, 0, 5, 0)
+ };
+ itemPanel.Children.Add(dirIcon);
+
+ var dirTextBlock = new TextBlock
+ {
+ Text = $"{dir.Name} ({dir.FullName})", // 添加完整路径
+ FontFamily = new FontFamily("YourFontFamily"),
+ FontSize = 15,
+ TextWrapping = TextWrapping.Wrap
+ };
+ itemPanel.Children.Add(dirTextBlock);
+
+ container.Children.Add(itemPanel);
+ }
+
+ private void AddFileToContainer(FileInfo file, StackPanel container, int level)
+ {
+ var itemPanel = new StackPanel
+ {
+ Orientation = Orientation.Horizontal,
+ Margin = new Thickness(level * 20, 1, 0, 1) // 每个层级增加缩进
+ };
+
+ var fileIcon = GetFileIcon(file);
+ itemPanel.Children.Add(fileIcon);
+
+ var fileTextBlock = new TextBlock
+ {
+ Text = file.Name,
+ FontFamily = new FontFamily("YourFontFamily"),
+ FontSize = 15,
+ TextWrapping = TextWrapping.Wrap
+ };
+ itemPanel.Children.Add(fileTextBlock);
+
+ container.Children.Add(itemPanel);
+ }
+
+ private Image GetFileIcon(FileInfo file)
+ {
+ string iconPath;
+
+ // 根据文件扩展名选择图标
+ switch (file.Extension.ToLower())
+ {
+ case ".py":
+ iconPath = "avares://ToolsForm/Assets/img/UploadExperiment/python.png";
+ break;
+ case ".java":
+ iconPath = "avares://ToolsForm/Assets/img/UploadExperiment/java.png";
+ break;
+ case ".c":
+ iconPath = "avares://ToolsForm/Assets/img/UploadExperiment/c.png";
+ break;
+ default:
+ iconPath = "avares://ToolsForm/Assets/img/UploadExperiment/其他文件.png";
+ break;
+ }
+
+ return new Image
+ {
+ Source = new Bitmap(AssetLoader.Open(new Uri(iconPath))),
+ Width = 16,
+ Height = 16,
+ Margin = new Thickness(0, 0, 5, 0)
+ };
+ }
+
+
private void StartLoadingAnimation()
{
LoadingImage1.IsVisible = true;
@@ -64,11 +203,16 @@ public partial class UploadExperimentWindow : Window
}
// 模拟加载完成的方法
- private void CompleteLoading()
+ private async void CompleteLoading()
{
+ await Task.Delay(2000);
// 停止旋转
_rotationTimer1.Stop();
+ await Task.Delay(2000);
_rotationTimer2.Stop();
+ LoadDirectoryContents("E:\\Eclipse Workspace\\Upa_Java", StackPanelWord);
+ //LoadDirectoryContents(AppDataManager.IdeModel.FolderPath, StackPanelWord);
+
LoadingImage1.IsVisible = false;
LoadingImage2.IsVisible = false;
CheckMarkImage1.IsVisible = true;
@@ -77,6 +221,6 @@ public partial class UploadExperimentWindow : Window
private void OnSubmitButtonClick(object sender, RoutedEventArgs e)
{
- CompleteLoading(); // 调用加载完成的方法
+ // 调用加载完成的方法
}
}
\ No newline at end of file
diff --git a/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.dll b/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.dll
index 0b2d157..de7a286 100644
Binary files a/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.dll and b/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.dll differ
diff --git a/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.exe b/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.exe
index 317bafc..ed0edf7 100644
Binary files a/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.exe and b/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.exe differ
diff --git a/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.pdb b/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.pdb
index 9604dc2..57ed044 100644
Binary files a/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.pdb and b/ToolsForm/ToolsForm/bin/Debug/net8.0/ToolsForm.pdb differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache
index 61dbeb9..3c33bba 100644
--- a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache
+++ b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache
@@ -1 +1 @@
-7e24e741ea2dd0806d7e3440db4d3901c6e672b65047dc68b6addf1ebaa3ebc0
+e76f595a14d7ab41574f9eac585b1a80a32339df1611162aada8377a10d2bcdd
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.dll b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.dll
index 0b2d157..de7a286 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.dll and b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.dll differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.pdb b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.pdb
index 9604dc2..57ed044 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.pdb and b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/ToolsForm.pdb differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/resources b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/resources
index c66873c..c3252cb 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/resources and b/ToolsForm/ToolsForm/obj/Debug/net8.0/Avalonia/resources differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfo.cs b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfo.cs
index ad8dded..c8bb637 100644
--- a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfo.cs
+++ b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfo.cs
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("ToolsForm")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0534e0b178b01e0ae22201599fa1dee00685cee8")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e3d4f719bf17b0d5405927cb05d18368d2f72acb")]
[assembly: System.Reflection.AssemblyProductAttribute("ToolsForm")]
[assembly: System.Reflection.AssemblyTitleAttribute("ToolsForm")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfoInputs.cache b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfoInputs.cache
index cb8b4e1..2db371a 100644
--- a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfoInputs.cache
+++ b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.AssemblyInfoInputs.cache
@@ -1 +1 @@
-0828ee78dd11a8725fca90aed806976a3445666c03da9a1f42634be9898a8ebd
+a834706ef20a0cc167aa5e69c7811af9b6b9b9b9c52dff7029ce0449d696aa14
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.dll b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.dll
index 95efded..b79cd7f 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.dll and b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.dll differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.pdb b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.pdb
index 7d53cbf..742c9e5 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.pdb and b/ToolsForm/ToolsForm/obj/Debug/net8.0/ToolsForm.pdb differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/apphost.exe b/ToolsForm/ToolsForm/obj/Debug/net8.0/apphost.exe
index 317bafc..ed0edf7 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/apphost.exe and b/ToolsForm/ToolsForm/obj/Debug/net8.0/apphost.exe differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/ref/ToolsForm.dll b/ToolsForm/ToolsForm/obj/Debug/net8.0/ref/ToolsForm.dll
index a218ddb..50c66d1 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/ref/ToolsForm.dll and b/ToolsForm/ToolsForm/obj/Debug/net8.0/ref/ToolsForm.dll differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/Avalonia/ToolsForm.dll b/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/Avalonia/ToolsForm.dll
index a218ddb..50c66d1 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/Avalonia/ToolsForm.dll and b/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/Avalonia/ToolsForm.dll differ
diff --git a/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/ToolsForm.dll b/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/ToolsForm.dll
index b1a8aa0..831a454 100644
Binary files a/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/ToolsForm.dll and b/ToolsForm/ToolsForm/obj/Debug/net8.0/refint/ToolsForm.dll differ