refactor: Using module based logger and not root logger from proginit

This commit is contained in:
2023-10-11 21:01:49 +02:00
parent 32ee413d9b
commit 8c2f66b2b5
13 changed files with 124 additions and 95 deletions

View File

@@ -5,6 +5,7 @@ __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
import webbrowser import webbrowser
from logging import getLogger
from re import compile from re import compile
from sys import platform from sys import platform
@@ -12,10 +13,11 @@ from PyQt5 import QtCore, QtGui, QtWidgets
from zeroconf import IPVersion, ServiceBrowser, Zeroconf from zeroconf import IPVersion, ServiceBrowser, Zeroconf
from . import helper from . import helper
from . import proginit as pi
from .helper import RevPiSettings, WidgetData, all_revpi_settings from .helper import RevPiSettings, WidgetData, all_revpi_settings
from .ui.avahisearch_ui import Ui_diag_search from .ui.avahisearch_ui import Ui_diag_search
log = getLogger(__name__)
class AvahiSearchThread(QtCore.QThread): class AvahiSearchThread(QtCore.QThread):
"""Search thread for Revolution Pi with installed RevPiPyLoad.""" """Search thread for Revolution Pi with installed RevPiPyLoad."""
@@ -34,12 +36,12 @@ class AvahiSearchThread(QtCore.QThread):
def remove_service(self, zeroconf: Zeroconf, conf_type: str, name: str) -> None: def remove_service(self, zeroconf: Zeroconf, conf_type: str, name: str) -> None:
"""Revolution Pi disappeared.""" """Revolution Pi disappeared."""
pi.logger.debug("AvahiSearchThread.remove_service") log.debug("AvahiSearchThread.remove_service")
self.removed.emit(name, conf_type) self.removed.emit(name, conf_type)
def add_service(self, zeroconf: Zeroconf, conf_type: str, name: str) -> None: def add_service(self, zeroconf: Zeroconf, conf_type: str, name: str) -> None:
"""New Revolution Pi found.""" """New Revolution Pi found."""
pi.logger.debug("AvahiSearchThread.add_service") log.debug("AvahiSearchThread.add_service")
info = zeroconf.get_service_info(conf_type, name) info = zeroconf.get_service_info(conf_type, name)
if not info: if not info:
return return
@@ -49,7 +51,7 @@ class AvahiSearchThread(QtCore.QThread):
def update_service(self, zeroconf: Zeroconf, conf_type: str, name: str) -> None: def update_service(self, zeroconf: Zeroconf, conf_type: str, name: str) -> None:
"""New data of revolution pi""" """New data of revolution pi"""
pi.logger.debug("AvahiSearchThread.add_service") log.debug("AvahiSearchThread.add_service")
info = zeroconf.get_service_info(conf_type, name) info = zeroconf.get_service_info(conf_type, name)
if not info: if not info:
return return
@@ -58,14 +60,14 @@ class AvahiSearchThread(QtCore.QThread):
self.updated.emit(name, info.server, info.port, conf_type, ip) self.updated.emit(name, info.server, info.port, conf_type, ip)
def run(self) -> None: def run(self) -> None:
pi.logger.debug("Started zero conf discovery.") log.debug("Started zero conf discovery.")
zeroconf = Zeroconf() zeroconf = Zeroconf()
revpi_browser = ServiceBrowser(zeroconf, "_revpipyload._tcp.local.", self) revpi_browser = ServiceBrowser(zeroconf, "_revpipyload._tcp.local.", self)
while not self.isInterruptionRequested(): while not self.isInterruptionRequested():
# Just hanging around :) # Just hanging around :)
self.msleep(self._cycle_wait_ms) self.msleep(self._cycle_wait_ms)
zeroconf.close() zeroconf.close()
pi.logger.debug("Stopped zero conf discovery.") log.debug("Stopped zero conf discovery.")
class AvahiSearch(QtWidgets.QDialog, Ui_diag_search): class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
@@ -191,7 +193,7 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_act_connect_triggered(self) -> None: def on_act_connect_triggered(self) -> None:
"""Connect via existing settings or ask for type.""" """Connect via existing settings or ask for type."""
pi.logger.debug("AvahiSearch.on_act_connect_triggered") log.debug("AvahiSearch.on_act_connect_triggered")
selected_items = self.tb_revpi.selectedItems() selected_items = self.tb_revpi.selectedItems()
if not selected_items: if not selected_items:
return return
@@ -206,7 +208,7 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_act_connect_ssh_triggered(self) -> None: def on_act_connect_ssh_triggered(self) -> None:
"""Create new revpi settings with ssh, save and connect.""" """Create new revpi settings with ssh, save and connect."""
pi.logger.debug("AvahiSearch.on_act_connect_ssh_triggered") log.debug("AvahiSearch.on_act_connect_ssh_triggered")
if self.tb_revpi.currentRow() == -1: if self.tb_revpi.currentRow() == -1:
return return
@@ -218,7 +220,7 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_act_connect_xmlrpc_triggered(self) -> None: def on_act_connect_xmlrpc_triggered(self) -> None:
"""Create new revpi settings with XML-RPC, save and connect.""" """Create new revpi settings with XML-RPC, save and connect."""
pi.logger.debug("AvahiSearch.on_act_connect_xmlrpc_triggered") log.debug("AvahiSearch.on_act_connect_xmlrpc_triggered")
if self.tb_revpi.currentRow() == -1: if self.tb_revpi.currentRow() == -1:
return return
@@ -331,7 +333,7 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
@QtCore.pyqtSlot(int, int) @QtCore.pyqtSlot(int, int)
def on_tb_revpi_cellDoubleClicked(self, row: int, column: int) -> None: def on_tb_revpi_cellDoubleClicked(self, row: int, column: int) -> None:
"""Connect to double-clicked Revolution Pi.""" """Connect to double-clicked Revolution Pi."""
pi.logger.debug("AvahiSearch.on_tb_revpi_cellDoubleClicked") log.debug("AvahiSearch.on_tb_revpi_cellDoubleClicked")
selected_items = self.tb_revpi.selectedItems() selected_items = self.tb_revpi.selectedItems()
if not selected_items: if not selected_items:
return return
@@ -353,7 +355,7 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_connect_clicked(self) -> None: def on_btn_connect_clicked(self) -> None:
"""Connect to selected Revolution Pi.""" """Connect to selected Revolution Pi."""
pi.logger.debug("AvahiSearch.on_btn_connect_clicked") log.debug("AvahiSearch.on_btn_connect_clicked")
selected_items = self.tb_revpi.selectedItems() selected_items = self.tb_revpi.selectedItems()
if not selected_items: if not selected_items:
return return
@@ -370,7 +372,7 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_save_clicked(self) -> None: def on_btn_save_clicked(self) -> None:
"""Save selected Revolution Pi.""" """Save selected Revolution Pi."""
pi.logger.debug("AvahiSearch.on_btn_save_clicked") log.debug("AvahiSearch.on_btn_save_clicked")
row_index = self.tb_revpi.currentRow() row_index = self.tb_revpi.currentRow()
if row_index == -1: if row_index == -1:
return return

View File

@@ -10,7 +10,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
from .ui.backgroundworker_ui import Ui_diag_backgroundworker from .ui.backgroundworker_ui import Ui_diag_backgroundworker
log = getLogger() log = getLogger(__name__)
class BackgroundWorker(QtCore.QThread): class BackgroundWorker(QtCore.QThread):

View File

@@ -5,6 +5,7 @@ __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
import pickle import pickle
from logging import getLogger
from xmlrpc.client import Binary, Fault, MultiCall, MultiCallIterator from xmlrpc.client import Binary, Fault, MultiCall, MultiCallIterator
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -14,6 +15,8 @@ from . import proginit as pi
from .debugios import DebugIos from .debugios import DebugIos
from .ui.debugcontrol_ui import Ui_wid_debugcontrol from .ui.debugcontrol_ui import Ui_wid_debugcontrol
log = getLogger(__name__)
class PsValues(QtCore.QThread): class PsValues(QtCore.QThread):
""" """
@@ -31,7 +34,7 @@ class PsValues(QtCore.QThread):
def run(self): def run(self):
"""Read IO values of Revolution Pi.""" """Read IO values of Revolution Pi."""
pi.logger.debug("PsValues.run enter") log.debug("PsValues.run enter")
while not self.isInterruptionRequested(): while not self.isInterruptionRequested():
try: try:
@@ -39,16 +42,16 @@ class PsValues(QtCore.QThread):
helper.cm.call_remote_function("ps_values", raise_exception=True) helper.cm.call_remote_function("ps_values", raise_exception=True)
) )
except Fault: except Fault:
pi.logger.warning("Detected piCtory reset.") log.warning("Detected piCtory reset.")
self.requestInterruption() self.requestInterruption()
self.driver_reset_detected.emit() self.driver_reset_detected.emit()
except Exception as e: except Exception as e:
pi.logger.error(e) log.error(e)
self.process_image_received.emit(Binary()) self.process_image_received.emit(Binary())
self.msleep(self._cycle_time) self.msleep(self._cycle_time)
pi.logger.debug("PsValues.run exit") log.debug("PsValues.run exit")
class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol): class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
@@ -87,11 +90,11 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
self.shc_write_o.activated.connect(self.on_btn_write_o_clicked) self.shc_write_o.activated.connect(self.on_btn_write_o_clicked)
def __del__(self): def __del__(self):
pi.logger.debug("DebugControl.__del__") log.debug("DebugControl.__del__")
def _set_gui_control_states(self): def _set_gui_control_states(self):
"""Set states depending on acl level.""" """Set states depending on acl level."""
pi.logger.debug("DebugControl._set_gui_control_states") log.debug("DebugControl._set_gui_control_states")
# xml_mode view >= 1 # xml_mode view >= 1
# xml_mode write >= 3 # xml_mode write >= 3
self.btn_read_io.setEnabled(not self.cbx_write.isChecked()) self.btn_read_io.setEnabled(not self.cbx_write.isChecked())
@@ -109,7 +112,7 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
:param device_position: Only device position or -1 for all :param device_position: Only device position or -1 for all
""" """
pi.logger.debug("DebugControl._destroy_io_view") log.debug("DebugControl._destroy_io_view")
for position in sorted(self.dict_devices) if device_position == -1 else [device_position]: for position in sorted(self.dict_devices) if device_position == -1 else [device_position]:
if position in self.dict_windows: if position in self.dict_windows:
# Remove singe window and button # Remove singe window and button
@@ -151,11 +154,11 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
try: try:
ba_values = helper.cm.call_remote_function("ps_values", raise_exception=True) ba_values = helper.cm.call_remote_function("ps_values", raise_exception=True)
except Fault: except Fault:
pi.logger.warning("Detected piCtory reset.") log.warning("Detected piCtory reset.")
self._driver_reset_detected() self._driver_reset_detected()
return return
except Exception as e: except Exception as e:
pi.logger.error(e) log.error(e)
ba_values = Binary() ba_values = Binary()
# From now on use bytes instead of Binary # From now on use bytes instead of Binary
@@ -255,7 +258,7 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
return return
elif not isinstance(return_list, list): elif not isinstance(return_list, list):
return return
pi.logger.debug("DebugControl._validate_multicall") log.debug("DebugControl._validate_multicall")
str_errmsg = "" str_errmsg = ""
for lst_result in return_list: # type: list for lst_result in return_list: # type: list
@@ -272,13 +275,13 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
self.dict_windows[lst_result[0]].reset_change_value_colors(lst_result[1]) self.dict_windows[lst_result[0]].reset_change_value_colors(lst_result[1])
if str_errmsg != "": if str_errmsg != "":
pi.logger.error(str_errmsg) log.error(str_errmsg)
if not self.cbx_refresh.isChecked(): if not self.cbx_refresh.isChecked():
QtWidgets.QMessageBox.critical(self, self.tr("Error"), str_errmsg) QtWidgets.QMessageBox.critical(self, self.tr("Error"), str_errmsg)
def deleteLater(self): def deleteLater(self):
"""Clean up all sub windows.""" """Clean up all sub windows."""
pi.logger.debug("DebugControl.deleteLater") log.debug("DebugControl.deleteLater")
self.cbx_write.setChecked(False) self.cbx_write.setChecked(False)
self.cbx_refresh.setChecked(False) self.cbx_refresh.setChecked(False)
@@ -288,7 +291,7 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
def reload_devices(self): def reload_devices(self):
"""Rebuild GUI depending on devices and ios of Revolution Pi.""" """Rebuild GUI depending on devices and ios of Revolution Pi."""
pi.logger.debug("DebugControl.reload_devices") log.debug("DebugControl.reload_devices")
if not helper.cm.call_remote_function("psstart", default_value=False): if not helper.cm.call_remote_function("psstart", default_value=False):
# RevPiPyLoad does not support psstart (too old) # RevPiPyLoad does not support psstart (too old)
@@ -358,7 +361,7 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
@QtCore.pyqtSlot(bool) @QtCore.pyqtSlot(bool)
def on_btn_device_clicked(self, checked: bool): def on_btn_device_clicked(self, checked: bool):
"""Open or close IO window.""" """Open or close IO window."""
pi.logger.debug("DebugControl.on_btn_device_clicked") log.debug("DebugControl.on_btn_device_clicked")
position = int(self.sender().objectName()) position = int(self.sender().objectName())
if position in self.dict_windows: if position in self.dict_windows:
@@ -369,14 +372,14 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
@QtCore.pyqtSlot(int) @QtCore.pyqtSlot(int)
def on_device_closed(self, position: int): def on_device_closed(self, position: int):
"""Change the check state of button, if window was closed.""" """Change the check state of button, if window was closed."""
pi.logger.debug("DebugControl.on_device_closed") log.debug("DebugControl.on_device_closed")
btn = self.gb_devices.findChild(QtWidgets.QPushButton, str(position)) # type: QtWidgets.QPushButton btn = self.gb_devices.findChild(QtWidgets.QPushButton, str(position)) # type: QtWidgets.QPushButton
btn.setChecked(False) btn.setChecked(False)
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_read_io_pressed(self): def on_btn_read_io_pressed(self):
"""Read all IO values and replace changed ones.""" """Read all IO values and replace changed ones."""
pi.logger.debug("DebugControl.on_btn_read_io_pressed") log.debug("DebugControl.on_btn_read_io_pressed")
for win in self.dict_windows.values(): # type: DebugIos for win in self.dict_windows.values(): # type: DebugIos
win.reset_label_colors() win.reset_label_colors()
self._work_values() self._work_values()
@@ -384,14 +387,14 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_refresh_io_pressed(self): def on_btn_refresh_io_pressed(self):
"""Read all IO values but do not touch changed ones.""" """Read all IO values but do not touch changed ones."""
pi.logger.debug("DebugControl.on_btn_refresh_io_pressed") log.debug("DebugControl.on_btn_refresh_io_pressed")
if not self.cbx_refresh.isChecked(): if not self.cbx_refresh.isChecked():
self._work_values(refresh=True) self._work_values(refresh=True)
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_write_o_clicked(self): def on_btn_write_o_clicked(self):
"""Write outputs.""" """Write outputs."""
pi.logger.debug("DebugControl.on_btn_write_o_clicked") log.debug("DebugControl.on_btn_write_o_clicked")
if not self.cbx_write.isChecked() and (helper.cm.xml_mode >= 3 or helper.cm.simulating): if not self.cbx_write.isChecked() and (helper.cm.xml_mode >= 3 or helper.cm.simulating):
for win in self.dict_windows.values(): # type: DebugIos for win in self.dict_windows.values(): # type: DebugIos
win.reset_label_colors() win.reset_label_colors()
@@ -400,7 +403,7 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
@QtCore.pyqtSlot(int) @QtCore.pyqtSlot(int)
def on_cbx_refresh_stateChanged(self, state: int): def on_cbx_refresh_stateChanged(self, state: int):
"""Start or stop the auto refresh thread.""" """Start or stop the auto refresh thread."""
pi.logger.debug("DebugControl.cbx_refresh_stateChanged") log.debug("DebugControl.cbx_refresh_stateChanged")
# Start / stop worker thread # Start / stop worker thread
if state == QtCore.Qt.Checked and (helper.cm.connected or helper.cm.simulating): if state == QtCore.Qt.Checked and (helper.cm.connected or helper.cm.simulating):
@@ -433,7 +436,7 @@ class DebugControl(QtWidgets.QWidget, Ui_wid_debugcontrol):
@QtCore.pyqtSlot(int) @QtCore.pyqtSlot(int)
def on_cbx_write_stateChanged(self, state: int): def on_cbx_write_stateChanged(self, state: int):
pi.logger.debug("DebugControl.cbx_write_stateChanged") log.debug("DebugControl.cbx_write_stateChanged")
checked = state == QtCore.Qt.Checked checked = state == QtCore.Qt.Checked
for win in self.dict_windows.values(): # type: DebugIos for win in self.dict_windows.values(): # type: DebugIos
win.write_values = checked win.write_values = checked

