DebugView.axaml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. <UserControl
  2. x:Class="ShakerApp.Views.DebugView"
  3. xmlns="https://github.com/avaloniaui"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="using:ShakerApp"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. xmlns:suki="https://github.com/kikipoulet/SukiUI"
  9. xmlns:vm="using:ShakerApp.ViewModels"
  10. d:DesignHeight="450"
  11. d:DesignWidth="800"
  12. x:DataType="vm:ShakerControlViewModel"
  13. DataContext="{Binding Source={x:Static vm:ShakerControlViewModel.Instance}}"
  14. mc:Ignorable="d">
  15. <TabControl>
  16. <TabItem Header="{DynamicResource Displacement}">
  17. <suki:GlassCard HorizontalAlignment="Center" VerticalAlignment="Center">
  18. <Grid Width="420" Height="140">
  19. <Grid.ColumnDefinitions>
  20. <ColumnDefinition />
  21. <ColumnDefinition />
  22. </Grid.ColumnDefinitions>
  23. <Grid.RowDefinitions>
  24. <RowDefinition />
  25. <RowDefinition />
  26. </Grid.RowDefinitions>
  27. <StackPanel
  28. Grid.Row="0"
  29. Grid.Column="0"
  30. HorizontalAlignment="Left"
  31. VerticalAlignment="Center"
  32. Orientation="Vertical">
  33. <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementP}" />
  34. <NumericUpDown
  35. Width="120"
  36. Margin="0,0,0,0"
  37. Value="{Binding DisplacementP}" />
  38. </StackPanel>
  39. <StackPanel
  40. Grid.Row="0"
  41. Grid.Column="1"
  42. HorizontalAlignment="Left"
  43. VerticalAlignment="Center"
  44. Orientation="Vertical">
  45. <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementI}" />
  46. <NumericUpDown
  47. Width="120"
  48. Margin="0,0,0,0"
  49. Value="{Binding DisplacementI}" />
  50. </StackPanel>
  51. <StackPanel
  52. Grid.Row="1"
  53. Grid.Column="0"
  54. HorizontalAlignment="Left"
  55. VerticalAlignment="Center"
  56. Orientation="Vertical">
  57. <TextBlock VerticalAlignment="Center" Text="{DynamicResource MaxDisplacementIntegral}" />
  58. <NumericUpDown
  59. Width="120"
  60. Margin="0,0,0,0"
  61. Value="{Binding MaxDisplacementIntegral}" />
  62. </StackPanel>
  63. </Grid>
  64. </suki:GlassCard>
  65. </TabItem>
  66. <TabItem Header="{DynamicResource ServoValveConfig}">
  67. <suki:GlassCard HorizontalAlignment="Center" VerticalAlignment="Center">
  68. <Grid Width="520" Height="340">
  69. <Grid.ColumnDefinitions>
  70. <ColumnDefinition />
  71. <ColumnDefinition />
  72. </Grid.ColumnDefinitions>
  73. <Grid.RowDefinitions>
  74. <RowDefinition Height="66" />
  75. <RowDefinition Height="*" />
  76. </Grid.RowDefinitions>
  77. <StackPanel
  78. Grid.Column="1"
  79. HorizontalAlignment="Left"
  80. VerticalAlignment="Center"
  81. Orientation="Vertical">
  82. <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisOpenLoop}" />
  83. <ToggleSwitch IsChecked="{Binding DisplacementOpenLoop}" />
  84. </StackPanel>
  85. <StackPanel Grid.Column="0">
  86. <TextBlock Text="{DynamicResource ServoValvePolarity}" />
  87. <ComboBox
  88. Width="120"
  89. HorizontalAlignment="Left"
  90. VerticalAlignment="Center"
  91. ItemsSource="{Binding ValvePolarity, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
  92. SelectedValue="{Binding Path=ValvePolarity}"
  93. SelectedValueBinding="{Binding Value}">
  94. <ComboBox.ItemTemplate>
  95. <DataTemplate>
  96. <TextBlock Text="{local:ResourceBinding Key}" />
  97. </DataTemplate>
  98. </ComboBox.ItemTemplate>
  99. </ComboBox>
  100. </StackPanel>
  101. <StackPanel
  102. Grid.Row="1"
  103. Grid.ColumnSpan="2"
  104. Margin="0,0,10,0"
  105. Orientation="Vertical">
  106. <Grid Height="{StaticResource ItemHeight}" Background="LightGray">
  107. <Grid.ColumnDefinitions>
  108. <ColumnDefinition Width="66" />
  109. <ColumnDefinition Width="*" />
  110. <ColumnDefinition Width="*" />
  111. </Grid.ColumnDefinitions>
  112. <TextBlock
  113. HorizontalAlignment="Center"
  114. VerticalAlignment="Center"
  115. Text="{DynamicResource ServoValveIndex}" />
  116. <TextBlock
  117. Grid.Column="1"
  118. HorizontalAlignment="Center"
  119. VerticalAlignment="Center">
  120. <Run Text="{DynamicResource ServoValveOffset}" />
  121. <Run Text="(V)" />
  122. </TextBlock>
  123. <TextBlock
  124. Grid.Column="2"
  125. HorizontalAlignment="Center"
  126. VerticalAlignment="Center">
  127. <Run Text="{DynamicResource OpenLoopVoltage}" />
  128. <Run Text="(V)" />
  129. </TextBlock>
  130. </Grid>
  131. <ItemsControl ItemsSource="{Binding ValveConfig}">
  132. <ItemsControl.ItemTemplate>
  133. <DataTemplate>
  134. <Grid Height="{StaticResource ItemHeight}" Margin="0,4,0,4">
  135. <Grid.ColumnDefinitions>
  136. <ColumnDefinition Width="66" />
  137. <ColumnDefinition Width="*" />
  138. <ColumnDefinition Width="*" />
  139. </Grid.ColumnDefinitions>
  140. <TextBlock
  141. HorizontalAlignment="Center"
  142. VerticalAlignment="Center"
  143. Text="{Binding Index}" />
  144. <NumericUpDown
  145. Grid.Column="1"
  146. Width="120"
  147. HorizontalAlignment="Center"
  148. VerticalAlignment="Center"
  149. Value="{Binding Value.Bias}" />
  150. <NumericUpDown
  151. Grid.Column="2"
  152. Width="120"
  153. HorizontalAlignment="Center"
  154. VerticalAlignment="Center"
  155. IsEnabled="{Binding $parent[ItemsControl].DataContext.DisplacementOpenLoop}"
  156. Value="{Binding Value.OpenLoopDrive}" />
  157. </Grid>
  158. </DataTemplate>
  159. </ItemsControl.ItemTemplate>
  160. </ItemsControl>
  161. </StackPanel>
  162. </Grid>
  163. </suki:GlassCard>
  164. </TabItem>
  165. <TabItem Header="{DynamicResource Other}">
  166. <Grid>
  167. <Grid.ColumnDefinitions>
  168. <ColumnDefinition />
  169. <ColumnDefinition />
  170. </Grid.ColumnDefinitions>
  171. <Grid.RowDefinitions>
  172. <RowDefinition />
  173. <RowDefinition />
  174. </Grid.RowDefinitions>
  175. <suki:GlassCard
  176. Grid.Column="1"
  177. Width="280"
  178. Height="160"
  179. VerticalAlignment="Top">
  180. <suki:GroupBox Header="{DynamicResource DebugConfig}">
  181. <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
  182. <TextBlock
  183. HorizontalAlignment="Center"
  184. VerticalAlignment="Center"
  185. Text="{DynamicResource SelfCloseLoop}" />
  186. <ToggleSwitch IsChecked="{Binding SelfLoop}" />
  187. </StackPanel>
  188. </suki:GroupBox>
  189. </suki:GlassCard>
  190. <suki:GlassCard
  191. Grid.Row="0"
  192. Width="280"
  193. Height="180"
  194. VerticalAlignment="Top">
  195. <suki:GroupBox Header="{DynamicResource FlutterConfig}">
  196. <StackPanel>
  197. <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
  198. <TextBlock
  199. HorizontalAlignment="Center"
  200. VerticalAlignment="Center"
  201. Text="{DynamicResource FlutterFrequency}" />
  202. <NumericUpDown
  203. Width="120"
  204. Margin="4,0,0,0"
  205. Increment="0.01"
  206. Minimum="10"
  207. Value="{Binding FlutterFrequency}" />
  208. <TextBlock
  209. HorizontalAlignment="Center"
  210. VerticalAlignment="Center"
  211. Text="Hz" />
  212. </StackPanel>
  213. <StackPanel
  214. Margin="0,10,0,0"
  215. VerticalAlignment="Top"
  216. Orientation="Horizontal">
  217. <TextBlock
  218. HorizontalAlignment="Center"
  219. VerticalAlignment="Center"
  220. Text="{DynamicResource FlutterAmpt}" />
  221. <NumericUpDown
  222. Width="120"
  223. Margin="4,0,0,0"
  224. Increment="0.01"
  225. Minimum="0.01"
  226. Value="{Binding FlutterAmpt}" />
  227. <TextBlock
  228. HorizontalAlignment="Center"
  229. VerticalAlignment="Center"
  230. Text="mm" />
  231. </StackPanel>
  232. </StackPanel>
  233. </suki:GroupBox>
  234. </suki:GlassCard>
  235. </Grid>
  236. </TabItem>
  237. <TabItem Header="{DynamicResource SweepControl}">
  238. <Grid>
  239. <Grid.RowDefinitions>
  240. <RowDefinition Height="*" />
  241. <RowDefinition Height="56" />
  242. </Grid.RowDefinitions>
  243. <suki:GlassCard Width="900">
  244. <StackPanel Width="820" Orientation="Vertical">
  245. <Grid Height="{StaticResource ItemHeight}" Background="LightGray">
  246. <Grid.ColumnDefinitions>
  247. <ColumnDefinition Width="36" />
  248. <ColumnDefinition />
  249. <ColumnDefinition />
  250. <ColumnDefinition />
  251. <ColumnDefinition />
  252. <ColumnDefinition />
  253. </Grid.ColumnDefinitions>
  254. <TextBlock
  255. HorizontalAlignment="Center"
  256. VerticalAlignment="Center"
  257. Text="{DynamicResource ServoValveIndex}" />
  258. <TextBlock
  259. Grid.Column="1"
  260. HorizontalAlignment="Center"
  261. VerticalAlignment="Center">
  262. <Run Text="{DynamicResource Frequency}" />
  263. <Run Text="(Hz)" />
  264. </TextBlock>
  265. <TextBlock
  266. Grid.Column="2"
  267. HorizontalAlignment="Center"
  268. VerticalAlignment="Center"
  269. Text="{DynamicResource UpDateInvert}" />
  270. <TextBlock
  271. Grid.Column="3"
  272. HorizontalAlignment="Center"
  273. VerticalAlignment="Center"
  274. Text="{DynamicResource ExponentialCoefficients}" />
  275. <TextBlock
  276. Grid.Column="4"
  277. HorizontalAlignment="Center"
  278. VerticalAlignment="Center"
  279. Text="{DynamicResource CompressionRate}" />
  280. <TextBlock
  281. Grid.Column="5"
  282. HorizontalAlignment="Center"
  283. VerticalAlignment="Center"
  284. Text="{DynamicResource AdjustMagnitude}" />
  285. </Grid>
  286. <ScrollViewer Height="320">
  287. <ItemsControl ItemsSource="{Binding ControlItems}">
  288. <ItemsControl.ItemTemplate>
  289. <DataTemplate>
  290. <Grid Height="{StaticResource ItemHeight}" Margin="0,4,0,4">
  291. <Grid.ColumnDefinitions>
  292. <ColumnDefinition Width="36" />
  293. <ColumnDefinition />
  294. <ColumnDefinition />
  295. <ColumnDefinition />
  296. <ColumnDefinition />
  297. <ColumnDefinition />
  298. </Grid.ColumnDefinitions>
  299. <TextBlock
  300. HorizontalAlignment="Center"
  301. VerticalAlignment="Center"
  302. Text="{Binding Index}" />
  303. <NumericUpDown
  304. Grid.Column="1"
  305. Width="120"
  306. HorizontalAlignment="Center"
  307. VerticalAlignment="Center"
  308. Value="{Binding Value.Frequency}" />
  309. <NumericUpDown
  310. Grid.Column="2"
  311. Width="120"
  312. HorizontalAlignment="Center"
  313. VerticalAlignment="Center"
  314. Increment="1"
  315. Minimum="1"
  316. Value="{Binding Value.UpDateInvert}" />
  317. <NumericUpDown
  318. Grid.Column="3"
  319. Width="120"
  320. HorizontalAlignment="Center"
  321. VerticalAlignment="Center"
  322. Increment="0.01"
  323. Maximum="2"
  324. Minimum="0.01"
  325. Value="{Binding Value.ExponentialCoefficients}" />
  326. <NumericUpDown
  327. Grid.Column="4"
  328. Width="120"
  329. HorizontalAlignment="Center"
  330. VerticalAlignment="Center"
  331. Increment="1"
  332. Minimum="1"
  333. Value="{Binding Value.CompressionRate}" />
  334. <NumericUpDown
  335. Grid.Column="5"
  336. Width="120"
  337. HorizontalAlignment="Center"
  338. VerticalAlignment="Center"
  339. Increment="0.1"
  340. Maximum="2"
  341. Minimum="0.1"
  342. Value="{Binding Value.AdjustMagnitude}" />
  343. </Grid>
  344. </DataTemplate>
  345. </ItemsControl.ItemTemplate>
  346. </ItemsControl>
  347. </ScrollViewer>
  348. </StackPanel>
  349. </suki:GlassCard>
  350. <StackPanel
  351. Grid.Row="1"
  352. Height="{StaticResource TabItemHeight}"
  353. HorizontalAlignment="Center"
  354. VerticalAlignment="Center"
  355. Orientation="Horizontal">
  356. <Button
  357. Width="120"
  358. Command="{Binding AddCommand}"
  359. Content="{DynamicResource SweepControlAdd}"
  360. IsEnabled="{Binding AddEnabled}" />
  361. <Button
  362. Width="120"
  363. Margin="40,0,0,0"
  364. Command="{Binding DeleteLastCommand}"
  365. Content="{DynamicResource SweepControlDelete}"
  366. IsEnabled="{Binding RemoveEnabled}" />
  367. <Button
  368. Width="120"
  369. Margin="40,0,0,0"
  370. Command="{Binding RefreshCommand}"
  371. Content="{DynamicResource SweepControlRefresh}"
  372. IsEnabled="{Binding RemoveEnabled}" />
  373. </StackPanel>
  374. </Grid>
  375. </TabItem>
  376. </TabControl>
  377. </UserControl>