Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow adding FPGAs with JSON Files #10

Merged
merged 42 commits into from
Aug 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
d4d0b37
rework fpga support
HendrikMennen Aug 1, 2024
dda0ede
fix
HendrikMennen Aug 1, 2024
637b055
add live reload
HendrikMennen Aug 2, 2024
e202812
generic fpga gui progress
HendrikMennen Aug 2, 2024
5c62a99
pin gui element
HendrikMennen Aug 2, 2024
b5b9785
improve equalpaths method
HendrikMennen Aug 2, 2024
a704bbc
add theme switch shortcuts
HendrikMennen Aug 2, 2024
815aa77
add tooltip to errorlistview file
HendrikMennen Aug 3, 2024
dd68a4e
.
HendrikMennen Aug 3, 2024
afdb2b0
add zoomborder
HendrikMennen Aug 3, 2024
09f4962
fpga gui svg support
HendrikMennen Aug 3, 2024
1363ac4
add text gui element
HendrikMennen Aug 3, 2024
172a29a
.
HendrikMennen Aug 3, 2024
d61c884
.
HendrikMennen Aug 3, 2024
d4d4b89
.
HendrikMennen Aug 3, 2024
689c60c
add more gui elements
HendrikMennen Aug 4, 2024
6e8dae5
Merge remote-tracking branch 'origin/fpgarework' into fpgarework
HendrikMennen Aug 4, 2024
9bacf9a
streamline extension system
HendrikMennen Aug 4, 2024
d1ff14e
cruvi extension elements
HendrikMennen Aug 4, 2024
9688656
pixel perfect representation
HendrikMennen Aug 4, 2024
36d1bb7
imageview element
HendrikMennen Aug 4, 2024
2a8befd
json hardware guis rework
HendrikMennen Aug 4, 2024
b9cc0bd
custom zoom border for keyboard navigation
HendrikMennen Aug 4, 2024
7a6975c
improve zoomborder
HendrikMennen Aug 5, 2024
835ffa0
update metainfo
HendrikMennen Aug 5, 2024
69a34e0
Merge remote-tracking branch 'origin/fpgarework' into fpgarework
HendrikMennen Aug 5, 2024
d238f6c
progress
HendrikMennen Aug 6, 2024
87ad759
fix
HendrikMennen Aug 6, 2024
41d3270
fix
HendrikMennen Aug 6, 2024
f623b20
refactor
HendrikMennen Aug 6, 2024
17c825c
correctly handle dragdrop
HendrikMennen Aug 6, 2024
f22c027
fix
HendrikMennen Aug 6, 2024
3a7d2fe
CRUVI_LS and CRUVI_HS
HendrikMennen Aug 6, 2024
ac0feb3
fx
HendrikMennen Aug 6, 2024
50697d1
fix hideextensions
HendrikMennen Aug 6, 2024
76773b7
json camelcase
HendrikMennen Aug 7, 2024
5873b72
pinguielement label & autofit
HendrikMennen Aug 7, 2024
9ee188c
progress and fixes
HendrikMennen Aug 7, 2024
a12d403
pinarrays
HendrikMennen Aug 7, 2024
941e38e
menu font
HendrikMennen Aug 8, 2024
33ba629
hardware packages
HendrikMennen Aug 8, 2024
b3c4c97
.
HendrikMennen Aug 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 7 additions & 14 deletions OneWare.sln
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.OssCadSuiteIntegrat
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Hardware", "Hardware", "{337B01B1-20B1-4B5B-A3B0-21AEB0729131}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.TangNano9K", "src\OneWare.TangNano9K\OneWare.TangNano9K.csproj", "{EE4DBBEA-32E3-4B73-8345-4F1DD4403E23}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.IceBreaker", "src\OneWare.IceBreaker\OneWare.IceBreaker.csproj", "{18299609-F214-4C4A-9963-FD1BFA07983D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.Cyc5000", "src\OneWare.Cyc5000\OneWare.Cyc5000.csproj", "{D49DD06A-344A-4761-B765-E4ED295CEDA6}"
Expand All @@ -166,8 +164,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.Max1000", "src\OneW
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{53C7F88A-3B98-4AB4-992B-71C1F91F1BA7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.IasCameraExtension", "src\OneWare.IasCameraExtension\OneWare.IasCameraExtension.csproj", "{711BAA42-6B56-43E3-8474-E9377BCC102E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.Studio.Desktop.UnitTests", "tests\OneWare.Studio.Desktop.UnitTests\OneWare.Studio.Desktop.UnitTests.csproj", "{4503F91D-D8BE-4A9B-AE74-E9AEEC2F67A2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.Vcd.Parser.UnitTests", "tests\OneWare.Vcd.Parser.UnitTests\OneWare.Vcd.Parser.UnitTests.csproj", "{3174F07C-F96E-4695-B05D-CE91845CF292}"
Expand All @@ -178,6 +174,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.WaveFormViewer.Test
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.UniversalFpgaProjectSystem.Tests", "tests\OneWare.UniversalFpgaProjectSystem.Tests\OneWare.UniversalFpgaProjectSystem.Tests.csproj", "{484F3E48-EF14-4801-B896-41BDB67A54E6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.CruviAdapterExtensions", "src\OneWare.CruviAdapterExtensions\OneWare.CruviAdapterExtensions.csproj", "{01BC6288-6AD8-4D70-9360-F84601CCBA56}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -340,10 +338,6 @@ Global
{097B858B-7DE2-4328-857D-E19D6D05C53F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{097B858B-7DE2-4328-857D-E19D6D05C53F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{097B858B-7DE2-4328-857D-E19D6D05C53F}.Release|Any CPU.Build.0 = Release|Any CPU
{EE4DBBEA-32E3-4B73-8345-4F1DD4403E23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EE4DBBEA-32E3-4B73-8345-4F1DD4403E23}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE4DBBEA-32E3-4B73-8345-4F1DD4403E23}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE4DBBEA-32E3-4B73-8345-4F1DD4403E23}.Release|Any CPU.Build.0 = Release|Any CPU
{18299609-F214-4C4A-9963-FD1BFA07983D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18299609-F214-4C4A-9963-FD1BFA07983D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18299609-F214-4C4A-9963-FD1BFA07983D}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand All @@ -360,10 +354,6 @@ Global
{10B805C0-C354-439E-8C3E-6EAB7E5F7CA6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10B805C0-C354-439E-8C3E-6EAB7E5F7CA6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10B805C0-C354-439E-8C3E-6EAB7E5F7CA6}.Release|Any CPU.Build.0 = Release|Any CPU
{711BAA42-6B56-43E3-8474-E9377BCC102E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{711BAA42-6B56-43E3-8474-E9377BCC102E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{711BAA42-6B56-43E3-8474-E9377BCC102E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{711BAA42-6B56-43E3-8474-E9377BCC102E}.Release|Any CPU.Build.0 = Release|Any CPU
{4503F91D-D8BE-4A9B-AE74-E9AEEC2F67A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4503F91D-D8BE-4A9B-AE74-E9AEEC2F67A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4503F91D-D8BE-4A9B-AE74-E9AEEC2F67A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand All @@ -384,6 +374,10 @@ Global
{484F3E48-EF14-4801-B896-41BDB67A54E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{484F3E48-EF14-4801-B896-41BDB67A54E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{484F3E48-EF14-4801-B896-41BDB67A54E6}.Release|Any CPU.Build.0 = Release|Any CPU
{01BC6288-6AD8-4D70-9360-F84601CCBA56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{01BC6288-6AD8-4D70-9360-F84601CCBA56}.Debug|Any CPU.Build.0 = Debug|Any CPU
{01BC6288-6AD8-4D70-9360-F84601CCBA56}.Release|Any CPU.ActiveCfg = Release|Any CPU
{01BC6288-6AD8-4D70-9360-F84601CCBA56}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{F08B36E8-AB80-42CD-BD47-6B05E96DA390} = {0761690C-7DA0-4554-9F6B-211088412DCD}
Expand Down Expand Up @@ -432,17 +426,16 @@ Global
{C4281D9E-BB03-4186-BCF6-859CE0A23AFE} = {E1C53C3A-ADE2-469D-B0C6-54ADF37A9FBD}
{097B858B-7DE2-4328-857D-E19D6D05C53F} = {C4281D9E-BB03-4186-BCF6-859CE0A23AFE}
{337B01B1-20B1-4B5B-A3B0-21AEB0729131} = {E1C53C3A-ADE2-469D-B0C6-54ADF37A9FBD}
{EE4DBBEA-32E3-4B73-8345-4F1DD4403E23} = {337B01B1-20B1-4B5B-A3B0-21AEB0729131}
{18299609-F214-4C4A-9963-FD1BFA07983D} = {337B01B1-20B1-4B5B-A3B0-21AEB0729131}
{D49DD06A-344A-4761-B765-E4ED295CEDA6} = {337B01B1-20B1-4B5B-A3B0-21AEB0729131}
{6B407B1B-003B-47AF-9A19-C23469E8A55C} = {337B01B1-20B1-4B5B-A3B0-21AEB0729131}
{10B805C0-C354-439E-8C3E-6EAB7E5F7CA6} = {337B01B1-20B1-4B5B-A3B0-21AEB0729131}
{53C7F88A-3B98-4AB4-992B-71C1F91F1BA7} = {337B01B1-20B1-4B5B-A3B0-21AEB0729131}
{711BAA42-6B56-43E3-8474-E9377BCC102E} = {53C7F88A-3B98-4AB4-992B-71C1F91F1BA7}
{4503F91D-D8BE-4A9B-AE74-E9AEEC2F67A2} = {EB783E04-C3C8-45F8-B810-24798DAE2450}
{3174F07C-F96E-4695-B05D-CE91845CF292} = {EB783E04-C3C8-45F8-B810-24798DAE2450}
{8EF6E36F-C63A-4F2A-99CF-8F3AE2A5C946} = {EB783E04-C3C8-45F8-B810-24798DAE2450}
{AAC4D6FA-4F94-4616-93B3-3BB47E4A0BB1} = {EB783E04-C3C8-45F8-B810-24798DAE2450}
{484F3E48-EF14-4801-B896-41BDB67A54E6} = {EB783E04-C3C8-45F8-B810-24798DAE2450}
{01BC6288-6AD8-4D70-9360-F84601CCBA56} = {53C7F88A-3B98-4AB4-992B-71C1F91F1BA7}
EndGlobalSection
EndGlobal
1 change: 1 addition & 0 deletions OneWare.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=Avalonia/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=cruvi/@EntryIndexedValue">True</s:Boolean>

<s:Boolean x:Key="/Default/UserDictionary/Words/=dockable/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Foldings/@EntryIndexedValue">True</s:Boolean>
Expand Down
5 changes: 3 additions & 2 deletions build/props/Base.props
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<StudioVersion>0.19.2.0</StudioVersion>
<CoreVersion>0.21.0.0</CoreVersion>
<StudioVersion>0.20.0.0</StudioVersion>
<CoreVersion>0.22.0.0</CoreVersion>
<UniversalFpgaProjectSystemVersion>0.30.0.0</UniversalFpgaProjectSystemVersion>
<EssentialsVersion>0.6.0</EssentialsVersion>
<Version>$(CoreVersion)</Version>
<Authors>Hendrik Mennen</Authors>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ private void HandleKeyDown(object? sender, KeyEventArgs args)
args.Handled = true;
return;
}

;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<Style Selector="controls|AdvancedWindow.PlatformLinux Border#WindowBorder">
<Setter Property="BorderThickness" Value="1" />
<Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderLowBrush}" />
<Setter Property="CornerRadius" Value="3" />
</Style>
</controls:FlexibleWindow.Styles>
<Interaction.Behaviors>
Expand All @@ -38,7 +39,7 @@
Command="{Binding ChangeShortcutCommand}"
CommandParameter="{Binding #CommandManagerViewView}" />
</Interaction.Behaviors>
<Border Name="WindowBorder">
<Border Name="WindowBorder" ClipToBounds="True">
<TabControl ItemsSource="{Binding Tabs}" SelectedItem="{Binding SelectedTab}" Padding="0">
<TabControl.ItemTemplate>
<DataTemplate DataType="tabs:CommandManagerTabBase">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ protected override void AttachedToHost()
{
base.AttachedToHost();
if (Host is { Owner: Window ownerWindow })
Host.Position = new PixelPoint(Host.Position.X, ownerWindow.Position.Y + 100);
Host.Position = new PixelPoint(Host.Position.X, ownerWindow.Position.Y + 150);
}
}
13 changes: 12 additions & 1 deletion src/OneWare.Core/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
using OneWare.Core.Views.Windows;
using OneWare.Debugger;
using OneWare.ErrorList;
using OneWare.Essentials.Commands;
using OneWare.Essentials.Helpers;
using OneWare.Essentials.LanguageService;
using OneWare.Essentials.Services;
Expand Down Expand Up @@ -251,6 +252,16 @@ protected override AvaloniaObject CreateShell()
IconObservable = Current!.GetResourceObservable("VsImageLib.SaveAll16X")
});

var applicationCommandService = Container.Resolve<IApplicationCommandService>();

applicationCommandService.RegisterCommand(new SimpleApplicationCommand("Active light theme",
() => settingsService.SetSettingValue("General_SelectedTheme", "Light"),
() => settingsService.GetSettingValue<string>("General_SelectedTheme") != "Light"));

applicationCommandService.RegisterCommand(new SimpleApplicationCommand("Active dark theme",
() => settingsService.SetSettingValue("General_SelectedTheme", "Dark"),
() => settingsService.GetSettingValue<string>("General_SelectedTheme") != "Dark"));

//AvaloniaEdit Hyperlink support
VisualLineLinkText.OpenUriEvent.AddClassHandler<Window>((window, args) =>
{
Expand Down Expand Up @@ -305,7 +316,7 @@ public override void OnFrameworkInitializationCompleted()
MaxItems = 3
};
}

Container.Resolve<IApplicationCommandService>().LoadKeyConfiguration();

Container.Resolve<ISettingsService>().GetSettingObservable<string>("General_SelectedTheme").Subscribe(x =>
Expand Down
19 changes: 18 additions & 1 deletion src/OneWare.Core/Styles/Accents/Base.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@

<SolidColorBrush x:Key="SelectionBrush">#606e6e6e</SolidColorBrush>
<SolidColorBrush x:Key="SearchResultBrush">#30808080</SolidColorBrush>

<ResourceDictionary.ThemeDictionaries>

<ResourceDictionary x:Key="Default">
Expand Down Expand Up @@ -163,9 +163,18 @@
<SolidColorBrush x:Key="NotificationCardBackgroundBrush" Opacity="0.95" Color="#444444" />
<SolidColorBrush x:Key="NotificationCardInformationBackgroundBrush" Opacity="0.95" Color="{StaticResource ThemeBackgroundColor}" />

<DrawingBrush x:Key="CheckerBoardBrush16" TileMode="Tile" DestinationRect="0 0 16 16" Opacity="0.2">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Geometry="M0,1 L2,1 2,2, 1,2 1,0 0,0Z" Brush="{DynamicResource ThemeBorderLowColor}"/>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>

<ResourceDictionary.MergedDictionaries>
<MergeResourceInclude Source="avares://OneWare.Core/Styles/Icons.axaml" />
</ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

<ResourceDictionary x:Key="Light">
Expand Down Expand Up @@ -216,6 +225,14 @@
<SolidColorBrush x:Key="NotificationCardBackgroundBrush" Opacity="0.95" Color="#FFFFFF" />
<SolidColorBrush x:Key="NotificationCardInformationBackgroundBrush" Opacity="0.95" Color="{StaticResource ThemeBackgroundColor}" />

<DrawingBrush x:Key="CheckerBoardBrush16" TileMode="Tile" DestinationRect="0 0 16 16" Opacity="0.2">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Geometry="M0,1 L2,1 2,2, 1,2 1,0 0,0Z" Brush="{DynamicResource ThemeBorderLowColor}"/>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>

<ResourceDictionary.MergedDictionaries>
<MergeResourceInclude Source="avares://OneWare.Core/Styles/Icons.axaml" />
</ResourceDictionary.MergedDictionaries>
Expand Down
8 changes: 4 additions & 4 deletions src/OneWare.Core/Styles/Menu.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>

<Style Selector="ContextMenu">
<Style Selector="ContextMenu, MenuFlyoutPresenter">
<Setter Property="CornerRadius" Value="3" />
<Setter Property="Padding" Value="2" />
</Style>
Expand All @@ -58,7 +58,7 @@
<Setter Property="VerticalScrollBarVisibility" Value="Disabled" />
</Style>

<Style Selector="Menu > MenuItem Border, ContextMenu > MenuItem Border">
<Style Selector="Menu > MenuItem Border, ContextMenu > MenuItem Border, MenuFlyoutPresenter > MenuItem Border">
<Setter Property="Padding" Value="0" />
<Setter Property="CornerRadius" Value="3" />
</Style>
Expand All @@ -83,7 +83,7 @@
</Setter>
</Style>

<Style Selector="Menu.BindMenu > MenuItem > MenuItem, ContextMenu.BindMenu MenuItem"
<Style Selector="Menu.BindMenu > MenuItem > MenuItem, ContextMenu.BindMenu MenuItem, MenuFlyoutPresenter.BindMenu > MenuItem"
x:DataType="viewModels:MenuItemViewModel">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
<Setter Property="Header" Value="{Binding Header}" />
Expand All @@ -99,5 +99,5 @@
</Setter.Value>
</Setter>
</Style>

</Styles>
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"pins": [
{
"name": "1",
"interfacePin": "LS_1"
},
{
"name": "2",
"interfacePin": "LS_2"
},
{
"name": "3",
"interfacePin": "LS_3"
},
{
"name": "4",
"interfacePin": "LS_4"
},
{
"name": "5",
"interfacePin": "LS_5"
},
{
"name": "6",
"interfacePin": "LS_6"
},
{
"name": "7",
"interfacePin": "LS_7"
},
{
"name": "8",
"interfacePin": "LS_8"
}
],
"interfaces": [
{
"name": "PMOD_1",
"connector": "PMOD",
"pins": [
{
"name": "1",
"pin": "1"
},
{
"name": "2",
"pin": "2"
},
{
"name": "3",
"pin": "3"
},
{
"name": "4",
"pin": "4"
},
{
"name": "5",
"pin": "5"
},
{
"name": "6",
"pin": "6"
},
{
"name": "7",
"pin": "7"
},
{
"name": "8",
"pin": "8"
}
]
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"width": 88,
"height": 152,
"offset": "0 -80 0 0",
"elements": [
{
"type": "rect",
"x": 0,
"y": 20,
"width": 88,
"height": 132,
"color": "#096845",
"cornerRadius": "3",
"boxShadow": "0 0 5 5 #77000000"
},
{
"type": "pmod",
"x": 14,
"y": 0,
"bind": "PMOD_1"
},
{
"type": "rect",
"x": 0,
"y": 80,
"width": 88,
"height": 50,
"textColor": "white",
"text": "PMOD\n↑\nCRUVI_LS"
}
]
}
Loading
Loading