From f0e6f64389ede0c9610fd118e794f47667bd5c9f Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Sun, 18 Apr 2021 11:03:51 +0200 Subject: [PATCH] Add parameter to change connection timeout (default was and is 5 seconds) --- include/ui/revpiplclist_ui.py | 19 +++++++++++-- include/ui_dev/revpiplclist.ui | 30 +++++++++++++++++++-- revpicommander/helper.py | 14 +++++----- revpicommander/locale/revpicommander_de.qm | Bin 45567 -> 45731 bytes revpicommander/locale/revpicommander_de.ts | 14 ++++++++-- revpicommander/revpicommander.py | 2 +- revpicommander/revpiplclist.py | 10 +++++++ setup.py | 2 +- 8 files changed, 77 insertions(+), 14 deletions(-) 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 8295392e817cf018aacabec722569a7aab217497..1dd798764042c86b1494c0a125f3297ddd7ccba4 100644 GIT binary patch delta 1610 zcmX9;dr(w$6#nkr%igpzb>ftLN@O$j6 zsQ|oycss%|KnVi``VQq1?gI)}5Ec+-5Ec^F6Bg6{SKymeK>17P8tJ|^0{VtB;7AAD zOCo@T+plp~D?D2SVEuG>w!6~#d$o~L+zgGg=_Tew78Q5INA><)&@Dyi0O6NAYaNgU;Q7}Ii!To1u&W&?a^_=(KLIu@{!gJMw;!muN%)HV6NQ>Qviy)Ap+vY+XkAAOzS%-YEBU^C zjBqu08jzAIbp93$6nF^NHURTJ=-N5MA7}2GE zF!oy@(_h_xnt0`26xHoyL#dr;H!mKr%@AD%sXlj{XQhJMlA=^`#lcwM(~;tu$(g_m zi1Ajsmf9{R=R^RmR?*rQNglV0>El&E;#0Bw$C1F4da?ZeX+Sw6evw7V?8+5uvU_OX zD4vL=f9A?Y*f<&+#O_!UBiml=?$uLLgKV0OSHNbSq}bj84tq)V(gHH*t~A;}Ud*hO zd`l^}1DB-0VZFrgniMqX4=mG4!7-bt3=Xq88>gW=eWZ;Z3RQfGw55SCa~r#D<2dt* zRA(U}Lj0w3-I2htEa@`Kr7F23bxb-!Lbyr44kgSBm!3U!qDEV!!693qY^z32Bc>le zdyQ2MY_fXc@Dv-(6YtwVdZ}z^qG#4c%f=20R@TPq)Q{wexy~u`x9Zcc8Hl$RvpvYmk>49sC~PZqWQOIM?bkjR2;Np zh0U}cshx3;_S42`cUE1d8vkCqE1{lrPS<9KJfIn}Q(Lk=hh|3ZYHdwHH1(H;)rpI& zCv^@E+X3f0I+Ko$dpGLduOLM#opm8)VMJ=2ZjERpukY$IbEguCAYIYoU}_nA-2v_< zDLh42_1$hFJzLkD)(7~6>RLFWm%cJ;5bJfrOzp*Q~u^h?7U0`*RY2_%xRi-#Ju1yZ(xOdpx6h|*J=EH&*L?I4INJIdQ1{x~#*#^hO#zsXZTH<1z S6D=`OaY=~*jpZpTeE$O`Rq3Yy delta 1533 zcmX9;dr(wW82{b7m%VrI?%owqASPKE5(WiCQ3(-DQSb%Yn6DJl5Dir1Ek4$j1O5@>Q5nNO4;&0-Z(xeDTK8+DOM$i1NHZ(GWyM z?*&ebDSc{OHvvVntAPVuI1}GYm_gV=XvJ4|)&o(0<2s)M>~}>Eza5zHA0Dkf3Y2_- z!H0FgF5oYz4anj-L_7ixkKz1|Q(k5<7mz&_IBsVq&iKYwF8cg#;N1dljXoXtcnVh# zKv`8QSSx4LtmL|VQh}Pa>@H{YS;8;B-Ay7C@>|?UkklA{YwIAe=>=cV)eB_Y;7co$ zNCX=j$9o4y^1U9kTU@Nt#w7ryH&sgd4Pb|pYJ}T#AUjIsy~zS>?omwykzbatTFTu6 zSSicpz4*$f>@;sQ#|Vx#x@3W`FmFpV;5S)Fxx4__c|k~Z<^Z*mko&1jB2)f$g9osWQG!?}H!@L(H9~0@6E0+jkzo%qG$H+gU(4FP7!5|h|>0E!n}uUz`n zg;}VQAnEFiV?fbC>F1GzmM-bpQ+J^Lq6SBtfZE?Ra!xF;^4V*wcV|)R^l9cLPg&8luLG+P50%wcvKG?~`jpm)1l&Kh_pT^wI3tr>#jY0_37=+J>@3`d=BWLtJ5gQ|IiQ4UD~~GwLWkphY*w zPKq2Y)J0gMiPTixM$wVH{#BQ6d52s)rK?yKPWEK$s<~VA4;ys#-yWbI`CQkQGYCwM z(zSC$FXxh8dK?c#HtJnnr_-E>)cci8rZ2TsKV|WApkk4JZWom$pD5KYeD$%9K4i6$ zk(S1=U?PWQLNowjM*d z?E<9-8SKxjq(z9~v$uPJ?d^unc;cAuVtBrUt_yUe!E-XHrCReKt>ug 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"],