medusabci / medusa-platform

Other
9 stars 1 forks source link

Configuration panel remains open after closing Medusa #11

Closed dmarcos97 closed 2 years ago

dmarcos97 commented 2 years ago

If you have an application configuration panel open and you close the Medusa Platform, the panel remains open. It would be better to close everything when Medusa is finished.

esantamariavazquez commented 2 years ago

Buf, esto es mas fastidiado de lo que parece. He solucionado el tema con la BasicConfigWindow, pero con las otras hay que darle una vuelta. EL problema es cuando la app se abre como una QMainWindow, ya que tiene su propio espacio de memoria. Si se abre como dialog no pasaría. Ademas queda mejor que estas ventanas sean un dialog de tipo modal, para que no puedas hacer nada mientras esten abiertas.

Resumen: solucionado a medias, hay que seguir trabajando en ello.

esantamariavazquez commented 2 years ago

SOLUCIONADO

Lo mejor es definir todas las config windows como QDialog y llamar a self.setModal(True). De este modo ademas no se permite interactuar con la plataforma hasta que no cierres la ventana de configuración.

Ya lo he cambiado en la ventana de configuración por defecto en resources y en el RCP. Pasos para cambiarlo:

  1. Config tiene que heredar de QDialog en vez de QMainWindow y antes del self.show() llamais a self.setModal(True)
  2. Hay que cambiar el archivo .ui del que hereda la venta (si lo hay). Para ello crear en QtCreator un nuevo ui file de tipo "Dialog without buttons" y copiáis y pegáis todo el contenido que había dentro de CentralWidget del antiguo ui.
  3. Eliminais las llamadas a set_status, porque eso es una función de QMainWindow (es una chorrada de titulito abajo de la ventana). Se elimina y listo

Con esto ya estaría todo como QDialog, son 3 minutos. Si teneis alguna duda, ya he actualizado el repo del RCP.

vicmarcag commented 2 years ago

Además de lo que ha dicho Eduardo, yo metería la siguiente línea justo antes de llamar a self.setupUi(self):

self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)

Lo que hace es eliminar el botón "?" de los QDialog, que no usamos para nada y molesta

Serpeve commented 2 years ago

Si importáis QtCore de PyQt5: from PyQt5 import QtCore

La línea de víctro habría que escribirla así:

self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint)