Skip to content

Commit

Permalink
Added deleteOnClose, signals list, disconnect
Browse files Browse the repository at this point in the history
Added the deleteOnClose attribute that frees the memory when the window is closed.
Also I've created a new list to gather all the class signals and called the method disconnect_all_signals() from signals_handler module.
Last thing: ordered some imports.
  • Loading branch information
mcbaguetti committed Apr 17, 2023
1 parent 50d4131 commit e70b9de
Showing 1 changed file with 94 additions and 10 deletions.
104 changes: 94 additions & 10 deletions pzero/windows_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
from vtkmodules.vtkFiltersPoints import vtkRadiusOutlierRemoval, vtkEuclideanClusterExtraction, vtkProjectPointsToPlane
from vtkmodules.vtkRenderingCore import vtkPropPicker

from .dom_collection import DomCollection
from .orientation_analysis import get_dip_dir_vectors

"""QT imports"""
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
Expand All @@ -21,9 +18,12 @@
from .helper_dialogs import input_one_value_dialog, input_text_dialog, input_combo_dialog, message_dialog, \
options_dialog, multiple_input_dialog, tic, toc, open_file_dialog, progress_dialog, save_file_dialog,general_input_dialog
from .geological_collection import GeologicalCollection
from copy import deepcopy
from uuid import uuid4
from .dom_collection import DomCollection
from .orientation_analysis import get_dip_dir_vectors
from .helper_functions import best_fitting_plane, gen_frame
from .helper_widgets import Vector
from .signals_handler import disconnect_all_signals

from time import sleep

"""Maths imports"""
Expand All @@ -49,6 +49,9 @@
from pandas import DataFrame as pd_DataFrame
from pandas import unique as pd_unique

from copy import deepcopy
from uuid import uuid4

""""VTK imports"""
""""VTK Numpy interface imports"""
# import vtk.numpy_interface.dataset_adapter as dsa
Expand Down Expand Up @@ -88,13 +91,12 @@
# from matplotlib.backend_bases import FigureCanvasBase
import mplstereonet

from .helper_widgets import Vector

from uuid import UUID

"""Probably not-required imports"""
# import sys
# from time import sleep
# from uuid import UUID (there is already above 'from uuid import uuid4')


