-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainWindow.xaml
169 lines (140 loc) · 9.68 KB
/
MainWindow.xaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<Window x:Class="IMAGOPrinterProgrammerTool.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="STM32 flash loader" Height="600" Width="800"
Background="#4D4D4D">
<Window.Resources>
<!-- Rounded Corners Style for TextBox -->
<Style TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="10" Padding="5">
<ScrollViewer x:Name="PART_ContentHost" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Padding" Value="5"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Black"/>
<Setter Property="BorderBrush" Value="Gray"/>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Logo -->
<TextBlock Text="STM32 flash loader" FontSize="36" FontWeight="Bold" HorizontalAlignment="Center" Margin="10"/>
<DockPanel Grid.Row="1" LastChildFill="True">
<!-- Left Panel -->
<TabControl Background="#4D4D4D" Margin="10,20,10,20">
<TabItem Header="Ethernet">
<StackPanel Width="200" Margin="10">
<!-- IP addr -->
<Label Content="IP Address" Foreground="White"/>
<TextBox x:Name="textBoxIpAddr" Margin="0,0,0,0" Background="#8D8D8D" Text="192.168.0.81" />
<!-- TCPIP PORT -->
<Label Content="TCP/IP Port" Foreground="White"/>
<TextBox x:Name="textBoxTcpIpPort" Margin="0,0,0,20" Background="#8D8D8D" Text="5000"/>
<!-- Connect Button -->
<Button x:Name="buttonConnectEth" Content="Connect" Height="30" Click="ButtonConnect_ClickEth"/>
<!-- Upload Button -->
<Button x:Name="buttonUploadEth" Content="UPLOAD" Height="30" Width="100" Margin="0,30,0,10" Click="ButtonUpload_ClickEth"/>
<!-- Progress Bar -->
<ProgressBar x:Name="progressBarUploadEth" Height="30" Margin="0,0,0,10"/>
<!-- Status Label -->
<TextBlock x:Name="textBlockStatusEth" Height="30" Margin="0,0,0,10" Foreground="White"/>
</StackPanel>
</TabItem>
<TabItem Header="Serial">
<StackPanel Width="200" Margin="10">
<!-- COM Port Selection -->
<ComboBox x:Name="comboBoxCOMPorts" Height="30" Margin="0,30,0,10" />
<Button x:Name="buttonScan" Content="SCAN" Height="30" Margin="0,0,0,10" Click="ButtonScan_Click"/>
<!-- UART Settings -->
<ComboBox x:Name="comboBoxBaudRate" Height="30" Margin="0,30,0,10">
<ComboBoxItem Content="9600"/>
<ComboBoxItem Content="115200"/>
</ComboBox>
<ComboBox x:Name="comboBoxParity" Height="30" Margin="0,0,0,10">
<ComboBoxItem Content="None"/>
<ComboBoxItem Content="Even"/>
</ComboBox>
<ComboBox x:Name="comboBoxDataBits" Height="30" Margin="0,0,0,10">
<ComboBoxItem Content="8"/>
</ComboBox>
<!-- Connect Button -->
<Button x:Name="buttonConnect" Content="Connect" Height="30" Click="ButtonConnect_Click"/>
<!-- Upload Button -->
<Button x:Name="buttonUpload" Content="UPLOAD" Height="30" Width="100" Margin="0,30,0,10" Click="ButtonUpload_Click"/>
<!-- Progress Bar -->
<ProgressBar x:Name="progressBarUpload" Height="30" Margin="0,0,0,10"/>
<!-- Status Label -->
<TextBlock x:Name="textBlockStatus" Height="30" Margin="0,0,0,10" Foreground="White"/>
</StackPanel>
</TabItem>
</TabControl>
<!-- Main Content Area -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Clear Button -->
<Button x:Name="buttonClearData" Content="CLEAR" Height="30" Width="100" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0" Click="ButtonClearData_Click" Grid.ColumnSpan="2"/>
<!-- Load Binary File Button -->
<Button x:Name="buttonLoadFile" Content="Load Binary File" Height="30" Width="150" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,120,0" Click="ButtonLoadFile_Click" Grid.ColumnSpan="2"/>
<!-- Disconnect Button -->
<Button x:Name="buttonDisconnect" Content="Disconnect" Height="30" Width="100" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,280,0" Click="ButtonDisconnect_Click" Visibility="Collapsed" Grid.ColumnSpan="2"/>
<!-- Received Data Display - ASCII -->
<TextBox x:Name="textBoxReceivedDataASCII" Background="#8D8D8D" Grid.Row="2" Grid.Column="0" Margin="10" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" IsReadOnly="True" AcceptsReturn="True" Height="150" TextWrapping="Wrap"/>
<!-- Received Data Display - Hex -->
<TextBox x:Name="textBoxReceivedDataHex" Background="#8D8D8D" Grid.Row="2" Grid.Column="1" Margin="10" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" IsReadOnly="True" AcceptsReturn="True" Height="150" TextWrapping="Wrap"/>
<!-- Hex Viewer -->
<DataGrid x:Name="hexViewerDataGrid" Grid.Row="1" Grid.ColumnSpan="2" Margin="10" AutoGenerateColumns="False" HeadersVisibility="Column"
Background="#8D8D8D" Foreground="#8D8D8D" CanUserAddRows="False" IsReadOnly="True" FontFamily="Consolas" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<DataGrid.Columns >
<!-- Address Column -->
<DataGridTextColumn Header="Address" Binding="{Binding Address}" Width="80"/>
<!-- Hex Columns (0 to F) -->
<DataGridTextColumn Header="00" Binding="{Binding Hex00}" Width="40"/>
<DataGridTextColumn Header="01" Binding="{Binding Hex01}" Width="40"/>
<DataGridTextColumn Header="02" Binding="{Binding Hex02}" Width="40"/>
<DataGridTextColumn Header="03" Binding="{Binding Hex03}" Width="40"/>
<DataGridTextColumn Header="04" Binding="{Binding Hex04}" Width="40"/>
<DataGridTextColumn Header="05" Binding="{Binding Hex05}" Width="40"/>
<DataGridTextColumn Header="06" Binding="{Binding Hex06}" Width="40"/>
<DataGridTextColumn Header="07" Binding="{Binding Hex07}" Width="40"/>
<DataGridTextColumn Header="08" Binding="{Binding Hex08}" Width="40"/>
<DataGridTextColumn Header="09" Binding="{Binding Hex09}" Width="40"/>
<DataGridTextColumn Header="0A" Binding="{Binding Hex0A}" Width="40"/>
<DataGridTextColumn Header="0B" Binding="{Binding Hex0B}" Width="40"/>
<DataGridTextColumn Header="0C" Binding="{Binding Hex0C}" Width="40"/>
<DataGridTextColumn Header="0D" Binding="{Binding Hex0D}" Width="40"/>
<DataGridTextColumn Header="0E" Binding="{Binding Hex0E}" Width="40"/>
<DataGridTextColumn Header="0F" Binding="{Binding Hex0F}" Width="40"/>
<!-- ASCII Dump Column -->
<DataGridTextColumn Header="DUMP" Binding="{Binding AsciiDump}" Width="160"/>
</DataGrid.Columns>
</DataGrid>
<!-- Send Data -->
<Button x:Name="buttonSendData" Grid.Row="4" Grid.ColumnSpan="2" Content="SEND" Height="45" Width="100" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,10,20" Click="ButtonSendData_Click"/>
<!-- Data to send input -->
<TextBox x:Name="textBoxSendData" Background="#8D8D8D" Grid.Row="4" Grid.ColumnSpan="2" Height="45" Margin="10,0,120,20" VerticalAlignment="Center" />
</Grid>
</DockPanel>
</Grid>
</Window>