melage 0.0.65__py3-none-any.whl → 1.0.0__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 (661) hide show
  1. assets/copyright.png +0 -0
  2. assets/resource/color/FreeSurferColorLUT.txt +2006 -0
  3. assets/resource/color/LUT_30.txt +31 -0
  4. assets/resource/color/SynthSeg.txt +34 -0
  5. assets/resource/color/lut_prostate.txt +20 -0
  6. assets/resource/horizontalview.png +0 -0
  7. assets/resource/main.ico +0 -0
  8. assets/resource/theme/create_ticks.py +85 -0
  9. assets/resource/theme/rc/checkbox_checked.png +0 -0
  10. assets/resource/theme/rc/checkbox_checked@2x.png +0 -0
  11. assets/resource/theme/rc/checkbox_checked_disabled.png +0 -0
  12. assets/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
  13. assets/resource/theme/rc/checkbox_checked_focus.png +0 -0
  14. assets/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
  15. assets/resource/theme/rc/checkbox_checked_pressed.png +0 -0
  16. assets/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
  17. assets/resource/theme/rc/checkbox_indeterminate.png +0 -0
  18. assets/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
  19. assets/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
  20. assets/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
  21. assets/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
  22. assets/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
  23. assets/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
  24. assets/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
  25. assets/resource/theme/rc/checkbox_unchecked.png +0 -0
  26. assets/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
  27. assets/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
  28. assets/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
  29. assets/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
  30. assets/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
  31. assets/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
  32. assets/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
  33. assets/resource/verticalview.png +0 -0
  34. assets/resource/zoom_in.png +0 -0
  35. assets/resource/zoom_neutral (copy).png +0 -0
  36. assets/resource/zoom_neutral.png +0 -0
  37. assets/resource/zoom_out.png +0 -0
  38. data/MNI/mni_icbm152_t1_tal_nlin_sym_09a.nii +0 -0
  39. data/MNI/mni_icbm152_t1_tal_nlin_sym_09a_masked.nii.gz +0 -0
  40. data/MNI/mni_icbm152_t1_tal_nlin_sym_09a_seg.nii.gz +0 -0
  41. docs/manual_images/3D_rightc.png +0 -0
  42. docs/manual_images/3D_rightc_goto.png +0 -0
  43. docs/manual_images/3D_rightc_paint.png +0 -0
  44. docs/manual_images/3D_rightc_paint_draw1.png +0 -0
  45. docs/manual_images/3D_rightc_paint_draw2.png +0 -0
  46. docs/manual_images/3D_rightc_paint_render.png +0 -0
  47. docs/manual_images/3D_rightc_paint_render2.png +0 -0
  48. docs/manual_images/3D_rightc_paint_render3.png +0 -0
  49. docs/manual_images/3D_rightc_paint_render4.png +0 -0
  50. docs/manual_images/3D_rightc_paint_render5.png +0 -0
  51. docs/manual_images/3D_rightc_paint_render6.png +0 -0
  52. docs/manual_images/3D_rightc_seg.png +0 -0
  53. docs/manual_images/exit_toolbar.png +0 -0
  54. docs/manual_images/load_image_file.png +0 -0
  55. docs/manual_images/load_image_file_openp.png +0 -0
  56. docs/manual_images/main_page.png +0 -0
  57. docs/manual_images/menu_file.png +0 -0
  58. docs/manual_images/menu_file_export.png +0 -0
  59. docs/manual_images/menu_file_import.png +0 -0
  60. docs/manual_images/menu_file_settings.png +0 -0
  61. docs/manual_images/menu_file_ss.png +0 -0
  62. docs/manual_images/open_save_load.png +0 -0
  63. docs/manual_images/panning_toolbar.png +0 -0
  64. docs/manual_images/segmentation_toolbar.png +0 -0
  65. docs/manual_images/tab_mri.png +0 -0
  66. docs/manual_images/tab_us.png +0 -0
  67. docs/manual_images/tabs.png +0 -0
  68. docs/manual_images/toolbar_tools.png +0 -0
  69. docs/manual_images/tools_basic.png +0 -0
  70. docs/manual_images/tools_bet.png +0 -0
  71. docs/manual_images/tools_cs.png +0 -0
  72. docs/manual_images/tools_deepbet.png +0 -0
  73. docs/manual_images/tools_imageinfo.png +0 -0
  74. docs/manual_images/tools_maskO.png +0 -0
  75. docs/manual_images/tools_masking.png +0 -0
  76. docs/manual_images/tools_n4b.png +0 -0
  77. docs/manual_images/tools_resize.png +0 -0
  78. docs/manual_images/tools_ruler.png +0 -0
  79. docs/manual_images/tools_seg.png +0 -0
  80. docs/manual_images/tools_threshold.png +0 -0
  81. docs/manual_images/tools_tools.png +0 -0
  82. docs/manual_images/widget_color.png +0 -0
  83. docs/manual_images/widget_color_add.png +0 -0
  84. docs/manual_images/widget_color_add2.png +0 -0
  85. docs/manual_images/widget_color_additional.png +0 -0
  86. docs/manual_images/widget_images.png +0 -0
  87. docs/manual_images/widget_images2.png +0 -0
  88. docs/manual_images/widget_images3.png +0 -0
  89. docs/manual_images/widget_marker.png +0 -0
  90. docs/manual_images/widget_mri.png +0 -0
  91. docs/manual_images/widget_mri2.png +0 -0
  92. docs/manual_images/widget_segintensity.png +0 -0
  93. docs/manual_images/widget_tab_mutualview.png +0 -0
  94. docs/manual_images/widget_tab_mutualview2.png +0 -0
  95. docs/manual_images/widget_table.png +0 -0
  96. docs/manual_images/widget_table2.png +0 -0
  97. docs/manual_images/widget_us.png +0 -0
  98. melage/__init__.py +1 -1
  99. melage/config/__init__.py +100 -0
  100. melage/core/Registration/registration.py +54 -0
  101. melage/{utils/readData.py → core/io.py} +12 -4
  102. melage/{widgets/melageAbout.py → dialogs/AboutDialog.py} +1 -1
  103. melage/dialogs/MaskOperationsDialog.py +146 -0
  104. melage/dialogs/MaskingDialog.py +139 -0
  105. melage/dialogs/RegistrationDialog.py +311 -0
  106. melage/{widgets/ImageThresholding.py → dialogs/ThresholdingDialog.py} +2 -2
  107. melage/dialogs/TransformationDialog.py +275 -0
  108. melage/dialogs/__init__.py +9 -0
  109. melage/dialogs/dynamic_gui.py +327 -0
  110. melage/{widgets/fileDialog_widget.py → dialogs/helpers/FileDialog.py} +226 -1
  111. melage/dialogs/helpers/__init__.py +5 -0
  112. melage/main.py +13 -13
  113. melage/{widgets/mainwindow_widget.py → mainwindow_widget.py} +1434 -1408
  114. melage/plugins/N4_bias/N4.py +115 -0
  115. melage/plugins/N4_bias/N4_schema.py +40 -0
  116. melage/plugins/N4_bias/main/utils.py +46 -0
  117. melage/plugins/__init__.py +2 -0
  118. melage/plugins/bet/bet.py +176 -0
  119. melage/plugins/bet/bet_schema.py +73 -0
  120. melage/{widgets/brain_extraction.py → plugins/bet/main/BET.py} +51 -316
  121. melage/plugins/change_coord/change_coord.py +197 -0
  122. melage/plugins/change_coord/change_coord_schema.py +31 -0
  123. melage/plugins/change_coord/main/utils.py +15 -0
  124. melage/{widgets/Segmentation → plugins/esfcm/main}/FCM.py +3 -5
  125. melage/plugins/esfcm/main/test.py +57 -0
  126. melage/{widgets/Segmentation → plugins/esfcm/main}/utils.py +20 -0
  127. melage/plugins/esfcm/tissue_segmentation.py +124 -0
  128. melage/plugins/esfcm/tissue_segmentation_schema.py +33 -0
  129. melage/plugins/masking_operation/mo.py +115 -0
  130. melage/plugins/masking_operation/mo_schema.py +33 -0
  131. melage/plugins/mga_net/MGA_Net.py +145 -0
  132. melage/plugins/mga_net/MGA_Net_schema.py +29 -0
  133. melage/plugins/mga_net/main/figures/Network.txt +1 -0
  134. melage/{widgets/DeepLModels/new_unet.py → plugins/mga_net/main/model/mga_net.py} +3 -3
  135. melage/plugins/mga_net/main/model/utils.py +258 -0
  136. melage/plugins/mga_net/main/test_mgaNet.py +134 -0
  137. melage/plugins/resize/resize.py +136 -0
  138. melage/plugins/resize/resize_schema.py +41 -0
  139. melage/plugins/ui_helpers.py +144 -0
  140. melage/plugins/warpseg/WarpSeg.py +195 -0
  141. melage/plugins/warpseg/WarpSeg_schema.py +41 -0
  142. melage/plugins/warpseg/__init__.py +2 -0
  143. melage/plugins/warpseg/warpseg_main/data_reader/DDSet.py +303 -0
  144. melage/plugins/warpseg/warpseg_main/data_reader/DDSetSeg.py +279 -0
  145. melage/plugins/warpseg/warpseg_main/data_reader/__init__.py +60 -0
  146. melage/plugins/warpseg/warpseg_main/data_reader/baseData.py +18 -0
  147. melage/plugins/warpseg/warpseg_main/data_reader/utils.py +267 -0
  148. melage/plugins/warpseg/warpseg_main/dist_utils.py +18 -0
  149. melage/plugins/warpseg/warpseg_main/requirements.txt +10 -0
  150. melage/plugins/warpseg/warpseg_main/test.py +272 -0
  151. melage/plugins/warpseg/warpseg_main/train.py +432 -0
  152. melage/plugins/warpseg/warpseg_main/train_reg.py +373 -0
  153. melage/plugins/warpseg/warpseg_main/verify_post_process.py +73 -0
  154. melage/plugins/warpseg/warpseg_main/voxelmorph/__init__.py +45 -0
  155. melage/plugins/warpseg/warpseg_main/voxelmorph/py/__init__.py +1 -0
  156. melage/plugins/warpseg/warpseg_main/voxelmorph/py/utils.py +99 -0
  157. melage/{widgets/Synthstrip.py → plugins/warpseg/warpseg_main/voxelmorph/torch/Unet.py} +71 -51
  158. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/__init__.py +4 -0
  159. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/layers.py +97 -0
  160. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/losses.py +462 -0
  161. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/modelio.py +77 -0
  162. melage/{widgets/DeepLModels/InfantSegment/Unet.py → plugins/warpseg/warpseg_main/voxelmorph/torch/multi_stage_net.py} +76 -52
  163. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/networks.py +308 -0
  164. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/utils.py +470 -0
  165. melage/{utils/DispalyIm.py → rendering/DisplayIm.py} +67 -79
  166. melage/{utils → rendering}/glScientific.py +1 -1
  167. melage/utils/__init__.py +1 -0
  168. melage/utils/utils.py +343 -196
  169. melage/widgets/{dockWidgets.py → DockWidgets.py} +123 -55
  170. melage/widgets/SettingsWidget.py +98 -0
  171. melage/widgets/__init__.py +49 -0
  172. melage/widgets/openglWidgets.py +344 -156
  173. melage/widgets/openglWidgets_bu.py +645 -0
  174. melage/widgets/plugin_manager.py +62 -0
  175. melage-1.0.0.dist-info/METADATA +953 -0
  176. melage-1.0.0.dist-info/RECORD +571 -0
  177. melage-1.0.0.dist-info/entry_points.txt +2 -0
  178. melage-1.0.0.dist-info/top_level.txt +4 -0
  179. melage/requirements22.txt +0 -25
  180. melage/requirements_old.txt +0 -28
  181. melage/resource/theme/rc/checkbox_checked.png +0 -0
  182. melage/resource/theme/rc/checkbox_checked@2x.png +0 -0
  183. melage/resource/theme/rc/checkbox_checked@2x0.png +0 -0
  184. melage/resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
  185. melage/resource/theme/rc/checkbox_checked_disabled.png +0 -0
  186. melage/resource/theme/rc/checkbox_checked_disabled0.png +0 -0
  187. melage/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
  188. melage/resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
  189. melage/resource/theme/rc/checkbox_checked_focus.png +0 -0
  190. melage/resource/theme/rc/checkbox_checked_focus0.png +0 -0
  191. melage/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
  192. melage/resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
  193. melage/resource/theme/rc/checkbox_checked_pressed.png +0 -0
  194. melage/resource/theme/rc/checkbox_checked_pressed0.png +0 -0
  195. melage/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
  196. melage/resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
  197. melage/resource/theme/rc/checkbox_indeterminate.png +0 -0
  198. melage/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
  199. melage/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
  200. melage/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
  201. melage/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
  202. melage/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
  203. melage/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
  204. melage/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
  205. melage/resource/theme/rc/checkbox_unchecked.png +0 -0
  206. melage/resource/theme/rc/checkbox_unchecked0.png +0 -0
  207. melage/resource/theme/rc/checkbox_unchecked00.png +0 -0
  208. melage/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
  209. melage/resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
  210. melage/resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
  211. melage/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
  212. melage/resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
  213. melage/resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
  214. melage/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
  215. melage/resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
  216. melage/resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
  217. melage/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
  218. melage/resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
  219. melage/resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
  220. melage/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
  221. melage/resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
  222. melage/resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
  223. melage/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
  224. melage/resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
  225. melage/resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
  226. melage/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
  227. melage/resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
  228. melage/resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
  229. melage/some_notes.txt +0 -3
  230. melage/utils/GMM.py +0 -720
  231. melage/utils/Shaders_bu.py +0 -314
  232. melage/utils/__init__0.py +0 -7
  233. melage/utils/glScientific_bc.py +0 -1585
  234. melage/utils/registration.py +0 -512
  235. melage/utils/source_folder.py +0 -18
  236. melage/version.txt +0 -1
  237. melage/widgets/ApplyMask.py +0 -212
  238. melage/widgets/ChangeSystem.py +0 -152
  239. melage/widgets/DeepLModels/NPP/dataset/mri_dataset_affine.py +0 -149
  240. melage/widgets/DeepLModels/NPP/models/checkpoints/npp_v1.pth.py +0 -0
  241. melage/widgets/DeepLModels/NPP/models/losses.py +0 -146
  242. melage/widgets/DeepLModels/NPP/models/model.py +0 -272
  243. melage/widgets/DeepLModels/NPP/models/utils.py +0 -303
  244. melage/widgets/DeepLModels/NPP/npp.py +0 -116
  245. melage/widgets/DeepLModels/NPP/requirements.txt +0 -8
  246. melage/widgets/DeepLModels/NPP/train/train.py +0 -116
  247. melage/widgets/DeepLModels/Unet3DAtt.py +0 -657
  248. melage/widgets/DeepLModels/Unet3D_basic.py +0 -648
  249. melage/widgets/DeepLModels/new_unet_old.py +0 -639
  250. melage/widgets/DeepLModels/new_unet_old2.py +0 -658
  251. melage/widgets/MaskOperations.py +0 -147
  252. melage/widgets/N4Dialog.py +0 -241
  253. melage/widgets/Segmentation/__init__.py +0 -588
  254. melage/widgets/SemiAutoSeg.py +0 -666
  255. melage/widgets/__init__0.py +0 -5
  256. melage/widgets/about.py +0 -246
  257. melage/widgets/activator.py +0 -147
  258. melage/widgets/be_dl.py +0 -409
  259. melage/widgets/be_dl_unet3d.py +0 -441
  260. melage/widgets/brain_extraction_dl.py +0 -887
  261. melage/widgets/brain_extraction_dl_bu.py +0 -869
  262. melage/widgets/registrationWidget.py +0 -342
  263. melage/widgets/settings_widget.py +0 -77
  264. melage/widgets/tranformationWidget.py +0 -275
  265. melage-0.0.65.dist-info/METADATA +0 -742
  266. melage-0.0.65.dist-info/RECORD +0 -501
  267. melage-0.0.65.dist-info/entry_points.txt +0 -2
  268. melage-0.0.65.dist-info/top_level.txt +0 -1
  269. {melage/resource → assets}/main.ico +0 -0
  270. {melage → assets}/resource/0circle.png +0 -0
  271. {melage → assets}/resource/0circle_faded.png +0 -0
  272. {melage → assets}/resource/3d.png +0 -0
  273. {melage → assets}/resource/3d.psd +0 -0
  274. {melage → assets}/resource/3dFaded.png +0 -0
  275. {melage → assets}/resource/Eraser.png +0 -0
  276. {melage → assets}/resource/EraserFaded.png +0 -0
  277. {melage → assets}/resource/EraserX.png +0 -0
  278. {melage → assets}/resource/EraserXFaded.png +0 -0
  279. {melage → assets}/resource/Eraser_icon.svg +0 -0
  280. {melage → assets}/resource/Hand.png +0 -0
  281. {melage → assets}/resource/HandIcons_0.png +0 -0
  282. {melage → assets}/resource/Hand_IX.png +0 -0
  283. {melage → assets}/resource/Hand_IXFaded.png +0 -0
  284. {melage → assets}/resource/Handsqueezed.png +0 -0
  285. {melage → assets}/resource/Handwriting (copy).png +0 -0
  286. {melage → assets}/resource/Handwriting.png +0 -0
  287. {melage → assets}/resource/HandwritingMinus.png +0 -0
  288. {melage → assets}/resource/HandwritingMinusX.png +0 -0
  289. {melage → assets}/resource/HandwritingPlus.png +0 -0
  290. {melage → assets}/resource/HandwritingPlusX.png +0 -0
  291. {melage → assets}/resource/Move_icon.svg +0 -0
  292. {melage → assets}/resource/PngItem_2422924.png +0 -0
  293. {melage → assets}/resource/about.png +0 -0
  294. {melage → assets}/resource/about_logo.png +0 -0
  295. {melage → assets}/resource/about_logo0.png +0 -0
  296. {melage → assets}/resource/action_check.png +0 -0
  297. {melage → assets}/resource/action_check_OFF.png +0 -0
  298. {melage → assets}/resource/arrow).png +0 -0
  299. {melage → assets}/resource/arrow.png +0 -0
  300. {melage → assets}/resource/arrowFaded.png +0 -0
  301. {melage → assets}/resource/arrow_org.png +0 -0
  302. {melage → assets}/resource/arrow_org.png.png +0 -0
  303. {melage → assets}/resource/arrows.png +0 -0
  304. {melage → assets}/resource/authors.mp4 +0 -0
  305. {melage → assets}/resource/box.png +0 -0
  306. {melage → assets}/resource/check-image-icon-0.jpg +0 -0
  307. {melage → assets}/resource/circle.png +0 -0
  308. {melage → assets}/resource/circle_faded.png +0 -0
  309. {melage → assets}/resource/circle_or.png +0 -0
  310. {melage → assets}/resource/close.png +0 -0
  311. {melage → assets}/resource/close_bg.png +0 -0
  312. {melage → assets}/resource/color/Simple.txt +0 -0
  313. {melage → assets}/resource/color/Tissue.txt +0 -0
  314. {melage → assets}/resource/color/Tissue12.txt +0 -0
  315. {melage → assets}/resource/color/albert_LUT.txt +0 -0
  316. {melage → assets}/resource/color/mcrib_LUT.txt +0 -0
  317. {melage → assets}/resource/color/pediatric1.txt +0 -0
  318. {melage → assets}/resource/color/pediatric1_old.txt +0 -0
  319. {melage → assets}/resource/color/pediatric2.txt +0 -0
  320. {melage → assets}/resource/color/pediatric3.txt +0 -0
  321. {melage → assets}/resource/color/pediatrics (copy).csv +0 -0
  322. {melage → assets}/resource/color/tissue_seg.txt +0 -0
  323. {melage → assets}/resource/contour.png +0 -0
  324. {melage → assets}/resource/contour.svg +0 -0
  325. {melage → assets}/resource/contourFaded.png +0 -0
  326. {melage → assets}/resource/contourX.png +0 -0
  327. {melage → assets}/resource/contourXFaded.png +0 -0
  328. {melage → assets}/resource/dti.png +0 -0
  329. {melage → assets}/resource/dti0.png +0 -0
  330. {melage → assets}/resource/dti222.png +0 -0
  331. {melage → assets}/resource/dti_or.png +0 -0
  332. {melage → assets}/resource/eco.png +0 -0
  333. {melage → assets}/resource/eco22.png +0 -0
  334. {melage → assets}/resource/eco_old.png +0 -0
  335. {melage → assets}/resource/eco_or.png +0 -0
  336. {melage → assets}/resource/eco_or2.png +0 -0
  337. {melage → assets}/resource/eco_seg.png +0 -0
  338. {melage → assets}/resource/eco_seg_old.png +0 -0
  339. {melage → assets}/resource/export.png +0 -0
  340. {melage → assets}/resource/hand-grab-icon-10.jpg +0 -0
  341. {melage → assets}/resource/hand-grab-icon-25.jpg +0 -0
  342. {melage → assets}/resource/info.png +0 -0
  343. {melage → assets}/resource/line.png +0 -0
  344. {melage → assets}/resource/linefaded.png +0 -0
  345. {melage → assets}/resource/load.png +0 -0
  346. {melage → assets}/resource/manual_images/3D_rightc.png +0 -0
  347. {melage → assets}/resource/manual_images/3D_rightc_goto.png +0 -0
  348. {melage → assets}/resource/manual_images/3D_rightc_paint.png +0 -0
  349. {melage → assets}/resource/manual_images/3D_rightc_paint_draw1.png +0 -0
  350. {melage → assets}/resource/manual_images/3D_rightc_paint_draw2.png +0 -0
  351. {melage → assets}/resource/manual_images/3D_rightc_paint_render.png +0 -0
  352. {melage → assets}/resource/manual_images/3D_rightc_paint_render2.png +0 -0
  353. {melage → assets}/resource/manual_images/3D_rightc_paint_render3.png +0 -0
  354. {melage → assets}/resource/manual_images/3D_rightc_paint_render4.png +0 -0
  355. {melage → assets}/resource/manual_images/3D_rightc_paint_render5.png +0 -0
  356. {melage → assets}/resource/manual_images/3D_rightc_paint_render6.png +0 -0
  357. {melage → assets}/resource/manual_images/3D_rightc_seg.png +0 -0
  358. {melage → assets}/resource/manual_images/exit_toolbar.png +0 -0
  359. {melage → assets}/resource/manual_images/load_image_file.png +0 -0
  360. {melage → assets}/resource/manual_images/load_image_file_openp.png +0 -0
  361. {melage → assets}/resource/manual_images/main_page.png +0 -0
  362. {melage → assets}/resource/manual_images/menu_file.png +0 -0
  363. {melage → assets}/resource/manual_images/menu_file_export.png +0 -0
  364. {melage → assets}/resource/manual_images/menu_file_import.png +0 -0
  365. {melage → assets}/resource/manual_images/menu_file_settings.png +0 -0
  366. {melage → assets}/resource/manual_images/menu_file_ss.png +0 -0
  367. {melage → assets}/resource/manual_images/open_save_load.png +0 -0
  368. {melage → assets}/resource/manual_images/panning_toolbar.png +0 -0
  369. {melage → assets}/resource/manual_images/segmentation_toolbar.png +0 -0
  370. {melage → assets}/resource/manual_images/tab_mri.png +0 -0
  371. {melage → assets}/resource/manual_images/tab_us.png +0 -0
  372. {melage → assets}/resource/manual_images/tabs.png +0 -0
  373. {melage → assets}/resource/manual_images/toolbar_tools.png +0 -0
  374. {melage → assets}/resource/manual_images/tools_basic.png +0 -0
  375. {melage → assets}/resource/manual_images/tools_bet.png +0 -0
  376. {melage → assets}/resource/manual_images/tools_cs.png +0 -0
  377. {melage → assets}/resource/manual_images/tools_deepbet.png +0 -0
  378. {melage → assets}/resource/manual_images/tools_imageinfo.png +0 -0
  379. {melage → assets}/resource/manual_images/tools_maskO.png +0 -0
  380. {melage → assets}/resource/manual_images/tools_masking.png +0 -0
  381. {melage → assets}/resource/manual_images/tools_n4b.png +0 -0
  382. {melage → assets}/resource/manual_images/tools_resize.png +0 -0
  383. {melage → assets}/resource/manual_images/tools_ruler.png +0 -0
  384. {melage → assets}/resource/manual_images/tools_seg.png +0 -0
  385. {melage → assets}/resource/manual_images/tools_threshold.png +0 -0
  386. {melage → assets}/resource/manual_images/tools_tools.png +0 -0
  387. {melage → assets}/resource/manual_images/widget_color.png +0 -0
  388. {melage → assets}/resource/manual_images/widget_color_add.png +0 -0
  389. {melage → assets}/resource/manual_images/widget_color_add2.png +0 -0
  390. {melage → assets}/resource/manual_images/widget_color_additional.png +0 -0
  391. {melage → assets}/resource/manual_images/widget_images.png +0 -0
  392. {melage → assets}/resource/manual_images/widget_images2.png +0 -0
  393. {melage → assets}/resource/manual_images/widget_images3.png +0 -0
  394. {melage → assets}/resource/manual_images/widget_marker.png +0 -0
  395. {melage → assets}/resource/manual_images/widget_mri.png +0 -0
  396. {melage → assets}/resource/manual_images/widget_mri2.png +0 -0
  397. {melage → assets}/resource/manual_images/widget_segintensity.png +0 -0
  398. {melage → assets}/resource/manual_images/widget_tab_mutualview.png +0 -0
  399. {melage → assets}/resource/manual_images/widget_tab_mutualview2.png +0 -0
  400. {melage → assets}/resource/manual_images/widget_table.png +0 -0
  401. {melage → assets}/resource/manual_images/widget_table2.png +0 -0
  402. {melage → assets}/resource/manual_images/widget_us.png +0 -0
  403. {melage → assets}/resource/melage_top.ico +0 -0
  404. {melage → assets}/resource/melage_top.png +0 -0
  405. {melage → assets}/resource/melage_top0.png +0 -0
  406. {melage → assets}/resource/melage_top1.png +0 -0
  407. {melage → assets}/resource/melage_top4.png +0 -0
  408. {melage → assets}/resource/mri (copy).png +0 -0
  409. {melage → assets}/resource/mri.png +0 -0
  410. {melage → assets}/resource/mri0.png +0 -0
  411. {melage → assets}/resource/mri000.png +0 -0
  412. {melage → assets}/resource/mri22.png +0 -0
  413. {melage → assets}/resource/mri_big.png +0 -0
  414. {melage → assets}/resource/mri_old.png +0 -0
  415. {melage → assets}/resource/mri_seg.png +0 -0
  416. {melage → assets}/resource/mri_seg_old.png +0 -0
  417. {melage → assets}/resource/new.png +0 -0
  418. {melage → assets}/resource/open.png +0 -0
  419. {melage → assets}/resource/open2.png +0 -0
  420. {melage → assets}/resource/pan.png +0 -0
  421. {melage → assets}/resource/pencil.png +0 -0
  422. {melage → assets}/resource/pencilFaded.png +0 -0
  423. {melage → assets}/resource/points.png +0 -0
  424. {melage → assets}/resource/pointsFaded.png +0 -0
  425. {melage → assets}/resource/rotate.png +0 -0
  426. {melage → assets}/resource/ruler.png +0 -0
  427. {melage → assets}/resource/rulerFaded.png +0 -0
  428. {melage → assets}/resource/s.png +0 -0
  429. {melage → assets}/resource/s.psd +0 -0
  430. {melage → assets}/resource/save.png +0 -0
  431. {melage → assets}/resource/saveas.png +0 -0
  432. {melage → assets}/resource/seg_mri.png +0 -0
  433. {melage → assets}/resource/seg_mri2.png +0 -0
  434. {melage → assets}/resource/settings.png +0 -0
  435. {melage → assets}/resource/synch.png +0 -0
  436. {melage → assets}/resource/synchFaded.png +0 -0
  437. {melage → assets}/resource/theme/rc/.keep +0 -0
  438. {melage → assets}/resource/theme/rc/arrow_down.png +0 -0
  439. {melage → assets}/resource/theme/rc/arrow_down@2x.png +0 -0
  440. {melage → assets}/resource/theme/rc/arrow_down_disabled.png +0 -0
  441. {melage → assets}/resource/theme/rc/arrow_down_disabled@2x.png +0 -0
  442. {melage → assets}/resource/theme/rc/arrow_down_focus.png +0 -0
  443. {melage → assets}/resource/theme/rc/arrow_down_focus@2x.png +0 -0
  444. {melage → assets}/resource/theme/rc/arrow_down_pressed.png +0 -0
  445. {melage → assets}/resource/theme/rc/arrow_down_pressed@2x.png +0 -0
  446. {melage → assets}/resource/theme/rc/arrow_left.png +0 -0
  447. {melage → assets}/resource/theme/rc/arrow_left@2x.png +0 -0
  448. {melage → assets}/resource/theme/rc/arrow_left_disabled.png +0 -0
  449. {melage → assets}/resource/theme/rc/arrow_left_disabled@2x.png +0 -0
  450. {melage → assets}/resource/theme/rc/arrow_left_focus.png +0 -0
  451. {melage → assets}/resource/theme/rc/arrow_left_focus@2x.png +0 -0
  452. {melage → assets}/resource/theme/rc/arrow_left_pressed.png +0 -0
  453. {melage → assets}/resource/theme/rc/arrow_left_pressed@2x.png +0 -0
  454. {melage → assets}/resource/theme/rc/arrow_right.png +0 -0
  455. {melage → assets}/resource/theme/rc/arrow_right@2x.png +0 -0
  456. {melage → assets}/resource/theme/rc/arrow_right_disabled.png +0 -0
  457. {melage → assets}/resource/theme/rc/arrow_right_disabled@2x.png +0 -0
  458. {melage → assets}/resource/theme/rc/arrow_right_focus.png +0 -0
  459. {melage → assets}/resource/theme/rc/arrow_right_focus@2x.png +0 -0
  460. {melage → assets}/resource/theme/rc/arrow_right_pressed.png +0 -0
  461. {melage → assets}/resource/theme/rc/arrow_right_pressed@2x.png +0 -0
  462. {melage → assets}/resource/theme/rc/arrow_up.png +0 -0
  463. {melage → assets}/resource/theme/rc/arrow_up@2x.png +0 -0
  464. {melage → assets}/resource/theme/rc/arrow_up_disabled.png +0 -0
  465. {melage → assets}/resource/theme/rc/arrow_up_disabled@2x.png +0 -0
  466. {melage → assets}/resource/theme/rc/arrow_up_focus.png +0 -0
  467. {melage → assets}/resource/theme/rc/arrow_up_focus@2x.png +0 -0
  468. {melage → assets}/resource/theme/rc/arrow_up_pressed.png +0 -0
  469. {melage → assets}/resource/theme/rc/arrow_up_pressed@2x.png +0 -0
  470. {melage → assets}/resource/theme/rc/base_icon.png +0 -0
  471. {melage → assets}/resource/theme/rc/base_icon@2x.png +0 -0
  472. {melage → assets}/resource/theme/rc/base_icon_disabled.png +0 -0
  473. {melage → assets}/resource/theme/rc/base_icon_disabled@2x.png +0 -0
  474. {melage → assets}/resource/theme/rc/base_icon_focus.png +0 -0
  475. {melage → assets}/resource/theme/rc/base_icon_focus@2x.png +0 -0
  476. {melage → assets}/resource/theme/rc/base_icon_pressed.png +0 -0
  477. {melage → assets}/resource/theme/rc/base_icon_pressed@2x.png +0 -0
  478. {melage → assets}/resource/theme/rc/branch_closed.png +0 -0
  479. {melage → assets}/resource/theme/rc/branch_closed@2x.png +0 -0
  480. {melage → assets}/resource/theme/rc/branch_closed_disabled.png +0 -0
  481. {melage → assets}/resource/theme/rc/branch_closed_disabled@2x.png +0 -0
  482. {melage → assets}/resource/theme/rc/branch_closed_focus.png +0 -0
  483. {melage → assets}/resource/theme/rc/branch_closed_focus@2x.png +0 -0
  484. {melage → assets}/resource/theme/rc/branch_closed_pressed.png +0 -0
  485. {melage → assets}/resource/theme/rc/branch_closed_pressed@2x.png +0 -0
  486. {melage → assets}/resource/theme/rc/branch_end.png +0 -0
  487. {melage → assets}/resource/theme/rc/branch_end@2x.png +0 -0
  488. {melage → assets}/resource/theme/rc/branch_end_disabled.png +0 -0
  489. {melage → assets}/resource/theme/rc/branch_end_disabled@2x.png +0 -0
  490. {melage → assets}/resource/theme/rc/branch_end_focus.png +0 -0
  491. {melage → assets}/resource/theme/rc/branch_end_focus@2x.png +0 -0
  492. {melage → assets}/resource/theme/rc/branch_end_pressed.png +0 -0
  493. {melage → assets}/resource/theme/rc/branch_end_pressed@2x.png +0 -0
  494. {melage → assets}/resource/theme/rc/branch_line.png +0 -0
  495. {melage → assets}/resource/theme/rc/branch_line@2x.png +0 -0
  496. {melage → assets}/resource/theme/rc/branch_line_disabled.png +0 -0
  497. {melage → assets}/resource/theme/rc/branch_line_disabled@2x.png +0 -0
  498. {melage → assets}/resource/theme/rc/branch_line_focus.png +0 -0
  499. {melage → assets}/resource/theme/rc/branch_line_focus@2x.png +0 -0
  500. {melage → assets}/resource/theme/rc/branch_line_pressed.png +0 -0
  501. {melage → assets}/resource/theme/rc/branch_line_pressed@2x.png +0 -0
  502. {melage → assets}/resource/theme/rc/branch_more.png +0 -0
  503. {melage → assets}/resource/theme/rc/branch_more@2x.png +0 -0
  504. {melage → assets}/resource/theme/rc/branch_more_disabled.png +0 -0
  505. {melage → assets}/resource/theme/rc/branch_more_disabled@2x.png +0 -0
  506. {melage → assets}/resource/theme/rc/branch_more_focus.png +0 -0
  507. {melage → assets}/resource/theme/rc/branch_more_focus@2x.png +0 -0
  508. {melage → assets}/resource/theme/rc/branch_more_pressed.png +0 -0
  509. {melage → assets}/resource/theme/rc/branch_more_pressed@2x.png +0 -0
  510. {melage → assets}/resource/theme/rc/branch_open.png +0 -0
  511. {melage → assets}/resource/theme/rc/branch_open@2x.png +0 -0
  512. {melage → assets}/resource/theme/rc/branch_open_disabled.png +0 -0
  513. {melage → assets}/resource/theme/rc/branch_open_disabled@2x.png +0 -0
  514. {melage → assets}/resource/theme/rc/branch_open_focus.png +0 -0
  515. {melage → assets}/resource/theme/rc/branch_open_focus@2x.png +0 -0
  516. {melage → assets}/resource/theme/rc/branch_open_pressed.png +0 -0
  517. {melage → assets}/resource/theme/rc/branch_open_pressed@2x.png +0 -0
  518. {melage → assets}/resource/theme/rc/checkbox_checked0.png +0 -0
  519. {melage → assets}/resource/theme/rc/line_horizontal.png +0 -0
  520. {melage → assets}/resource/theme/rc/line_horizontal@2x.png +0 -0
  521. {melage → assets}/resource/theme/rc/line_horizontal_disabled.png +0 -0
  522. {melage → assets}/resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
  523. {melage → assets}/resource/theme/rc/line_horizontal_focus.png +0 -0
  524. {melage → assets}/resource/theme/rc/line_horizontal_focus@2x.png +0 -0
  525. {melage → assets}/resource/theme/rc/line_horizontal_pressed.png +0 -0
  526. {melage → assets}/resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
  527. {melage → assets}/resource/theme/rc/line_vertical.png +0 -0
  528. {melage → assets}/resource/theme/rc/line_vertical@2x.png +0 -0
  529. {melage → assets}/resource/theme/rc/line_vertical_disabled.png +0 -0
  530. {melage → assets}/resource/theme/rc/line_vertical_disabled@2x.png +0 -0
  531. {melage → assets}/resource/theme/rc/line_vertical_focus.png +0 -0
  532. {melage → assets}/resource/theme/rc/line_vertical_focus@2x.png +0 -0
  533. {melage → assets}/resource/theme/rc/line_vertical_pressed.png +0 -0
  534. {melage → assets}/resource/theme/rc/line_vertical_pressed@2x.png +0 -0
  535. {melage → assets}/resource/theme/rc/radio_checked.png +0 -0
  536. {melage → assets}/resource/theme/rc/radio_checked@2x.png +0 -0
  537. {melage → assets}/resource/theme/rc/radio_checked_disabled.png +0 -0
  538. {melage → assets}/resource/theme/rc/radio_checked_disabled@2x.png +0 -0
  539. {melage → assets}/resource/theme/rc/radio_checked_focus.png +0 -0
  540. {melage → assets}/resource/theme/rc/radio_checked_focus@2x.png +0 -0
  541. {melage → assets}/resource/theme/rc/radio_checked_pressed.png +0 -0
  542. {melage → assets}/resource/theme/rc/radio_checked_pressed@2x.png +0 -0
  543. {melage → assets}/resource/theme/rc/radio_unchecked.png +0 -0
  544. {melage → assets}/resource/theme/rc/radio_unchecked@2x.png +0 -0
  545. {melage → assets}/resource/theme/rc/radio_unchecked_disabled.png +0 -0
  546. {melage → assets}/resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
  547. {melage → assets}/resource/theme/rc/radio_unchecked_focus.png +0 -0
  548. {melage → assets}/resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
  549. {melage → assets}/resource/theme/rc/radio_unchecked_pressed.png +0 -0
  550. {melage → assets}/resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
  551. {melage → assets}/resource/theme/rc/toolbar_move_horizontal.png +0 -0
  552. {melage → assets}/resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
  553. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
  554. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
  555. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
  556. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
  557. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
  558. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
  559. {melage → assets}/resource/theme/rc/toolbar_move_vertical.png +0 -0
  560. {melage → assets}/resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
  561. {melage → assets}/resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
  562. {melage → assets}/resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
  563. {melage → assets}/resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
  564. {melage → assets}/resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
  565. {melage → assets}/resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
  566. {melage → assets}/resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
  567. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal.png +0 -0
  568. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
  569. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
  570. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
  571. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
  572. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
  573. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
  574. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
  575. {melage → assets}/resource/theme/rc/toolbar_separator_vertical.png +0 -0
  576. {melage → assets}/resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
  577. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
  578. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
  579. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
  580. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
  581. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
  582. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
  583. {melage → assets}/resource/theme/rc/transparent.png +0 -0
  584. {melage → assets}/resource/theme/rc/transparent@2x.png +0 -0
  585. {melage → assets}/resource/theme/rc/transparent_disabled.png +0 -0
  586. {melage → assets}/resource/theme/rc/transparent_disabled@2x.png +0 -0
  587. {melage → assets}/resource/theme/rc/transparent_focus.png +0 -0
  588. {melage → assets}/resource/theme/rc/transparent_focus@2x.png +0 -0
  589. {melage → assets}/resource/theme/rc/transparent_pressed.png +0 -0
  590. {melage → assets}/resource/theme/rc/transparent_pressed@2x.png +0 -0
  591. {melage → assets}/resource/theme/rc/window_close.png +0 -0
  592. {melage → assets}/resource/theme/rc/window_close@2x.png +0 -0
  593. {melage → assets}/resource/theme/rc/window_close_disabled.png +0 -0
  594. {melage → assets}/resource/theme/rc/window_close_disabled@2x.png +0 -0
  595. {melage → assets}/resource/theme/rc/window_close_focus.png +0 -0
  596. {melage → assets}/resource/theme/rc/window_close_focus@2x.png +0 -0
  597. {melage → assets}/resource/theme/rc/window_close_pressed.png +0 -0
  598. {melage → assets}/resource/theme/rc/window_close_pressed@2x.png +0 -0
  599. {melage → assets}/resource/theme/rc/window_grip.png +0 -0
  600. {melage → assets}/resource/theme/rc/window_grip@2x.png +0 -0
  601. {melage → assets}/resource/theme/rc/window_grip_disabled.png +0 -0
  602. {melage → assets}/resource/theme/rc/window_grip_disabled@2x.png +0 -0
  603. {melage → assets}/resource/theme/rc/window_grip_focus.png +0 -0
  604. {melage → assets}/resource/theme/rc/window_grip_focus@2x.png +0 -0
  605. {melage → assets}/resource/theme/rc/window_grip_pressed.png +0 -0
  606. {melage → assets}/resource/theme/rc/window_grip_pressed@2x.png +0 -0
  607. {melage → assets}/resource/theme/rc/window_minimize.png +0 -0
  608. {melage → assets}/resource/theme/rc/window_minimize@2x.png +0 -0
  609. {melage → assets}/resource/theme/rc/window_minimize_disabled.png +0 -0
  610. {melage → assets}/resource/theme/rc/window_minimize_disabled@2x.png +0 -0
  611. {melage → assets}/resource/theme/rc/window_minimize_focus.png +0 -0
  612. {melage → assets}/resource/theme/rc/window_minimize_focus@2x.png +0 -0
  613. {melage → assets}/resource/theme/rc/window_minimize_pressed.png +0 -0
  614. {melage → assets}/resource/theme/rc/window_minimize_pressed@2x.png +0 -0
  615. {melage → assets}/resource/theme/rc/window_undock.png +0 -0
  616. {melage → assets}/resource/theme/rc/window_undock@2x.png +0 -0
  617. {melage → assets}/resource/theme/rc/window_undock_disabled.png +0 -0
  618. {melage → assets}/resource/theme/rc/window_undock_disabled@2x.png +0 -0
  619. {melage → assets}/resource/theme/rc/window_undock_focus.png +0 -0
  620. {melage → assets}/resource/theme/rc/window_undock_focus@2x.png +0 -0
  621. {melage → assets}/resource/theme/rc/window_undock_pressed.png +0 -0
  622. {melage → assets}/resource/theme/rc/window_undock_pressed@2x.png +0 -0
  623. {melage → assets}/resource/theme/style.qss +0 -0
  624. {melage → assets}/resource/tract.png +0 -0
  625. {melage → assets}/resource/view1.png +0 -0
  626. {melage → assets}/resource/view1_eco.png +0 -0
  627. {melage → assets}/resource/view1_mri.png +0 -0
  628. {melage → assets}/resource/view1_seg.png +0 -0
  629. {melage → assets}/resource/view2.png +0 -0
  630. {melage → assets}/resource/view2_seg.png +0 -0
  631. {melage → assets}/resource/w.png +0 -0
  632. {melage → assets}/resource/zoom_inFaded.png +0 -0
  633. /melage/resource/zoom_in.png → /assets/resource/zoom_in_old.png +0 -0
  634. {melage → assets}/resource/zoom_outFaded.png +0 -0
  635. /melage/resource/zoom_out.png → /assets/resource/zoom_out_old.png +0 -0
  636. /melage/{widgets/activation.py → dialogs/ActivationDialog.py} +0 -0
  637. /melage/{widgets/HistImage.py → dialogs/HistogramDialog.py} +0 -0
  638. /melage/{widgets/iminfo.py → dialogs/ImInfoDialog.py} +0 -0
  639. /melage/{widgets/colorwidget.py → dialogs/helpers/ColorDialog.py} +0 -0
  640. /melage/{utils/custom_QScrollBar.py → dialogs/helpers/CustomScrollbar.py} +0 -0
  641. /melage/{widgets/repeat_widget.py → dialogs/helpers/RepeatDialog.py} +0 -0
  642. /melage/{widgets/screenshot_widget.py → dialogs/helpers/ScreenshotDialog.py} +0 -0
  643. /melage/{cli.py → melage.py} +0 -0
  644. /melage/{utils/brain_extraction_helper.py → plugins/bet/main/utils.py} +0 -0
  645. /melage/{graphics → rendering}/GLGraphicsItem.py +0 -0
  646. /melage/{graphics → rendering}/GLViewWidget.py +0 -0
  647. /melage/{graphics → rendering}/Transform3D.py +0 -0
  648. /melage/{graphics → rendering}/__init__.py +0 -0
  649. /melage/{graphics → rendering}/functions.py +0 -0
  650. /melage/{utils → rendering/helpers}/Shaders_120.py +0 -0
  651. /melage/{utils → rendering/helpers}/Shaders_330.py +0 -0
  652. /melage/{graphics → rendering}/items/GLAxisItem.py +0 -0
  653. /melage/{graphics → rendering}/items/GLGridItem.py +0 -0
  654. /melage/{graphics → rendering}/items/GLPolygonItem.py +0 -0
  655. /melage/{graphics → rendering}/items/GLScatterPlotItem.py +0 -0
  656. /melage/{graphics → rendering}/items/GLVolumeItem.py +0 -0
  657. /melage/{graphics → rendering}/items/GLVolumeItem_b.py +0 -0
  658. /melage/{graphics → rendering}/items/__init__.py +0 -0
  659. /melage/{graphics → rendering}/shaders.py +0 -0
  660. /melage/widgets/{enhanceImWidget.py → EnhanceImageWidget.py} +0 -0
  661. {melage-0.0.65.dist-info → melage-1.0.0.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
1
1
  __AUTHOR__ = 'Bahram Jafrasteh'
2
2
 
3
-
3
+ from pathlib import Path
4
4
  import sys
5
5
  sys.path.append("../")
6
6
  from PyQt5 import QtWidgets, QtCore, QtGui
@@ -16,7 +16,10 @@ colorNames =("#FFCC08","darkRed","red", "darkOrange", "orange", "#8b8b00","yello
16
16
 
17
17
 
18
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
19
+ from melage.config import settings
20
+
21
+
22
+
20
23
 
21
24
 
22
25
  class dockWidgets():
@@ -26,6 +29,34 @@ class dockWidgets():
26
29
  def __init__(self):
27
30
  pass
28
31
 
32
+ # This function should be a method in your main class
33
+ def style_row_by_checkstate(self, item):
34
+ """
35
+ Styles the entire row based on the check state of the item in the first column.
36
+ """
37
+ # Get the model from self, not from an argument
38
+ model = self.tree_colors.model().sourceModel()
39
+ if not model:
40
+ return
41
+
42
+ row = item.row()
43
+ # Get the item in the first column to read the consistent check state for the row
44
+ check_item = model.item(row, 0)
45
+
46
+ if check_item and check_item.checkState() == QtCore.Qt.Checked:
47
+ brush = QtGui.QBrush(QtGui.QColor(212, 237, 218, 60)) # Light green
48
+ else:
49
+ brush = QtGui.QBrush(QtCore.Qt.transparent) # Default/transparent
50
+
51
+ # Loop through all columns in the row and apply the style
52
+ for col in range(model.columnCount()):
53
+ item_in_row = model.item(row, col)
54
+ if item_in_row:
55
+ item_in_row.setBackground(brush)
56
+
57
+
58
+
59
+
29
60
  def createDockWidget(self, Main):
30
61
  """
31
62
  Creating main attributes for the main widgets
@@ -197,6 +228,12 @@ class dockWidgets():
197
228
  self.tree_colors.setRootIsDecorated(True)
198
229
  self.tree_colors.setUniformRowHeights(True)
199
230
  self.tree_colors.setModel(self.tags_model)
231
+ self.tree_colors.setStyleSheet("""
232
+ QTreeView::item {
233
+ padding-top: 5px; /* 5px space above the content */
234
+ padding-bottom: 5px; /* 5px space below the content */
235
+ }
236
+ """)
200
237
 
201
238
  # layout
202
239
  main_layout = QtWidgets.QVBoxLayout()
@@ -945,10 +982,10 @@ class dockWidgets():
945
982
 
946
983
  #size = self.dw2_cb.style().pixelMetric(QtWidgets.QStyle.PM_SmallIconSize)
947
984
  #pixmp = QtGui.QPixmap(size, size)
948
- #color_name, color_index_rgb, _ = read_txt_color(source_folder+"/color/LUT_albert.txt", from_one=True)
985
+ #color_name, color_index_rgb, _ = read_txt_color(settings.RESOURCE_DIR+"/color/LUT_albert.txt", from_one=True)
949
986
  #set_new_color_scheme(self, color_name, color_index_rgb)
950
987
 
951
- self.color_name, self.color_index_rgb, _ = read_txt_color(source_folder+"/color/Simple.txt", mode= '', from_one=True)
988
+ self.color_name, self.color_index_rgb, _ = read_txt_color(settings.RESOURCE_DIR+"/color/Simple.txt", mode= '', from_one=True)
952
989
  #update_color_scheme(self, None, dialog=False, update_widget=False)
953
990
  from collections import defaultdict
954
991
  self.colorsCombinations = defaultdict(list)
@@ -966,8 +1003,23 @@ class dockWidgets():
966
1003
  set_new_color_scheme(self)
967
1004
 
968
1005
 
969
- self.tree_colors.model().sourceModel().itemChanged.connect(self.changeColorPen)
970
1006
 
1007
+ #self.tree_colors.model().sourceModel().itemChanged.connect(self.Upper_changeColorPen)
1008
+ self.tree_colors.clicked.connect(self.on_row_clicked)
1009
+ # In your setup method, after populating the model...
1010
+
1011
+ # This connection is correct, assuming the function signature is fixed
1012
+ #self.tree_colors.model().sourceModel().itemChanged.connect(self.style_row_by_checkstate)
1013
+
1014
+ # This loop must be corrected
1015
+ model = self.tree_colors.model().sourceModel()
1016
+ root = model.invisibleRootItem()
1017
+ for row in range(root.rowCount()):
1018
+ # Get the item in the first column (where the checkbox is)
1019
+ item = root.child(row, 0)
1020
+ if item:
1021
+ # Call the function with only the item
1022
+ self.style_row_by_checkstate(item)
971
1023
  #####
972
1024
 
973
1025
 
@@ -1378,7 +1430,13 @@ class dockWidgets():
1378
1430
  self.tree_images.setRootIsDecorated(True)
1379
1431
  self.tree_images.setUniformRowHeights(True)
1380
1432
  self.tree_images.setModel(self.tags_model_image)
1381
-
1433
+ self.tree_images.setStyleSheet("""
1434
+ QTreeView::item {
1435
+ padding-top: 5px; /* 5px space above the content */
1436
+ padding-bottom: 5px; /* 5px space below the content */
1437
+ }
1438
+ """)
1439
+ #self.tree_images.clicked.connect(self.on_row_clicked)
1382
1440
  # layout
1383
1441
  #main_layout = QtWidgets.QVBoxLayout()
1384
1442
 
@@ -1399,7 +1457,8 @@ class dockWidgets():
1399
1457
  self.imported_images = []
1400
1458
 
1401
1459
 
1402
- self.tree_images.model().sourceModel().itemChanged.connect(self.changeImage)
1460
+ #self.tree_images.model().sourceModel().itemChanged.connect(self.changeImage)
1461
+ self.tree_images.clicked.connect(self.on_row_clicked_image)
1403
1462
 
1404
1463
  #self.gridLayout_color.addWidget(self.tree_colors, 1, 0, 1, 1)
1405
1464
 
@@ -1536,7 +1595,7 @@ class dockWidgets():
1536
1595
  :return:
1537
1596
  """
1538
1597
  def dialog():
1539
- from melage.widgets.fileDialog_widget import QFileDialogPreview
1598
+ from melage.widgets.helpers.fileDialog_widget import QFileDialogPreview
1540
1599
  opts = QtWidgets.QFileDialog.DontUseNativeDialog
1541
1600
  dialg = QFileDialogPreview(self, "Open File", self.source_dir, self._filters, options=opts,
1542
1601
  index=self._last_index_select_image_mri,
@@ -1573,14 +1632,14 @@ class dockWidgets():
1573
1632
  menu_import.setTitle(_translate('Main', "Import"))
1574
1633
  import_image_action_1 = QtWidgets.QAction(self)
1575
1634
  icon_mri = QtGui.QIcon()
1576
- icon_mri.addPixmap(QtGui.QPixmap(source_folder+"/mri.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1635
+ icon_mri.addPixmap(QtGui.QPixmap(settings.RESOURCE_DIR+"/mri.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1577
1636
  icon_mriS = QtGui.QIcon()
1578
- icon_mriS.addPixmap(QtGui.QPixmap(source_folder+"/mri_seg.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1637
+ icon_mriS.addPixmap(QtGui.QPixmap(settings.RESOURCE_DIR+"/mri_seg.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1579
1638
 
1580
1639
  icon_eco = QtGui.QIcon()
1581
- icon_eco.addPixmap(QtGui.QPixmap(source_folder+"/eco.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1640
+ icon_eco.addPixmap(QtGui.QPixmap(settings.RESOURCE_DIR+"/eco.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1582
1641
  icon_ecoS = QtGui.QIcon()
1583
- icon_ecoS.addPixmap(QtGui.QPixmap(source_folder+"/eco_seg.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1642
+ icon_ecoS.addPixmap(QtGui.QPixmap(settings.RESOURCE_DIR+"/eco_seg.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
1584
1643
 
1585
1644
  import_image_action_1.setIcon(icon_eco)
1586
1645
  import_image_action_1.setIconText('Images (view 1)')
@@ -1715,42 +1774,36 @@ class dockWidgets():
1715
1774
  remove_action = menu.addAction("&Remove")
1716
1775
  import_action = menu.addAction("&Import")
1717
1776
  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
1777
 
1727
- action_tissue = QtWidgets.QAction(self)
1728
- action_tissue.setIconText('Tissue')
1729
- menu_color.addAction(action_tissue)
1778
+ # --- Dynamic Submenu Creation ---
1779
+ menu_color = QtWidgets.QMenu("Scheme", menu)
1780
+
1781
+ scheme_action_group = QtWidgets.QActionGroup(self)
1782
+ scheme_action_group.setExclusive(True)
1730
1783
 
1731
- action_tissue12 = QtWidgets.QAction(self)
1732
- action_tissue12.setIconText('Tissue12')
1733
- menu_color.addAction(action_tissue12)
1784
+ # 1. Define the directory to scan
1785
+ color_dir = Path(settings.RESOURCE_DIR) / 'color'
1734
1786
 
1735
- action_mcrib = QtWidgets.QAction(self)
1736
- action_mcrib.setIconText('MCrib')
1737
- menu_color.addAction(action_mcrib)
1787
+ # 2. Loop through each .txt file and create an action for it
1788
+ if color_dir.is_dir():
1789
+ # Sort files alphabetically for a consistent menu order
1790
+ for file_path in sorted(color_dir.glob('*.txt')):
1791
+ # Create an action for this file
1792
+ action = QtWidgets.QAction(self)
1738
1793
 
1739
- action_pediatrics1 = QtWidgets.QAction(self)
1740
- action_pediatrics1.setIconText('Pediatric1')
1741
- menu_color.addAction(action_pediatrics1)
1794
+ # Use the filename without extension as the action's text (e.g., "Simple")
1795
+ action.setText(file_path.stem)
1742
1796
 
1743
- action_pediatrics2 = QtWidgets.QAction(self)
1744
- action_pediatrics2.setIconText('Pediatric2')
1745
- menu_color.addAction(action_pediatrics2)
1797
+ action.setCheckable(True)
1798
+ scheme_action_group.addAction(action)
1746
1799
 
1747
- action_simple = QtWidgets.QAction(self)
1748
- action_simple.setIconText('Simple')
1749
- menu_color.addAction(action_simple)
1800
+ # Store the full file path in the action's data field. This is key!
1801
+ action.setData(str(file_path))
1750
1802
 
1803
+ menu_color.addAction(action)
1751
1804
 
1752
- menu.addMenu(menu_color)
1753
- #menu_color.addAction(import_action)
1805
+ if not menu_color.isEmpty():
1806
+ menu.addMenu(menu_color)
1754
1807
 
1755
1808
  action = menu.exec_(self.tree_colors.viewport().mapToGlobal(pos))
1756
1809
  if action == edit_action:
@@ -1770,6 +1823,8 @@ class dockWidgets():
1770
1823
  root = self.tree_colors.model().sourceModel().invisibleRootItem()
1771
1824
  root.removeRow(index.row())
1772
1825
  else:
1826
+ if action is None:
1827
+ return
1773
1828
  if action==import_action:
1774
1829
  from PyQt5.QtWidgets import QFileDialog
1775
1830
  filters = "TXT(*.txt)"
@@ -1778,8 +1833,6 @@ class dockWidgets():
1778
1833
  filen = fileObj[0]
1779
1834
  if filen=='':
1780
1835
  return
1781
- elif action == action_simple:
1782
- filen = source_folder+"/color/Simple.txt"
1783
1836
  elif action == export_action:
1784
1837
  filters = "TXT (*.txt)"
1785
1838
  opts = QtWidgets.QFileDialog.DontUseNativeDialog
@@ -1809,18 +1862,10 @@ class dockWidgets():
1809
1862
  print(e)
1810
1863
 
1811
1864
 
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"
1865
+ # 3. Handle ALL dynamically created scheme actions with one check
1866
+ elif action.data():
1867
+ filen = action.data()
1868
+
1824
1869
  else:
1825
1870
  return
1826
1871
  try: #TODO : Sep 11 2024
@@ -1828,6 +1873,21 @@ class dockWidgets():
1828
1873
  except:
1829
1874
  return
1830
1875
  #if not (hasattr(self, 'readImECO') and hasattr(self, 'readImMRI')):
1876
+
1877
+ ind_avail = [9876]
1878
+ try:
1879
+ ind_avail += list(np.unique(self.readImECO.npSeg))
1880
+ except:
1881
+ pass
1882
+ try:
1883
+ ind_avail += list(np.unique(self.readImMRI.npSeg))
1884
+ except:
1885
+ pass
1886
+ color_vec = possible_color_index_rgb[:, 0].astype('int')
1887
+ list_avail = list(set(color_vec) & set(ind_avail))
1888
+ mask_color = np.isin(color_vec, list_avail)
1889
+ possible_color_index_rgb = possible_color_index_rgb[mask_color, :]
1890
+ possible_color_name = list(np.array(possible_color_name)[mask_color])
1831
1891
  uq = []
1832
1892
  set_not_in_new_list = set(uq) - (set(possible_color_index_rgb[:, 0].astype('int')))
1833
1893
  set_kept_new_list = set_not_in_new_list - (
@@ -1856,9 +1916,14 @@ class dockWidgets():
1856
1916
  possible_color_name.append(new_colr_name)
1857
1917
  possible_color_index_rgb = np.vstack((possible_color_index_rgb, np.array(new_color_rgb)))
1858
1918
 
1919
+
1920
+
1921
+
1859
1922
  # self.color_index_rgb, self.color_name, self.colorsCombinations = combinedIndex(self.colorsCombinations, possible_color_index_rgb, possible_color_name, np.unique(data), uq1)
1860
1923
  self.color_index_rgb, self.color_name, self.colorsCombinations = generate_color_scheme_info(
1861
- possible_color_index_rgb, possible_color_name)
1924
+ self, possible_color_index_rgb, possible_color_name)
1925
+
1926
+
1862
1927
  try:
1863
1928
  # self.dw2_cb.currentTextChanged.disconnect(self.changeColorPen)
1864
1929
  self.tree_colors.itemChanged.disconnect(self.changeColorPen)
@@ -1877,11 +1942,14 @@ class dockWidgets():
1877
1942
  widget = getattr(self, name)
1878
1943
  if hasattr(widget, 'colorsCombinations'):
1879
1944
  widget.colorsCombinations = self.colorsCombinations
1945
+ if hasattr(widget, 'color_name'):
1946
+ widget.color_name = self.color_name
1880
1947
  if not widget.isVisible():
1881
1948
  continue
1882
1949
  if hasattr(widget, 'makeObject'):
1883
1950
  widget.makeObject()
1884
1951
 
1952
+
1885
1953
  if num in [13]:
1886
1954
  try:
1887
1955
  widget.paint(self.readImECO.npSeg,
@@ -0,0 +1,98 @@
1
+ from PyQt5 import QtWidgets, QtCore
2
+ from PyQt5.QtWidgets import QDialog, QFileDialog, QLineEdit, QPushButton
3
+ from pathlib import Path
4
+
5
+ # Import the global settings instance
6
+ from melage.config import settings
7
+
8
+
9
+ class SettingsDialog(QDialog):
10
+ """
11
+ A dialog for editing application settings.
12
+ It reads from and saves to the global SettingsManager.
13
+ """
14
+
15
+ def __init__(self, parent=None):
16
+ super().__init__(parent)
17
+ self.setWindowTitle("MELAGE Settings")
18
+ self.setModal(True) # Block other windows while open
19
+ self.setupUi()
20
+ self.load_settings()
21
+
22
+ def setupUi(self):
23
+ self.main_layout = QtWidgets.QVBoxLayout(self)
24
+
25
+ # --- Create a form layout ---
26
+ form_layout = QtWidgets.QFormLayout()
27
+
28
+ # --- Auto-save setting ---
29
+ self.auto_save_spinbox = QtWidgets.QDoubleSpinBox()
30
+ self.auto_save_spinbox.setSuffix(" minutes")
31
+ form_layout.addRow("Auto-save interval:", self.auto_save_spinbox)
32
+
33
+ # --- Default Save Directory ---
34
+ self.save_dir_edit = QLineEdit()
35
+ self.save_dir_button = QPushButton("Browse...")
36
+ self.save_dir_button.clicked.connect(self.browse_save_dir)
37
+ save_dir_layout = QtWidgets.QHBoxLayout()
38
+ save_dir_layout.addWidget(self.save_dir_edit)
39
+ save_dir_layout.addWidget(self.save_dir_button)
40
+ form_layout.addRow("Default Save Directory:", save_dir_layout)
41
+
42
+ # --- Models Directory ---
43
+ self.models_dir_edit = QLineEdit()
44
+ self.models_dir_button = QPushButton("Browse...")
45
+ self.models_dir_button.clicked.connect(self.browse_models_dir)
46
+ models_dir_layout = QtWidgets.QHBoxLayout()
47
+ models_dir_layout.addWidget(self.models_dir_edit)
48
+ models_dir_layout.addWidget(self.models_dir_button)
49
+ form_layout.addRow("Models Directory:", models_dir_layout)
50
+
51
+ self.main_layout.addLayout(form_layout)
52
+
53
+ # --- OK / Cancel Buttons ---
54
+ button_box = QtWidgets.QDialogButtonBox(
55
+ QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel
56
+ )
57
+ button_box.accepted.connect(self.accept) # Calls our save_settings method
58
+ button_box.rejected.connect(self.reject)
59
+
60
+ self.main_layout.addWidget(button_box)
61
+
62
+ def browse_save_dir(self):
63
+ """Lets user pick a default save directory."""
64
+ directory = QFileDialog.getExistingDirectory(
65
+ self, "Select Default Save Directory", self.save_dir_edit.text()
66
+ )
67
+ if directory:
68
+ self.save_dir_edit.setText(directory)
69
+
70
+ def browse_models_dir(self):
71
+ """Lets user pick a models directory."""
72
+ directory = QFileDialog.getExistingDirectory(
73
+ self, "Select Models Directory", self.models_dir_edit.text()
74
+ )
75
+ if directory:
76
+ self.models_dir_edit.setText(directory)
77
+
78
+ def load_settings(self):
79
+ """Load current settings from the manager into the UI."""
80
+ self.auto_save_spinbox.setValue(settings.auto_save_interval)
81
+ self.save_dir_edit.setText(str(settings.DEFAULT_USE_DIR))
82
+ self.models_dir_edit.setText(str(settings.DEFAULT_MODELS_DIR))
83
+
84
+ def update_use_dir(self, new_dir):
85
+ settings.DEFAULT_USE_DIR = str(Path(new_dir))
86
+
87
+ def save_settings(self):
88
+ """Save UI values back to the settings manager and persist."""
89
+ settings.auto_save_interval = self.auto_save_spinbox.value()
90
+ settings.DEFAULT_USE_DIR = str(Path(self.save_dir_edit.text()))
91
+ settings.DEFAULT_MODELS_DIR = str(Path(self.models_dir_edit.text()))
92
+
93
+ settings.save() # This saves to the JSON file
94
+
95
+ def accept(self):
96
+ """Called when OK is clicked."""
97
+ self.save_settings()
98
+ super().accept() # Closes the dialog
@@ -0,0 +1,49 @@
1
+ from PyQt5.QtWidgets import QWidget
2
+ import nibabel as nib
3
+
4
+ class MelagePlugin:
5
+ """
6
+ The base class "contract" for all MELAGE plugins.
7
+
8
+ A plugin must provide its name and a method to create its main widget.
9
+ """
10
+
11
+ def __init__(self):
12
+ pass
13
+
14
+ @property
15
+ def name(self) -> str:
16
+ """The name of the plugin to be shown in the menu."""
17
+ raise NotImplementedError("Plugin must have a name.")
18
+
19
+ @property
20
+ def description(self) -> str:
21
+ """A short description for tooltips."""
22
+ return "" # Optional
23
+
24
+ @property
25
+ def reference(self) -> str:
26
+ """
27
+ Returns a citation, DOI, or URL for the algorithm.
28
+ Supports HTML (e.g., <a href='...'>Link</a>).
29
+ """
30
+ return ""
31
+
32
+ @property
33
+ def category(self) -> str:
34
+ """Category to group plugins in (e.g., "Segmentation", "Registration")."""
35
+ return "General" # Default category
36
+
37
+ def get_widget(self, parent=None) -> QWidget:
38
+ """
39
+ The main function. This method must create and return
40
+ the plugin's main QWidget (or QDialog).
41
+ """
42
+ raise NotImplementedError("Plugin must provide a widget.")
43
+
44
+
45
+ from .DockWidgets import dockWidgets
46
+ from .EnhanceImageWidget import enhanceIm
47
+ from .SettingsWidget import SettingsDialog
48
+ from .openglWidgets import openglWidgets
49
+ from .plugin_manager import PluginManager