View File

@@ -5,6 +5,7 @@ __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
import struct import struct
from logging import getLogger
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -12,6 +13,8 @@ from . import helper
from . import proginit as pi from . import proginit as pi
from .ui.debugios_ui import Ui_win_debugios from .ui.debugios_ui import Ui_win_debugios
log = getLogger(__name__)
class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios): class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios):
"""IO window of one device.""" """IO window of one device."""
@@ -46,10 +49,10 @@ class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios):
self.style_sheet = "background-color: red;" self.style_sheet = "background-color: red;"
def __del__(self): def __del__(self):
pi.logger.debug("DebugIos.__del__") log.debug("DebugIos.__del__")
def closeEvent(self, a0: QtGui.QCloseEvent): def closeEvent(self, a0: QtGui.QCloseEvent):
pi.logger.debug("DebugIos.closeEvent") log.debug("DebugIos.closeEvent")
helper.cm.settings.debug_geos[self.position] = self.saveGeometry() helper.cm.settings.debug_geos[self.position] = self.saveGeometry()
self.device_closed.emit(self.position) self.device_closed.emit(self.position)
@@ -108,7 +111,7 @@ class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios):
signed != val.property("signed"): signed != val.property("signed"):
del self.__qwa[name] del self.__qwa[name]
layout.removeRow(layout.getWidgetPosition(val)[0]) layout.removeRow(layout.getWidgetPosition(val)[0])
pi.logger.debug("Destroy property changed IO '{0}'".format(name)) log.debug("Destroy property changed IO '{0}'".format(name))
else: else:
continue continue
@@ -209,7 +212,7 @@ class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios):
@QtCore.pyqtSlot(QtCore.QPoint) @QtCore.pyqtSlot(QtCore.QPoint)
def on_context_menu(self, point: QtCore.QPoint): def on_context_menu(self, point: QtCore.QPoint):
"""Generate menu for data format changes.""" """Generate menu for data format changes."""
pi.logger.debug("DebugIos.on_context_menu") log.debug("DebugIos.on_context_menu")
sender = self.sender() sender = self.sender()
men = QtWidgets.QMenu(sender) men = QtWidgets.QMenu(sender)
@@ -289,7 +292,7 @@ class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios):
:param io_name: Clean up only this IO :param io_name: Clean up only this IO
""" """
pi.logger.debug("DebugIos.reset_change_value_colors") log.debug("DebugIos.reset_change_value_colors")
if io_name is None: if io_name is None:
lst_wid = self.saw_out.findChildren( lst_wid = self.saw_out.findChildren(
self.search_class, options=QtCore.Qt.FindDirectChildrenOnly) self.search_class, options=QtCore.Qt.FindDirectChildrenOnly)
@@ -346,7 +349,7 @@ class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios):
) )
return actual_value, last_value return actual_value, last_value
except Exception: except Exception:
pi.logger.error("Could not convert '{0}' to bytes".format(actual_value)) log.error("Could not convert '{0}' to bytes".format(actual_value))
pass pass
return actual_value.encode(), last_value.encode() return actual_value.encode(), last_value.encode()

