From 82a03683c80801816b499060c9c5f12fc6902ab4 Mon Sep 17 00:00:00 2001 From: KushDutta23 Date: Thu, 12 Feb 2026 20:54:38 +0530 Subject: [PATCH 1/6] Fix race conditions in WMS control UI tests by waiting for Qt event loop updates From 35f4a136540d43428fe6a5c063fdb5e3e0f1bfcd Mon Sep 17 00:00:00 2001 From: KushDutta23 Date: Fri, 13 Feb 2026 18:13:16 +0530 Subject: [PATCH 2/6] Add checkbox for color flight track by altitude --- mslib/msui/topview.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mslib/msui/topview.py b/mslib/msui/topview.py index 85021884a..e5f3c8ee0 100644 --- a/mslib/msui/topview.py +++ b/mslib/msui/topview.py @@ -116,6 +116,9 @@ def __init__(self, parent=None, settings=None, wms_connected=False): palette.setColor(QtGui.QPalette.Button, colour) button.setPalette(palette) + self.cbAltitudeColor = QtWidgets.QCheckBox("Color flight track by altitude") + self.layout().addWidget(self.cbAltitudeColor) + # Connect colour button signals. self.btWaterColour.clicked.connect(functools.partial(self.setColour, "water")) self.btLandColour.clicked.connect(functools.partial(self.setColour, "land")) @@ -173,6 +176,8 @@ def get_settings(self): QtGui.QPalette(self.btVerticesColour.palette()).color(QtGui.QPalette.Button).getRgbF(), "colour_ft_waypoints": QtGui.QPalette(self.btWaypointsColour.palette()).color(QtGui.QPalette.Button).getRgbF(), + "color_by_altitude": self.cbAltitudeColor.isChecked(), + } return settings From 761abf396ac871fa27484c9b1c723f791e07e2b9 Mon Sep 17 00:00:00 2001 From: KushDutta23 Date: Sat, 14 Feb 2026 19:11:26 +0530 Subject: [PATCH 3/6] Refactor constructor to use super() for initialization Refactor __init__ method to call super().__init__ with parameters. --- mslib/utils/ogcwms.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/mslib/utils/ogcwms.py b/mslib/utils/ogcwms.py index f9b2bdcc2..4e129ad72 100644 --- a/mslib/utils/ogcwms.py +++ b/mslib/utils/ogcwms.py @@ -167,10 +167,25 @@ class WebMapService(wms111.WebMapService_1_1_1): Implements IWebMapService. """ - def __init__(self, url, version=None, xml=None, username=None, password=None, - parse_remote_metadata=False, headers=None, - timeout=config_loader(dataset="WMS_request_timeout"), - auth=None): + def __init__(self, url, version=None, xml=None, username=None, password=None, + parse_remote_metadata=False, headers=None, + timeout=config_loader(dataset="WMS_request_timeout"), + auth=None): + + super().__init__( + url, + version=version, + xml=xml, + username=username, + password=password, + parse_remote_metadata=parse_remote_metadata, + headers=headers, + timeout=timeout, + auth=auth + ) + + # existing custom code yaha se niche rahega + """Initialize.""" if auth: From 7c09495368aba1c18e03d8412e40b5507e076d8d Mon Sep 17 00:00:00 2001 From: KushDutta23 Date: Mon, 16 Feb 2026 19:33:53 +0530 Subject: [PATCH 4/6] Refactor error handling in mssautoplot.py --- mslib/utils/mssautoplot.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mslib/utils/mssautoplot.py b/mslib/utils/mssautoplot.py index 5281947de..b91ece768 100644 --- a/mslib/utils/mssautoplot.py +++ b/mslib/utils/mssautoplot.py @@ -663,13 +663,17 @@ def draw(no_of_plots): return False except Exception as e: if "times" in str(e): - print("Invalid times and/or levels requested") - elif "LAYER" in str(e): - print(f"Invalid LAYER '{layer}' requested") - elif "404 Client Error" in str(e) or "NOT FOUND for url" in str(e): - print("Invalid STYLE and/or URL requested") - else: - print(str(e)) + print("Invalid times and/or levels requested") + +elif "LAYER" in str(e): + print("Invalid LAYER '{}' requested".format(layer)) + +elif "404 Client Error" in str(e) or "NOT FOUND for url" in str(e): + print("Invalid STYLE and/or URL requested") + +else: + print(str(e)) + else: print("Plot downloaded!") return True From 789a034a183356426bdcedf9688f19289a65ff9a Mon Sep 17 00:00:00 2001 From: KushDutta23 Date: Tue, 17 Feb 2026 19:21:59 +0530 Subject: [PATCH 5/6] Fix super() call in MFDatasetCommonDims constructor --- mslib/utils/netCDF4tools.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mslib/utils/netCDF4tools.py b/mslib/utils/netCDF4tools.py index 1e19eae6f..63ad52c66 100644 --- a/mslib/utils/netCDF4tools.py +++ b/mslib/utils/netCDF4tools.py @@ -200,6 +200,10 @@ class MFDatasetCommonDims(netCDF4.MFDataset): def __init__(self, files, exclude=None, skip_dim_check=None, require_dim_num=False): + super(MFDatasetCommonDims, self).__init__(files) + + super().__init__(files) + """ Open a Dataset spanning multiple files sharing common dimensions but containing different record variables, making it look as if it was a @@ -247,7 +251,7 @@ def __init__(self, files, exclude=None, skip_dim_check=None, # Open the master again, this time as a classic CDF instance. This will avoid # calling methods of the CDFMF subclass when querying the master file. - cdfm = netCDF4.Dataset(master) + # copy attributes from master. self.__dict__.update(cdfm.__dict__) From 0d1bba69d6faa525b161da7822912bdd5bdedb7c Mon Sep 17 00:00:00 2001 From: KushDutta23 Date: Wed, 18 Feb 2026 19:10:42 +0530 Subject: [PATCH 6/6] Implement cleanup_connections and refactor parent close handling Added cleanup_connections method to disconnect signals properly when the widget is closed. Refactored parent close handling to call cleanup_connections before emitting the signal. --- mslib/msui/multiple_flightpath_dockwidget.py | 44 ++++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/mslib/msui/multiple_flightpath_dockwidget.py b/mslib/msui/multiple_flightpath_dockwidget.py index 9656cd674..ae56a5031 100644 --- a/mslib/msui/multiple_flightpath_dockwidget.py +++ b/mslib/msui/multiple_flightpath_dockwidget.py @@ -119,6 +119,38 @@ def remove(self): class MultipleFlightpathControlWidget(QtWidgets.QWidget, ui.Ui_MultipleViewWidget): + + def cleanup_connections(self): + try: + self.listFlightTracks.model().rowsInserted.disconnect(self.wait) + except Exception: + pass + + try: + self.listFlightTracks.model().rowsRemoved.disconnect(self.flighttrackRemoved) + except Exception: + pass + + try: + self.ui.signal_activate_flighttrack1.disconnect(self.get_active) + except Exception: + pass + + try: + self.list_flighttrack.itemChanged.disconnect(self.flagop) + except Exception: + pass + + try: + self.ui.signal_ft_vertices_color_change.disconnect(self.ft_vertices_color) + except Exception: + pass + + try: + self.ui.signal_login_mscolab.disconnect(self.login) + except Exception: + pass + """ This class provides the interface for plotting Multiple Flighttracks on the TopView canvas. @@ -220,7 +252,12 @@ def __init__(self, parent=None, view=None, listFlightTracks=None, self.connect_mscolab_server() if parent is not None: - parent.viewCloses.connect(lambda: self.signal_parent_closes.emit()) + parent.viewCloses.connect(self.handle_parent_close) + + def handle_parent_close(self): + self.cleanup_connections() + self.signal_parent_closes.emit() + # Load flighttracks for index in range(self.listFlightTracks.count()): @@ -258,8 +295,9 @@ def connect_mscolab_server(self): self.listOperationsMSC, self.view) self.obb.append(self.operations) - self.ui.signal_permission_revoked.connect(lambda op_id: self.operations.permission_revoked(op_id)) - self.ui.signal_render_new_permission.connect(lambda op_id, path: self.operations.render_permission(op_id, path)) + self.ui.signal_permission_revoked.connect(self.operations.permission_revoked) + self.ui.signal_render_new_permission.connect(self.operations.render_permission) + # Signal emitted, on activation of operation from MSUI self.ui.signal_activate_operation.connect(self.update_op_id) self.ui.signal_operation_added.connect(self.add_operation_slot)