ImageMenu.axaml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. <customControls:AnimatedMenu
  2. IsOpen="{CompiledBinding MainWindow.IsImageMenuVisible.Value}"
  3. x:Class="PicView.Avalonia.Views.UC.Menus.ImageMenu"
  4. x:DataType="viewModels:MainViewModel"
  5. xmlns="https://github.com/avaloniaui"
  6. xmlns:customControls="clr-namespace:PicView.Avalonia.CustomControls"
  7. xmlns:viewModels="clr-namespace:PicView.Avalonia.ViewModels"
  8. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  9. <Design.DataContext>
  10. <viewModels:MainViewModel />
  11. </Design.DataContext>
  12. <customControls:AnimatedMenu.Resources>
  13. <SolidColorBrush Color="{DynamicResource MainTextColor}" x:Key="ResizeBrush" />
  14. <SolidColorBrush Color="{DynamicResource MainTextColor}" x:Key="SideBrush" />
  15. <SolidColorBrush Color="{DynamicResource MainTextColor}" x:Key="SlideShowBrush" />
  16. </customControls:AnimatedMenu.Resources>
  17. <StackPanel>
  18. <StackPanel.Styles>
  19. <Styles>
  20. <Style Selector="TextBlock.btnTxt">
  21. <Setter Property="MaxWidth" Value="137" />
  22. <Setter Property="VerticalAlignment" Value="Center" />
  23. <Setter Property="Foreground" Value="{DynamicResource MainTextColor}" />
  24. </Style>
  25. </Styles>
  26. </StackPanel.Styles>
  27. <Border
  28. Background="{DynamicResource MenuBackgroundColor}"
  29. BorderBrush="{DynamicResource OuterBorderColor}"
  30. BorderThickness="1"
  31. CornerRadius="8"
  32. Effect="{DynamicResource MenuShadowButtonBorder}">
  33. <Canvas Height="208" Width="315">
  34. <Border
  35. Background="{DynamicResource SecondaryBackgroundColor}"
  36. BorderBrush="{DynamicResource OuterBorderColor}"
  37. BorderThickness="0,0,0,1"
  38. CornerRadius="8,8,0,0"
  39. Height="47"
  40. Width="315"
  41. x:Name="TopBorder" />
  42. <customControls:TextIconButton
  43. Background="Transparent"
  44. Classes="altHover"
  45. Command="{CompiledBinding Window.ShowImageInfoWindow}"
  46. CornerRadius="8,0,0,0"
  47. Data="{StaticResource ImageInfoGeometry}"
  48. Foreground="{DynamicResource MainTextColor}"
  49. Height="46"
  50. IconHeight="17"
  51. IconMargin="15,0,2,0"
  52. IconWidth="17"
  53. Text="{CompiledBinding Translation.ImageInfo.Value,
  54. Mode=OneWay}"
  55. TextMargin="10,0,6,0"
  56. TextMaxWidth="200"
  57. Width="225"
  58. x:Name="ImageInfoButton" />
  59. <customControls:IconButton
  60. Background="Transparent"
  61. BorderBrush="{DynamicResource MainBorderColor}"
  62. BorderThickness="1,0,1,0"
  63. Canvas.Left="225"
  64. Canvas.Top="-1"
  65. Classes="hover"
  66. ClickMode="Release"
  67. Command="{CompiledBinding Tools.ShowSearchCommand}"
  68. Data="{StaticResource SearchGeometry}"
  69. Foreground="{DynamicResource MainTextColor}"
  70. Height="47"
  71. IconHeight="16"
  72. IconWidth="16"
  73. IsEnabled="{CompiledBinding PicViewer.FileInfo.Value,
  74. Converter={x:Static ObjectConverters.IsNotNull}}"
  75. ToolTip.Tip="{CompiledBinding Translation.Search.Value,
  76. Mode=OneWay}"
  77. Width="45" />
  78. <customControls:IconButton
  79. Background="Transparent"
  80. Canvas.Left="270"
  81. Canvas.Top="-1"
  82. Classes="hover"
  83. ClickMode="Release"
  84. Command="{CompiledBinding MainWindow.CloseMenuCommand}"
  85. CornerRadius="0,8,0,0"
  86. Data="{StaticResource CloseGeometry}"
  87. Foreground="{DynamicResource MainTextColor}"
  88. Height="47"
  89. IconHeight="10"
  90. IconWidth="10"
  91. ToolTip.Tip="{CompiledBinding Translation.Close.Value,
  92. Mode=OneWay}"
  93. Width="45" />
  94. <Button
  95. Background="{DynamicResource MenuButtonColor}"
  96. Canvas.Left="7"
  97. Canvas.Top="53"
  98. Classes="ButtonBorder altHover"
  99. Command="{CompiledBinding Window.ShowSingleImageResizeWindow}"
  100. Height="46"
  101. IsEnabled="{CompiledBinding PicViewer.ShouldCropBeEnabled.Value,
  102. Mode=OneWay}"
  103. ToolTip.Tip="{CompiledBinding Translation.ResizeImage.Value,
  104. Mode=OneWay}"
  105. x:Name="ResizeImageButton">
  106. <StackPanel Orientation="Horizontal">
  107. <Canvas Height="54" Width="45">
  108. <Image
  109. Canvas.Left="5"
  110. Canvas.Top="16"
  111. Height="19">
  112. <Image.Source>
  113. <DrawingImage>
  114. <DrawingImage.Drawing>
  115. <DrawingGroup ClipGeometry="M0,0 V512 H512 V0 H0 Z">
  116. <GeometryDrawing Brush="{StaticResource ResizeBrush}" Geometry="F1 M512,512z M0,0z M464,448L48,448C21.49,448,0,426.51,0,400L0,112C0,85.49,21.49,64,48,64L464,64C490.51,64,512,85.49,512,112L512,400C512,426.51,490.51,448,464,448z M112,120C81.072,120 56,145.072 56,176 56,206.928 81.072,232 112,232 142.928,232 168,206.928 168,176 168,145.072 142.928,120 112,120z M64,384L448,384 448,272 360.485,184.485C355.799,179.799,348.201,179.799,343.514,184.485L208,320 152.485,264.485C147.799,259.799,140.201,259.799,135.514,264.485L64,336 64,384z" />
  117. </DrawingGroup>
  118. </DrawingImage.Drawing>
  119. </DrawingImage>
  120. </Image.Source>
  121. </Image>
  122. <Image
  123. Canvas.Left="20"
  124. Canvas.Top="20.5"
  125. Height="14"
  126. Opacity=".8">
  127. <Image.Source>
  128. <DrawingImage>
  129. <DrawingImage.Drawing>
  130. <DrawingGroup ClipGeometry="M0,0 V512 H512 V0 H0 Z">
  131. <GeometryDrawing Brush="{StaticResource ResizeBrush}" Geometry="F1 M512,512z M0,0z M464,448L48,448C21.49,448,0,426.51,0,400L0,112C0,85.49,21.49,64,48,64L464,64C490.51,64,512,85.49,512,112L512,400C512,426.51,490.51,448,464,448z M112,120C81.072,120 56,145.072 56,176 56,206.928 81.072,232 112,232 142.928,232 168,206.928 168,176 168,145.072 142.928,120 112,120z M64,384L448,384 448,272 360.485,184.485C355.799,179.799,348.201,179.799,343.514,184.485L208,320 152.485,264.485C147.799,259.799,140.201,259.799,135.514,264.485L64,336 64,384z" />
  132. </DrawingGroup>
  133. </DrawingImage.Drawing>
  134. </DrawingImage>
  135. </Image.Source>
  136. </Image>
  137. </Canvas>
  138. <TextBlock
  139. Classes="txt btnTxt"
  140. Foreground="{StaticResource ResizeBrush}"
  141. Margin="-3,0,0,0"
  142. Text="{CompiledBinding Translation.Resize.Value,
  143. Mode=OneWay}" />
  144. </StackPanel>
  145. </Button>
  146. <customControls:TextIconButton
  147. Background="{DynamicResource MenuButtonColor}"
  148. Canvas.Left="160"
  149. Canvas.Top="53"
  150. Classes="ButtonBorder altHover"
  151. Command="{CompiledBinding Tools.CropCommand}"
  152. Data="{StaticResource CropGeometry}"
  153. Foreground="{DynamicResource MainTextColor}"
  154. Height="46"
  155. IconHeight="17"
  156. IconMargin="9,0,9,0"
  157. IconWidth="17"
  158. IsEnabled="{CompiledBinding PicViewer.ShouldCropBeEnabled.Value,
  159. Mode=OneWay}"
  160. Text="{CompiledBinding Translation.Crop.Value,
  161. Mode=OneWay}"
  162. ToolTip.Tip="{CompiledBinding Translation.Crop,
  163. Mode=OneWay}"
  164. x:Name="CropButton" />
  165. <SplitButton
  166. Background="{DynamicResource MenuButtonColor}"
  167. Canvas.Left="7"
  168. Canvas.Top="104"
  169. Classes="ButtonBorder altHover up"
  170. Command="{CompiledBinding Tools.StartSlideShowTask}"
  171. CommandParameter="0"
  172. Foreground="{DynamicResource MainTextColor}"
  173. Height="46"
  174. ToolTip.Tip="{CompiledBinding Translation.Slideshow.Value,
  175. Mode=OneWay}"
  176. x:Name="SlideShowButton">
  177. <StackPanel Orientation="Horizontal">
  178. <Image
  179. Height="20"
  180. Margin="5,0,10,0"
  181. Source="{StaticResource SlideshowImage}"
  182. Width="20"
  183. x:Name="SlideShowImage" />
  184. <TextBlock
  185. Classes="txt btnTxt"
  186. Foreground="{StaticResource SlideShowBrush}"
  187. Margin="0,2,0,0"
  188. Text="{CompiledBinding Translation.Slideshow.Value,
  189. Mode=OneWay}" />
  190. </StackPanel>
  191. <SplitButton.Flyout>
  192. <MenuFlyout Placement="Top" ShowMode="Transient">
  193. <MenuItem
  194. Background="Transparent"
  195. Command="{CompiledBinding Tools.StartSlideShowTask}"
  196. CommandParameter="2000"
  197. Width="140"
  198. x:Name="Item2">
  199. <MenuItem.Icon>
  200. <Image
  201. Height="12"
  202. Source="{StaticResource TimerImage}"
  203. Width="12" />
  204. </MenuItem.Icon>
  205. </MenuItem>
  206. <MenuItem
  207. Background="Transparent"
  208. Command="{CompiledBinding Tools.StartSlideShowTask}"
  209. CommandParameter="5000"
  210. Width="140"
  211. x:Name="Item5">
  212. <MenuItem.Icon>
  213. <Image
  214. Height="12"
  215. Source="{StaticResource TimerImage}"
  216. Width="12" />
  217. </MenuItem.Icon>
  218. </MenuItem>
  219. <MenuItem
  220. Background="Transparent"
  221. Command="{CompiledBinding Tools.StartSlideShowTask}"
  222. CommandParameter="10000"
  223. Width="140"
  224. x:Name="Item10">
  225. <MenuItem.Icon>
  226. <Image
  227. Height="12"
  228. Source="{StaticResource TimerImage}"
  229. Width="12" />
  230. </MenuItem.Icon>
  231. </MenuItem>
  232. <MenuItem
  233. Background="Transparent"
  234. Command="{CompiledBinding Tools.StartSlideShowTask}"
  235. CommandParameter="20000"
  236. Width="140"
  237. x:Name="Item20">
  238. <MenuItem.Icon>
  239. <Image
  240. Height="12"
  241. Source="{StaticResource TimerImage}"
  242. Width="12" />
  243. </MenuItem.Icon>
  244. </MenuItem>
  245. <MenuItem
  246. Background="Transparent"
  247. Command="{CompiledBinding Tools.StartSlideShowTask}"
  248. CommandParameter="30000"
  249. Width="140"
  250. x:Name="Item30">
  251. <MenuItem.Icon>
  252. <Image
  253. Height="12"
  254. Source="{StaticResource TimerImage}"
  255. Width="12" />
  256. </MenuItem.Icon>
  257. </MenuItem>
  258. <MenuItem
  259. Background="Transparent"
  260. Command="{CompiledBinding Tools.StartSlideShowTask}"
  261. CommandParameter="60000"
  262. Width="140"
  263. x:Name="Item60">
  264. <MenuItem.Icon>
  265. <Image
  266. Height="12"
  267. Source="{StaticResource TimerImage}"
  268. Width="12" />
  269. </MenuItem.Icon>
  270. </MenuItem>
  271. <MenuItem
  272. Background="Transparent"
  273. Command="{CompiledBinding Tools.StartSlideShowTask}"
  274. CommandParameter="90000"
  275. Width="140"
  276. x:Name="Item90">
  277. <MenuItem.Icon>
  278. <Image
  279. Height="12"
  280. Source="{StaticResource TimerImage}"
  281. Width="12" />
  282. </MenuItem.Icon>
  283. </MenuItem>
  284. <MenuItem
  285. Background="Transparent"
  286. Command="{CompiledBinding Tools.StartSlideShowTask}"
  287. CommandParameter="120000"
  288. Width="140"
  289. x:Name="Item120">
  290. <MenuItem.Icon>
  291. <Image
  292. Height="12"
  293. Source="{StaticResource TimerImage}"
  294. Width="12" />
  295. </MenuItem.Icon>
  296. </MenuItem>
  297. </MenuFlyout>
  298. </SplitButton.Flyout>
  299. </SplitButton>
  300. <ToggleButton
  301. Background="{DynamicResource MenuButtonColor}"
  302. Canvas.Left="160"
  303. Canvas.Top="104"
  304. Classes="ButtonBorder altHover"
  305. Command="{CompiledBinding Tools.ShowSideBySideCommand}"
  306. Foreground="{StaticResource SideBrush}"
  307. Height="46"
  308. IsChecked="{CompiledBinding PicViewer.IsShowingSideBySide.Value}"
  309. IsEnabled="{CompiledBinding !PicViewer.IsSingleImage.Value}"
  310. ToolTip.Tip="{CompiledBinding Translation.SideBySideTooltip.Value}"
  311. x:Name="SideBySideButton">
  312. <TextBlock
  313. Classes="txt btnTxt"
  314. Foreground="{StaticResource SideBrush}"
  315. Margin="1,0,6,0"
  316. Text="{CompiledBinding Translation.SideBySide.Value}" />
  317. </ToggleButton>
  318. <customControls:TextIconButton
  319. Background="{DynamicResource MenuButtonColor}"
  320. Canvas.Left="7"
  321. Canvas.Top="155"
  322. Classes="ButtonBorder altHover"
  323. Command="{CompiledBinding Gallery.ToggleBottomGalleryCommand}"
  324. Data="{StaticResource GalleryGeometry}"
  325. Foreground="{DynamicResource MainTextColor}"
  326. Height="46"
  327. IconHeight="20"
  328. IconMargin="9,0,9,0"
  329. IconWidth="20"
  330. IsEnabled="{CompiledBinding !PicViewer.IsSingleImage.Value}"
  331. Text="{CompiledBinding Translation.IsShowingBottomGallery.Value,
  332. Mode=OneWay}"
  333. TextMargin="0,0,6,0"
  334. TextMaxWidth="175"
  335. ToolTip.Tip="{CompiledBinding Translation.IsShowingBottomGallery.Value,
  336. Mode=OneWay}"
  337. Width="300"
  338. x:Name="GalleryButton" />
  339. </Canvas>
  340. </Border>
  341. <Polygon
  342. Fill="{DynamicResource MenuBackgroundColor}"
  343. Margin="37,-1,0,0"
  344. Points="0,0 15,30, 30,0"
  345. Stroke="{DynamicResource MainBorderColor}"
  346. StrokeThickness="1" />
  347. </StackPanel>
  348. </customControls:AnimatedMenu>