View File

@@ -8,6 +8,7 @@ import pickle
import socket import socket
from enum import IntEnum from enum import IntEnum
from http.client import CannotSendRequest from http.client import CannotSendRequest
from logging import getLogger
from os import environ, remove from os import environ, remove
from os.path import exists from os.path import exists
from queue import Queue from queue import Queue
@@ -22,6 +23,8 @@ from paramiko.ssh_exception import AuthenticationException
from . import proginit as pi from . import proginit as pi
from .ssh_tunneling.server import SSHLocalTunnel from .ssh_tunneling.server import SSHLocalTunnel
log = getLogger(__name__)
settings = QtCore.QSettings("revpimodio.org", "revpicommander") settings = QtCore.QSettings("revpimodio.org", "revpicommander")
"""Global application settings.""" """Global application settings."""
@@ -243,7 +246,7 @@ class ConnectionManager(QtCore.QThread):
self._xml_mode_refresh = False self._xml_mode_refresh = False
def __call_simulator(self, function_name: str, *args, default_value=None, **kwargs): def __call_simulator(self, function_name: str, *args, default_value=None, **kwargs):
pi.logger.debug("ConnectionManager.__call_simulator({0})".format(function_name)) log.debug("ConnectionManager.__call_simulator({0})".format(function_name))
if function_name == "ps_values": if function_name == "ps_values":
if self._revpi.readprocimg(): if self._revpi.readprocimg():
bytebuff = bytearray() bytebuff = bytearray()
@@ -387,7 +390,7 @@ class ConnectionManager(QtCore.QThread):
xml_funcs = sp.system.listMethods() xml_funcs = sp.system.listMethods()
xml_mode = sp.xmlmodus() xml_mode = sp.xmlmodus()
except Exception as e: except Exception as e:
pi.logger.exception(e) log.exception(e)
self.connection_error_observed.emit(str(e)) self.connection_error_observed.emit(str(e))
if revpi_settings.ssh_use_tunnel: if revpi_settings.ssh_use_tunnel:
@@ -451,7 +454,7 @@ class ConnectionManager(QtCore.QThread):
self._revpi = None self._revpi = None
self._revpi_output = None self._revpi_output = None
pi.logger.debug("Simulator destroyed.") log.debug("Simulator destroyed.")
self.connection_disconnected.emit() self.connection_disconnected.emit()
elif self._cli is not None: elif self._cli is not None:
@@ -483,7 +486,7 @@ class ConnectionManager(QtCore.QThread):
:param procimg: Process image, which is a 4 kByte file for simulation :param procimg: Process image, which is a 4 kByte file for simulation
:param clean_existing: Reset the file to ZERO \x00 bytes :param clean_existing: Reset the file to ZERO \x00 bytes
""" """
pi.logger.debug("ConnectionManager.start_simulate") log.debug("ConnectionManager.start_simulate")
if not exists(procimg) or clean_existing: if not exists(procimg) or clean_existing:
with open(procimg, "wb") as fh: with open(procimg, "wb") as fh:
@@ -507,7 +510,7 @@ class ConnectionManager(QtCore.QThread):
self.connection_established.emit() self.connection_established.emit()
except Exception as e: except Exception as e:
pi.logger.exception(e) log.exception(e)
self.connection_error_observed.emit(str(e)) self.connection_error_observed.emit(str(e))
self._revpi_output = None self._revpi_output = None
self._revpi = None self._revpi = None
@@ -522,7 +525,7 @@ class ConnectionManager(QtCore.QThread):
def reset_simulator(self): def reset_simulator(self):
"""Reset all io to piCtory defaults.""" """Reset all io to piCtory defaults."""
pi.logger.debug("ConnectionManager.reset_simulator") log.debug("ConnectionManager.reset_simulator")
if settings.value("simulator/restart_zero", False, bool): if settings.value("simulator/restart_zero", False, bool):
with open(self._revpi.procimg, "wb") as fh: with open(self._revpi.procimg, "wb") as fh:
fh.write(b'\x00' * 4096) fh.write(b'\x00' * 4096)
@@ -558,9 +561,9 @@ class ConnectionManager(QtCore.QThread):
self.xml_mode = sp.xmlmodus() self.xml_mode = sp.xmlmodus()
self._xml_mode_refresh = False self._xml_mode_refresh = False
except CannotSendRequest as e: except CannotSendRequest as e:
pi.logger.warning(e) log.warning(e)
except Exception as e: except Exception as e:
pi.logger.warning(e) log.warning(e)
self.status_changed.emit(self.tr("SERVER ERROR"), "red") self.status_changed.emit(self.tr("SERVER ERROR"), "red")
self.connection_error_observed.emit("{0} | {1}".format(e, type(e))) self.connection_error_observed.emit("{0} | {1}".format(e, type(e)))
@@ -614,7 +617,7 @@ class ConnectionManager(QtCore.QThread):
:return: Return value of remote function or default_value :return: Return value of remote function or default_value
""" """
if self._cli is None and self._revpi is None: if self._cli is None and self._revpi is None:
pi.logger.error("Not connected while calling {0}".format(function_name)) log.error("Not connected while calling {0}".format(function_name))
if raise_exception: if raise_exception:
raise ConnectionError("Connection manager not connected") raise ConnectionError("Connection manager not connected")
return default_value return default_value
@@ -638,7 +641,7 @@ class ConnectionManager(QtCore.QThread):
if reload_funcs: if reload_funcs:
self.xml_funcs = self._cli.system.listMethods() self.xml_funcs = self._cli.system.listMethods()
except Exception as e: except Exception as e:
pi.logger.error(e) log.error(e)
if raise_exception: if raise_exception:
self._lck_cli.release() self._lck_cli.release()
raise raise
@@ -722,7 +725,7 @@ def import_old_settings():
revpi_setting._settings = settings revpi_setting._settings = settings
revpi_setting.save_settings() revpi_setting.save_settings()
except Exception: except Exception:
pi.logger.warning("Could not import saved connection {0}".format(i)) log.warning("Could not import saved connection {0}".format(i))
import_old_settings() import_old_settings()