mplstyle.use(['dark_background', 'fast'])
"""Background color for matplotlib plots.
Expand Down Expand Up @@ -125,7 +127,7 @@ def __init__(self, parent=None, *args, **kwargs):
# SEE DISCUSSIONS ON QPointer AND WA_DeleteOnClose ON THE INTERNET
# self.setAttribute(Qt.WA_DeleteOnClose, True)
self.parent = parent

self.setAttribute(Qt.WA_DeleteOnClose, True)
"""Connect actionQuit.triggered SIGNAL to self.close SLOT"""
self.actionClose.triggered.connect(self.close)

Expand Down Expand Up @@ -330,6 +332,87 @@ def __init__(self, parent=None, *args, **kwargs):
self.parent.prop_legend_cmap_modified_signal.connect(
lambda this_property: self.prop_legend_cmap_modified_update_views(this_property=this_property))

""" Gather all the signals inside a signals list,
this is needed when closing because we need to dereference them"""
self.signals = []
self.signals.append(self.actionClose.triggered)
self.signals.append(self.parent.project_close_signal)
self.signals.append(self.parent.geology_added_signal)
self.signals.append(self.parent.geology_removed_signal)
self.signals.append(self.parent.geology_geom_modified_signal)
self.signals.append(self.parent.geology_data_keys_removed_signal)
self.signals.append(self.parent.geology_data_val_modified_signal)
self.signals.append(self.parent.geology_metadata_modified_signal)
self.signals.append(self.parent.geology_legend_color_modified_signal)
self.signals.append(self.parent.geology_legend_thick_modified_signal)
self.signals.append(self.parent.geology_legend_point_size_modified_signal)
self.signals.append(self.parent.geology_legend_opacity_modified_signal)
self.signals.append(self.parent.xsect_added_signal)
self.signals.append(self.parent.xsect_removed_signal)
self.signals.append(self.parent.xsect_geom_modified_signal)
self.signals.append(self.parent.xsect_metadata_modified_signal)
self.signals.append(self.parent.xsect_legend_color_modified_signal)
self.signals.append(self.parent.xsect_legend_thick_modified_signal)
self.signals.append(self.parent.xsect_legend_opacity_modified_signal)
self.signals.append(self.parent.boundary_added_signal)
self.signals.append(self.parent.boundary_removed_signal)
self.signals.append(self.parent.boundary_geom_modified_signal)
self.signals.append(self.parent.boundary_metadata_modified_signal)
self.signals.append(self.parent.boundary_legend_color_modified_signal)
self.signals.append(self.parent.boundary_legend_thick_modified_signal)
self.signals.append(self.parent.boundary_legend_opacity_modified_signal)
self.signals.append(self.parent.mesh3d_added_signal)
self.signals.append(self.parent.mesh3d_removed_signal)
self.signals.append(self.parent.mesh3d_data_keys_removed_signal)
self.signals.append(self.parent.mesh3d_data_val_modified_signal)
self.signals.append(self.parent.mesh3d_metadata_modified_signal)
self.signals.append(self.parent.mesh3d_legend_color_modified_signal)
self.signals.append(self.parent.mesh3d_legend_thick_modified_signal)
self.signals.append(self.parent.mesh3d_legend_opacity_modified_signal)
self.signals.append(self.parent.dom_added_signal)
self.signals.append(self.parent.dom_removed_signal)
self.signals.append(self.parent.dom_data_keys_removed_signal)
self.signals.append(self.parent.dom_data_val_modified_signal)
self.signals.append(self.parent.dom_metadata_modified_signal)
self.signals.append(self.parent.dom_legend_color_modified_signal)
self.signals.append(self.parent.dom_legend_thick_modified_signal)
self.signals.append(self.parent.dom_legend_point_size_modified_signal)
self.signals.append(self.parent.dom_legend_opacity_modified_signal)
self.signals.append(self.parent.image_added_signal)
self.signals.append(self.parent.image_removed_signal)
self.signals.append(self.parent.image_metadata_modified_signal)
self.signals.append(self.parent.image_legend_opacity_modified_signal)
self.signals.append(self.parent.well_added_signal)
self.signals.append(self.parent.well_removed_signal)
self.signals.append(self.parent.well_data_keys_removed_signal)
self.signals.append(self.parent.well_data_val_modified_signal)
self.signals.append(self.parent.well_metadata_modified_signal)
self.signals.append(self.parent.well_legend_color_modified_signal)
self.signals.append(self.parent.well_legend_thick_modified_signal)
self.signals.append(self.parent.well_legend_opacity_modified_signal)
self.signals.append(self.parent.fluid_added_signal)
self.signals.append(self.parent.fluid_removed_signal)
self.signals.append(self.parent.fluid_geom_modified_signal)
self.signals.append(self.parent.fluid_data_keys_removed_signal)
self.signals.append(self.parent.fluid_data_val_modified_signal)
self.signals.append(self.parent.fluid_metadata_modified_signal)
self.signals.append(self.parent.fluid_legend_color_modified_signal)
self.signals.append(self.parent.fluid_legend_thick_modified_signal)
self.signals.append(self.parent.fluid_legend_point_size_modified_signal)
self.signals.append(self.parent.fluid_legend_opacity_modified_signal)
self.signals.append(self.parent.background_added_signal)
self.signals.append(self.parent.background_removed_signal)
self.signals.append(self.parent.background_geom_modified_signal)
self.signals.append(self.parent.background_data_keys_removed_signal)
self.signals.append(self.parent.background_data_val_modified_signal)
self.signals.append(self.parent.background_metadata_modified_signal)
self.signals.append(self.parent.background_legend_color_modified_signal)
self.signals.append(self.parent.background_legend_thick_modified_signal)
self.signals.append(self.parent.background_legend_point_size_modified_signal)
self.signals.append(self.parent.background_legend_opacity_modified_signal)
self.signals.append(self.parent.prop_legend_cmap_modified_signal)


def show_qt_canvas(self):
"""Show the Qt Window"""
self.show()
Expand Down Expand Up @@ -4489,7 +4572,8 @@ def closeEvent(self, event):
reply = QMessageBox.question(self, 'Closing window', 'Close this window?', QMessageBox.Yes | QMessageBox.No,
QMessageBox.No)
if reply == QMessageBox.Yes:
if not isinstance(self,ViewStereoplot):
disconnect_all_signals(self.signals)
if not isinstance(self, ViewStereoplot):
self.plotter.close() # needed to cleanly close the vtk plotter
event.accept()
else:
Expand Down

0 comments on commit e70b9de

Please sign in to comment.