diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 1fe9da2..c03befd 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,9 @@ # PyGPSClient Release Notes +### RELEASE 1.5.3 + +1. Fix issue with displaying final content of file in console after EOF condition. + ### RELEASE 1.5.2 1. Fix logpath setting in config file - Fixes [#171](https://github.com/semuconsulting/PyGPSClient/issues/171) diff --git a/docs/pygpsclient.rst b/docs/pygpsclient.rst index 35bdf89..0f98f3c 100644 --- a/docs/pygpsclient.rst +++ b/docs/pygpsclient.rst @@ -9,389 +9,389 @@ pygpsclient.about\_dialog module .. automodule:: pygpsclient.about_dialog :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.app module ---------------------- .. automodule:: pygpsclient.app :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.banner\_frame module -------------------------------- .. automodule:: pygpsclient.banner_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.chart\_frame module ------------------------------- .. automodule:: pygpsclient.chart_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.confirm\_box module ------------------------------- .. automodule:: pygpsclient.confirm_box :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.console\_frame module --------------------------------- .. automodule:: pygpsclient.console_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.dialog\_state module -------------------------------- .. automodule:: pygpsclient.dialog_state :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.file\_handler module -------------------------------- .. automodule:: pygpsclient.file_handler :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.globals module -------------------------- .. automodule:: pygpsclient.globals :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.gnss\_status module ------------------------------- .. automodule:: pygpsclient.gnss_status :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.gpx\_dialog module ------------------------------ .. automodule:: pygpsclient.gpx_dialog :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.graphview\_frame module ----------------------------------- .. automodule:: pygpsclient.graphview_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.helpers module -------------------------- .. automodule:: pygpsclient.helpers :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.importmap\_dialog module ------------------------------------ .. automodule:: pygpsclient.importmap_dialog :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.map\_frame module ----------------------------- .. automodule:: pygpsclient.map_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.mapquest module --------------------------- .. automodule:: pygpsclient.mapquest :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.menu\_bar module ---------------------------- .. automodule:: pygpsclient.menu_bar :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.nmea\_handler module -------------------------------- .. automodule:: pygpsclient.nmea_handler :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ntrip\_client\_dialog module ---------------------------------------- .. automodule:: pygpsclient.ntrip_client_dialog :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.rover\_frame module ------------------------------- .. automodule:: pygpsclient.rover_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.rtcm3\_handler module --------------------------------- .. automodule:: pygpsclient.rtcm3_handler :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.scatter\_frame module --------------------------------- .. automodule:: pygpsclient.scatter_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.serialconfig\_frame module -------------------------------------- .. automodule:: pygpsclient.serialconfig_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.serverconfig\_frame module -------------------------------------- .. automodule:: pygpsclient.serverconfig_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.settings\_frame module ---------------------------------- .. automodule:: pygpsclient.settings_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.skyview\_frame module --------------------------------- .. automodule:: pygpsclient.skyview_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.socketconfig\_frame module -------------------------------------- .. automodule:: pygpsclient.socketconfig_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.spartn\_dialog module --------------------------------- .. automodule:: pygpsclient.spartn_dialog :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.spartn\_gnss\_frame module -------------------------------------- .. automodule:: pygpsclient.spartn_gnss_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.spartn\_json\_config module --------------------------------------- .. automodule:: pygpsclient.spartn_json_config :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.spartn\_lband\_frame module --------------------------------------- .. automodule:: pygpsclient.spartn_lband_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.spartn\_mqtt\_frame module -------------------------------------- .. automodule:: pygpsclient.spartn_mqtt_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.spectrum\_frame module ---------------------------------- .. automodule:: pygpsclient.spectrum_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.status\_frame module -------------------------------- .. automodule:: pygpsclient.status_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.stream\_handler module ---------------------------------- .. automodule:: pygpsclient.stream_handler :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.strings module -------------------------- .. automodule:: pygpsclient.strings :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.sysmon\_frame module -------------------------------- .. automodule:: pygpsclient.sysmon_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_cfgval\_frame module ------------------------------------- .. automodule:: pygpsclient.ubx_cfgval_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_config\_dialog module -------------------------------------- .. automodule:: pygpsclient.ubx_config_dialog :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_dynamic\_frame module -------------------------------------- .. automodule:: pygpsclient.ubx_dynamic_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_handler module ------------------------------- .. automodule:: pygpsclient.ubx_handler :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_info\_frame module ----------------------------------- .. automodule:: pygpsclient.ubx_info_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_msgrate\_frame module -------------------------------------- .. automodule:: pygpsclient.ubx_msgrate_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_port\_frame module ----------------------------------- .. automodule:: pygpsclient.ubx_port_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_preset\_frame module ------------------------------------- .. automodule:: pygpsclient.ubx_preset_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_recorder\_frame module --------------------------------------- .. automodule:: pygpsclient.ubx_recorder_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.ubx\_solrate\_frame module -------------------------------------- .. automodule:: pygpsclient.ubx_solrate_frame :members: - :undoc-members: :show-inheritance: + :undoc-members: pygpsclient.widget\_state module -------------------------------- .. automodule:: pygpsclient.widget_state :members: - :undoc-members: :show-inheritance: + :undoc-members: Module contents --------------- .. automodule:: pygpsclient :members: - :undoc-members: :show-inheritance: + :undoc-members: diff --git a/pyproject.toml b/pyproject.toml index 29defda..3b7838e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,14 @@ repository = "https://github.com/semuconsulting/PyGPSClient" changelog = "https://github.com/semuconsulting/PyGPSClient/blob/master/RELEASE_NOTES.md" [project.optional-dependencies] -deploy = ["build", "pip", "setuptools>=66.0.0", "wheel"] +deploy = [ + "build", + "packaging>=24.2", + "pip", + "setuptools>=66.0.0", + "twine>=6.1.0", + "wheel", +] test = [ "bandit", "black", diff --git a/src/pygpsclient/_version.py b/src/pygpsclient/_version.py index e3b4ebd..c92ec02 100644 --- a/src/pygpsclient/_version.py +++ b/src/pygpsclient/_version.py @@ -8,4 +8,4 @@ :license: BSD 3-Clause """ -__version__ = "1.5.2" +__version__ = "1.5.3" diff --git a/src/pygpsclient/app.py b/src/pygpsclient/app.py index 4782b83..80a8167 100644 --- a/src/pygpsclient/app.py +++ b/src/pygpsclient/app.py @@ -841,6 +841,7 @@ def on_gnss_eof(self, event): # pylint: disable=unused-argument self.frm_settings.frm_socketserver.socketserving = ( False # turn off socket server ) + self._refresh_widgets() self.conn_status = DISCONNECTED self.set_status(ENDOFFILE, "red") @@ -855,9 +856,21 @@ def on_gnss_timeout(self, event): # pylint: disable=unused-argument self.frm_settings.frm_socketserver.socketserving = ( False # turn off socket server ) + self._refresh_widgets() self.conn_status = DISCONNECTED self.set_status(INACTIVE_TIMEOUT, "red") + def on_stream_error(self, event): # pylint: disable=unused-argument + """ + EVENT TRIGGERED + Action on "<>" event - connection streaming error. + + :param event event: <> event + """ + + self._refresh_widgets() + self.conn_status = DISCONNECTED + def on_ntrip_read(self, event): # pylint: disable=unused-argument """ EVENT TRIGGERED @@ -921,16 +934,6 @@ def on_spartn_read(self, event): # pylint: disable=unused-argument except (SerialException, SerialTimeoutException) as err: self.set_status(f"Error sending to device {err}", BADCOL) - def on_stream_error(self, event): # pylint: disable=unused-argument - """ - EVENT TRIGGERED - Action on "<>" event - connection streaming error. - - :param event event: <> event - """ - - self.conn_status = DISCONNECTED - def update_ntrip_status(self, status: bool, msgt: tuple = None): """ Update NTRIP configuration dialog connection status. @@ -1012,14 +1015,7 @@ def process_data(self, raw_data: bytes, parsed_data: object, marker: str = ""): if datetime.now() > self._last_gui_update + timedelta( seconds=GUI_UPDATE_INTERVAL ): - if widget_state[WDGCONSOLE][VISIBLE]: - self.frm_console.update_console(self._consoledata) - self._consoledata = [] - self.frm_banner.update_frame() - for _, widget in widget_state.items(): - frm = getattr(self, widget[FRAME]) - if hasattr(frm, "update_frame") and widget[VISIBLE]: - frm.update_frame() + self._refresh_widgets() self._last_gui_update = datetime.now() # update GPX track file if enabled @@ -1030,6 +1026,20 @@ def process_data(self, raw_data: bytes, parsed_data: object, marker: str = ""): if settings["datalog_b"]: self.file_handler.write_logfile(raw_data, parsed_data) + def _refresh_widgets(self): + """ + Refresh visible widgets. + """ + + if widget_state[WDGCONSOLE][VISIBLE]: + self.frm_console.update_console(self._consoledata) + self._consoledata = [] + self.frm_banner.update_frame() + for _, widget in widget_state.items(): + frm = getattr(self, widget[FRAME]) + if hasattr(frm, "update_frame") and widget[VISIBLE]: + frm.update_frame() + def _check_update(self): """ Check for updated version.