FunctionArea.tsx 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. import React from 'react';
  2. import { Button, Flex } from 'antd';
  3. import '@/themes/truncateText.css';
  4. import { useDispatch } from 'react-redux';
  5. import { setAction } from '@/states/view/functionAreaSlice';
  6. import { switchToMeasurementPanel, switchToMorePanel, switchToAdvancedProcessingPanel, switchToRectCropPanel } from '@/states/panelSwitchSliceForView';
  7. import Icon from '@/components/Icon';
  8. import { showNotImplemented } from '@/utils/notificationHelper';
  9. const FunctionButton = ({
  10. title,
  11. action,
  12. iconName,
  13. }: {
  14. title: string;
  15. action: string;
  16. iconName: string;
  17. }) => {
  18. const dispatch = useDispatch();
  19. const handleButtonClick = () => {
  20. if (action === 'AddMask' ||
  21. action === 'Delete Digital Mask' ||
  22. action === 'Crop Selected Area' ||
  23. ['Delete Mask',
  24. 'Image Comparison', 'Zoom Image', 'Reset Cursor', 'Pan', 'Snapshot',
  25. ].includes(action)
  26. ) {
  27. showNotImplemented('');
  28. return;
  29. }
  30. if (action === 'Image Measurement') {
  31. // 切换到测量面板
  32. dispatch(switchToMeasurementPanel());
  33. } else if (action === 'Rectangle Crop') {
  34. // 切换到矩形裁剪面板
  35. dispatch(switchToRectCropPanel());
  36. } else if (action === 'More') {
  37. // 切换到更多功能面板
  38. dispatch(switchToMorePanel());
  39. } else if (action === 'Advanced Processing') {
  40. // 切换到高级图像处理面板
  41. dispatch(switchToAdvancedProcessingPanel());
  42. } else {
  43. // 其他功能按钮保持原有逻辑
  44. dispatch(setAction(action));
  45. }
  46. };
  47. return (
  48. <Button
  49. onClick={handleButtonClick}
  50. icon={
  51. <Icon
  52. module="module-process"
  53. name={iconName}
  54. userId="base"
  55. theme="default"
  56. size="2x"
  57. state="normal"
  58. />
  59. }
  60. style={{
  61. width: '1.5rem',
  62. height: '1.5rem',
  63. padding: 0, // 关键
  64. //minWidth: 44, // 保险
  65. //overflow: 'hidden', // 超出的文字裁掉
  66. }}
  67. title={title}
  68. className="truncate-text"
  69. >
  70. {/* {title} */}
  71. </Button>
  72. );
  73. };
  74. const FunctionArea = () => {
  75. return (
  76. <Flex wrap gap="small" align="center" justify="start" className="p-1">
  77. <FunctionButton title="Add L Mark" action="Add L Mark" iconName="LMark" />
  78. <FunctionButton title="Add R Mark" action="Add R Mark" iconName="RMark" />
  79. <FunctionButton
  80. title="Delete Selected Mark"
  81. action="Delete Selected Mark"
  82. iconName="DeleteMask"
  83. />
  84. <FunctionButton
  85. title="Horizontal Flip"
  86. action="Horizontal Flip"
  87. iconName="HReverse"
  88. />
  89. <FunctionButton
  90. title="Vertical Flip"
  91. action="Vertical Flip"
  92. iconName="VReverse"
  93. />
  94. <FunctionButton
  95. title="Rotate Counterclockwise 90°"
  96. action="Rotate Counterclockwise 90"
  97. iconName="RotateL90"
  98. />
  99. <FunctionButton
  100. title="Rotate Clockwise 90°"
  101. action="Rotate Clockwise 90"
  102. iconName="RotateR90"
  103. />
  104. <FunctionButton
  105. title="Rotate Any Angle"
  106. action="Rotate Any Angle"
  107. iconName="RotateAnyDegree"
  108. />
  109. <FunctionButton title="Add Mask" action="AddMask" iconName="AddMark" />
  110. <FunctionButton
  111. title="Delete Digital Mask"
  112. action="Delete Digital Mask"
  113. iconName="EraseMark"
  114. />
  115. <FunctionButton
  116. title="Adjust Brightness and Contrast"
  117. action="Adjust Brightness and Contrast"
  118. iconName="btn_BrightnessContrast"
  119. />
  120. <FunctionButton
  121. title="Crop Selected Area"
  122. action="Crop Selected Area"
  123. iconName="Crop"
  124. />
  125. <FunctionButton
  126. title="Delete Mask"
  127. action="Delete Mask"
  128. iconName="DeleteMask"
  129. />
  130. <FunctionButton
  131. title="Image Comparison"
  132. action="Image Comparison"
  133. iconName="btn_Compare"
  134. />
  135. <FunctionButton
  136. title="反色对比"
  137. action="Invert Contrast"
  138. iconName="btn_ReverseColour"
  139. />
  140. <FunctionButton
  141. title="1x1 Layout"
  142. action="1x1 Layout"
  143. iconName="1x1_normal"
  144. />
  145. <FunctionButton
  146. title="1x2 Layout"
  147. action="1x2 Layout"
  148. iconName="1x2_normal"
  149. />
  150. <FunctionButton
  151. title="2x2 Layout"
  152. action="2x2 Layout"
  153. iconName="2x1_normal"
  154. />
  155. <FunctionButton
  156. title="4x4 Layout"
  157. action="4x4 Layout"
  158. iconName="2x2_normal"
  159. />
  160. <FunctionButton
  161. title="Magnifier"
  162. action="Magnifier"
  163. iconName="Magnifier"
  164. />
  165. <FunctionButton
  166. title="Fit Size"
  167. action="Fit Size"
  168. iconName="FitInWindow"
  169. />
  170. <FunctionButton
  171. title="Original Size"
  172. action="Original Size"
  173. iconName="1by1_normal"
  174. />
  175. <FunctionButton title="Zoom Image" action="Zoom Image" iconName="Zoom" />
  176. <FunctionButton
  177. title="Reset Cursor"
  178. action="Reset Cursor"
  179. iconName="btn_pointer"
  180. />
  181. <FunctionButton title="Pan" action="Pan" iconName="Pan" />
  182. <FunctionButton
  183. title="Invert Image"
  184. action="Invert Image"
  185. iconName="Invert"
  186. />
  187. <FunctionButton
  188. title="Reset Image"
  189. action="Reset Image"
  190. iconName="Reset"
  191. />
  192. <FunctionButton
  193. title="Snapshot"
  194. action="Snapshot"
  195. iconName="imgsnapshot"
  196. />
  197. <FunctionButton
  198. title="Advanced Processing"
  199. action="Advanced Processing"
  200. iconName="btn_Imageprocess"
  201. />
  202. <FunctionButton
  203. title="Image Measurement"
  204. action="Image Measurement"
  205. iconName="btn_Measurements"
  206. />
  207. <FunctionButton
  208. title="矩形裁剪"
  209. action="Rectangle Crop"
  210. iconName="btn_RectCrop"
  211. />
  212. <FunctionButton title="More" action="More" iconName="btn_OtherSetting" />
  213. </Flex>
  214. );
  215. };
  216. export default FunctionArea;