melage 0.0.65__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. melage/__init__.py +16 -0
  2. melage/cli.py +4 -0
  3. melage/graphics/GLGraphicsItem.py +286 -0
  4. melage/graphics/GLViewWidget.py +595 -0
  5. melage/graphics/Transform3D.py +55 -0
  6. melage/graphics/__init__.py +8 -0
  7. melage/graphics/functions.py +101 -0
  8. melage/graphics/items/GLAxisItem.py +149 -0
  9. melage/graphics/items/GLGridItem.py +178 -0
  10. melage/graphics/items/GLPolygonItem.py +77 -0
  11. melage/graphics/items/GLScatterPlotItem.py +135 -0
  12. melage/graphics/items/GLVolumeItem.py +280 -0
  13. melage/graphics/items/GLVolumeItem_b.py +237 -0
  14. melage/graphics/items/__init__.py +0 -0
  15. melage/graphics/shaders.py +202 -0
  16. melage/main.py +270 -0
  17. melage/requirements22.txt +25 -0
  18. melage/requirements_old.txt +28 -0
  19. melage/resource/0circle.png +0 -0
  20. melage/resource/0circle_faded.png +0 -0
  21. melage/resource/3d.png +0 -0
  22. melage/resource/3d.psd +0 -0
  23. melage/resource/3dFaded.png +0 -0
  24. melage/resource/Eraser.png +0 -0
  25. melage/resource/EraserFaded.png +0 -0
  26. melage/resource/EraserX.png +0 -0
  27. melage/resource/EraserXFaded.png +0 -0
  28. melage/resource/Eraser_icon.svg +79 -0
  29. melage/resource/Hand.png +0 -0
  30. melage/resource/HandIcons_0.png +0 -0
  31. melage/resource/Hand_IX.png +0 -0
  32. melage/resource/Hand_IXFaded.png +0 -0
  33. melage/resource/Handsqueezed.png +0 -0
  34. melage/resource/Handwriting (copy).png +0 -0
  35. melage/resource/Handwriting.png +0 -0
  36. melage/resource/HandwritingMinus.png +0 -0
  37. melage/resource/HandwritingMinusX.png +0 -0
  38. melage/resource/HandwritingPlus.png +0 -0
  39. melage/resource/HandwritingPlusX.png +0 -0
  40. melage/resource/Move_icon.svg +8 -0
  41. melage/resource/PngItem_2422924.png +0 -0
  42. melage/resource/about.png +0 -0
  43. melage/resource/about_logo.png +0 -0
  44. melage/resource/about_logo0.png +0 -0
  45. melage/resource/action_check.png +0 -0
  46. melage/resource/action_check_OFF.png +0 -0
  47. melage/resource/arrow).png +0 -0
  48. melage/resource/arrow.png +0 -0
  49. melage/resource/arrowFaded.png +0 -0
  50. melage/resource/arrow_org.png +0 -0
  51. melage/resource/arrow_org.png.png +0 -0
  52. melage/resource/arrows.png +0 -0
  53. melage/resource/authors.mp4 +0 -0
  54. melage/resource/box.png +0 -0
  55. melage/resource/check-image-icon-0.jpg +0 -0
  56. melage/resource/circle.png +0 -0
  57. melage/resource/circle_faded.png +0 -0
  58. melage/resource/circle_or.png +0 -0
  59. melage/resource/close.png +0 -0
  60. melage/resource/close_bg.png +0 -0
  61. melage/resource/color/Simple.txt +18 -0
  62. melage/resource/color/Tissue.txt +24 -0
  63. melage/resource/color/Tissue12.txt +27 -0
  64. melage/resource/color/albert_LUT.txt +102 -0
  65. melage/resource/color/mcrib_LUT.txt +102 -0
  66. melage/resource/color/pediatric1.txt +29 -0
  67. melage/resource/color/pediatric1_old.txt +27 -0
  68. melage/resource/color/pediatric2.txt +87 -0
  69. melage/resource/color/pediatric3.txt +29 -0
  70. melage/resource/color/pediatrics (copy).csv +103 -0
  71. melage/resource/color/tissue_seg.txt +4 -0
  72. melage/resource/contour.png +0 -0
  73. melage/resource/contour.svg +2 -0
  74. melage/resource/contourFaded.png +0 -0
  75. melage/resource/contourX.png +0 -0
  76. melage/resource/contourXFaded.png +0 -0
  77. melage/resource/dti.png +0 -0
  78. melage/resource/dti0.png +0 -0
  79. melage/resource/dti222.png +0 -0
  80. melage/resource/dti_or.png +0 -0
  81. melage/resource/eco.png +0 -0
  82. melage/resource/eco22.png +0 -0
  83. melage/resource/eco_old.png +0 -0
  84. melage/resource/eco_or.png +0 -0
  85. melage/resource/eco_or2.png +0 -0
  86. melage/resource/eco_seg.png +0 -0
  87. melage/resource/eco_seg_old.png +0 -0
  88. melage/resource/export.png +0 -0
  89. melage/resource/hand-grab-icon-10.jpg +0 -0
  90. melage/resource/hand-grab-icon-25.jpg +0 -0
  91. melage/resource/info.png +0 -0
  92. melage/resource/line.png +0 -0
  93. melage/resource/linefaded.png +0 -0
  94. melage/resource/load.png +0 -0
  95. melage/resource/main.ico +0 -0
  96. melage/resource/manual_images/3D_rightc.png +0 -0
  97. melage/resource/manual_images/3D_rightc_goto.png +0 -0
  98. melage/resource/manual_images/3D_rightc_paint.png +0 -0
  99. melage/resource/manual_images/3D_rightc_paint_draw1.png +0 -0
  100. melage/resource/manual_images/3D_rightc_paint_draw2.png +0 -0
  101. melage/resource/manual_images/3D_rightc_paint_render.png +0 -0
  102. melage/resource/manual_images/3D_rightc_paint_render2.png +0 -0
  103. melage/resource/manual_images/3D_rightc_paint_render3.png +0 -0
  104. melage/resource/manual_images/3D_rightc_paint_render4.png +0 -0
  105. melage/resource/manual_images/3D_rightc_paint_render5.png +0 -0
  106. melage/resource/manual_images/3D_rightc_paint_render6.png +0 -0
  107. melage/resource/manual_images/3D_rightc_seg.png +0 -0
  108. melage/resource/manual_images/exit_toolbar.png +0 -0
  109. melage/resource/manual_images/load_image_file.png +0 -0
  110. melage/resource/manual_images/load_image_file_openp.png +0 -0
  111. melage/resource/manual_images/main_page.png +0 -0
  112. melage/resource/manual_images/menu_file.png +0 -0
  113. melage/resource/manual_images/menu_file_export.png +0 -0
  114. melage/resource/manual_images/menu_file_import.png +0 -0
  115. melage/resource/manual_images/menu_file_settings.png +0 -0
  116. melage/resource/manual_images/menu_file_ss.png +0 -0
  117. melage/resource/manual_images/open_save_load.png +0 -0
  118. melage/resource/manual_images/panning_toolbar.png +0 -0
  119. melage/resource/manual_images/segmentation_toolbar.png +0 -0
  120. melage/resource/manual_images/tab_mri.png +0 -0
  121. melage/resource/manual_images/tab_us.png +0 -0
  122. melage/resource/manual_images/tabs.png +0 -0
  123. melage/resource/manual_images/toolbar_tools.png +0 -0
  124. melage/resource/manual_images/tools_basic.png +0 -0
  125. melage/resource/manual_images/tools_bet.png +0 -0
  126. melage/resource/manual_images/tools_cs.png +0 -0
  127. melage/resource/manual_images/tools_deepbet.png +0 -0
  128. melage/resource/manual_images/tools_imageinfo.png +0 -0
  129. melage/resource/manual_images/tools_maskO.png +0 -0
  130. melage/resource/manual_images/tools_masking.png +0 -0
  131. melage/resource/manual_images/tools_n4b.png +0 -0
  132. melage/resource/manual_images/tools_resize.png +0 -0
  133. melage/resource/manual_images/tools_ruler.png +0 -0
  134. melage/resource/manual_images/tools_seg.png +0 -0
  135. melage/resource/manual_images/tools_threshold.png +0 -0
  136. melage/resource/manual_images/tools_tools.png +0 -0
  137. melage/resource/manual_images/widget_color.png +0 -0
  138. melage/resource/manual_images/widget_color_add.png +0 -0
  139. melage/resource/manual_images/widget_color_add2.png +0 -0
  140. melage/resource/manual_images/widget_color_additional.png +0 -0
  141. melage/resource/manual_images/widget_images.png +0 -0
  142. melage/resource/manual_images/widget_images2.png +0 -0
  143. melage/resource/manual_images/widget_images3.png +0 -0
  144. melage/resource/manual_images/widget_marker.png +0 -0
  145. melage/resource/manual_images/widget_mri.png +0 -0
  146. melage/resource/manual_images/widget_mri2.png +0 -0
  147. melage/resource/manual_images/widget_segintensity.png +0 -0
  148. melage/resource/manual_images/widget_tab_mutualview.png +0 -0
  149. melage/resource/manual_images/widget_tab_mutualview2.png +0 -0
  150. melage/resource/manual_images/widget_table.png +0 -0
  151. melage/resource/manual_images/widget_table2.png +0 -0
  152. melage/resource/manual_images/widget_us.png +0 -0
  153. melage/resource/melage_top.ico +0 -0
  154. melage/resource/melage_top.png +0 -0
  155. melage/resource/melage_top0.png +0 -0
  156. melage/resource/melage_top1.png +0 -0
  157. melage/resource/melage_top4.png +0 -0
  158. melage/resource/mri (copy).png +0 -0
  159. melage/resource/mri.png +0 -0
  160. melage/resource/mri0.png +0 -0
  161. melage/resource/mri000.png +0 -0
  162. melage/resource/mri22.png +0 -0
  163. melage/resource/mri_big.png +0 -0
  164. melage/resource/mri_old.png +0 -0
  165. melage/resource/mri_seg.png +0 -0
  166. melage/resource/mri_seg_old.png +0 -0
  167. melage/resource/new.png +0 -0
  168. melage/resource/open.png +0 -0
  169. melage/resource/open2.png +0 -0
  170. melage/resource/pan.png +0 -0
  171. melage/resource/pencil.png +0 -0
  172. melage/resource/pencilFaded.png +0 -0
  173. melage/resource/points.png +0 -0
  174. melage/resource/pointsFaded.png +0 -0
  175. melage/resource/rotate.png +0 -0
  176. melage/resource/ruler.png +0 -0
  177. melage/resource/rulerFaded.png +0 -0
  178. melage/resource/s.png +0 -0
  179. melage/resource/s.psd +0 -0
  180. melage/resource/save.png +0 -0
  181. melage/resource/saveas.png +0 -0
  182. melage/resource/seg_mri.png +0 -0
  183. melage/resource/seg_mri2.png +0 -0
  184. melage/resource/settings.png +0 -0
  185. melage/resource/synch.png +0 -0
  186. melage/resource/synchFaded.png +0 -0
  187. melage/resource/theme/rc/.keep +1 -0
  188. melage/resource/theme/rc/arrow_down.png +0 -0
  189. melage/resource/theme/rc/arrow_down@2x.png +0 -0
  190. melage/resource/theme/rc/arrow_down_disabled.png +0 -0
  191. melage/resource/theme/rc/arrow_down_disabled@2x.png +0 -0
  192. melage/resource/theme/rc/arrow_down_focus.png +0 -0
  193. melage/resource/theme/rc/arrow_down_focus@2x.png +0 -0
  194. melage/resource/theme/rc/arrow_down_pressed.png +0 -0
  195. melage/resource/theme/rc/arrow_down_pressed@2x.png +0 -0
  196. melage/resource/theme/rc/arrow_left.png +0 -0
  197. melage/resource/theme/rc/arrow_left@2x.png +0 -0
  198. melage/resource/theme/rc/arrow_left_disabled.png +0 -0
  199. melage/resource/theme/rc/arrow_left_disabled@2x.png +0 -0
  200. melage/resource/theme/rc/arrow_left_focus.png +0 -0
  201. melage/resource/theme/rc/arrow_left_focus@2x.png +0 -0
  202. melage/resource/theme/rc/arrow_left_pressed.png +0 -0
  203. melage/resource/theme/rc/arrow_left_pressed@2x.png +0 -0
  204. melage/resource/theme/rc/arrow_right.png +0 -0
  205. melage/resource/theme/rc/arrow_right@2x.png +0 -0
  206. melage/resource/theme/rc/arrow_right_disabled.png +0 -0
  207. melage/resource/theme/rc/arrow_right_disabled@2x.png +0 -0
  208. melage/resource/theme/rc/arrow_right_focus.png +0 -0
  209. melage/resource/theme/rc/arrow_right_focus@2x.png +0 -0
  210. melage/resource/theme/rc/arrow_right_pressed.png +0 -0
  211. melage/resource/theme/rc/arrow_right_pressed@2x.png +0 -0
  212. melage/resource/theme/rc/arrow_up.png +0 -0
  213. melage/resource/theme/rc/arrow_up@2x.png +0 -0
  214. melage/resource/theme/rc/arrow_up_disabled.png +0 -0
  215. melage/resource/theme/rc/arrow_up_disabled@2x.png +0 -0
  216. melage/resource/theme/rc/arrow_up_focus.png +0 -0
  217. melage/resource/theme/rc/arrow_up_focus@2x.png +0 -0
  218. melage/resource/theme/rc/arrow_up_pressed.png +0 -0
  219. melage/resource/theme/rc/arrow_up_pressed@2x.png +0 -0
  220. melage/resource/theme/rc/base_icon.png +0 -0
  221. melage/resource/theme/rc/base_icon@2x.png +0 -0
  222. melage/resource/theme/rc/base_icon_disabled.png +0 -0
  223. melage/resource/theme/rc/base_icon_disabled@2x.png +0 -0
  224. melage/resource/theme/rc/base_icon_focus.png +0 -0
  225. melage/resource/theme/rc/base_icon_focus@2x.png +0 -0
  226. melage/resource/theme/rc/base_icon_pressed.png +0 -0
  227. melage/resource/theme/rc/base_icon_pressed@2x.png +0 -0
  228. melage/resource/theme/rc/branch_closed.png +0 -0
  229. melage/resource/theme/rc/branch_closed@2x.png +0 -0
  230. melage/resource/theme/rc/branch_closed_disabled.png +0 -0
  231. melage/resource/theme/rc/branch_closed_disabled@2x.png +0 -0
  232. melage/resource/theme/rc/branch_closed_focus.png +0 -0
  233. melage/resource/theme/rc/branch_closed_focus@2x.png +0 -0
  234. melage/resource/theme/rc/branch_closed_pressed.png +0 -0
  235. melage/resource/theme/rc/branch_closed_pressed@2x.png +0 -0
  236. melage/resource/theme/rc/branch_end.png +0 -0
  237. melage/resource/theme/rc/branch_end@2x.png +0 -0
  238. melage/resource/theme/rc/branch_end_disabled.png +0 -0
  239. melage/resource/theme/rc/branch_end_disabled@2x.png +0 -0
  240. melage/resource/theme/rc/branch_end_focus.png +0 -0
  241. melage/resource/theme/rc/branch_end_focus@2x.png +0 -0
  242. melage/resource/theme/rc/branch_end_pressed.png +0 -0
  243. melage/resource/theme/rc/branch_end_pressed@2x.png +0 -0
  244. melage/resource/theme/rc/branch_line.png +0 -0
  245. melage/resource/theme/rc/branch_line@2x.png +0 -0
  246. melage/resource/theme/rc/branch_line_disabled.png +0 -0
  247. melage/resource/theme/rc/branch_line_disabled@2x.png +0 -0
  248. melage/resource/theme/rc/branch_line_focus.png +0 -0
  249. melage/resource/theme/rc/branch_line_focus@2x.png +0 -0
  250. melage/resource/theme/rc/branch_line_pressed.png +0 -0
  251. melage/resource/theme/rc/branch_line_pressed@2x.png +0 -0
  252. melage/resource/theme/rc/branch_more.png +0 -0
  253. melage/resource/theme/rc/branch_more@2x.png +0 -0
  254. melage/resource/theme/rc/branch_more_disabled.png +0 -0
  255. melage/resource/theme/rc/branch_more_disabled@2x.png +0 -0
  256. melage/resource/theme/rc/branch_more_focus.png +0 -0
  257. melage/resource/theme/rc/branch_more_focus@2x.png +0 -0
  258. melage/resource/theme/rc/branch_more_pressed.png +0 -0
  259. melage/resource/theme/rc/branch_more_pressed@2x.png +0 -0
  260. melage/resource/theme/rc/branch_open.png +0 -0
  261. melage/resource/theme/rc/branch_open@2x.png +0 -0
  262. melage/resource/theme/rc/branch_open_disabled.png +0 -0
  263. melage/resource/theme/rc/branch_open_disabled@2x.png +0 -0
  264. melage/resource/theme/rc/branch_open_focus.png +0 -0
  265. melage/resource/theme/rc/branch_open_focus@2x.png +0 -0
  266. melage/resource/theme/rc/branch_open_pressed.png +0 -0
  267. melage/resource/theme/rc/branch_open_pressed@2x.png +0 -0
  268. melage/resource/theme/rc/checkbox_checked.png +0 -0
  269. melage/resource/theme/rc/checkbox_checked0.png +0 -0
  270. melage/resource/theme/rc/checkbox_checked@2x.png +0 -0
  271. melage/resource/theme/rc/checkbox_checked@2x0.png +0 -0
  272. melage/resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
  273. melage/resource/theme/rc/checkbox_checked_disabled.png +0 -0
  274. melage/resource/theme/rc/checkbox_checked_disabled0.png +0 -0
  275. melage/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
  276. melage/resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
  277. melage/resource/theme/rc/checkbox_checked_focus.png +0 -0
  278. melage/resource/theme/rc/checkbox_checked_focus0.png +0 -0
  279. melage/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
  280. melage/resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
  281. melage/resource/theme/rc/checkbox_checked_pressed.png +0 -0
  282. melage/resource/theme/rc/checkbox_checked_pressed0.png +0 -0
  283. melage/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
  284. melage/resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
  285. melage/resource/theme/rc/checkbox_indeterminate.png +0 -0
  286. melage/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
  287. melage/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
  288. melage/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
  289. melage/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
  290. melage/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
  291. melage/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
  292. melage/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
  293. melage/resource/theme/rc/checkbox_unchecked.png +0 -0
  294. melage/resource/theme/rc/checkbox_unchecked0.png +0 -0
  295. melage/resource/theme/rc/checkbox_unchecked00.png +0 -0
  296. melage/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
  297. melage/resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
  298. melage/resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
  299. melage/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
  300. melage/resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
  301. melage/resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
  302. melage/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
  303. melage/resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
  304. melage/resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
  305. melage/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
  306. melage/resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
  307. melage/resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
  308. melage/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
  309. melage/resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
  310. melage/resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
  311. melage/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
  312. melage/resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
  313. melage/resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
  314. melage/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
  315. melage/resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
  316. melage/resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
  317. melage/resource/theme/rc/line_horizontal.png +0 -0
  318. melage/resource/theme/rc/line_horizontal@2x.png +0 -0
  319. melage/resource/theme/rc/line_horizontal_disabled.png +0 -0
  320. melage/resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
  321. melage/resource/theme/rc/line_horizontal_focus.png +0 -0
  322. melage/resource/theme/rc/line_horizontal_focus@2x.png +0 -0
  323. melage/resource/theme/rc/line_horizontal_pressed.png +0 -0
  324. melage/resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
  325. melage/resource/theme/rc/line_vertical.png +0 -0
  326. melage/resource/theme/rc/line_vertical@2x.png +0 -0
  327. melage/resource/theme/rc/line_vertical_disabled.png +0 -0
  328. melage/resource/theme/rc/line_vertical_disabled@2x.png +0 -0
  329. melage/resource/theme/rc/line_vertical_focus.png +0 -0
  330. melage/resource/theme/rc/line_vertical_focus@2x.png +0 -0
  331. melage/resource/theme/rc/line_vertical_pressed.png +0 -0
  332. melage/resource/theme/rc/line_vertical_pressed@2x.png +0 -0
  333. melage/resource/theme/rc/radio_checked.png +0 -0
  334. melage/resource/theme/rc/radio_checked@2x.png +0 -0
  335. melage/resource/theme/rc/radio_checked_disabled.png +0 -0
  336. melage/resource/theme/rc/radio_checked_disabled@2x.png +0 -0
  337. melage/resource/theme/rc/radio_checked_focus.png +0 -0
  338. melage/resource/theme/rc/radio_checked_focus@2x.png +0 -0
  339. melage/resource/theme/rc/radio_checked_pressed.png +0 -0
  340. melage/resource/theme/rc/radio_checked_pressed@2x.png +0 -0
  341. melage/resource/theme/rc/radio_unchecked.png +0 -0
  342. melage/resource/theme/rc/radio_unchecked@2x.png +0 -0
  343. melage/resource/theme/rc/radio_unchecked_disabled.png +0 -0
  344. melage/resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
  345. melage/resource/theme/rc/radio_unchecked_focus.png +0 -0
  346. melage/resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
  347. melage/resource/theme/rc/radio_unchecked_pressed.png +0 -0
  348. melage/resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
  349. melage/resource/theme/rc/toolbar_move_horizontal.png +0 -0
  350. melage/resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
  351. melage/resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
  352. melage/resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
  353. melage/resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
  354. melage/resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
  355. melage/resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
  356. melage/resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
  357. melage/resource/theme/rc/toolbar_move_vertical.png +0 -0
  358. melage/resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
  359. melage/resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
  360. melage/resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
  361. melage/resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
  362. melage/resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
  363. melage/resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
  364. melage/resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
  365. melage/resource/theme/rc/toolbar_separator_horizontal.png +0 -0
  366. melage/resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
  367. melage/resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
  368. melage/resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
  369. melage/resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
  370. melage/resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
  371. melage/resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
  372. melage/resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
  373. melage/resource/theme/rc/toolbar_separator_vertical.png +0 -0
  374. melage/resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
  375. melage/resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
  376. melage/resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
  377. melage/resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
  378. melage/resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
  379. melage/resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
  380. melage/resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
  381. melage/resource/theme/rc/transparent.png +0 -0
  382. melage/resource/theme/rc/transparent@2x.png +0 -0
  383. melage/resource/theme/rc/transparent_disabled.png +0 -0
  384. melage/resource/theme/rc/transparent_disabled@2x.png +0 -0
  385. melage/resource/theme/rc/transparent_focus.png +0 -0
  386. melage/resource/theme/rc/transparent_focus@2x.png +0 -0
  387. melage/resource/theme/rc/transparent_pressed.png +0 -0
  388. melage/resource/theme/rc/transparent_pressed@2x.png +0 -0
  389. melage/resource/theme/rc/window_close.png +0 -0
  390. melage/resource/theme/rc/window_close@2x.png +0 -0
  391. melage/resource/theme/rc/window_close_disabled.png +0 -0
  392. melage/resource/theme/rc/window_close_disabled@2x.png +0 -0
  393. melage/resource/theme/rc/window_close_focus.png +0 -0
  394. melage/resource/theme/rc/window_close_focus@2x.png +0 -0
  395. melage/resource/theme/rc/window_close_pressed.png +0 -0
  396. melage/resource/theme/rc/window_close_pressed@2x.png +0 -0
  397. melage/resource/theme/rc/window_grip.png +0 -0
  398. melage/resource/theme/rc/window_grip@2x.png +0 -0
  399. melage/resource/theme/rc/window_grip_disabled.png +0 -0
  400. melage/resource/theme/rc/window_grip_disabled@2x.png +0 -0
  401. melage/resource/theme/rc/window_grip_focus.png +0 -0
  402. melage/resource/theme/rc/window_grip_focus@2x.png +0 -0
  403. melage/resource/theme/rc/window_grip_pressed.png +0 -0
  404. melage/resource/theme/rc/window_grip_pressed@2x.png +0 -0
  405. melage/resource/theme/rc/window_minimize.png +0 -0
  406. melage/resource/theme/rc/window_minimize@2x.png +0 -0
  407. melage/resource/theme/rc/window_minimize_disabled.png +0 -0
  408. melage/resource/theme/rc/window_minimize_disabled@2x.png +0 -0
  409. melage/resource/theme/rc/window_minimize_focus.png +0 -0
  410. melage/resource/theme/rc/window_minimize_focus@2x.png +0 -0
  411. melage/resource/theme/rc/window_minimize_pressed.png +0 -0
  412. melage/resource/theme/rc/window_minimize_pressed@2x.png +0 -0
  413. melage/resource/theme/rc/window_undock.png +0 -0
  414. melage/resource/theme/rc/window_undock@2x.png +0 -0
  415. melage/resource/theme/rc/window_undock_disabled.png +0 -0
  416. melage/resource/theme/rc/window_undock_disabled@2x.png +0 -0
  417. melage/resource/theme/rc/window_undock_focus.png +0 -0
  418. melage/resource/theme/rc/window_undock_focus@2x.png +0 -0
  419. melage/resource/theme/rc/window_undock_pressed.png +0 -0
  420. melage/resource/theme/rc/window_undock_pressed@2x.png +0 -0
  421. melage/resource/theme/style.qss +2223 -0
  422. melage/resource/tract.png +0 -0
  423. melage/resource/view1.png +0 -0
  424. melage/resource/view1_eco.png +0 -0
  425. melage/resource/view1_mri.png +0 -0
  426. melage/resource/view1_seg.png +0 -0
  427. melage/resource/view2.png +0 -0
  428. melage/resource/view2_seg.png +0 -0
  429. melage/resource/w.png +0 -0
  430. melage/resource/zoom_in.png +0 -0
  431. melage/resource/zoom_inFaded.png +0 -0
  432. melage/resource/zoom_out.png +0 -0
  433. melage/resource/zoom_outFaded.png +0 -0
  434. melage/some_notes.txt +3 -0
  435. melage/utils/DispalyIm.py +2788 -0
  436. melage/utils/GMM.py +720 -0
  437. melage/utils/Shaders_120.py +257 -0
  438. melage/utils/Shaders_330.py +314 -0
  439. melage/utils/Shaders_bu.py +314 -0
  440. melage/utils/__init__0.py +7 -0
  441. melage/utils/brain_extraction_helper.py +234 -0
  442. melage/utils/custom_QScrollBar.py +61 -0
  443. melage/utils/glScientific.py +1554 -0
  444. melage/utils/glScientific_bc.py +1585 -0
  445. melage/utils/readData.py +1061 -0
  446. melage/utils/registration.py +512 -0
  447. melage/utils/source_folder.py +18 -0
  448. melage/utils/utils.py +3808 -0
  449. melage/version.txt +1 -0
  450. melage/widgets/ApplyMask.py +212 -0
  451. melage/widgets/ChangeSystem.py +152 -0
  452. melage/widgets/DeepLModels/InfantSegment/Unet.py +464 -0
  453. melage/widgets/DeepLModels/NPP/dataset/mri_dataset_affine.py +149 -0
  454. melage/widgets/DeepLModels/NPP/models/checkpoints/npp_v1.pth.py +0 -0
  455. melage/widgets/DeepLModels/NPP/models/losses.py +146 -0
  456. melage/widgets/DeepLModels/NPP/models/model.py +272 -0
  457. melage/widgets/DeepLModels/NPP/models/utils.py +303 -0
  458. melage/widgets/DeepLModels/NPP/npp.py +116 -0
  459. melage/widgets/DeepLModels/NPP/requirements.txt +8 -0
  460. melage/widgets/DeepLModels/NPP/train/train.py +116 -0
  461. melage/widgets/DeepLModels/Unet3DAtt.py +657 -0
  462. melage/widgets/DeepLModels/Unet3D_basic.py +648 -0
  463. melage/widgets/DeepLModels/new_unet.py +652 -0
  464. melage/widgets/DeepLModels/new_unet_old.py +639 -0
  465. melage/widgets/DeepLModels/new_unet_old2.py +658 -0
  466. melage/widgets/HistImage.py +153 -0
  467. melage/widgets/ImageThresholding.py +222 -0
  468. melage/widgets/MaskOperations.py +147 -0
  469. melage/widgets/N4Dialog.py +241 -0
  470. melage/widgets/Segmentation/FCM.py +1553 -0
  471. melage/widgets/Segmentation/__init__.py +588 -0
  472. melage/widgets/Segmentation/utils.py +417 -0
  473. melage/widgets/SemiAutoSeg.py +666 -0
  474. melage/widgets/Synthstrip.py +141 -0
  475. melage/widgets/__init__0.py +5 -0
  476. melage/widgets/about.py +246 -0
  477. melage/widgets/activation.py +437 -0
  478. melage/widgets/activator.py +147 -0
  479. melage/widgets/be_dl.py +409 -0
  480. melage/widgets/be_dl_unet3d.py +441 -0
  481. melage/widgets/brain_extraction.py +855 -0
  482. melage/widgets/brain_extraction_dl.py +887 -0
  483. melage/widgets/brain_extraction_dl_bu.py +869 -0
  484. melage/widgets/colorwidget.py +100 -0
  485. melage/widgets/dockWidgets.py +2005 -0
  486. melage/widgets/enhanceImWidget.py +109 -0
  487. melage/widgets/fileDialog_widget.py +275 -0
  488. melage/widgets/iminfo.py +346 -0
  489. melage/widgets/mainwindow_widget.py +6775 -0
  490. melage/widgets/melageAbout.py +123 -0
  491. melage/widgets/openglWidgets.py +556 -0
  492. melage/widgets/registrationWidget.py +342 -0
  493. melage/widgets/repeat_widget.py +74 -0
  494. melage/widgets/screenshot_widget.py +138 -0
  495. melage/widgets/settings_widget.py +77 -0
  496. melage/widgets/tranformationWidget.py +275 -0
  497. melage-0.0.65.dist-info/METADATA +742 -0
  498. melage-0.0.65.dist-info/RECORD +501 -0
  499. melage-0.0.65.dist-info/WHEEL +5 -0
  500. melage-0.0.65.dist-info/entry_points.txt +2 -0
  501. melage-0.0.65.dist-info/top_level.txt +1 -0