View File

@@ -5,11 +5,14 @@ __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2023 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
from logging import getLogger
from PyQt5 import QtGui, QtWidgets from PyQt5 import QtGui, QtWidgets
from . import proginit as pi
from .ui.mqttmanager_ui import Ui_diag_mqtt from .ui.mqttmanager_ui import Ui_diag_mqtt
log = getLogger(__name__)
class MqttManager(QtWidgets.QDialog, Ui_diag_mqtt): class MqttManager(QtWidgets.QDialog, Ui_diag_mqtt):
"""MQTT settings for option window.""" """MQTT settings for option window."""
@@ -55,7 +58,7 @@ class MqttManager(QtWidgets.QDialog, Ui_diag_mqtt):
self.txt_password.setText(self.dc["mqttpassword"]) self.txt_password.setText(self.dc["mqttpassword"])
self.txt_client_id.setText(self.dc["mqttclient_id"]) self.txt_client_id.setText(self.dc["mqttclient_id"])
except Exception as e: except Exception as e:
pi.logger.exception(e) log.exception(e)
self.dc = {} self.dc = {}
return False return False
return True return True

View File

@@ -7,6 +7,7 @@ __copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
import webbrowser import webbrowser
from logging import getLogger
from os.path import dirname, join from os.path import dirname, join
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -28,6 +29,8 @@ from .simulator import Simulator
from .sshauth import SSHAuth from .sshauth import SSHAuth
from .ui.revpicommander_ui import Ui_win_revpicommander from .ui.revpicommander_ui import Ui_win_revpicommander
log = getLogger(__name__)
class ConnectingPyload(QtCore.QThread): class ConnectingPyload(QtCore.QThread):
""" """
@@ -88,7 +91,7 @@ class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander):
self.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) self.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False)
def closeEvent(self, a0: QtGui.QCloseEvent) -> None: def closeEvent(self, a0: QtGui.QCloseEvent) -> None:
pi.logger.debug("RevPiCommander.closeEvent") log.debug("RevPiCommander.closeEvent")
helper.cm.pyload_disconnect() helper.cm.pyload_disconnect()
helper.settings.setValue("revpicommander/geo", self.saveGeometry()) helper.settings.setValue("revpicommander/geo", self.saveGeometry())
@@ -157,7 +160,7 @@ class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_cm_connection_disconnected(self): def on_cm_connection_disconnected(self):
"""Connection of connection manager was disconnected.""" """Connection of connection manager was disconnected."""
pi.logger.debug("RevPiCommander.on_cm_connection_disconnected") log.debug("RevPiCommander.on_cm_connection_disconnected")
self._set_gui_control_states() self._set_gui_control_states()
self.txt_host.setVisible(True) self.txt_host.setVisible(True)
@@ -167,7 +170,7 @@ class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_cm_connection_disconnecting(self): def on_cm_connection_disconnecting(self):
"""Connection of connection manager will now disconnect.""" """Connection of connection manager will now disconnect."""
pi.logger.debug("RevPiCommander.on_cm_connection_disconnecting") log.debug("RevPiCommander.on_cm_connection_disconnecting")
# This will remove the widgets in the button functions # This will remove the widgets in the button functions
self.btn_plc_debug.setChecked(False) self.btn_plc_debug.setChecked(False)
@@ -184,7 +187,7 @@ class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_cm_connection_established(self): def on_cm_connection_established(self):
"""Connection manager established a new connection and loaded values.""" """Connection manager established a new connection and loaded values."""
pi.logger.debug("RevPiCommander.on_cm_connection_established") log.debug("RevPiCommander.on_cm_connection_established")
self._set_gui_control_states() self._set_gui_control_states()
if helper.cm.simulating: if helper.cm.simulating:
@@ -325,7 +328,7 @@ class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander):
).format(procimg_file, configrsc_file) ).format(procimg_file, configrsc_file)
) )
else: else:
pi.logger.error("Can not start simulator") log.error("Can not start simulator")
QtWidgets.QMessageBox.critical( QtWidgets.QMessageBox.critical(
self, self.tr("Can not start..."), self.tr( self, self.tr("Can not start..."), self.tr(
"Can not start the simulator! Maybe the piCtory file is corrupt " "Can not start the simulator! Maybe the piCtory file is corrupt "

View File

@@ -7,16 +7,18 @@ __license__ = "GPLv2"
import gzip import gzip
import os import os
from enum import IntEnum from enum import IntEnum
from logging import getLogger
from xmlrpc.client import Binary from xmlrpc.client import Binary
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from . import helper from . import helper
from . import proginit as pi
from .backgroundworker import BackgroundWorker from .backgroundworker import BackgroundWorker
from .helper import WidgetData from .helper import WidgetData
from .ui.files_ui import Ui_win_files from .ui.files_ui import Ui_win_files
log = getLogger(__name__)
class NodeType(IntEnum): class NodeType(IntEnum):
FILE = 1000 FILE = 1000
@@ -58,7 +60,7 @@ class UploadFiles(BackgroundWorker):
default_value=False default_value=False
) )
except Exception as e: except Exception as e:
pi.logger.error(e) log.error(e)
self.ec = -2 self.ec = -2
return return
@@ -99,10 +101,10 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
self.splitter.setSizes(list(map(int, helper.settings.value("files/splitter", [0, 0])))) self.splitter.setSizes(list(map(int, helper.settings.value("files/splitter", [0, 0]))))
def __del__(self): def __del__(self):
pi.logger.debug("RevPiFiles.__del__") log.debug("RevPiFiles.__del__")
def closeEvent(self, a0: QtGui.QCloseEvent) -> None: def closeEvent(self, a0: QtGui.QCloseEvent) -> None:
pi.logger.debug("RevPiFiles.closeEvent") log.debug("RevPiFiles.closeEvent")
helper.settings.setValue("files/geo", self.saveGeometry()) helper.settings.setValue("files/geo", self.saveGeometry())
helper.settings.setValue("files/splitter", self.splitter.sizes()) helper.settings.setValue("files/splitter", self.splitter.sizes())
@@ -197,7 +199,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
def _select_children(self, top_item: QtWidgets.QTreeWidgetItem, value: bool): def _select_children(self, top_item: QtWidgets.QTreeWidgetItem, value: bool):
"""Recursive select children from parent.""" """Recursive select children from parent."""
pi.logger.debug("RevPiFiles._select_children") log.debug("RevPiFiles._select_children")
for i in range(top_item.childCount()): for i in range(top_item.childCount()):
item = top_item.child(i) item = top_item.child(i)
@@ -213,7 +215,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
if item is None: if item is None:
return return
pi.logger.debug("RevPiFiles.__itemSelectionChanged") log.debug("RevPiFiles.__itemSelectionChanged")
# Block while preselect other entries # Block while preselect other entries
tree_view.blockSignals(True) tree_view.blockSignals(True)
@@ -296,7 +298,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
:param silent: Do not show message boxes :param silent: Do not show message boxes
""" """
pi.logger.debug("RevPiFiles._load_files_local") log.debug("RevPiFiles._load_files_local")
self.tree_files_counter = 0 self.tree_files_counter = 0
self.tree_files_local.blockSignals(True) self.tree_files_local.blockSignals(True)
@@ -316,7 +318,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
def file_list_local(self): def file_list_local(self):
"""Generate a file list with full path of selected entries.""" """Generate a file list with full path of selected entries."""
pi.logger.debug("RevPiFiles.file_list_local") log.debug("RevPiFiles.file_list_local")
lst = [] lst = []
for item in self.tree_files_local.selectedItems(): for item in self.tree_files_local.selectedItems():
if item.type() == NodeType.DIR: if item.type() == NodeType.DIR:
@@ -337,7 +339,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
:param silent: Do not show message boxes :param silent: Do not show message boxes
""" """
pi.logger.debug("RevPiFiles._load_files_revpi") log.debug("RevPiFiles._load_files_revpi")
self.tree_files_revpi.blockSignals(True) self.tree_files_revpi.blockSignals(True)
self.tree_files_revpi.clear() self.tree_files_revpi.clear()
@@ -421,7 +423,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
def file_list_revpi(self): def file_list_revpi(self):
"""Generate a file list with full path of selected entries.""" """Generate a file list with full path of selected entries."""
pi.logger.debug("RevPiFiles.file_list_revpi") log.debug("RevPiFiles.file_list_revpi")
lst = [] lst = []
for item in self.tree_files_revpi.selectedItems(): for item in self.tree_files_revpi.selectedItems():
if item.type() == NodeType.DIR: if item.type() == NodeType.DIR:
@@ -435,13 +437,13 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_all_clicked(self): def on_btn_all_clicked(self):
pi.logger.debug("RevPiFiles.on_btn_all_clicked") log.debug("RevPiFiles.on_btn_all_clicked")
self._do_my_job(True) self._do_my_job(True)
self.file_list_revpi() self.file_list_revpi()
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_select_local_clicked(self): def on_btn_select_local_clicked(self):
pi.logger.debug("RevPiFiles.on_btn_select_clicked") log.debug("RevPiFiles.on_btn_select_clicked")
diag_folder = QtWidgets.QFileDialog( diag_folder = QtWidgets.QFileDialog(
self, self.tr("Select folder..."), self, self.tr("Select folder..."),
@@ -472,25 +474,25 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_refresh_local_clicked(self): def on_btn_refresh_local_clicked(self):
pi.logger.debug("RevPiFiles.on_btn_refresh_clicked") log.debug("RevPiFiles.on_btn_refresh_clicked")
self._load_files_local(False) self._load_files_local(False)
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_refresh_revpi_clicked(self): def on_btn_refresh_revpi_clicked(self):
pi.logger.debug("RevPiFiles.on_btn_refresh_revpi_clicked") log.debug("RevPiFiles.on_btn_refresh_revpi_clicked")
self._load_files_revpi(False) self._load_files_revpi(False)
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_to_right_clicked(self): def on_btn_to_right_clicked(self):
"""Upload selected files to revolution pi.""" """Upload selected files to revolution pi."""
pi.logger.debug("RevPiFiles.on_btn_to_right_clicked") log.debug("RevPiFiles.on_btn_to_right_clicked")
self._do_my_job(False) self._do_my_job(False)
self._load_files_revpi(True) self._load_files_revpi(True)
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_to_left_clicked(self): def on_btn_to_left_clicked(self):
"""Download selected file.""" """Download selected file."""
pi.logger.debug("RevPiFiles.on_btn_to_left_clicked") log.debug("RevPiFiles.on_btn_to_left_clicked")
override = None override = None
for item in self.tree_files_revpi.selectedItems(): for item in self.tree_files_revpi.selectedItems():
@@ -524,7 +526,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
override = rc_diag == QtWidgets.QMessageBox.Yes override = rc_diag == QtWidgets.QMessageBox.Yes
if os.path.exists(file_name) and not override: if os.path.exists(file_name) and not override:
pi.logger.debug("Skip existing file '{0}'".format(file_name)) log.debug("Skip existing file '{0}'".format(file_name))
continue continue
os.makedirs(os.path.dirname(file_name), exist_ok=True) os.makedirs(os.path.dirname(file_name), exist_ok=True)
@@ -537,7 +539,7 @@ class RevPiFiles(QtWidgets.QMainWindow, Ui_win_files):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def on_btn_delete_revpi_clicked(self): def on_btn_delete_revpi_clicked(self):
"""Remove selected files from working directory on revolution pi.""" """Remove selected files from working directory on revolution pi."""
pi.logger.debug("RevPiFiles.btn_delete_revpi_clicked") log.debug("RevPiFiles.btn_delete_revpi_clicked")
lst_delete = [] lst_delete = []
for item in self.tree_files_revpi.selectedItems(): for item in self.tree_files_revpi.selectedItems():

View File

@@ -5,13 +5,15 @@ __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
from enum import IntEnum from enum import IntEnum
from logging import getLogger
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from . import helper from . import helper
from . import proginit as pi
from .ui.revpilogfile_ui import Ui_win_revpilogfile from .ui.revpilogfile_ui import Ui_win_revpilogfile
log = getLogger(__name__)
class LogType(IntEnum): class LogType(IntEnum):
NONE = 0 NONE = 0
@@ -60,7 +62,7 @@ class DataThread(QtCore.QThread):
# The log file was rotated by log rotate on the Revolution Pi # The log file was rotated by log rotate on the Revolution Pi
start_position = 0 start_position = 0
eof = False eof = False
pi.logger.info("RevPi started a new log file.") log.info("RevPi started a new log file.")
elif buff_log: elif buff_log:
start_position += len(buff_log) start_position += len(buff_log)
@@ -71,16 +73,16 @@ class DataThread(QtCore.QThread):
def pause(self): def pause(self):
"""Stop checking new log lines, but leave thread alive.""" """Stop checking new log lines, but leave thread alive."""
pi.logger.debug("DataThread.pause") log.debug("DataThread.pause")
self._paused = True self._paused = True
def resume(self): def resume(self):
"""Start checking for new log lines.""" """Start checking for new log lines."""
pi.logger.debug("DataThread.resume") log.debug("DataThread.resume")
self._paused = False self._paused = False
def run(self) -> None: def run(self) -> None:
pi.logger.debug("DataThread.run") log.debug("DataThread.run")
while not self.isInterruptionRequested(): while not self.isInterruptionRequested():
eof_app = False eof_app = False
@@ -191,7 +193,7 @@ class RevPiLogfile(QtWidgets.QMainWindow, Ui_win_revpilogfile):
@QtCore.pyqtSlot(LogType, bool, str) @QtCore.pyqtSlot(LogType, bool, str)
def on_line_logged(self, log_type: LogType, success: bool, text: str): def on_line_logged(self, log_type: LogType, success: bool, text: str):
pi.logger.debug("RevPiLogfile.on_line_logged") log.debug("RevPiLogfile.on_line_logged")
if log_type == LogType.APP: if log_type == LogType.APP:
textwidget = self.txt_app textwidget = self.txt_app

View File

@@ -4,14 +4,17 @@ __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2023 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
from logging import getLogger
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from . import helper from . import helper
from . import proginit as pi
from .aclmanager import AclManager from .aclmanager import AclManager
from .mqttmanager import MqttManager from .mqttmanager import MqttManager
from .ui.revpioption_ui import Ui_diag_options from .ui.revpioption_ui import Ui_diag_options
log = getLogger(__name__)
class RevPiOption(QtWidgets.QDialog, Ui_diag_options): class RevPiOption(QtWidgets.QDialog, Ui_diag_options):
"""Set options of RevPiPyLoad.""" """Set options of RevPiPyLoad."""
@@ -110,7 +113,7 @@ class RevPiOption(QtWidgets.QDialog, Ui_diag_options):
def _load_settings(self): def _load_settings(self):
"""Load values to GUI widgets.""" """Load values to GUI widgets."""
pi.logger.debug("RevPiOption._load_settings") log.debug("RevPiOption._load_settings")
self.mrk_xml_ask = True self.mrk_xml_ask = True

View File

@@ -5,6 +5,7 @@ __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv2" __license__ = "GPLv2"
from enum import IntEnum from enum import IntEnum
from logging import getLogger
import keyring import keyring
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -15,6 +16,8 @@ from . import proginit as pi
from .helper import RevPiSettings, WidgetData from .helper import RevPiSettings, WidgetData
from .ui.revpiplclist_ui import Ui_diag_connections from .ui.revpiplclist_ui import Ui_diag_connections
log = getLogger(__name__)
class NodeType(IntEnum): class NodeType(IntEnum):
CON = 1000 CON = 1000
@@ -58,7 +61,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
def _load_settings(self): def _load_settings(self):
"""Load values to GUI widgets.""" """Load values to GUI widgets."""
pi.logger.debug("RevPiPlcList._load_settings") log.debug("RevPiPlcList._load_settings")
self.tre_connections.clear() self.tre_connections.clear()
@@ -95,7 +98,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
self._edit_state() self._edit_state()
def accept(self) -> None: def accept(self) -> None:
pi.logger.debug("RevPiPlcList.accept") log.debug("RevPiPlcList.accept")
for internal_id, ssh_user in self._keyring_cleanup_id_user: for internal_id, ssh_user in self._keyring_cleanup_id_user:
service_name = "{0}.{1}_{2}".format( service_name = "{0}.{1}_{2}".format(
@@ -107,7 +110,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
# Remove information from os keyring, which we collected on_btn_delete_clicked # Remove information from os keyring, which we collected on_btn_delete_clicked
keyring.delete_password(service_name, ssh_user) keyring.delete_password(service_name, ssh_user)
except KeyringError as e: except KeyringError as e:
pi.logger.error(e) log.error(e)
helper.settings.remove("connections") helper.settings.remove("connections")
@@ -127,7 +130,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
super().accept() super().accept()
def closeEvent(self, a0: QtGui.QCloseEvent) -> None: def closeEvent(self, a0: QtGui.QCloseEvent) -> None:
pi.logger.debug("RevPiPlcList.closeEvent") log.debug("RevPiPlcList.closeEvent")
if self.changes: if self.changes:
ask = QtWidgets.QMessageBox.question( ask = QtWidgets.QMessageBox.question(
self, self.tr("Question"), self.tr( self, self.tr("Question"), self.tr(
@@ -165,7 +168,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
def _edit_state(self): def _edit_state(self):
"""Set enabled status of all controls, depending on selected item.""" """Set enabled status of all controls, depending on selected item."""
pi.logger.debug("RevPiPlcList._edit_state") log.debug("RevPiPlcList._edit_state")
item = self.tre_connections.currentItem() item = self.tre_connections.currentItem()
if item is None: if item is None:
@@ -409,7 +412,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
@QtCore.pyqtSlot(str) @QtCore.pyqtSlot(str)
def on_cbb_folder_currentIndexChanged(self, text: str): def on_cbb_folder_currentIndexChanged(self, text: str):
pi.logger.debug("RevPiPlcList.on_cbb_folder_currentIndexChanged({0})".format(text)) log.debug("RevPiPlcList.on_cbb_folder_currentIndexChanged({0})".format(text))
if self.__current_item.type() == NodeType.CON: if self.__current_item.type() == NodeType.CON:
new_dir_node = self._get_folder_item(text) new_dir_node = self._get_folder_item(text)
@@ -443,7 +446,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
@QtCore.pyqtSlot(str) @QtCore.pyqtSlot(str)
def on_cbb_folder_editTextChanged(self, text: str): def on_cbb_folder_editTextChanged(self, text: str):
pi.logger.debug("RevPiPlcList.on_cbb_folder_editTextChanged({0})".format(text)) log.debug("RevPiPlcList.on_cbb_folder_editTextChanged({0})".format(text))
if self.__current_item.type() == NodeType.DIR and self.__current_item.text(0) != text: if self.__current_item.type() == NodeType.DIR and self.__current_item.text(0) != text:
# We just have to rename the dir node # We just have to rename the dir node

View File

@@ -8,6 +8,7 @@ import gzip
import os import os
import tarfile import tarfile
import zipfile import zipfile
from logging import getLogger
from shutil import rmtree from shutil import rmtree
from tempfile import mkdtemp from tempfile import mkdtemp
from xmlrpc.client import Binary from xmlrpc.client import Binary
@@ -15,9 +16,10 @@ from xmlrpc.client import Binary
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from . import helper from . import helper
from . import proginit as pi
from .ui.revpiprogram_ui import Ui_diag_program from .ui.revpiprogram_ui import Ui_diag_program
log = getLogger(__name__)
class RevPiProgram(QtWidgets.QDialog, Ui_diag_program): class RevPiProgram(QtWidgets.QDialog, Ui_diag_program):
"""Program options of RevPiPyLoad.""" """Program options of RevPiPyLoad."""
@@ -67,7 +69,7 @@ class RevPiProgram(QtWidgets.QDialog, Ui_diag_program):
def _load_settings(self, files_only=False): def _load_settings(self, files_only=False):
"""Load values to GUI widgets.""" """Load values to GUI widgets."""
pi.logger.debug("RevPiProgram._load_settings") log.debug("RevPiProgram._load_settings")
if files_only: if files_only:
mrk_program = self.cbb_plcprogram.currentText() mrk_program = self.cbb_plcprogram.currentText()
@@ -88,7 +90,7 @@ class RevPiProgram(QtWidgets.QDialog, Ui_diag_program):
is_in_list = True is_in_list = True
if not is_in_list: if not is_in_list:
pi.logger.warning("File {0} is not in list".format(mrk_program or self.dc.get("plcprogram", ""))) log.warning("File {0} is not in list".format(mrk_program or self.dc.get("plcprogram", "")))
if files_only: if files_only:
self.cbb_plcprogram.setCurrentText(mrk_program) self.cbb_plcprogram.setCurrentText(mrk_program)
@@ -382,7 +384,7 @@ class RevPiProgram(QtWidgets.QDialog, Ui_diag_program):
fh.close() fh.close()
except Exception as e: except Exception as e:
pi.logger.error(e) log.error(e)
QtWidgets.QMessageBox.critical( QtWidgets.QMessageBox.critical(
self, self.tr("Error"), self.tr( self, self.tr("Error"), self.tr(
"Coud not save the archive or extract the files!\n" "Coud not save the archive or extract the files!\n"

View File

@@ -12,7 +12,7 @@ from keyring.errors import KeyringError
from .ui.sshauth_ui import Ui_diag_sshauth from .ui.sshauth_ui import Ui_diag_sshauth
log = getLogger() log = getLogger(__name__)
class SSHAuth(QtWidgets.QDialog, Ui_diag_sshauth): class SSHAuth(QtWidgets.QDialog, Ui_diag_sshauth):