MainWindowController.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. # import
  2. import enum, sys
  3. # pyQT5 import
  4. #from PyQt5.QtWidgets import QWidget, QLabel, QFileDialog
  5. from PyQt5.QtWidgets import QFileDialog, QApplication
  6. # gui import
  7. import gui.guiView.MainWindow as MWView
  8. import gui.guiModel.MainWindowModel as MWModel
  9. # ------------------------------------------------------------------------------------------
  10. # MIAM project 2020
  11. # ------------------------------------------------------------------------------------------
  12. # author: remi.cozot@univ-littoral.fr
  13. # ------------------------------------------------------------------------------------------
  14. # local function
  15. def getScreenSize(app):
  16. screens = app.screens()
  17. res = list(map(lambda x: x.size(), screens))
  18. # debug
  19. print(res)
  20. return res
  21. # local class
  22. class mainWidgetDisplayMode(enum.Enum):
  23. """ Enum """
  24. IMG = 0 # single display image
  25. HIST = 1 # single display image
  26. IMGnHIST = 2 # dual display image and its histogram
  27. class MainWindowController(object):
  28. """controller for MainWindow"""
  29. def __init__(self, app):
  30. # get screens size
  31. self.screenSize = getScreenSize(app)
  32. # attributes
  33. self.displayMode = mainWidgetDisplayMode.IMGnHIST # default display mode
  34. self.dispHDR_linear = True
  35. # build vue
  36. self.view = MWView.MainWindow(self)
  37. self.view.show()
  38. # build model
  39. self.model = MWModel.MainWindowModel(self)
  40. # utils methods
  41. def statusMessage(self, s): self.view.statusBar().showMessage(s)
  42. # callBack methods
  43. # --------------------------------------------------------------
  44. # menu: file
  45. # open image file
  46. def openImage(self):
  47. # status message
  48. self.statusMessage('open image file ...')
  49. # open file dialog
  50. fname = QFileDialog.getOpenFileName(None, 'Open file', '../images/')[0]
  51. self.statusMessage('open image file:'+fname)
  52. # ask model to load image
  53. imgs = self.model.readImage(fname)
  54. self.view.setImage(imgs)
  55. # open workflow
  56. def openWorkflow(self):
  57. # status message
  58. self.statusMessage('load workflow file ...')
  59. # open file dialog
  60. fname = QFileDialog.getOpenFileName(None, 'Open file', '../workflows/')[0]
  61. self.statusMessage('load workflow file:'+fname)
  62. # ask model to load workflow
  63. self.model.readWorkflow(fname)
  64. # menu: workflow
  65. # compute
  66. def compute(self):
  67. # status message
  68. self.statusMessage('compute ...')
  69. imgs = self.model.compute()
  70. self.statusMessage('compute ...'+ str(len(imgs))+' images have benn computed')
  71. if len(imgs)>0: self.view.setImage(imgs)
  72. # menu: display
  73. # image only
  74. def displayIMG(self):
  75. if self.displayMode == mainWidgetDisplayMode.IMGnHIST:
  76. self.statusMessage('display set to histogram ...')
  77. self.displayMode = mainWidgetDisplayMode.HIST
  78. self.view.setDislaytoHIST()
  79. elif self.displayMode == mainWidgetDisplayMode.HIST:
  80. self.statusMessage('display set to image and histogram ...')
  81. self.displayMode = mainWidgetDisplayMode.IMGnHIST
  82. self.view.setDislaytoIMGnHIST()
  83. elif self.displayMode == mainWidgetDisplayMode.IMG:
  84. self.statusMessage('...')
  85. pass
  86. # hist only
  87. def displayHIST(self):
  88. if self.displayMode == mainWidgetDisplayMode.IMGnHIST:
  89. self.statusMessage('display set to image ...')
  90. self.displayMode = mainWidgetDisplayMode.IMG
  91. self.view.setDislaytoIMG()
  92. elif self.displayMode == mainWidgetDisplayMode.HIST:
  93. self.statusMessage('...')
  94. elif self.displayMode == mainWidgetDisplayMode.IMG:
  95. self.statusMessage('display set to image and histogram ...')
  96. self.displayMode = mainWidgetDisplayMode.IMGnHIST
  97. self.view.setDislaytoIMGnHIST()
  98. pass