diff --git a/include/ui/revpiplclist_ui.py b/include/ui/revpiplclist_ui.py index 82aaa28..d1e4814 100644 --- a/include/ui/revpiplclist_ui.py +++ b/include/ui/revpiplclist_ui.py @@ -62,7 +62,7 @@ class Ui_diag_connections(object): self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.lbl_name) self.lbl_folder = QtWidgets.QLabel(self.gb_properties) self.lbl_folder.setObjectName("lbl_folder") - self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.lbl_folder) + self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.lbl_folder) self.lbl_address = QtWidgets.QLabel(self.gb_properties) self.lbl_address.setObjectName("lbl_address") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lbl_address) @@ -91,7 +91,20 @@ class Ui_diag_connections(object): self.cbb_folder.setObjectName("cbb_folder") self.cbb_folder.addItem("") self.cbb_folder.setItemText(0, "") - self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.cbb_folder) + self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.cbb_folder) + self.lbl_timeout = QtWidgets.QLabel(self.gb_properties) + self.lbl_timeout.setObjectName("lbl_timeout") + self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.lbl_timeout) + self.sbx_timeout = QtWidgets.QSpinBox(self.gb_properties) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sbx_timeout.sizePolicy().hasHeightForWidth()) + self.sbx_timeout.setSizePolicy(sizePolicy) + self.sbx_timeout.setMinimum(5) + self.sbx_timeout.setMaximum(30) + self.sbx_timeout.setObjectName("sbx_timeout") + self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.sbx_timeout) self.gridLayout.addWidget(self.gb_properties, 1, 0, 1, 2) self.btn_box = QtWidgets.QDialogButtonBox(diag_connections) self.btn_box.setOrientation(QtCore.Qt.Horizontal) @@ -114,6 +127,8 @@ class Ui_diag_connections(object): self.lbl_folder.setText(_translate("diag_connections", "Sub folder:")) self.lbl_address.setText(_translate("diag_connections", "Address (DNS/IP):")) self.lbl_port.setText(_translate("diag_connections", "Port (Default {0}):")) + self.lbl_timeout.setText(_translate("diag_connections", "Connection timeout:")) + self.sbx_timeout.setSuffix(_translate("diag_connections", " sec.")) from . import ressources_rc diff --git a/include/ui_dev/revpiplclist.ui b/include/ui_dev/revpiplclist.ui index ec6e78b..1f9b2ea 100644 --- a/include/ui_dev/revpiplclist.ui +++ b/include/ui_dev/revpiplclist.ui @@ -105,7 +105,7 @@ - + Sub folder: @@ -151,7 +151,7 @@ - + true @@ -163,6 +163,32 @@ + + + + Connection timeout: + + + + + + + + 0 + 0 + + + + sec. + + + 5 + + + 30 + + + diff --git a/revpicommander/helper.py b/revpicommander/helper.py index afc4f29..1f7faae 100644 --- a/revpicommander/helper.py +++ b/revpicommander/helper.py @@ -25,6 +25,7 @@ class WidgetData(IntEnum): has_error = 263 port = 264 object_name = 265 + timeout = 266 last_dir_upload = 301 last_file_upload = 302 last_dir_pictory = 303 @@ -218,9 +219,10 @@ class ConnectionManager(QtCore.QThread): settings.beginReadArray("connections") settings.setArrayIndex(settings_index) - address = settings.value("address") - name = settings.value("name") - port = settings.value("port", defaultValue=55123) + address = settings.value("address", str) + name = settings.value("name", str) + port = settings.value("port", 55123, int) + timeout = settings.value("timeout", 5, int) self.program_last_dir_upload = settings.value("last_dir_upload", ".", str) self.program_last_file_upload = settings.value("last_file_upload", ".", str) @@ -228,8 +230,8 @@ class ConnectionManager(QtCore.QThread): self.program_last_dir_picontrol = settings.value("last_dir_picontrol", ".", str) self.program_last_dir_selected = settings.value("last_dir_selected", ".", str) self.program_last_pictory_file = settings.value("last_pictory_file", "{0}.rsc".format(name), str) - self.program_last_tar_file = settings.value("last_tar_file", "{0}.tgz".format(name)) - self.program_last_zip_file = settings.value("last_zip_file", "{0}.zip".format(name)) + self.program_last_tar_file = settings.value("last_tar_file", "{0}.tgz".format(name), str) + self.program_last_zip_file = settings.value("last_zip_file", "{0}.zip".format(name), str) self.develop_watch_files = settings.value("watch_files", [], list) self.develop_watch_path = settings.value("watch_path", "", str) self.debug_geos = settings.value("debug_geos", {}, dict) @@ -256,7 +258,7 @@ class ConnectionManager(QtCore.QThread): self.xml_mode = xml_mode with self._lck_cli: - socket.setdefaulttimeout(5) + socket.setdefaulttimeout(timeout) self._cli = sp self._cli_connect.put_nowait((address, port)) diff --git a/revpicommander/locale/revpicommander_de.qm b/revpicommander/locale/revpicommander_de.qm index 8295392..1dd7987 100644 Binary files a/revpicommander/locale/revpicommander_de.qm and b/revpicommander/locale/revpicommander_de.qm differ diff --git a/revpicommander/locale/revpicommander_de.ts b/revpicommander/locale/revpicommander_de.ts index a44c5f1..51f7eea 100644 --- a/revpicommander/locale/revpicommander_de.ts +++ b/revpicommander/locale/revpicommander_de.ts @@ -564,12 +564,12 @@ Ungesicherte Änderungen gehen verloren. Neue Verbindung - + Question Frage - + Do you really want to quit? Unsaved changes will be lost. Soll das Fenster wirklich geschlossen werden? @@ -953,6 +953,16 @@ Dies ist kein Fehler, wenn das SPS Startprogramm bereits auf dem Rev Pi ist. Pr Port (Default {0}): Port (Standard {0}): + + + Connection timeout: + Verbindungs-Timeout: + + + + sec. + Sek. + diag_mqtt diff --git a/revpicommander/revpicommander.py b/revpicommander/revpicommander.py index 2ee82d6..5940111 100755 --- a/revpicommander/revpicommander.py +++ b/revpicommander/revpicommander.py @@ -5,7 +5,7 @@ __author__ = "Sven Sager" __copyright__ = "Copyright (C) 2018 Sven Sager" __license__ = "GPLv3" -__version__ = "0.9.1" +__version__ = "0.9.1f" import webbrowser from os.path import basename, dirname, join diff --git a/revpicommander/revpiplclist.py b/revpicommander/revpiplclist.py index d9e4c58..f5c7d01 100644 --- a/revpicommander/revpiplclist.py +++ b/revpicommander/revpiplclist.py @@ -51,6 +51,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections): con_item.setText(0, helper.settings.value("name", "Revolution Pi", str)) con_item.setText(1, helper.settings.value("address", "127.0.0.1", str)) con_item.setData(0, WidgetData.port, helper.settings.value("port", self.__default_port, int)) + con_item.setData(0, WidgetData.timeout, helper.settings.value("timeout", 5, int)) con_item.setData(0, WidgetData.last_dir_upload, helper.settings.value("last_dir_upload")) con_item.setData(0, WidgetData.last_file_upload, helper.settings.value("last_file_upload")) @@ -95,6 +96,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections): helper.settings.setValue("folder", parent.text(0) if parent else "") helper.settings.setValue("name", node.text(0)) helper.settings.setValue("port", node.data(0, WidgetData.port)) + helper.settings.setValue("timeout", node.data(0, WidgetData.timeout)) if node.data(0, WidgetData.last_dir_upload): helper.settings.setValue("last_dir_upload", node.data(0, WidgetData.last_dir_upload)) @@ -192,6 +194,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections): self.txt_name.setEnabled(con_item) self.txt_address.setEnabled(con_item) self.sbx_port.setEnabled(con_item) + self.sbx_timeout.setEnabled(con_item) self.cbb_folder.setEnabled(con_item or dir_item) def _get_folder_item(self, name: str): @@ -235,6 +238,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections): self.txt_name.setText(current.text(0)) self.txt_address.setText(current.text(1)) self.sbx_port.setValue(current.data(0, WidgetData.port)) + self.sbx_timeout.setValue(current.data(0, WidgetData.timeout)) if current.parent() is None: self.cbb_folder.setCurrentIndex(0) else: @@ -303,6 +307,12 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections): return self.__current_item.setData(0, WidgetData.port, value) + @QtCore.pyqtSlot(int) + def on_sbx_timeout_valueChanged(self, value: int): + if self.__current_item.type() != NodeType.CON: + return + self.__current_item.setData(0, WidgetData.timeout, value) + @QtCore.pyqtSlot(str) def on_cbb_folder_editTextChanged(self, text: str): pi.logger.debug("RevPiPlcList.on_cbb_folder_editTextChanged({0})".format(text)) diff --git a/setup.py b/setup.py index 6bd4d8a..f6e7a51 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ class MyEggInfo(distutils.command.install_egg_info.install_egg_info): setup( - version="0.9.1", + version="0.9.1f", python_requires="~=3.4", requires=["PyQt5", "revpimodio2", "zeroconf"],