@@ -0,0 +1,2005 @@
1
+ __AUTHOR__ = 'Bahram Jafrasteh'
2
+
3
+
4
+ import sys
5
+ sys.path.append("../")
6
+ from PyQt5 import QtWidgets, QtCore, QtGui
7
+ from functools import partial
8
+ from qtwidgets import AnimatedToggle
9
+ from melage.utils.utils import generate_color_scheme_info
10
+ from PyQt5 import Qt
11
+ import numpy as np
12
+ import os
13
+ colorNames =("#FFCC08","darkRed","red", "darkOrange", "orange", "#8b8b00","yellow",
14
+ "darkGreen","green","darkCyan","cyan",
15
+ "darkBlue","blue","magenta","darkMagenta", 'red')
16
+
17
+
18
+ from melage.utils.utils import read_txt_color, set_new_color_scheme, addTreeRoot, update_color_scheme, addLastColor, update_image_sch
19
+ from melage.utils.source_folder import source_folder
20
+
21
+
22
+ class dockWidgets():
23
+ """
24
+ This class has been implemented for dock widgets in MELAGE
25
+ """
26
+ def __init__(self):
27
+ pass
28
+
29
+ def createDockWidget(self, Main):
30
+ """
31
+ Creating main attributes for the main widgets
32
+ :param Main:
33
+ :return:
34
+ """
35
+ ################################################### Segmentation Intensity ##############################################
36
+ self.dockSegmentationIntensity = QtWidgets.QDockWidget(Main)
37
+ self.dockSegmentationIntensity.setObjectName("dockSegmentationIntensity")
38
+ self.dockSegmentationIntensity.setMinimumSize(QtCore.QSize(self.width()//8, self.height() // 12))
39
+
40
+ # Create main content widget
41
+ self.content_segInt = QtWidgets.QWidget()
42
+ self.content_segInt.setObjectName("content_segInt")
43
+
44
+ # Create layout for main content widget
45
+ self.gridLayout_segIn = QtWidgets.QGridLayout(self.content_segInt)
46
+ self.gridLayout_segIn.setObjectName("gridLayout_segIn")
47
+
48
+ # Create label and scroll bar
49
+ self.label_seg_intensity_title = QtWidgets.QLabel("Segmentation Intensity")
50
+ self.label_intensity_value = QtWidgets.QLabel("100")
51
+ self.label_intensity_value.setAlignment(QtCore.Qt.AlignCenter)
52
+ #self.gridLayout_segIn.addWidget(self.label_intensity_value, 0, 0, 1, 1)
53
+
54
+ self.scroll_intensity = QtWidgets.QScrollBar(QtCore.Qt.Horizontal)
55
+ self.scroll_intensity.setObjectName("scroll_intensity")
56
+ self.scroll_intensity.setRange(0, 100)
57
+ self.scroll_intensity.setValue(100)
58
+ self.scroll_intensity.setSingleStep(1)
59
+ #self.gridLayout_segIn.addWidget(self.scroll_intensity, 1, 0, 1, 1)
60
+ self.scroll_intensity.valueChanged.connect(self.label_intensity_value.setNum)
61
+
62
+
63
+ self.line_intensity = QtWidgets.QFrame()
64
+ self.line_intensity.setFrameShape(QtWidgets.QFrame.HLine)
65
+ self.line_intensity.setFrameShadow(QtWidgets.QFrame.Sunken)
66
+
67
+ # Create second label and scroll bar for image intensity
68
+ self.label_image_intensity_title = QtWidgets.QLabel("Image Intensity")
69
+
70
+ self.label_image_intensity_value = QtWidgets.QLabel("100")
71
+ self.label_image_intensity_value.setAlignment(QtCore.Qt.AlignCenter)
72
+
73
+ self.scroll_image_intensity = QtWidgets.QScrollBar(QtCore.Qt.Horizontal)
74
+ self.scroll_image_intensity.setObjectName("scroll_image_intensity")
75
+ self.scroll_image_intensity.setRange(0, 100)
76
+ self.scroll_image_intensity.setValue(100)
77
+ self.scroll_image_intensity.setSingleStep(1)
78
+ self.scroll_image_intensity.valueChanged.connect(self.label_image_intensity_value.setNum)
79
+
80
+ self.line_image_intensity = QtWidgets.QFrame()
81
+ self.line_image_intensity.setFrameShape(QtWidgets.QFrame.HLine)
82
+ self.line_image_intensity.setFrameShadow(QtWidgets.QFrame.Sunken)
83
+
84
+
85
+ # Group label and scroll bar in a horizontal layout
86
+ seg_group_layout = QtWidgets.QVBoxLayout()
87
+ seg_group_layout.addWidget(self.label_seg_intensity_title)
88
+ seg_group_layout.addWidget(self.label_intensity_value)
89
+ seg_group_layout.addWidget(self.scroll_intensity)
90
+ seg_group_layout.addWidget(self.line_intensity)
91
+
92
+ # Group second scroll bar and label in the same vertical layout
93
+ im_group_layout = QtWidgets.QVBoxLayout()
94
+ im_group_layout.addWidget(self.label_image_intensity_title)
95
+ im_group_layout.addWidget(self.label_image_intensity_value)
96
+ im_group_layout.addWidget(self.scroll_image_intensity)
97
+ im_group_layout.addWidget(self.line_image_intensity)
98
+
99
+ # Add the horizontal layout to the main grid layout
100
+ self.gridLayout_segIn.addLayout(seg_group_layout, 0, 0, 1, 1)
101
+ self.gridLayout_segIn.addLayout(im_group_layout, 1, 0, 1, 1)
102
+
103
+ # Set layout for main content widget
104
+ self.dockSegmentationIntensity.setWidget(self.content_segInt)
105
+
106
+ # Add dock widget to main window
107
+ #Main.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockSegmentationIntensity)
108
+ #self.dockSegmentationIntensity.setVisible(True)
109
+ #################################################################################################
110
+
111
+ self.dockImageEnh = QtWidgets.QDockWidget(Main)
112
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
113
+ sizePolicy.setHorizontalStretch(0)
114
+ sizePolicy.setVerticalStretch(0)
115
+ sizePolicy.setHeightForWidth(self.dockImageEnh.sizePolicy().hasHeightForWidth())
116
+ self.dockImageEnh.setSizePolicy(sizePolicy)
117
+ self.dockImageEnh.setMinimumSize(QtCore.QSize(self.width()//8, self.height() // 2))
118
+ self.dockImageEnh.setObjectName("dockImageEnh")
119
+ self.content_imageEnh = QtWidgets.QWidget()
120
+ self.content_imageEnh.setObjectName("content_imageEnh")
121
+
122
+
123
+ self.Settings_widget = QtWidgets.QWidget()
124
+ self.Settings_widget.setMinimumSize(QtCore.QSize(self.width()//8, self.height() // 2))
125
+
126
+ #sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
127
+ #sizePolicy.setHorizontalStretch(0)
128
+ #sizePolicy.setVerticalStretch(0)
129
+ #sizePolicy.setHeightForWidth(self.ImageEnh_view1.sizePolicy().hasHeightForWidth())
130
+ #self.ImageEnh_view1.setSizePolicy(sizePolicy)
131
+ self.Settings_widget.setObjectName("setting")
132
+ self.gridLayout_settings = QtWidgets.QGridLayout(self.Settings_widget)
133
+ self.gridLayout_settings.setObjectName("gridLayout_settings")
134
+
135
+
136
+
137
+
138
+ self.gridLayout_5 = QtWidgets.QGridLayout(self.content_imageEnh)
139
+ self.gridLayout_5.setObjectName("gridLayout_5")
140
+ self.main_toolbox = QtWidgets.QToolBox(self.content_imageEnh)
141
+ self.main_toolbox.setObjectName("main_toolbox")
142
+ self.main_toolbox.setMinimumSize(QtCore.QSize(self.width()//8, self.height() // 2))
143
+
144
+
145
+
146
+ #self.dockImageConf = QtWidgets.QDockWidget(Main)
147
+ #sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
148
+ #sizePolicy.setHorizontalStretch(0)
149
+ #sizePolicy.setVerticalStretch(0)
150
+ #sizePolicy.setHeightForWidth(self.dockImageConf.sizePolicy().hasHeightForWidth())
151
+ #self.dockImageConf.setSizePolicy(sizePolicy)
152
+ #self.dockImageConf.setMinimumSize(QtCore.QSize(200, 167))
153
+ #self.dockImageConf.setObjectName("dockImageConf")
154
+
155
+ #self.content_imageConf = QtWidgets.QWidget()
156
+ #self.content_imageConf.setObjectName("content_imageConf")
157
+ #self.gridLayout_imageConf = QtWidgets.QGridLayout(self.content_imageConf)
158
+ #self.gridLayout_imageConf.setObjectName("gridLayout_5")
159
+ #self.toolbox_imageConf = QtWidgets.QToolBox(self.content_imageConf)
160
+ #self.toolbox_imageConf.setObjectName("toolbox_imageConf")
161
+ #self.toolbox_imageConf.setMinimumSize(self.width() // 7, self.height()//2)
162
+ #self.gridLayout_imageConf.addWidget(self.toolbox_imageConf, 0, 0, 1, 1)
163
+
164
+
165
+ #########
166
+ ################ Widget MRI COLORS ####################################
167
+
168
+ self.page1_color = QtWidgets.QWidget()
169
+
170
+ self.page1_color.setGeometry(QtCore.QRect(0, 0, self.width()//8, self.height()//2))
171
+ self.page1_color.setObjectName("page")
172
+ self.gridLayout_color = QtWidgets.QVBoxLayout(self.page1_color)
173
+ self.gridLayout_color.setObjectName("gridLayout_view1")
174
+
175
+
176
+
177
+
178
+
179
+ # controls
180
+ self.line_text = QtWidgets.QLineEdit()
181
+ self.line_text.setPlaceholderText('Search...')
182
+
183
+ self.tags_model = SearchProxyModel()
184
+ self.tags_model.setSourceModel(QtGui.QStandardItemModel())
185
+ self.tags_model.setDynamicSortFilter(True)
186
+ self.tags_model.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive)
187
+
188
+
189
+ self.tree_colors = QtWidgets.QTreeView()
190
+ self.tree_colors.setSortingEnabled(True)
191
+ self.tree_colors.sortByColumn(0, QtCore.Qt.AscendingOrder)
192
+ # self.tree_colors.setColumnCount(2)
193
+ # self.tree_colors.setHeaderLabels(['', ''])
194
+ self.tree_colors.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
195
+ self.tree_colors.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
196
+ self.tree_colors.setHeaderHidden(False)
197
+ self.tree_colors.setRootIsDecorated(True)
198
+ self.tree_colors.setUniformRowHeights(True)
199
+ self.tree_colors.setModel(self.tags_model)
200
+
201
+ # layout
202
+ main_layout = QtWidgets.QVBoxLayout()
203
+
204
+ self.gridLayout_color.addWidget(self.line_text)
205
+ self.gridLayout_color.addWidget(self.tree_colors)
206
+
207
+
208
+ # signals
209
+ self.tree_colors.doubleClicked.connect(self._double_clicked)
210
+ self.line_text.textChanged.connect(partial(self.searchTreeChanged, 'color'))
211
+ self.tree_colors.itemDelegate().closeEditor.connect(self._on_closeEditor)
212
+ self.tree_colors.customContextMenuRequested.connect(self.ShowContextMenu_tree)
213
+ # init
214
+ model = self.tree_colors.model().sourceModel()
215
+ model.setColumnCount(2)
216
+ model.setHorizontalHeaderLabels(['Index', 'Name'])
217
+ self.tree_colors.sortByColumn(0, QtCore.Qt.AscendingOrder)
218
+
219
+
220
+
221
+
222
+
223
+ #self.gridLayout_color.addWidget(self.tree_colors, 1, 0, 1, 1)
224
+
225
+ self.main_toolbox.addItem(self.page1_color, "")
226
+ ###############
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+ self.ImageEnh_view1 = QtWidgets.QWidget()
240
+ self.ImageEnh_view1.setGeometry(QtCore.QRect(0, 0, self.width()//8, self.height()//2))
241
+
242
+ #sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
243
+ #sizePolicy.setHorizontalStretch(0)
244
+ #sizePolicy.setVerticalStretch(0)
245
+ #sizePolicy.setHeightForWidth(self.ImageEnh_view1.sizePolicy().hasHeightForWidth())
246
+ #self.ImageEnh_view1.setSizePolicy(sizePolicy)
247
+ self.ImageEnh_view1.setObjectName("page")
248
+ self.gridLayout_view1 = QtWidgets.QGridLayout(self.ImageEnh_view1)
249
+ self.gridLayout_view1.setObjectName("gridLayout_view1")
250
+
251
+ self.line_5 = QtWidgets.QFrame(self.ImageEnh_view1)
252
+ self.line_5.setFrameShape(QtWidgets.QFrame.HLine)
253
+ self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
254
+ self.line_5.setObjectName("line_5")
255
+ self.gridLayout_view1.addWidget(self.line_5, 0, 0, 1, 1)
256
+
257
+
258
+
259
+ self.lb_ft1_1 = QtWidgets.QLabel(self.ImageEnh_view1)
260
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
261
+ sizePolicy.setHorizontalStretch(0)
262
+ sizePolicy.setVerticalStretch(0)
263
+ sizePolicy.setHeightForWidth(self.lb_ft1_1.sizePolicy().hasHeightForWidth())
264
+ self.lb_ft1_1.setSizePolicy(sizePolicy)
265
+ self.lb_ft1_1.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
266
+ self.lb_ft1_1.setObjectName("lb_ft1_1")
267
+ self.gridLayout_view1.addWidget(self.lb_ft1_1, 1, 0, 1, 1)
268
+
269
+
270
+ self.lb_t1_1 = QtWidgets.QLabel(self.ImageEnh_view1)
271
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
272
+ sizePolicy.setHorizontalStretch(0)
273
+ sizePolicy.setVerticalStretch(0)
274
+ sizePolicy.setHeightForWidth(self.lb_t1_1.sizePolicy().hasHeightForWidth())
275
+ self.lb_t1_1.setSizePolicy(sizePolicy)
276
+ self.lb_t1_1.setAlignment(QtCore.Qt.AlignCenter)
277
+ self.lb_t1_1.setObjectName("lb_t1_1")
278
+ self.gridLayout_view1.addWidget(self.lb_t1_1, 2, 0, 1, 1)
279
+
280
+
281
+ self.hs_t1_1 = QtWidgets.QScrollBar(self.ImageEnh_view1)
282
+ self.hs_t1_1.setMinimum(-100)
283
+ self.hs_t1_1.setMaximum(100)
284
+ self.hs_t1_1.setOrientation(QtCore.Qt.Horizontal)
285
+ #self.hs_t1_1.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
286
+ self.hs_t1_1.setObjectName("hs_t1_1")
287
+ self.gridLayout_view1.addWidget(self.hs_t1_1, 3, 0, 1, 1)
288
+
289
+
290
+
291
+ self.line_6 = QtWidgets.QFrame(self.ImageEnh_view1)
292
+ self.line_6.setFrameShape(QtWidgets.QFrame.HLine)
293
+ self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
294
+ self.line_6.setObjectName("line_6")
295
+ self.gridLayout_view1.addWidget(self.line_6, 4, 0, 1, 1)
296
+
297
+
298
+ self.lb_ft1_2 = QtWidgets.QLabel(self.ImageEnh_view1)
299
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
300
+ sizePolicy.setHorizontalStretch(0)
301
+ sizePolicy.setVerticalStretch(0)
302
+ sizePolicy.setHeightForWidth(self.lb_ft1_2.sizePolicy().hasHeightForWidth())
303
+ self.lb_ft1_2.setSizePolicy(sizePolicy)
304
+ self.lb_ft1_2.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
305
+ self.lb_ft1_2.setObjectName("lb_ft1_2")
306
+ self.gridLayout_view1.addWidget(self.lb_ft1_2, 5, 0, 1, 1)
307
+
308
+
309
+
310
+ self.lb_t1_2 = QtWidgets.QLabel(self.ImageEnh_view1)
311
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
312
+ sizePolicy.setHorizontalStretch(0)
313
+ sizePolicy.setVerticalStretch(0)
314
+ sizePolicy.setHeightForWidth(self.lb_t1_2.sizePolicy().hasHeightForWidth())
315
+ self.lb_t1_2.setSizePolicy(sizePolicy)
316
+ self.lb_t1_2.setAlignment(QtCore.Qt.AlignCenter)
317
+ self.lb_t1_2.setObjectName("lb_t1_2")
318
+ self.gridLayout_view1.addWidget(self.lb_t1_2, 6, 0, 1, 1)
319
+
320
+
321
+ self.hs_t1_2 = QtWidgets.QScrollBar(self.ImageEnh_view1)
322
+ self.hs_t1_2.setMaximum(100)
323
+ self.hs_t1_2.setMinimum(-100)
324
+ self.hs_t1_2.setOrientation(QtCore.Qt.Horizontal)
325
+ #self.hs_t1_2.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
326
+ self.hs_t1_2.setObjectName("hs_t1_2")
327
+ self.gridLayout_view1.addWidget(self.hs_t1_2, 7, 0, 1, 1)
328
+
329
+
330
+
331
+ self.line_7 = QtWidgets.QFrame(self.ImageEnh_view1)
332
+ self.line_7.setFrameShape(QtWidgets.QFrame.HLine)
333
+ self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken)
334
+ self.line_7.setObjectName("line_7")
335
+ self.gridLayout_view1.addWidget(self.line_7, 8, 0, 1, 1)
336
+
337
+
338
+ self.lb_ft1_3 = QtWidgets.QLabel(self.ImageEnh_view1)
339
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
340
+ sizePolicy.setHorizontalStretch(0)
341
+ sizePolicy.setVerticalStretch(0)
342
+ sizePolicy.setHeightForWidth(self.lb_ft1_3.sizePolicy().hasHeightForWidth())
343
+ self.lb_ft1_3.setSizePolicy(sizePolicy)
344
+ self.lb_ft1_3.setObjectName("lb_ft1_3")
345
+ self.gridLayout_view1.addWidget(self.lb_ft1_3, 9, 0, 1, 1)
346
+
347
+
348
+
349
+ self.lb_t1_3 = QtWidgets.QLabel(self.ImageEnh_view1)
350
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
351
+ sizePolicy.setHorizontalStretch(0)
352
+ sizePolicy.setVerticalStretch(0)
353
+ sizePolicy.setHeightForWidth(self.lb_t1_3.sizePolicy().hasHeightForWidth())
354
+ self.lb_t1_3.setSizePolicy(sizePolicy)
355
+ self.lb_t1_3.setAlignment(QtCore.Qt.AlignCenter)
356
+ self.lb_t1_3.setObjectName("lb_t1_3")
357
+ self.gridLayout_view1.addWidget(self.lb_t1_3, 10, 0, 1, 1)
358
+
359
+
360
+
361
+ self.hs_t1_3 = QtWidgets.QScrollBar(self.ImageEnh_view1)
362
+ self.hs_t1_3.setMaximum(100)
363
+ self.hs_t1_3.setOrientation(QtCore.Qt.Horizontal)
364
+ #self.hs_t1_3.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
365
+ self.hs_t1_3.setObjectName("hs_t1_3")
366
+ self.gridLayout_view1.addWidget(self.hs_t1_3, 11, 0, 1, 1)
367
+
368
+ self.line_8 = QtWidgets.QFrame(self.ImageEnh_view1)
369
+ self.line_8.setFrameShape(QtWidgets.QFrame.HLine)
370
+ self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken)
371
+ self.line_8.setObjectName("line_8")
372
+ self.gridLayout_view1.addWidget(self.line_8, 12, 0, 1, 1)
373
+
374
+
375
+
376
+
377
+
378
+ self.lb_ft1_7 = QtWidgets.QLabel(self.ImageEnh_view1)
379
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
380
+ sizePolicy.setHorizontalStretch(0)
381
+ sizePolicy.setVerticalStretch(0)
382
+ sizePolicy.setHeightForWidth(self.lb_ft1_7.sizePolicy().hasHeightForWidth())
383
+ self.lb_ft1_7.setSizePolicy(sizePolicy)
384
+ self.lb_ft1_7.setObjectName("lb_ft1_7")
385
+ self.gridLayout_view1.addWidget(self.lb_ft1_7, 13, 0, 1, 1)
386
+
387
+
388
+ self.lb_t1_7 = QtWidgets.QLabel(self.ImageEnh_view1)
389
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
390
+ sizePolicy.setHorizontalStretch(0)
391
+ sizePolicy.setVerticalStretch(0)
392
+ sizePolicy.setHeightForWidth(self.lb_t1_7.sizePolicy().hasHeightForWidth())
393
+ self.lb_t1_7.setSizePolicy(sizePolicy)
394
+ self.lb_t1_7.setAlignment(QtCore.Qt.AlignCenter)
395
+ self.lb_t1_7.setObjectName("lb_t1_7")
396
+ self.gridLayout_view1.addWidget(self.lb_t1_7, 14, 0, 1, 1)
397
+
398
+
399
+
400
+ self.hs_t1_7 = QtWidgets.QScrollBar(self.ImageEnh_view1)
401
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
402
+ sizePolicy.setHorizontalStretch(0)
403
+ sizePolicy.setVerticalStretch(0)
404
+ sizePolicy.setHeightForWidth(self.hs_t1_7.sizePolicy().hasHeightForWidth())
405
+ self.hs_t1_7.setSizePolicy(sizePolicy)
406
+ self.hs_t1_7.setMinimum(0)
407
+ self.hs_t1_7.setMaximum(100)
408
+ self.hs_t1_7.setOrientation(QtCore.Qt.Horizontal)
409
+ #self.hs_t1_7.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
410
+ self.hs_t1_7.setObjectName("hs_t1_4")
411
+ self.gridLayout_view1.addWidget(self.hs_t1_7, 15, 0, 1, 1)
412
+
413
+
414
+ self.line_11 = QtWidgets.QFrame(self.ImageEnh_view1)
415
+ self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
416
+ self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
417
+ self.line_11.setObjectName("line_11")
418
+ self.gridLayout_view1.addWidget(self.line_11, 16, 0, 1, 1)
419
+
420
+
421
+
422
+ self.lb_ft1_4 = QtWidgets.QLabel(self.ImageEnh_view1)
423
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
424
+ sizePolicy.setHorizontalStretch(0)
425
+ sizePolicy.setVerticalStretch(0)
426
+ sizePolicy.setHeightForWidth(self.lb_ft1_4.sizePolicy().hasHeightForWidth())
427
+ self.lb_ft1_4.setSizePolicy(sizePolicy)
428
+ self.lb_ft1_4.setObjectName("lb_ft1_4")
429
+ self.gridLayout_view1.addWidget(self.lb_ft1_4, 17, 0, 1, 1)
430
+
431
+
432
+ self.lb_t1_4 = QtWidgets.QLabel(self.ImageEnh_view1)
433
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
434
+ sizePolicy.setHorizontalStretch(0)
435
+ sizePolicy.setVerticalStretch(0)
436
+ sizePolicy.setHeightForWidth(self.lb_t1_4.sizePolicy().hasHeightForWidth())
437
+ self.lb_t1_4.setSizePolicy(sizePolicy)
438
+ self.lb_t1_4.setAlignment(QtCore.Qt.AlignCenter)
439
+ self.lb_t1_4.setObjectName("lb_t1_4")
440
+ self.gridLayout_view1.addWidget(self.lb_t1_4, 18, 0, 1, 1)
441
+
442
+
443
+
444
+ self.hs_t1_4 = QtWidgets.QScrollBar(self.ImageEnh_view1)
445
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
446
+ sizePolicy.setHorizontalStretch(0)
447
+ sizePolicy.setVerticalStretch(0)
448
+ sizePolicy.setHeightForWidth(self.hs_t1_4.sizePolicy().hasHeightForWidth())
449
+ self.hs_t1_4.setSizePolicy(sizePolicy)
450
+ self.hs_t1_4.setMinimum(0)
451
+ self.hs_t1_4.setMaximum(100)
452
+ self.hs_t1_4.setOrientation(QtCore.Qt.Horizontal)
453
+ #self.hs_t1_4.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
454
+ self.hs_t1_4.setObjectName("hs_t1_4")
455
+ self.gridLayout_view1.addWidget(self.hs_t1_4, 19, 0, 1, 1)
456
+
457
+
458
+ self.line_11 = QtWidgets.QFrame(self.ImageEnh_view1)
459
+ self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
460
+ self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
461
+ self.line_11.setObjectName("line_11")
462
+ self.gridLayout_view1.addWidget(self.line_11, 20, 0, 1, 1)
463
+
464
+
465
+ self.lb_ft1_5 = QtWidgets.QLabel(self.ImageEnh_view1)
466
+ self.lb_ft1_5.setObjectName("lb_ft1_5")
467
+ self.gridLayout_view1.addWidget(self.lb_ft1_5, 21, 0, 1, 1)
468
+
469
+
470
+ ################### WIDGET COMBOX ROTATION ###########################
471
+
472
+ self.page1_rot_cor = QtWidgets.QComboBox(self.ImageEnh_view1)
473
+ cbstyle = """
474
+ QComboBox QAbstractItemView {border: 1px solid grey;
475
+ background: #03211c;
476
+ selection-background-color: #03211c;}
477
+ QComboBox {background: #03211c;margin-right: 1px;}
478
+ QComboBox::drop-down {
479
+ subcontrol-origin: margin;}
480
+ """
481
+ self.page1_rot_cor.setStyleSheet(cbstyle)
482
+ self.page1_rot_cor.setObjectName("dw2_cb")
483
+ self.page1_rot_cor.addItem("")
484
+ self.page1_rot_cor.addItem("")
485
+ self.page1_rot_cor.addItem("")
486
+
487
+
488
+ self.gridLayout_view1.addWidget(self.page1_rot_cor, 22, 0, 1, 1)
489
+
490
+
491
+ self.lb_t1_5 = QtWidgets.QLabel(self.ImageEnh_view1)
492
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
493
+ sizePolicy.setHorizontalStretch(0)
494
+ sizePolicy.setVerticalStretch(0)
495
+ sizePolicy.setHeightForWidth(self.lb_t1_5.sizePolicy().hasHeightForWidth())
496
+ self.lb_t1_5.setSizePolicy(sizePolicy)
497
+ self.lb_t1_5.setObjectName("lb_t1_5")
498
+ self.lb_t1_5.setAlignment(QtCore.Qt.AlignCenter)
499
+ self.gridLayout_view1.addWidget(self.lb_t1_5, 23, 0, 1, 1)
500
+
501
+
502
+ #self.hs_t1_5 = QtWidgets.QScrollBar(self.ImageEnh_view1)
503
+ self.hs_t1_5 = QtWidgets.QScrollBar(self.ImageEnh_view1)
504
+ #self.hs_t1_5.setPageStep(0.5)
505
+ self.hs_t1_5.setMinimum(-50)
506
+ self.hs_t1_5.setMaximum(50)
507
+ #self.hs_t1_5.setTickInterval(1)
508
+ self.hs_t1_5.setOrientation(QtCore.Qt.Horizontal)
509
+ #self.hs_t1_5.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
510
+ self.hs_t1_5.setObjectName("hs_t1_5")
511
+ self.gridLayout_view1.addWidget(self.hs_t1_5, 24, 0, 1, 1)
512
+
513
+
514
+
515
+ #self.page1_rot_cor = QtWidgets.QCheckBox(self.ImageEnh_view1)
516
+ #self.page1_rot_cor.setObjectName("page1_rot_cor")
517
+
518
+
519
+
520
+
521
+
522
+
523
+ self.line_ = QtWidgets.QFrame(self.ImageEnh_view1)
524
+ self.line_.setFrameShape(QtWidgets.QFrame.HLine)
525
+ self.line_.setFrameShadow(QtWidgets.QFrame.Sunken)
526
+ self.line_.setObjectName("line_")
527
+ self.gridLayout_view1.addWidget(self.line_, 25, 0, 1, 1)
528
+
529
+
530
+
531
+
532
+ self.page1_s2c = QtWidgets.QCheckBox(self.ImageEnh_view1)
533
+ self.page1_s2c.setObjectName("page1_s2c")
534
+ self.gridLayout_view1.addWidget(self.page1_s2c, 26, 0, 1, 1)
535
+
536
+
537
+
538
+
539
+
540
+ self.line_10 = QtWidgets.QFrame(self.ImageEnh_view1)
541
+ self.line_10.setFrameShape(QtWidgets.QFrame.HLine)
542
+ self.line_10.setFrameShadow(QtWidgets.QFrame.Sunken)
543
+ self.line_10.setObjectName("line_10")
544
+ self.gridLayout_view1.addWidget(self.line_10, 27, 0, 1, 1)
545
+
546
+ self.lb_ft1_6 = QtWidgets.QLabel(self.ImageEnh_view1)
547
+ self.lb_ft1_6.setObjectName("lb_ft1_6")
548
+ self.gridLayout_view1.addWidget(self.lb_ft1_6, 28, 0, 1, 1)
549
+
550
+ self.toggle1_1 = AnimatedToggle(
551
+ checked_color="#FFB000",
552
+ pulse_checked_color="#44FFB000"
553
+ )
554
+
555
+ self.toggle1_1.setObjectName('toggle1_1')
556
+
557
+ self.gridLayout_view1.addWidget(self.toggle1_1, 29, 0, 1, 1)
558
+
559
+
560
+ self.line_11 = QtWidgets.QFrame(self.ImageEnh_view1)
561
+ self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
562
+ self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
563
+ self.line_11.setObjectName("line_10")
564
+ self.gridLayout_view1.addWidget(self.line_11, 30, 0, 1, 1)
565
+
566
+
567
+ #self.colorize = QtWidgets.QCheckBox(self.ImageEnh_view1)
568
+ #self.colorize.setObjectName("Colorize")
569
+ #self.gridLayout_view1.addWidget(self.colorize, 31, 0, 1, 1)
570
+
571
+
572
+
573
+ # self.hs_t1_5 = QtWidgets.QScrollBar(self.ImageEnh_view1)
574
+ #self.hs_t1_8 = QtWidgets.QScrollBar(self.ImageEnh_view1)
575
+ #self.hs_t1_8.setPageStep(0.5)
576
+ #self.hs_t1_8.setMinimum(2)
577
+ #self.hs_t1_8.setMaximum(50)
578
+ #self.hs_t1_8.setValue(0)
579
+
580
+ # self.hs_t1_5.setTickInterval(1)
581
+ #self.hs_t1_8.setOrientation(QtCore.Qt.Horizontal)
582
+ # self.hs_t1_5.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
583
+ #self.hs_t1_8.setObjectName("hs_t1_8")
584
+ #self.gridLayout_view1.addWidget(self.hs_t1_8, 33, 0, 1, 1)
585
+
586
+
587
+
588
+ self.main_toolbox.addItem(self.ImageEnh_view1, "")
589
+
590
+
591
+ ########### PAGE 1 MRI ################
592
+
593
+ self.page1_mri = QtWidgets.QWidget()
594
+ #palet = QtGui.QPalette()
595
+ #palet.setColor(QtGui.QPalette.Window, QtCore.Qt.blue)
596
+ #self.page1_mri.setStyleSheet("background-color: black")
597
+ #self.page1_mri.setAutoFillBackground(True);
598
+ #self.page1_mri.setPalette(palet)
599
+ self.page1_mri.setGeometry(QtCore.QRect(0, 0, self.width()//8, self.height()//2))
600
+ #sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
601
+ #sizePolicy.setHorizontalStretch(0)
602
+ #sizePolicy.setVerticalStretch(0)
603
+ #sizePolicy.setHeightForWidth(self.page1_mri.sizePolicy().hasHeightForWidth())
604
+ #self.page1_mri.setSizePolicy(sizePolicy)
605
+ self.page1_mri.setObjectName("page")
606
+ self.gridLayout_8 = QtWidgets.QGridLayout(self.page1_mri)
607
+ self.gridLayout_8.setObjectName("gridLayout_view1")
608
+
609
+ self.line_5 = QtWidgets.QFrame(self.page1_mri)
610
+ self.line_5.setStyleSheet('background-color: rgb(50,50,50)')
611
+ self.line_5.setFrameShape(QtWidgets.QFrame.HLine)
612
+ self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
613
+ self.line_5.setObjectName("line_5")
614
+ self.gridLayout_8.addWidget(self.line_5, 0, 0, 1, 1)
615
+
616
+ self.lb_ft2_1 = QtWidgets.QLabel(self.page1_mri)
617
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
618
+ sizePolicy.setHorizontalStretch(0)
619
+ sizePolicy.setVerticalStretch(0)
620
+ sizePolicy.setHeightForWidth(self.lb_ft2_1.sizePolicy().hasHeightForWidth())
621
+ self.lb_ft2_1.setSizePolicy(sizePolicy)
622
+ self.lb_ft2_1.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
623
+ self.lb_ft2_1.setObjectName("lb_ft2_1")
624
+ self.gridLayout_8.addWidget(self.lb_ft2_1, 1, 0, 1, 1)
625
+
626
+ self.lb_t2_1 = QtWidgets.QLabel(self.page1_mri)
627
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
628
+ sizePolicy.setHorizontalStretch(0)
629
+ sizePolicy.setVerticalStretch(0)
630
+ sizePolicy.setHeightForWidth(self.lb_t2_1.sizePolicy().hasHeightForWidth())
631
+ self.lb_t2_1.setSizePolicy(sizePolicy)
632
+ self.lb_t2_1.setAlignment(QtCore.Qt.AlignCenter)
633
+ self.lb_t2_1.setObjectName("lb_t2_1")
634
+ self.gridLayout_8.addWidget(self.lb_t2_1, 2, 0, 1, 1)
635
+
636
+ self.hs_t2_1 = QtWidgets.QScrollBar(self.page1_mri)
637
+ self.hs_t2_1.setMinimum(-100)
638
+ self.hs_t2_1.setMaximum(100)
639
+ self.hs_t2_1.setOrientation(QtCore.Qt.Horizontal)
640
+ #self.hs_t2_1.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
641
+ self.hs_t2_1.setObjectName("hs_t2_1")
642
+ self.gridLayout_8.addWidget(self.hs_t2_1, 3, 0, 1, 1)
643
+
644
+ self.line_6 = QtWidgets.QFrame(self.page1_mri)
645
+ self.line_6.setFrameShape(QtWidgets.QFrame.HLine)
646
+ self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
647
+ self.line_6.setObjectName("line_6")
648
+ self.gridLayout_8.addWidget(self.line_6, 4, 0, 1, 1)
649
+
650
+ self.lb_ft2_2 = QtWidgets.QLabel(self.page1_mri)
651
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
652
+ sizePolicy.setHorizontalStretch(0)
653
+ sizePolicy.setVerticalStretch(0)
654
+ sizePolicy.setHeightForWidth(self.lb_ft2_2.sizePolicy().hasHeightForWidth())
655
+ self.lb_ft2_2.setSizePolicy(sizePolicy)
656
+ self.lb_ft2_2.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
657
+ self.lb_ft2_2.setObjectName("lb_ft2_2")
658
+ self.gridLayout_8.addWidget(self.lb_ft2_2, 5, 0, 1, 1)
659
+
660
+ self.lb_t2_2 = QtWidgets.QLabel(self.page1_mri)
661
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
662
+ sizePolicy.setHorizontalStretch(0)
663
+ sizePolicy.setVerticalStretch(0)
664
+ sizePolicy.setHeightForWidth(self.lb_t2_2.sizePolicy().hasHeightForWidth())
665
+ self.lb_t2_2.setSizePolicy(sizePolicy)
666
+ self.lb_t2_2.setAlignment(QtCore.Qt.AlignCenter)
667
+ self.lb_t2_2.setObjectName("lb_t2_2")
668
+ self.gridLayout_8.addWidget(self.lb_t2_2, 6, 0, 1, 1)
669
+
670
+ self.hs_t2_2 = QtWidgets.QScrollBar(self.page1_mri)
671
+ self.hs_t2_2.setMaximum(100)
672
+ self.hs_t2_2.setMinimum(-100)
673
+ self.hs_t2_2.setOrientation(QtCore.Qt.Horizontal)
674
+ #self.hs_t2_2.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
675
+ self.hs_t2_2.setObjectName("hs_t2_2")
676
+ self.gridLayout_8.addWidget(self.hs_t2_2, 7, 0, 1, 1)
677
+
678
+ self.line_7 = QtWidgets.QFrame(self.page1_mri)
679
+ self.line_7.setFrameShape(QtWidgets.QFrame.HLine)
680
+ self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken)
681
+ self.line_7.setObjectName("line_7")
682
+ self.gridLayout_8.addWidget(self.line_7, 8, 0, 1, 1)
683
+
684
+ self.lb_ft2_3 = QtWidgets.QLabel(self.page1_mri)
685
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
686
+ sizePolicy.setHorizontalStretch(0)
687
+ sizePolicy.setVerticalStretch(0)
688
+ sizePolicy.setHeightForWidth(self.lb_ft2_3.sizePolicy().hasHeightForWidth())
689
+ self.lb_ft2_3.setSizePolicy(sizePolicy)
690
+ self.lb_ft2_3.setObjectName("lb_ft2_3")
691
+ self.gridLayout_8.addWidget(self.lb_ft2_3, 9, 0, 1, 1)
692
+
693
+ self.lb_t2_3 = QtWidgets.QLabel(self.page1_mri)
694
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
695
+ sizePolicy.setHorizontalStretch(0)
696
+ sizePolicy.setVerticalStretch(0)
697
+ sizePolicy.setHeightForWidth(self.lb_t2_3.sizePolicy().hasHeightForWidth())
698
+ self.lb_t2_3.setSizePolicy(sizePolicy)
699
+ self.lb_t2_3.setAlignment(QtCore.Qt.AlignCenter)
700
+ self.lb_t2_3.setObjectName("lb_t2_3")
701
+ self.gridLayout_8.addWidget(self.lb_t2_3, 10, 0, 1, 1)
702
+
703
+ self.hs_t2_3 = QtWidgets.QScrollBar(self.page1_mri)
704
+ self.hs_t2_3.setMaximum(100)
705
+ self.hs_t2_3.setOrientation(QtCore.Qt.Horizontal)
706
+ #self.hs_t2_3.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
707
+ self.hs_t2_3.setObjectName("hs_t2_3")
708
+ self.gridLayout_8.addWidget(self.hs_t2_3, 11, 0, 1, 1)
709
+
710
+ self.line_8 = QtWidgets.QFrame(self.page1_mri)
711
+ self.line_8.setFrameShape(QtWidgets.QFrame.HLine)
712
+ self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken)
713
+ self.line_8.setObjectName("line_8")
714
+ self.gridLayout_8.addWidget(self.line_8, 12, 0, 1, 1)
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+ self.lb_ft2_7 = QtWidgets.QLabel(self.page1_mri)
723
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
724
+ sizePolicy.setHorizontalStretch(0)
725
+ sizePolicy.setVerticalStretch(0)
726
+ sizePolicy.setHeightForWidth(self.lb_ft2_7.sizePolicy().hasHeightForWidth())
727
+ self.lb_ft2_7.setSizePolicy(sizePolicy)
728
+ self.lb_ft2_7.setObjectName("lb_ft2_7")
729
+ self.gridLayout_8.addWidget(self.lb_ft2_7, 13, 0, 1, 1)
730
+
731
+
732
+ self.lb_t2_7 = QtWidgets.QLabel(self.page1_mri)
733
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
734
+ sizePolicy.setHorizontalStretch(0)
735
+ sizePolicy.setVerticalStretch(0)
736
+ sizePolicy.setHeightForWidth(self.lb_t2_7.sizePolicy().hasHeightForWidth())
737
+ self.lb_t2_7.setSizePolicy(sizePolicy)
738
+ self.lb_t2_7.setAlignment(QtCore.Qt.AlignCenter)
739
+ self.lb_t2_7.setObjectName("lb_t2_7")
740
+ self.gridLayout_8.addWidget(self.lb_t2_7, 14, 0, 1, 1)
741
+
742
+
743
+
744
+ self.hs_t2_7 = QtWidgets.QScrollBar(self.page1_mri)
745
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
746
+ sizePolicy.setHorizontalStretch(0)
747
+ sizePolicy.setVerticalStretch(0)
748
+ sizePolicy.setHeightForWidth(self.hs_t2_7.sizePolicy().hasHeightForWidth())
749
+ self.hs_t2_7.setSizePolicy(sizePolicy)
750
+ self.hs_t2_7.setMinimum(0)
751
+ self.hs_t2_7.setMaximum(100)
752
+ self.hs_t2_7.setOrientation(QtCore.Qt.Horizontal)
753
+ #self.hs_t2_7.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
754
+ self.hs_t2_7.setObjectName("hs_t2_7")
755
+ self.gridLayout_8.addWidget(self.hs_t2_7, 15, 0, 1, 1)
756
+
757
+
758
+ self.line_11 = QtWidgets.QFrame(self.page1_mri)
759
+ self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
760
+ self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
761
+ self.line_11.setObjectName("line_11")
762
+ self.gridLayout_8.addWidget(self.line_11, 16, 0, 1, 1)
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+ self.lb_ft2_4 = QtWidgets.QLabel(self.page1_mri)
771
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
772
+ sizePolicy.setHorizontalStretch(0)
773
+ sizePolicy.setVerticalStretch(0)
774
+ sizePolicy.setHeightForWidth(self.lb_ft2_4.sizePolicy().hasHeightForWidth())
775
+ self.lb_ft2_4.setSizePolicy(sizePolicy)
776
+ self.lb_ft2_4.setObjectName("lb_ft2_4")
777
+ self.gridLayout_8.addWidget(self.lb_ft2_4, 17, 0, 1, 1)
778
+
779
+ self.lb_t2_4 = QtWidgets.QLabel(self.page1_mri)
780
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
781
+ sizePolicy.setHorizontalStretch(0)
782
+ sizePolicy.setVerticalStretch(0)
783
+ sizePolicy.setHeightForWidth(self.lb_t2_4.sizePolicy().hasHeightForWidth())
784
+ self.lb_t2_4.setSizePolicy(sizePolicy)
785
+ self.lb_t2_4.setAlignment(QtCore.Qt.AlignCenter)
786
+ self.lb_t2_4.setObjectName("lb_t2_4")
787
+ self.gridLayout_8.addWidget(self.lb_t2_4, 18, 0, 1, 1)
788
+
789
+ self.hs_t2_4 = QtWidgets.QScrollBar(self.page1_mri)
790
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
791
+ sizePolicy.setHorizontalStretch(0)
792
+ sizePolicy.setVerticalStretch(0)
793
+ sizePolicy.setHeightForWidth(self.hs_t2_4.sizePolicy().hasHeightForWidth())
794
+ self.hs_t2_4.setSizePolicy(sizePolicy)
795
+ self.hs_t2_4.setMinimum(0)
796
+ self.hs_t2_4.setMaximum(100)
797
+ self.hs_t2_4.setOrientation(QtCore.Qt.Horizontal)
798
+ #self.hs_t2_4.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
799
+ self.hs_t2_4.setObjectName("hs_t2_4")
800
+ self.gridLayout_8.addWidget(self.hs_t2_4, 19, 0, 1, 1)
801
+
802
+ self.line_11 = QtWidgets.QFrame(self.page1_mri)
803
+ self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
804
+ self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
805
+ self.line_11.setObjectName("line_11")
806
+ self.gridLayout_8.addWidget(self.line_11, 20, 0, 1, 1)
807
+
808
+ self.lb_ft2_5 = QtWidgets.QLabel(self.page1_mri)
809
+ self.lb_ft2_5.setObjectName("lb_ft2_5")
810
+ self.gridLayout_8.addWidget(self.lb_ft2_5, 21, 0, 1, 1)
811
+
812
+
813
+ self.page2_rot_cor = QtWidgets.QComboBox(self.page1_mri)
814
+ cbstyle = """
815
+ QComboBox QAbstractItemView {border: 1px solid grey;
816
+ background: white;
817
+ selection-background-color: #03211c;}
818
+ QComboBox {background: #03211c;margin-right: 1px;}
819
+ QComboBox::drop-down {
820
+ subcontrol-origin: margin;}
821
+ """
822
+ self.page2_rot_cor.setStyleSheet(cbstyle)
823
+ self.page2_rot_cor.setObjectName("page2_rot_cor")
824
+ self.page2_rot_cor.addItem("")
825
+ self.page2_rot_cor.addItem("")
826
+ self.page2_rot_cor.addItem("")
827
+
828
+
829
+ self.gridLayout_8.addWidget(self.page2_rot_cor, 22, 0, 1, 1)
830
+
831
+ self.lb_t2_5 = QtWidgets.QLabel(self.page1_mri)
832
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
833
+ sizePolicy.setHorizontalStretch(0)
834
+ sizePolicy.setVerticalStretch(0)
835
+ sizePolicy.setHeightForWidth(self.lb_t2_5.sizePolicy().hasHeightForWidth())
836
+ self.lb_t2_5.setSizePolicy(sizePolicy)
837
+ self.lb_t2_5.setObjectName("lb_t2_5")
838
+ self.lb_t2_5.setAlignment(QtCore.Qt.AlignCenter)
839
+ self.gridLayout_8.addWidget(self.lb_t2_5, 23, 0, 1, 1)
840
+
841
+ #self.hs_t2_5 = QtWidgets.QScrollBar(self.page1_mri)
842
+ self.hs_t2_5 = QtWidgets.QScrollBar(self.page1_mri)
843
+ self.hs_t2_5.setMinimum(-25)
844
+ self.hs_t2_5.setMaximum(25)
845
+ #self.hs_t2_5.setTickInterval(1)
846
+ self.hs_t2_5.setOrientation(QtCore.Qt.Horizontal)
847
+ #self.hs_t2_5.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
848
+ self.hs_t2_5.setObjectName("hs_t2_5")
849
+ self.gridLayout_8.addWidget(self.hs_t2_5, 24, 0, 1, 1)
850
+
851
+ #self.page2_rot_cor = QtWidgets.QCheckBox(self.page1_mri)
852
+ #self.page2_rot_cor.setObjectName("page2_rot_cor")
853
+
854
+
855
+
856
+ line_ = QtWidgets.QFrame(self.page1_mri)
857
+ line_.setFrameShape(QtWidgets.QFrame.HLine)
858
+ line_.setFrameShadow(QtWidgets.QFrame.Sunken)
859
+ line_.setObjectName("line_")
860
+ self.gridLayout_8.addWidget(line_, 25, 0, 1, 1)
861
+
862
+
863
+ self.page2_s2c = QtWidgets.QCheckBox(self.page1_mri)
864
+ self.page2_s2c.setObjectName("page2_s2c")
865
+ self.gridLayout_8.addWidget(self.page2_s2c, 26, 0, 1, 1)
866
+
867
+ self.line_10 = QtWidgets.QFrame(self.page1_mri)
868
+ self.line_10.setFrameShape(QtWidgets.QFrame.HLine)
869
+ self.line_10.setFrameShadow(QtWidgets.QFrame.Sunken)
870
+ self.line_10.setObjectName("line_10")
871
+ self.gridLayout_8.addWidget(self.line_10, 27, 0, 1, 1)
872
+
873
+ self.lb_ft2_6 = QtWidgets.QLabel(self.page1_mri)
874
+ self.lb_ft2_6.setObjectName("lb_ft2_6")
875
+ self.gridLayout_8.addWidget(self.lb_ft2_6, 28, 0, 1, 1)
876
+
877
+ self.toggle2_1 = AnimatedToggle(
878
+ checked_color="#FFB000",
879
+ pulse_checked_color="#44FFB000"
880
+ )
881
+
882
+ self.toggle2_1.setObjectName('toggle2_1')
883
+
884
+ self.gridLayout_8.addWidget(self.toggle2_1, 29, 0, 1, 1)
885
+
886
+ self.line_11 = QtWidgets.QFrame(self.page1_mri)
887
+ self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
888
+ self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
889
+ self.line_11.setObjectName("line_10")
890
+ self.gridLayout_8.addWidget(self.line_11, 30, 0, 1, 1)
891
+
892
+
893
+
894
+
895
+ self.main_toolbox.addItem(self.page1_mri, "")
896
+
897
+
898
+
899
+
900
+
901
+ self.gridLayout_5.addWidget(self.main_toolbox, 0, 0, 1, 1)
902
+ self.dockImageEnh.setWidget(self.content_imageEnh)
903
+ Main.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockImageEnh)
904
+ self.dockImageEnh.setVisible(True)
905
+
906
+
907
+
908
+
909
+ self.page1_mri.setVisible(True)
910
+ self.ImageEnh_view1.setVisible(True)
911
+
912
+ self.hs_t1_1.valueChanged.connect(self.lb_t1_1.setNum)
913
+ self.hs_t1_2.valueChanged.connect(self.lb_t1_2.setNum)
914
+ self.hs_t1_3.valueChanged.connect(self.lb_t1_3.setNum)
915
+ self.hs_t1_4.valueChanged.connect(self.lb_t1_4.setNum)
916
+ self.hs_t1_5.valueChanged.connect(self.lb_t1_5.setNum)
917
+ self.hs_t1_7.valueChanged.connect(self.lb_t1_7.setNum)
918
+ #self.hs_t1_8.valueChanged.connect(self.lb_t1_8.setNum)
919
+
920
+
921
+ self.hs_t2_1.valueChanged.connect(self.lb_t2_1.setNum)
922
+ self.hs_t2_2.valueChanged.connect(self.lb_t2_2.setNum)
923
+ self.hs_t2_3.valueChanged.connect(self.lb_t2_3.setNum)
924
+ self.hs_t2_4.valueChanged.connect(self.lb_t2_4.setNum)
925
+ self.hs_t2_5.valueChanged.connect(self.lb_t2_5.setNum)
926
+ #self.hs_t2_8.valueChanged.connect(self.lb_t2_8.setNum)
927
+ self.hs_t2_7.valueChanged.connect(self.lb_t2_7.setNum)
928
+
929
+ ################ NEW WIDGET ####################################
930
+
931
+
932
+
933
+ #self.dw2_cb = QtWidgets.QComboBox(self.dockWidgetContents_2)
934
+ cbstyle = """
935
+ QComboBox QAbstractItemView {border: 1px solid grey;
936
+ background: white;
937
+ selection-background-color: blue;}
938
+ QComboBox {background: #03211c;margin-right: 1px;}
939
+ QComboBox::drop-down {
940
+ subcontrol-origin: margin;}
941
+ """
942
+ #self.dw2_cb.setStyleSheet(cbstyle)
943
+ #self.dw2_cb.setObjectName("dw2_cb")
944
+
945
+
946
+ #size = self.dw2_cb.style().pixelMetric(QtWidgets.QStyle.PM_SmallIconSize)
947
+ #pixmp = QtGui.QPixmap(size, size)
948
+ #color_name, color_index_rgb, _ = read_txt_color(source_folder+"/color/LUT_albert.txt", from_one=True)
949
+ #set_new_color_scheme(self, color_name, color_index_rgb)
950
+
951
+ self.color_name, self.color_index_rgb, _ = read_txt_color(source_folder+"/color/Simple.txt", mode= '', from_one=True)
952
+ #update_color_scheme(self, None, dialog=False, update_widget=False)
953
+ from collections import defaultdict
954
+ self.colorsCombinations = defaultdict(list)
955
+
956
+ for clrn, clr in zip(self.color_name, self.color_index_rgb):
957
+ colr = clr[1:]
958
+ colr[-1] = 1 # clr[0]
959
+ colr = list(colr)
960
+ self.colorsCombinations[int(clrn.split('_')[0])] = colr
961
+ last_color = '9876_Combined'
962
+ if last_color not in self.color_name:
963
+ addLastColor(self, last_color)
964
+
965
+ #self.populate_tree(tags, model.invisibleRootItem())
966
+ set_new_color_scheme(self)
967
+
968
+
969
+ self.tree_colors.model().sourceModel().itemChanged.connect(self.changeColorPen)
970
+
971
+ #####
972
+
973
+
974
+ """
975
+
976
+ self.colorsCombinations = defaultdict(list)
977
+ for i in range(16):
978
+ pixmp.fill(QtGui.QColor(colorNames[i]))
979
+ if i == 14:
980
+ self.colorsCombinations[i+1] = (1,1,1,1)
981
+ else:
982
+ self.colorsCombinations[i + 1] = QtGui.QColor(colorNames[i]).getRgbF()
983
+ self.dw2_cb.setItemData(i, pixmp, QtCore.Qt.DecorationRole)
984
+ """
985
+
986
+
987
+ ################### WIDGET 3 #############################
988
+ self.dockWidget_3 = QtWidgets.QDockWidget(Main)
989
+ self.dockWidget_3.setObjectName("dockWidget_3")
990
+ #self.dockWidget_3.setWindowState(QtCore.Qt.WindowMinimized)
991
+ #self.dockWidget_3.setFloating(True)
992
+ self.dockWidgetContents_3 = QtWidgets.QWidget()
993
+ self.dockWidgetContents_3.setObjectName("dockWidgetContents_3")
994
+ self.formLayout_3 = QtWidgets.QFormLayout(self.dockWidgetContents_3)
995
+ self.formLayout_3.setObjectName("formLayout_3")
996
+ self.progressBarSaving = QtWidgets.QProgressBar(self.dockWidgetContents_3)
997
+ self.progressBarSaving.setProperty("value", 24)
998
+
999
+ #self.progressBarSaving.setWindowState(QtCore.Qt.WindowMinimized)
1000
+ self.progressBarSaving.setObjectName("progressBar")
1001
+
1002
+ #self.progressBarSaving.setContextMenuPolicy(QtCore.Qt.PreventContextMenu)
1003
+ #self.dockWidget_3.setContextMenuPolicy(QtCore.Qt.PreventContextMenu)
1004
+ self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.progressBarSaving)
1005
+ self.dockWidget_3.setWidget(self.dockWidgetContents_3)
1006
+ Main.addDockWidget(QtCore.Qt.DockWidgetArea(8), self.dockWidget_3)
1007
+ self.dockWidget_3.setVisible(False)
1008
+
1009
+
1010
+
1011
+ ################### WIDGET 4 #############################
1012
+ self.dockWidget_4 = QtWidgets.QDockWidget(Main)
1013
+ self.dockWidget_4.setObjectName("dockWidget_4")
1014
+ self.dockWidgetContents_4 = QtWidgets.QWidget()
1015
+ self.dockWidgetContents_4.setObjectName("dockWidgetContents_3")
1016
+ self.formLayout_4 = QtWidgets.QFormLayout(self.dockWidgetContents_4)
1017
+ self.formLayout_4.setObjectName("formLayout_4")
1018
+
1019
+
1020
+ self.dw4_flb1 = QtWidgets.QLabel(self.dockWidgetContents_4)
1021
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
1022
+ sizePolicy.setHorizontalStretch(0)
1023
+ sizePolicy.setVerticalStretch(0)
1024
+ sizePolicy.setHeightForWidth(self.dw4_flb1.sizePolicy().hasHeightForWidth())
1025
+ self.dw4_flb1.setSizePolicy(sizePolicy)
1026
+ self.dw4_flb1.setAlignment(QtCore.Qt.AlignCenter)
1027
+ self.dw4_flb1.setObjectName("dw4_flb1")
1028
+
1029
+ self.dw4lb1 = QtWidgets.QLabel(self.dockWidgetContents_4)
1030
+ self.dw4lb1.setAlignment(QtCore.Qt.AlignCenter)
1031
+ self.dw4lb1.setObjectName("dw4lb1")
1032
+ self.dw4lb1.setText('50')
1033
+
1034
+ self.dw4_s1 = QtWidgets.QScrollBar(self.dockWidgetContents_4)
1035
+ self.dw4_s1.setOrientation(QtCore.Qt.Horizontal)
1036
+ #self.dw4_s1.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
1037
+ self.dw4_s1.setObjectName("dw4_s1")
1038
+ self.dw4_s1.setRange(0,100)
1039
+ self.dw4_s1.setValue(50)
1040
+
1041
+
1042
+ self.dw4_s1.setSingleStep(1)
1043
+
1044
+
1045
+ self.line4_11 = QtWidgets.QFrame(self.dockWidgetContents_4)
1046
+ self.line4_11.setFrameShape(QtWidgets.QFrame.HLine)
1047
+ self.line4_11.setFrameShadow(QtWidgets.QFrame.Sunken)
1048
+ self.line4_11.setObjectName("line4_11")
1049
+ #self.formLayout_4.addWidget(self.line4_11, 29, 0, 1, 1)
1050
+ self.formLayout_4.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.line4_11)
1051
+ self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.SpanningRole, self.dw4_s1)
1052
+
1053
+ self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.dw4lb1)
1054
+ self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.dw4_flb1)
1055
+
1056
+ self.dockWidget_4.setWidget(self.dockWidgetContents_4)
1057
+ Main.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget_4)
1058
+ self.dockWidget_4.setVisible(False)
1059
+ self.dw4_s1.valueChanged.connect(self.dw4lb1.setNum)
1060
+
1061
+
1062
+ ################### WIDGET 5 (track based) #############################
1063
+ self.dockWidget_5 = QtWidgets.QDockWidget(Main)
1064
+ self.dockWidget_5.setObjectName("dockWidget_5")
1065
+ self.dockWidgetContents_5 = QtWidgets.QWidget()
1066
+ self.dockWidgetContents_5.setObjectName("dockWidgetContents_5")
1067
+ self.formLayout_5 = QtWidgets.QFormLayout(self.dockWidgetContents_5)
1068
+ self.formLayout_5.setObjectName("formLayout_5")
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+ self.dw5_flb1 = QtWidgets.QLabel(self.dockWidgetContents_5)
1075
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
1076
+ sizePolicy.setHorizontalStretch(0)
1077
+ sizePolicy.setVerticalStretch(0)
1078
+ sizePolicy.setHeightForWidth(self.dw5_flb1.sizePolicy().hasHeightForWidth())
1079
+ self.dw5_flb1.setSizePolicy(sizePolicy)
1080
+ self.dw5_flb1.setAlignment(QtCore.Qt.AlignCenter)
1081
+ self.dw5_flb1.setObjectName("dw5_flb1")
1082
+
1083
+ self.dw5lb1 = QtWidgets.QLabel(self.dockWidgetContents_5)
1084
+ self.dw5lb1.setAlignment(QtCore.Qt.AlignCenter)
1085
+ self.dw5lb1.setObjectName("dw5lb1")
1086
+ self.dw5lb1.setText('0')
1087
+
1088
+ self.dw5_s1 = QtWidgets.QScrollBar(self.dockWidgetContents_5)
1089
+ self.dw5_s1.setOrientation(QtCore.Qt.Horizontal)
1090
+ #self.dw5_s1.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
1091
+ self.dw5_s1.setObjectName("dw5_s1")
1092
+ self.dw5_s1.setRange(0,100)
1093
+ self.dw5_s1.setValue(0)
1094
+
1095
+
1096
+ self.dw5_s1.setSingleStep(1)
1097
+
1098
+
1099
+ self.line5_11 = QtWidgets.QFrame(self.dockWidgetContents_5)
1100
+ self.line5_11.setFrameShape(QtWidgets.QFrame.HLine)
1101
+ self.line5_11.setFrameShadow(QtWidgets.QFrame.Sunken)
1102
+ self.line5_11.setObjectName("line5_11")
1103
+
1104
+
1105
+
1106
+ self.dw5_flb2 = QtWidgets.QLabel(self.dockWidgetContents_5)
1107
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
1108
+ sizePolicy.setHorizontalStretch(0)
1109
+ sizePolicy.setVerticalStretch(0)
1110
+ sizePolicy.setHeightForWidth(self.dw5_flb2.sizePolicy().hasHeightForWidth())
1111
+ self.dw5_flb2.setSizePolicy(sizePolicy)
1112
+ self.dw5_flb2.setAlignment(QtCore.Qt.AlignCenter)
1113
+ self.dw5_flb2.setObjectName("dw5_flb2")
1114
+
1115
+ self.dw5lb2 = QtWidgets.QLabel(self.dockWidgetContents_5)
1116
+ self.dw5lb2.setAlignment(QtCore.Qt.AlignCenter)
1117
+ self.dw5lb2.setObjectName("dw5lb1")
1118
+ self.dw5lb2.setText('0')
1119
+
1120
+ self.dw5_s2 = QtWidgets.QScrollBar(self.dockWidgetContents_5)
1121
+ self.dw5_s2.setOrientation(QtCore.Qt.Horizontal)
1122
+ #self.dw5_s1.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
1123
+ self.dw5_s2.setObjectName("dw5_s2")
1124
+ self.dw5_s2.setRange(0,100)
1125
+ self.dw5_s2.setValue(0)
1126
+
1127
+
1128
+ self.dw5_s2.setSingleStep(1)
1129
+
1130
+
1131
+ #self.formLayout_5.addWidget(self.line5_11, 29, 0, 1, 1)
1132
+ self.formLayout_5.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.line5_11)
1133
+ self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.SpanningRole, self.dw5_s1)
1134
+
1135
+ self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.dw5lb1)
1136
+ self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.dw5_flb1)
1137
+
1138
+
1139
+ self.formLayout_5.setWidget(4, QtWidgets.QFormLayout.SpanningRole, self.dw5lb2)
1140
+ self.formLayout_5.setWidget(5, QtWidgets.QFormLayout.SpanningRole, self.dw5_s2)
1141
+ self.formLayout_5.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.dw5_flb2)
1142
+ self.formLayout_5.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.line5_11)
1143
+
1144
+ self.dockWidget_5.setWidget(self.dockWidgetContents_5)
1145
+ Main.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget_5)
1146
+ self.dockWidget_5.setVisible(False)
1147
+ self.dw5_s1.valueChanged.connect(self.dw5lb1.setNum)
1148
+ self.dw5_s2.valueChanged.connect(self.dw5lb2.setNum)
1149
+
1150
+ ################### WIDGET Color Intensity #############################
1151
+
1152
+ #self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.dw2_cb)
1153
+ self.dw2_flb1 = QtWidgets.QLabel(self.Settings_widget)
1154
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
1155
+ sizePolicy.setHorizontalStretch(0)
1156
+ sizePolicy.setVerticalStretch(0)
1157
+ sizePolicy.setHeightForWidth(self.dw2_flb1.sizePolicy().hasHeightForWidth())
1158
+ self.dw2_flb1.setSizePolicy(sizePolicy)
1159
+ self.dw2_flb1.setAlignment(QtCore.Qt.AlignCenter)
1160
+ self.dw2_flb1.setObjectName("dw2_flb1")
1161
+ self.gridLayout_settings.addWidget(self.dw2_flb1, 0, 0, 1, 1)
1162
+
1163
+ #self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.dw2_flb1)
1164
+ self.dw2lb1 = QtWidgets.QLabel(self.Settings_widget)
1165
+ self.dw2lb1.setAlignment(QtCore.Qt.AlignCenter)
1166
+ self.dw2lb1.setObjectName("dw2lb1")
1167
+ self.gridLayout_settings.addWidget(self.dw2lb1, 1, 0, 1, 1)
1168
+ #self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.SpanningRole, self.dw2lb1)
1169
+ self.dw2_s1 = QtWidgets.QScrollBar(self.Settings_widget)
1170
+ self.dw2_s1.setOrientation(QtCore.Qt.Horizontal)
1171
+ #self.dw2_s1.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
1172
+ self.dw2_s1.setObjectName("dw2_s1")
1173
+ self.dw2_s1.setRange(1,600)
1174
+ self.dw2_s1.setSingleStep(1)
1175
+ #self.formLayout_2.setWidget(5, QtWidgets.QFormLayout.SpanningRole, self.dw2_s1)
1176
+ self.gridLayout_settings.addWidget(self.dw2_s1, 2, 0, 1, 1)
1177
+
1178
+
1179
+ self.dw2lb2 = QtWidgets.QLabel(self.Settings_widget)
1180
+ self.dw2lb2.setAlignment(QtCore.Qt.AlignCenter)
1181
+ self.dw2lb2.setObjectName("dw2lb2")
1182
+ self.gridLayout_settings.addWidget(self.dw2lb2, 3, 0, 1, 1)
1183
+ #self.formLayout_2.setWidget(6, QtWidgets.QFormLayout.SpanningRole, self.dw2lb2)
1184
+
1185
+ self.dw2_s2 = QtWidgets.QScrollBar(self.Settings_widget)
1186
+ self.dw2_s2.setOrientation(QtCore.Qt.Horizontal)
1187
+ #self.dw2_s1.setTickPosition(QtWidgets.QScrollBar.TicksBothSides)
1188
+ self.dw2_s2.setObjectName("dw2_s1")
1189
+ self.dw2_s2.setRange(0,10)
1190
+ self.dw2_s2.setSingleStep(1)
1191
+ #self.formLayout_2.setWidget(7, QtWidgets.QFormLayout.SpanningRole, self.dw2_s2)
1192
+ self.gridLayout_settings.addWidget(self.dw2_s2, 4, 0, 1, 1)
1193
+
1194
+
1195
+ self.dw2_l1 = QtWidgets.QFrame(self.Settings_widget)
1196
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
1197
+ sizePolicy.setHorizontalStretch(0)
1198
+ sizePolicy.setVerticalStretch(0)
1199
+ sizePolicy.setHeightForWidth(self.dw2_l1.sizePolicy().hasHeightForWidth())
1200
+ self.dw2_l1.setSizePolicy(sizePolicy)
1201
+ self.dw2_l1.setMinimumSize(QtCore.QSize(self.width()//8, self.height() // 2))
1202
+ self.dw2_l1.setFrameShape(QtWidgets.QFrame.HLine)
1203
+ self.dw2_l1.setFrameShadow(QtWidgets.QFrame.Sunken)
1204
+ self.dw2_l1.setObjectName("dw2_l1")
1205
+ #self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.SpanningRole, self.dw2_l1)
1206
+ self.gridLayout_settings.addWidget(self.dw2_l1, 5, 0, 1, 1)
1207
+ self.dw2_l2 = QtWidgets.QFrame(self.Settings_widget)
1208
+ self.dw2_l2.setMinimumSize(QtCore.QSize(self.width()//8, self.height() // 2))
1209
+ self.dw2_l2.setFrameShape(QtWidgets.QFrame.HLine)
1210
+ self.dw2_l2.setFrameShadow(QtWidgets.QFrame.Sunken)
1211
+ self.dw2_l2.setObjectName("dw2_l2")
1212
+ self.gridLayout_settings.addWidget(self.dw2_l2, 6, 0, 1, 1)
1213
+ #self.formLayout_2.setWidget(8, QtWidgets.QFormLayout.SpanningRole, self.dw2_l2)
1214
+
1215
+
1216
+
1217
+ self.dw2_s1.valueChanged.connect(self.dw2lb1.setNum)
1218
+ self.dw2_s2.valueChanged.connect(self.dw2lb2.setNum)
1219
+
1220
+ #self.dwIntensitylS1.valueChanged.connect(self.dwIntensitylb1.setNum)
1221
+
1222
+ #self.formLayout_4.addWidget(self.line4_11, 29, 0, 1, 1)
1223
+ #self.formLayout_intensity.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.lineInten_11)
1224
+ #self.formLayout_intensity.setWidget(1, QtWidgets.QFormLayout.SpanningRole, self.dwIntensitylS1)
1225
+
1226
+ #self.formLayout_intensity.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.dwIntensitylb1)
1227
+ #self.formLayout_intensity.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.dwintensity_flb1)
1228
+
1229
+ #self.dockWidget_colorintensity.setWidget(self.dockWidgetContents_intensity)
1230
+ #Main.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget_colorintensity)
1231
+ #self.dockWidget_colorintensity.setVisible(True)
1232
+
1233
+
1234
+
1235
+
1236
+ ############################# WIDGET TABLE ######################################
1237
+
1238
+ self.dock_widget_table = QtWidgets.QDockWidget(Main)
1239
+ self.dock_widget_table.setObjectName("dock_widget_table")
1240
+ self.dock_widget_table.setVisible(False)
1241
+
1242
+ dock_widget_content_table = QtWidgets.QWidget()
1243
+
1244
+ dock_widget_content_table.setObjectName("dock_widget_content_table")
1245
+ gridLayout_6 = QtWidgets.QGridLayout(dock_widget_content_table)
1246
+ gridLayout_6.setObjectName("gridLayout_6")
1247
+ #self.table_widget = QtWidgets.QTableWidget(dock_widget_content_table)
1248
+ self.table_widget = QtWidgets.QTableWidget(dock_widget_content_table)
1249
+ self.table_widget.setRowCount(25)
1250
+ self.table_widget.setColumnCount(2)
1251
+ self.table_widget.setEditTriggers(Qt.QAbstractItemView.NoEditTriggers)
1252
+
1253
+ self.table_widget.setObjectName("table_widget")
1254
+ item = QtWidgets.QTableWidgetItem()
1255
+ self.table_widget.setHorizontalHeaderItem(0, item)
1256
+ item = QtWidgets.QTableWidgetItem()
1257
+ self.table_widget.setHorizontalHeaderItem(1, item)
1258
+ item = QtWidgets.QTableWidgetItem()
1259
+ self.table_widget.setHorizontalHeaderItem(2, item)
1260
+ item = QtWidgets.QTableWidgetItem()
1261
+ self.table_widget.setHorizontalHeaderItem(3, item)
1262
+ item = QtWidgets.QTableWidgetItem()
1263
+ self.table_widget.setHorizontalHeaderItem(4, item)
1264
+ item = QtWidgets.QTableWidgetItem()
1265
+ self.table_widget.setHorizontalHeaderItem(5, item)
1266
+ item = QtWidgets.QTableWidgetItem()
1267
+ self.table_widget.setItem(0, 0, item)
1268
+ gridLayout_6.addWidget(self.table_widget, 0, 1, 1, 1)
1269
+ splitter_2 = QtWidgets.QSplitter(dock_widget_content_table)
1270
+ splitter_2.setOrientation(QtCore.Qt.Horizontal)
1271
+
1272
+ self.table_update = QtWidgets.QPushButton(splitter_2)
1273
+ self.table_update.setObjectName("table_update")
1274
+ self.table_link = QtWidgets.QPushButton(splitter_2)
1275
+ self.table_link.setObjectName("table_link")
1276
+ self.table_link.setCheckable(True)
1277
+
1278
+
1279
+ gridLayout_6.addWidget(splitter_2, 1, 1, 1, 1)
1280
+ self.dock_widget_table.setWidget(dock_widget_content_table)
1281
+ Main.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dock_widget_table)
1282
+
1283
+
1284
+
1285
+ _translate = QtCore.QCoreApplication.translate
1286
+ self.dock_widget_table.setWindowTitle(_translate("Main", "Table Link"))
1287
+
1288
+
1289
+ item = self.table_widget.horizontalHeaderItem(0)
1290
+ item.setText(_translate("Main", "XYZ_eco"))
1291
+ item = self.table_widget.horizontalHeaderItem(1)
1292
+ item.setText(_translate("Main", "XYZ_mri"))
1293
+
1294
+ __sortingEnabled = self.table_widget.isSortingEnabled()
1295
+ self.table_widget.setSortingEnabled(False)
1296
+ self.table_widget.setSortingEnabled(__sortingEnabled)
1297
+ self.table_link.setText(_translate("Main", "Link"))
1298
+ self.table_update.setText(_translate("Main", "Update"))
1299
+
1300
+ ############################# WIDGET TABLE Measure ######################################
1301
+
1302
+ self.dock_widget_measure = QtWidgets.QDockWidget(Main)
1303
+ self.dock_widget_measure.setObjectName("dock_widget_table")
1304
+ self.dock_widget_measure.setVisible(False)
1305
+
1306
+ dock_widget_content_table = QtWidgets.QWidget()
1307
+
1308
+ dock_widget_content_table.setObjectName("dock_widget_content_table")
1309
+ gridLayout_view1 = QtWidgets.QGridLayout(dock_widget_content_table)
1310
+ gridLayout_view1.setObjectName("gridLayout_view1")
1311
+ # self.table_widget = QtWidgets.QTableWidget(dock_widget_content_table)
1312
+ self.table_widget_measure = QtWidgets.QTableWidget(dock_widget_content_table)
1313
+
1314
+ self.table_widget_measure.setRowCount(5)
1315
+ self.table_widget_measure.setColumnCount(8)
1316
+ self.table_widget_measure.setEditTriggers(Qt.QAbstractItemView.NoEditTriggers)
1317
+ self.table_widget_measure.setHorizontalHeaderLabels(['Description','ImType', 'Measure1', 'Measure2', 'Slice', 'WindowName', 'CenterXY', 'FileName'])
1318
+
1319
+ self.table_widget_measure.setObjectName("table_widget_measure")
1320
+ self.table_widget_measure.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
1321
+ self.table_widget_measure.customContextMenuRequested.connect(self.ShowContextMenu_table1)
1322
+
1323
+ gridLayout_view1.addWidget(self.table_widget_measure, 0, 1, 1, 1)
1324
+ splitter_2 = QtWidgets.QSplitter(dock_widget_content_table)
1325
+ splitter_2.setOrientation(QtCore.Qt.Horizontal)
1326
+
1327
+
1328
+ gridLayout_6.addWidget(splitter_2, 1, 1, 1, 1)
1329
+
1330
+ self.dock_widget_measure.setWidget(dock_widget_content_table)
1331
+ self.main_toolbox.addItem(self.dock_widget_measure, "")
1332
+ #Main.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dock_widget_measure)
1333
+
1334
+ _translate = QtCore.QCoreApplication.translate
1335
+ self.dock_widget_measure.setWindowTitle(_translate("Main", "Table Measure"))
1336
+
1337
+
1338
+ __sortingEnabled = self.table_widget.isSortingEnabled()
1339
+ self.table_widget_measure.setSortingEnabled(True)
1340
+ self.table_widget_measure.setSortingEnabled(__sortingEnabled)
1341
+
1342
+ ################################
1343
+
1344
+ ################# WIDGET_IMAGE############
1345
+ #########
1346
+ ################ Widget MRI COLORS ####################################
1347
+
1348
+ self.page1_images = QtWidgets.QWidget()
1349
+
1350
+ self.page1_images.setGeometry(QtCore.QRect(0, 0, self.width()//8, self.height()//2))
1351
+ self.page1_images.setObjectName("page")
1352
+ self.gridLayout_images = QtWidgets.QVBoxLayout(self.page1_images)
1353
+ self.gridLayout_images.setObjectName("gridLayout_view1")
1354
+
1355
+
1356
+
1357
+
1358
+
1359
+ # controls
1360
+ self.line_text_image = QtWidgets.QLineEdit()
1361
+ self.line_text_image.setPlaceholderText('Search...')
1362
+
1363
+ self.tags_model_image = SearchProxyModel()
1364
+ self.tags_model_image.setSourceModel(QtGui.QStandardItemModel())
1365
+ self.tags_model_image.setDynamicSortFilter(True)
1366
+
1367
+ self.tags_model_image.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive)
1368
+
1369
+
1370
+ self.tree_images = QtWidgets.QTreeView()
1371
+ self.tree_images.setSortingEnabled(True)
1372
+ self.tree_images.sortByColumn(1, QtCore.Qt.AscendingOrder)
1373
+ # self.tree_colors.setColumnCount(2)
1374
+ # self.tree_colors.setHeaderLabels(['', ''])
1375
+ self.tree_images.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
1376
+ self.tree_images.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
1377
+ self.tree_images.setHeaderHidden(False)
1378
+ self.tree_images.setRootIsDecorated(True)
1379
+ self.tree_images.setUniformRowHeights(True)
1380
+ self.tree_images.setModel(self.tags_model_image)
1381
+
1382
+ # layout
1383
+ #main_layout = QtWidgets.QVBoxLayout()
1384
+
1385
+ self.gridLayout_images.addWidget(self.line_text_image)
1386
+ self.gridLayout_images.addWidget(self.tree_images)
1387
+
1388
+
1389
+ # signals
1390
+ self.tree_images.doubleClicked.connect(self._double_clicked)
1391
+ self.line_text_image.textChanged.connect(partial(self.searchTreeChanged, 'image'))
1392
+ self.tree_images.itemDelegate().closeEditor.connect(self._on_closeEditor)
1393
+ self.tree_images.customContextMenuRequested.connect(self.ShowContextMenu_images)
1394
+ # init
1395
+ model = self.tree_images.model().sourceModel()
1396
+ model.setColumnCount(2)
1397
+ model.setHorizontalHeaderLabels(['Index', 'Name'])
1398
+ self.tree_images.sortByColumn(1, QtCore.Qt.AscendingOrder)
1399
+ self.imported_images = []
1400
+
1401
+
1402
+ self.tree_images.model().sourceModel().itemChanged.connect(self.changeImage)
1403
+
1404
+ #self.gridLayout_color.addWidget(self.tree_colors, 1, 0, 1, 1)
1405
+
1406
+ self.main_toolbox.addItem(self.page1_images, "")
1407
+ #self.toolbox_imageConf.addItem(self.page1_images, "")
1408
+
1409
+ #self.main_toolbox.addItem(self.dockWidget_2, "")
1410
+ self.main_toolbox.addItem(self.Settings_widget, "")
1411
+
1412
+ self.dockSegmentationIntensity.setWidget(self.content_segInt)
1413
+ Main.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockSegmentationIntensity)
1414
+ self.dockSegmentationIntensity.setVisible(True)
1415
+
1416
+
1417
+ ##################################
1418
+
1419
+
1420
+ # Extra
1421
+ self.dockImageEnh.setWindowTitle(_translate("Main", "Image Enhancement"))
1422
+ #self.dockImageConf.setWindowTitle(_translate("Main", "Settings"))
1423
+
1424
+
1425
+ self.dockWidget_3.setWindowTitle(_translate("Main", "Progress Bar"))
1426
+ self.dockWidget_4.setWindowTitle(_translate("Main", "Thresholding net"))
1427
+ self.dockWidget_5.setWindowTitle(_translate("Main", "Tracking Distance"))
1428
+ self.dockSegmentationIntensity.setWindowTitle(_translate("Main", "Color intensity"))
1429
+ self.lb_t1_4.setText(_translate("Main", "0"))
1430
+ self.lb_t1_3.setText(_translate("Main", "0"))
1431
+ self.lb_ft1_1.setText(_translate("Main", "Brightness"))
1432
+ self.dw5_flb1.setText(_translate("Main", "Track Distance"))
1433
+ self.dw5_flb2.setText(_translate("Main", "Track Width"))
1434
+ self.lb_t1_2.setText(_translate("Main", "0"))
1435
+ self.lb_ft1_2.setText(_translate("Main", "Contrast"))
1436
+ self.lb_ft1_3.setText(_translate("Main", "BandPass R1"))
1437
+ self.lb_ft1_4.setText(_translate("Main", "Sobel"))
1438
+ self.lb_ft1_5.setText(_translate("Main", "Rotate"))
1439
+
1440
+ self.lb_t1_1.setText(_translate("Main", "0"))
1441
+ self.main_toolbox.setItemText(self.main_toolbox.indexOf(self.ImageEnh_view1), _translate("Main", "View 1"))
1442
+
1443
+ self.main_toolbox.setItemText(self.main_toolbox.indexOf(self.dock_widget_measure), _translate("Main", "Tables"))
1444
+ self.main_toolbox.setItemText(self.main_toolbox.indexOf(self.page1_color), _translate("Main", "Color"))
1445
+ self.main_toolbox.setItemText(self.main_toolbox.indexOf(self.page1_images), _translate("Main", "Images"))
1446
+
1447
+ self.main_toolbox.setItemText(self.main_toolbox.indexOf(self.Settings_widget), _translate("Main", "Settings"))
1448
+ self.lb_ft2_1.setText(_translate("Main", "Brightness"))
1449
+ self.lb_t2_1.setText(_translate("Main", "0"))
1450
+ self.lb_ft2_2.setText(_translate("Main", "Contrast"))
1451
+ self.lb_t2_2.setText(_translate("Main", "0"))
1452
+ self.lb_ft2_3.setText(_translate("Main", "BandPass R1"))
1453
+ self.lb_t2_3.setText(_translate("Main", "0"))
1454
+ self.lb_ft2_4.setText(_translate("Main", "Sobel"))
1455
+ self.lb_ft2_5.setText(_translate("Main", "Rotate"))
1456
+ self.lb_t2_4.setText(_translate("Main", "0"))
1457
+ self.page2_s2c.setText(_translate("Main", "Sagittal2Coronal"))
1458
+ self.page1_s2c.setText(_translate("Main", "Sagittal2Coronal"))
1459
+ #self.page1_rot_cor.setText(_translate("Main", "Coronal Rotation"))
1460
+ #self.page2_rot_cor.setText(_translate("Main", "Coronal Rotation"))
1461
+ #self.colorize.setText(_translate("Main", "Colorize"))
1462
+ #self.colorize_MRI.setText(_translate("Main", "Colorize"))
1463
+ self.main_toolbox.setItemText(self.main_toolbox.indexOf(self.page1_mri), _translate("Main", "View 2"))
1464
+
1465
+ self.toggle1_1.setText(_translate("Main", "Toggle"))
1466
+ self.lb_ft1_6.setText(_translate("Main", "Hamming"))
1467
+ self.lb_ft2_6.setText(_translate("Main", "Hamming"))
1468
+
1469
+
1470
+ self.lb_ft1_7.setText(_translate("Main", "BandPass R2"))
1471
+ self.lb_t1_7.setText(_translate("Main", "0"))
1472
+ self.lb_ft2_7.setText(_translate("Main", "BandPass R2"))
1473
+ self.lb_t2_7.setText(_translate("Main", "0"))
1474
+
1475
+
1476
+ ################# WIDGET 2 ############################
1477
+
1478
+ self.page1_rot_cor.setItemText(0, _translate("Main", "Coronal"))
1479
+ self.page1_rot_cor.setItemText(1, _translate("Main", "Sagittal"))
1480
+ self.page1_rot_cor.setItemText(2, _translate("Main", "Axial"))
1481
+
1482
+ self.page2_rot_cor.setItemText(0, _translate("Main", "Coronal"))
1483
+ self.page2_rot_cor.setItemText(1, _translate("Main", "Sagittal"))
1484
+ self.page2_rot_cor.setItemText(2, _translate("Main", "Axial"))
1485
+
1486
+
1487
+ self.dw2_flb1.setText(_translate("Main", "Marker Size"))
1488
+ self.dw2lb1.setText(_translate("Main", "0"))
1489
+
1490
+
1491
+ def ShowContextMenu_table1(self, pos):
1492
+ """
1493
+ Context Menu of the segmentation table
1494
+ :param pos:
1495
+ :return:
1496
+ """
1497
+ index = self.table_widget_measure.indexAt(pos)
1498
+ if not index.isValid():
1499
+ return
1500
+ from PyQt5.QtWidgets import QMenu, QAction
1501
+ menu = QMenu("Color")
1502
+ add_action = menu.addAction("&Add")
1503
+ edit_action = menu.addAction("&Edit")
1504
+ export_action = menu.addAction('&Export')
1505
+ remove_action = menu.addAction("&Remove")
1506
+
1507
+ root = self.table_widget_measure
1508
+ action = menu.exec_(root.viewport().mapToGlobal(pos))
1509
+ if action == edit_action:
1510
+ root.edit(index)
1511
+ elif action==remove_action:
1512
+ # remove items with all the details
1513
+ rows = set()
1514
+ for index in root.selectedIndexes():
1515
+ rows.add(index.row())
1516
+ for row in sorted(rows, reverse=True):
1517
+ root.removeRow(row)
1518
+ elif action == add_action:
1519
+ root.insertRow(root.rowCount())
1520
+ elif action == export_action:
1521
+ from melage.utils.utils import export_tables
1522
+ filters = "CSV (*.csv)"
1523
+ opts = QtWidgets.QFileDialog.DontUseNativeDialog
1524
+ try:
1525
+ fileObj = self._filesave_dialog(filters, opts)
1526
+ export_tables(self, fileObj[0])
1527
+ except Exception as e:
1528
+ print(e)
1529
+ return
1530
+
1531
+
1532
+ def ShowContextMenu_images(self, pos):
1533
+ """
1534
+ Tree images Context Menu
1535
+ :param pos:
1536
+ :return:
1537
+ """
1538
+ def dialog():
1539
+ from melage.widgets.fileDialog_widget import QFileDialogPreview
1540
+ opts = QtWidgets.QFileDialog.DontUseNativeDialog
1541
+ dialg = QFileDialogPreview(self, "Open File", self.source_dir, self._filters, options=opts,
1542
+ index=self._last_index_select_image_mri,
1543
+ last_state=self._last_state_preview)
1544
+
1545
+ dialg.setFileMode(QtWidgets.QFileDialog.ExistingFiles)
1546
+ fileObj = [[''], '']
1547
+ if dialg.exec_() == QFileDialogPreview.Accepted:
1548
+ fileObj = dialg.getFilesSelected()
1549
+ fileObj = [fileObj, 0]
1550
+ fileObj[1] = dialg.selectedNameFilter()
1551
+ if fileObj[0][0] == '':
1552
+ return [fileObj, None]
1553
+ index = dialg._combobox_type.currentIndex()
1554
+ self.source_dir = os.path.dirname(fileObj[0][0])
1555
+
1556
+ return [fileObj, index]
1557
+
1558
+ index = self.tree_images.indexAt(pos)
1559
+ #if not index.isValid():
1560
+ # return
1561
+ #if index.column()==0:
1562
+ # return
1563
+ #_ind = self.tree_images.model().sourceModel().item(index.row(), 0).text()
1564
+
1565
+
1566
+ from PyQt5.QtWidgets import QMenu, QAction
1567
+ menu = QMenu("Images")
1568
+
1569
+ menu_import = QtWidgets.QMenu(menu)
1570
+ menu_import.setObjectName('Import')
1571
+ menu_import.setWindowIconText('CCC')
1572
+ _translate = QtCore.QCoreApplication.translate
1573
+ menu_import.setTitle(_translate('Main', "Import"))
1574
+ import_image_action_1 = QtWidgets.QAction(self)
1575
+ icon_mri = QtGui.QIcon()
1576
+ icon_mri.addPixmap(QtGui.QPixmap(source_folder+"/mri.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1577
+ icon_mriS = QtGui.QIcon()
1578
+ icon_mriS.addPixmap(QtGui.QPixmap(source_folder+"/mri_seg.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1579
+
1580
+ icon_eco = QtGui.QIcon()
1581
+ icon_eco.addPixmap(QtGui.QPixmap(source_folder+"/eco.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1582
+ icon_ecoS = QtGui.QIcon()
1583
+ icon_ecoS.addPixmap(QtGui.QPixmap(source_folder+"/eco_seg.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1584
+
1585
+ import_image_action_1.setIcon(icon_eco)
1586
+ import_image_action_1.setIconText('Images (view 1)')
1587
+
1588
+ menu_import.addAction(import_image_action_1)
1589
+ import_seg_action_1 = QtWidgets.QAction(self)
1590
+ import_seg_action_1.setIconText('Segmentations (view 1)')
1591
+
1592
+ import_seg_action_1.setIcon(icon_ecoS)
1593
+
1594
+ menu_import.addAction(import_seg_action_1)
1595
+
1596
+ menu_import.addSeparator()
1597
+
1598
+ import_image_action_2 = QtWidgets.QAction(self)
1599
+ import_image_action_2.setIconText('Images (view 2)')
1600
+ import_image_action_2.setIcon(icon_mri)
1601
+
1602
+
1603
+ menu_import.addAction(import_image_action_2)
1604
+ import_seg_action_2 = QtWidgets.QAction(self)
1605
+ import_seg_action_2.setIconText('Segmentations (view 2)')
1606
+ import_seg_action_2.setIcon(icon_mriS)
1607
+ menu_import.addAction(import_seg_action_2)
1608
+
1609
+ menu.addMenu(menu_import)
1610
+
1611
+ remove_action = menu.addAction("&RemoveSelected")
1612
+ clear_action = menu.addAction("&ClearAll")
1613
+
1614
+ action = menu.exec_(self.tree_images.viewport().mapToGlobal(pos))
1615
+
1616
+ if action==remove_action:
1617
+ if self._basefileSave is None or self._basefileSave=='':
1618
+ return
1619
+ # remove the item with all the details
1620
+ if index.row()>=0:
1621
+ self.imported_images.pop(index.row())
1622
+ parent = self.tree_images.model().sourceModel().invisibleRootItem()
1623
+ parent.removeRow(index.row())
1624
+ elif action==clear_action:
1625
+ if self._basefileSave is None or self._basefileSave=='':
1626
+ return
1627
+ parent = self.tree_images.model().sourceModel().invisibleRootItem()
1628
+ index_to_r = []
1629
+ for i in range(parent.rowCount()):
1630
+ signal = parent.child(i)
1631
+ if signal.checkState() == QtCore.Qt.Unchecked:
1632
+ index_to_r.append(i)
1633
+ for index in sorted(index_to_r, reverse=True):
1634
+ del self.imported_images[index]
1635
+ parent.removeRow(index)
1636
+
1637
+
1638
+ elif action==import_image_action_1:
1639
+ index_view = 0
1640
+ #if action==import_action:
1641
+ if self._basefileSave is None or self._basefileSave=='':
1642
+ return
1643
+ [fileObj, index] = dialog()
1644
+ filen = fileObj[0][0]
1645
+ if filen=='':
1646
+ return
1647
+ #if index<2:
1648
+ # color = [1,0,0]
1649
+ #else:
1650
+ color = [0, 1, 1]
1651
+ update_image_sch(self, [fileObj, index, index_view], color =color)
1652
+ elif action==import_seg_action_1:
1653
+ index_view = 0
1654
+ if self._basefileSave is None or self._basefileSave=='':
1655
+ return
1656
+ [fileObj, index] = dialog()
1657
+ filen = fileObj[0][0]
1658
+ if filen=='':
1659
+ return
1660
+ index += 3
1661
+ #if index<5:
1662
+ # color = [0.5,1,0]
1663
+ #else:
1664
+ color = [1, 0, 1]
1665
+ update_image_sch(self, [fileObj, index, index_view], color = color)
1666
+
1667
+
1668
+ elif action==import_image_action_2:
1669
+ index_view = 1
1670
+ #if action==import_action:
1671
+ if self._basefileSave is None or self._basefileSave=='':
1672
+ return
1673
+ [fileObj, index] = dialog()
1674
+ filen = fileObj[0][0]
1675
+ if filen=='':
1676
+ return
1677
+ #if index<2:
1678
+ # color = [1,0,0]
1679
+ #else:
1680
+ color = [1, 1, 0]
1681
+ update_image_sch(self, [fileObj, index, index_view], color =color)
1682
+ elif action==import_seg_action_2:
1683
+ index_view = 1
1684
+ if self._basefileSave is None or self._basefileSave=='':
1685
+ return
1686
+ [fileObj, index] = dialog()
1687
+ filen = fileObj[0][0]
1688
+ if filen=='':
1689
+ return
1690
+ index += 3
1691
+ #if index<5:
1692
+ # color = [0.5,1,0]
1693
+ #else:
1694
+ color = [0.5, 0.5, 1]
1695
+ update_image_sch(self, [fileObj, index, index_view], color = color)
1696
+
1697
+ def ShowContextMenu_tree(self, pos):
1698
+ """
1699
+ Context Menu of color
1700
+ :param pos:
1701
+ :return:
1702
+ """
1703
+ index = self.tree_colors.indexAt(pos)
1704
+ if not index.isValid():
1705
+ return
1706
+ if index.column()==0:
1707
+ return
1708
+ _ind = self.tree_colors.model().sourceModel().item(index.row(), 0).text()
1709
+ if _ind == '9876':
1710
+ return
1711
+
1712
+ from PyQt5.QtWidgets import QMenu, QAction
1713
+ menu = QMenu("Color")
1714
+ edit_action = menu.addAction("&Edit")
1715
+ remove_action = menu.addAction("&Remove")
1716
+ import_action = menu.addAction("&Import")
1717
+ export_action = menu.addAction("&Export")
1718
+ menu_color = QtWidgets.QMenu(menu)
1719
+ menu_color.setObjectName('Color')
1720
+ menu_color.setWindowIconText('CCC')
1721
+ _translate = QtCore.QCoreApplication.translate
1722
+ menu_color.setTitle(_translate('Main', "Scheme"))
1723
+ action_albert = QtWidgets.QAction(self)
1724
+ action_albert.setIconText('Albert')
1725
+ menu_color.addAction(action_albert)
1726
+
1727
+ action_tissue = QtWidgets.QAction(self)
1728
+ action_tissue.setIconText('Tissue')
1729
+ menu_color.addAction(action_tissue)
1730
+
1731
+ action_tissue12 = QtWidgets.QAction(self)
1732
+ action_tissue12.setIconText('Tissue12')
1733
+ menu_color.addAction(action_tissue12)
1734
+
1735
+ action_mcrib = QtWidgets.QAction(self)
1736
+ action_mcrib.setIconText('MCrib')
1737
+ menu_color.addAction(action_mcrib)
1738
+
1739
+ action_pediatrics1 = QtWidgets.QAction(self)
1740
+ action_pediatrics1.setIconText('Pediatric1')
1741
+ menu_color.addAction(action_pediatrics1)
1742
+
1743
+ action_pediatrics2 = QtWidgets.QAction(self)
1744
+ action_pediatrics2.setIconText('Pediatric2')
1745
+ menu_color.addAction(action_pediatrics2)
1746
+
1747
+ action_simple = QtWidgets.QAction(self)
1748
+ action_simple.setIconText('Simple')
1749
+ menu_color.addAction(action_simple)
1750
+
1751
+
1752
+ menu.addMenu(menu_color)
1753
+ #menu_color.addAction(import_action)
1754
+
1755
+ action = menu.exec_(self.tree_colors.viewport().mapToGlobal(pos))
1756
+ if action == edit_action:
1757
+ #item = self.tree_colors.itemFromIndex(index)
1758
+ #self._ind, self._txt = item.text(0), item.text(1)
1759
+ self.tree_colors.edit(index)
1760
+ elif action==remove_action:
1761
+ # remove the item with all the details
1762
+ txt = ''
1763
+ for i in [0, 1]:
1764
+ txt += self.tree_colors.model().sourceModel().item(index.row(), i).text()+ '_'
1765
+ colr_n = txt[:-1]
1766
+ self.color_name.remove(colr_n)
1767
+ colrnum = int(colr_n.split('_')[0])
1768
+ self.color_index_rgb = self.color_index_rgb[self.color_index_rgb[:, 0] != colrnum,:]
1769
+ self.colorsCombinations.pop(colrnum, None)
1770
+ root = self.tree_colors.model().sourceModel().invisibleRootItem()
1771
+ root.removeRow(index.row())
1772
+ else:
1773
+ if action==import_action:
1774
+ from PyQt5.QtWidgets import QFileDialog
1775
+ filters = "TXT(*.txt)"
1776
+ opts = QFileDialog.DontUseNativeDialog
1777
+ fileObj = QFileDialog.getOpenFileName(self, "Open COLOR File", self.source_dir, filters, options=opts)
1778
+ filen = fileObj[0]
1779
+ if filen=='':
1780
+ return
1781
+ elif action == action_simple:
1782
+ filen = source_folder+"/color/Simple.txt"
1783
+ elif action == export_action:
1784
+ filters = "TXT (*.txt)"
1785
+ opts = QtWidgets.QFileDialog.DontUseNativeDialog
1786
+ try:
1787
+ filename = self._filesave_dialog(filters, opts)
1788
+ if len(filename[0][0])==0:
1789
+ return
1790
+ filename = filename[0][0] + '.txt'
1791
+ with open(filename, "w") as f:
1792
+ line = f"#Index\t #Color name\t R\t G\t B\t A\t\n"
1793
+ f.write(line)
1794
+ # Loop through each row of the color_index_rgb array
1795
+ for i, row in enumerate(self.color_index_rgb):
1796
+ # Extract the index (first element) and use it to get color and name
1797
+ label_index = int(row[0])
1798
+ color_name = self.color_name[i]
1799
+ rgba = self.colorsCombinations[label_index]
1800
+ color_name = "_".join(color_name.split('_')[1:])
1801
+ if color_name == 'Combined' and label_index==9876:
1802
+ continue
1803
+ # Format each line: Index LabelName R G B A
1804
+ # Convert RGBA values to integers within range [0-255] for FSL format
1805
+ r, g, b, a = (int(c * 255) if i<3 else 1 for i, c in enumerate(rgba))
1806
+ line = f"{label_index}\t {color_name}\t {r}\t {g}\t {b}\t {a}\t\n"
1807
+ f.write(line)
1808
+ except Exception as e:
1809
+ print(e)
1810
+
1811
+
1812
+ elif action == action_pediatrics1:
1813
+ filen = source_folder+"/color/pediatric1.txt"
1814
+ elif action == action_pediatrics2:
1815
+ filen = source_folder+"/color/pediatric2.txt"
1816
+ elif action == action_albert:
1817
+ filen = source_folder + "/color/albert_LUT.txt"
1818
+ elif action == action_mcrib:
1819
+ filen = source_folder + "/color/mcrib_LUT.txt"
1820
+ elif action == action_tissue:
1821
+ filen = source_folder + "/color/Tissue.txt"
1822
+ elif action == action_tissue12:
1823
+ filen = source_folder + "/color/Tissue12.txt"
1824
+ else:
1825
+ return
1826
+ try: #TODO : Sep 11 2024
1827
+ possible_color_name, possible_color_index_rgb, _ = read_txt_color(filen, from_one=False, mode='None')
1828
+ except:
1829
+ return
1830
+ #if not (hasattr(self, 'readImECO') and hasattr(self, 'readImMRI')):
1831
+ uq = []
1832
+ set_not_in_new_list = set(uq) - (set(possible_color_index_rgb[:, 0].astype('int')))
1833
+ set_kept_new_list = set_not_in_new_list - (
1834
+ set_not_in_new_list - set(self.color_index_rgb[:, 0].astype('int')))
1835
+ set_create_new_list = set_not_in_new_list - set_kept_new_list
1836
+ for element in list(set_kept_new_list):
1837
+ new_color_rgb = self.color_index_rgb[self.color_index_rgb[:, 0] == element, :]
1838
+ possible_color_index_rgb = np.vstack((possible_color_index_rgb, new_color_rgb))
1839
+ try:
1840
+ new_colr_name = [l for l in self.color_name if l.split('_')[0] == str(element)][0]
1841
+ except:
1842
+ r, l = [[r, l] for r, l in enumerate(self.color_name) if l.split('_')[0] == str(float(element))][0]
1843
+ l2 = str(int(float(l.split('_fre')[0]))) + '_' + '_'.join(l.split('_')[1:])
1844
+ self.color_name[r] = l2
1845
+ new_colr_name = [l for l in self.color_name if l.split('_')[0] == str(element)][0]
1846
+ possible_color_name.append(new_colr_name)
1847
+
1848
+ for element in set_create_new_list:
1849
+ new_colr_name = '{}_structure_unknown'.format(element)
1850
+ possible_color_name.append(new_colr_name)
1851
+ new_color_rgb = [element, np.random.rand(), np.random.rand(), np.random.rand(), 1]
1852
+ possible_color_index_rgb = np.vstack((possible_color_index_rgb, np.array(new_color_rgb)))
1853
+ if 9876 not in possible_color_index_rgb[:, 0]:
1854
+ new_colr_name = '9876_Combined'
1855
+ new_color_rgb = [9876, 1, 0, 0, 1]
1856
+ possible_color_name.append(new_colr_name)
1857
+ possible_color_index_rgb = np.vstack((possible_color_index_rgb, np.array(new_color_rgb)))
1858
+
1859
+ # self.color_index_rgb, self.color_name, self.colorsCombinations = combinedIndex(self.colorsCombinations, possible_color_index_rgb, possible_color_name, np.unique(data), uq1)
1860
+ self.color_index_rgb, self.color_name, self.colorsCombinations = generate_color_scheme_info(
1861
+ possible_color_index_rgb, possible_color_name)
1862
+ try:
1863
+ # self.dw2_cb.currentTextChanged.disconnect(self.changeColorPen)
1864
+ self.tree_colors.itemChanged.disconnect(self.changeColorPen)
1865
+ except:
1866
+ pass
1867
+
1868
+ set_new_color_scheme(self)
1869
+ try:
1870
+ # self.dw2_cb.currentTextChanged.connect(self.changeColorPen)
1871
+ self.tree_colors.itemChanged.connect(self.changeColorPen)
1872
+ except:
1873
+ pass
1874
+ widgets_num = [0, 1, 2, 3, 4, 5, 10, 11, 13, 23]
1875
+ for num in widgets_num:
1876
+ name = 'openGLWidget_' + str(num + 1)
1877
+ widget = getattr(self, name)
1878
+ if hasattr(widget, 'colorsCombinations'):
1879
+ widget.colorsCombinations = self.colorsCombinations
1880
+ if not widget.isVisible():
1881
+ continue
1882
+ if hasattr(widget, 'makeObject'):
1883
+ widget.makeObject()
1884
+
1885
+ if num in [13]:
1886
+ try:
1887
+ widget.paint(self.readImECO.npSeg,
1888
+ self.readImECO.npImage, None)
1889
+ except:
1890
+ pass
1891
+ elif num in [23]:
1892
+ try:
1893
+ widget.paint(self.readImMRI.npSeg,
1894
+ self.readImMRI.npImage, None)
1895
+ except:
1896
+ pass
1897
+ widget.update()
1898
+
1899
+
1900
+ return
1901
+
1902
+ @QtCore.pyqtSlot("QWidget*")
1903
+ def _on_closeEditor(self, editor):
1904
+ p = editor.pos()
1905
+ index = self.tree_colors.indexAt(p)
1906
+ if index.column()==0:
1907
+ return
1908
+ _ind = self.tree_colors.model().sourceModel().item(index.row(), 0).text()
1909
+ _txt = self.tree_colors.model().sourceModel().item(index.row(), 1).text()
1910
+ new = '_'.join([_ind, _txt])
1911
+
1912
+ if new not in self.color_name:
1913
+ cls = [r for r, col in enumerate(self.color_name) if col.split('_')[0] == _ind]
1914
+ if len(cls)>0:
1915
+ r = cls[0]
1916
+ self.color_name[r] = new
1917
+
1918
+ def reset_page1_eco(self):
1919
+ self.hs_t1_1.setValue(0)
1920
+ self.hs_t1_2.setValue(0)
1921
+ self.hs_t1_3.setValue(0)
1922
+ self.hs_t1_4.setValue(0)
1923
+ self.hs_t1_5.setValue(0)
1924
+ self.hs_t1_7.setValue(0)
1925
+ self.page1_s2c.setChecked(False)
1926
+ self.toggle1_1.setChecked(False)
1927
+
1928
+ def reset_page1_mri(self):
1929
+ self.hs_t2_1.setValue(0)
1930
+ self.hs_t2_2.setValue(0)
1931
+ self.hs_t2_3.setValue(0)
1932
+ self.hs_t2_4.setValue(0)
1933
+ self.hs_t2_5.setValue(0)
1934
+ self.hs_t2_7.setValue(0)
1935
+ self.page2_s2c.setChecked(False)
1936
+ self.toggle2_1.setChecked(False)
1937
+
1938
+
1939
+ def _double_clicked(self, item):
1940
+ if item.column()==1:
1941
+ _ind = self.tree_colors.model().sourceModel().item(item.row(), 0).text()
1942
+ if _ind == '9876':
1943
+ return
1944
+ #text = item.data(role=QtCore.Qt.DisplayRole)
1945
+ self.tree_colors.edit(item)
1946
+
1947
+ def searchTreeChanged(self, text=None):
1948
+ """
1949
+
1950
+ :param text:
1951
+ :return:
1952
+ """
1953
+ if text == 'image':
1954
+ text = self.line_text_image.text()
1955
+ tags_model = self.tags_model_image
1956
+ trees = self.tree_images
1957
+ elif text == 'color':
1958
+ text = self.line_text.text()
1959
+ tags_model = self.tags_model
1960
+ trees = self.tree_colors
1961
+ regExp = QtCore.QRegExp(text, QtCore.Qt.CaseInsensitive, QtCore.QRegExp.FixedString)
1962
+
1963
+ tags_model.text = text.lower()
1964
+ tags_model.setFilterRegExp(regExp)
1965
+
1966
+ if len(text) >= 1 and tags_model.rowCount() > 0:
1967
+ trees.expandAll()
1968
+ else:
1969
+ trees.collapseAll()
1970
+
1971
+
1972
+
1973
+ class SearchProxyModel(QtCore.QSortFilterProxyModel):
1974
+ """
1975
+ Class to search for available color lists
1976
+ """
1977
+ def __init__(self, parent=None):
1978
+ super(SearchProxyModel, self).__init__(parent)
1979
+ self.text = ''
1980
+
1981
+ # Recursive search
1982
+ def _accept_index(self, idx):
1983
+ if idx.isValid():
1984
+ text = idx.data(role=QtCore.Qt.DisplayRole).lower()
1985
+ condition = text.find(self.text) >= 0
1986
+
1987
+ if condition:
1988
+ return True
1989
+ for childnum in range(idx.model().rowCount(parent=idx)):
1990
+ if self._accept_index(idx.model().index(childnum, 0, parent=idx)):
1991
+ return True
1992
+ return False
1993
+
1994
+ def filterAcceptsRow(self, sourceRow, sourceParent):
1995
+ # Only first column in model for search
1996
+ idx = self.sourceModel().index(sourceRow, 1, sourceParent)
1997
+ return self._accept_index(idx)
1998
+
1999
+ def lessThan(self, left, right):
2000
+ leftData = self.sourceModel().data(left)
2001
+ rightData = self.sourceModel().data(right)
2002
+ try:
2003
+ return float(leftData) < float(rightData)
2004
+ except ValueError:
2005
+ return leftData < rightData