From 98f07b47efa34a8c8981c1f5bb6bd9f8ea99aad9 Mon Sep 17 00:00:00 2001 From: yang <ry219@ic.ac.uk> Date: Fri, 9 Oct 2020 11:53:33 +0800 Subject: [PATCH] Add config option to disable use system proxy --- cutelog/config.py | 1 + cutelog/listener.py | 4 +- cutelog/resources/ui/settings_dialog.ui | 132 ++++++++++++++---------- cutelog/settings_dialog.py | 2 + setup.py | 22 +++- 5 files changed, 99 insertions(+), 62 deletions(-) diff --git a/cutelog/config.py b/cutelog/config.py index 2af282d..4392c4b 100644 --- a/cutelog/config.py +++ b/cutelog/config.py @@ -72,6 +72,7 @@ OPTION_SPEC = ( ('single_tab_mode_default', bool, False), ('extra_mode_default', bool, False), ('default_serialization_format', str, 'pickle'), + ('use_system_proxy', bool, False), # Advanced ('console_logging_level', int, 30), diff --git a/cutelog/listener.py b/cutelog/listener.py index e29f996..d8b581b 100644 --- a/cutelog/listener.py +++ b/cutelog/listener.py @@ -4,7 +4,7 @@ import struct import time from qtpy.QtCore import QThread, Signal -from qtpy.QtNetwork import QHostAddress, QTcpServer, QTcpSocket +from qtpy.QtNetwork import QHostAddress, QTcpServer, QTcpSocket, QNetworkProxyFactory from .config import CONFIG, MSGPACK_SUPPORT, CBOR_SUPPORT from .logger_tab import LogRecord @@ -27,6 +27,8 @@ class LogServer(QTcpServer): self.conn_count = 0 self.threads = [] + QNetworkProxyFactory.setUseSystemConfiguration(CONFIG['use_system_proxy']) + def start(self): self.log.info('Starting the server') diff --git a/cutelog/resources/ui/settings_dialog.ui b/cutelog/resources/ui/settings_dialog.ui index c20eca4..8112727 100644 --- a/cutelog/resources/ui/settings_dialog.ui +++ b/cutelog/resources/ui/settings_dialog.ui @@ -66,7 +66,7 @@ </sizepolicy> </property> <property name="currentIndex"> - <number>0</number> + <number>2</number> </property> <widget class="QWidget" name="pageAppearance"> <layout class="QGridLayout" name="gridLayout_3"> @@ -396,8 +396,8 @@ <property name="verticalSpacing"> <number>10</number> </property> - <item row="2" column="0"> - <widget class="QLabel" name="label_16"> + <item row="1" column="0"> + <widget class="QLabel" name="label_13"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> <horstretch>0</horstretch> @@ -405,47 +405,54 @@ </sizepolicy> </property> <property name="text"> - <string>Default serialization format</string> + <string>Server listen port</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="listenHostLine"> + <item row="0" column="0"> + <widget class="QLabel" name="label_12"> <property name="sizePolicy"> - <sizepolicy hsizetype="Ignored" vsizetype="Fixed"> + <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="placeholderText"> - <string>0.0.0.0</string> + <property name="text"> + <string>Server listen address</string> </property> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_13"> + <item row="0" column="1"> + <widget class="QLineEdit" name="listenHostLine"> <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> + <sizepolicy hsizetype="Ignored" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="text"> - <string>Server listen port</string> + <property name="placeholderText"> + <string>0.0.0.0</string> </property> </widget> </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_12"> + <item row="2" column="1"> + <widget class="QComboBox" name="serializationFormatCombo"> <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> + <sizepolicy hsizetype="Ignored" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="text"> - <string>Server listen address</string> - </property> + <item> + <property name="text"> + <string>pickle</string> + </property> + </item> + <item> + <property name="text"> + <string>json</string> + </property> + </item> </widget> </item> <item row="1" column="1"> @@ -461,21 +468,21 @@ </property> </widget> </item> - <item row="7" column="0" colspan="2"> - <spacer name="verticalSpacer_3"> - <property name="orientation"> - <enum>Qt::Vertical</enum> + <item row="2" column="0"> + <widget class="QLabel" name="label_16"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> + <property name="text"> + <string>Default serialization format</string> </property> - </spacer> + </widget> </item> - <item row="5" column="0"> - <widget class="QLabel" name="label_15"> + <item row="4" column="0"> + <widget class="QLabel" name="label_14"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> <horstretch>0</horstretch> @@ -483,7 +490,7 @@ </sizepolicy> </property> <property name="text"> - <string>Extra mode by default</string> + <string>Single tab mode by default</string> </property> </widget> </item> @@ -494,35 +501,28 @@ </property> </widget> </item> - <item row="5" column="1"> - <widget class="QCheckBox" name="extraModeCheckBox"> - <property name="text"> - <string/> + <item row="3" column="0" colspan="2"> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> </property> </widget> </item> - <item row="2" column="1"> - <widget class="QComboBox" name="serializationFormatCombo"> + <item row="6" column="0"> + <widget class="QLabel" name="label_18"> <property name="sizePolicy"> - <sizepolicy hsizetype="Ignored" vsizetype="Fixed"> + <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <item> - <property name="text"> - <string>pickle</string> - </property> - </item> - <item> - <property name="text"> - <string>json</string> - </property> - </item> + <property name="text"> + <string>Use system proxy</string> + </property> </widget> </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_14"> + <item row="5" column="0"> + <widget class="QLabel" name="label_15"> <property name="sizePolicy"> <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> <horstretch>0</horstretch> @@ -530,14 +530,34 @@ </sizepolicy> </property> <property name="text"> - <string>Single tab mode by default</string> + <string>Extra mode by default</string> </property> </widget> </item> - <item row="3" column="0" colspan="2"> - <widget class="Line" name="line"> + <item row="5" column="1"> + <widget class="QCheckBox" name="extraModeCheckBox"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="8" column="0" colspan="2"> + <spacer name="verticalSpacer_3"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="6" column="1"> + <widget class="QCheckBox" name="useSystemProxyCheckBox"> + <property name="text"> + <string/> </property> </widget> </item> diff --git a/cutelog/settings_dialog.py b/cutelog/settings_dialog.py index 9e784e3..de2fde6 100644 --- a/cutelog/settings_dialog.py +++ b/cutelog/settings_dialog.py @@ -62,6 +62,7 @@ class SettingsDialog(QDialog): self.listenPortLine.setText(str(CONFIG['listen_port'])) self.singleTabCheckBox.setChecked(CONFIG['single_tab_mode_default']) self.extraModeCheckBox.setChecked(CONFIG['extra_mode_default']) + self.useSystemProxyCheckBox.setChecked(CONFIG['use_system_proxy']) if MSGPACK_SUPPORT: self.serializationFormatCombo.addItem("msgpack") if CBOR_SUPPORT: @@ -105,6 +106,7 @@ class SettingsDialog(QDialog): o['single_tab_mode_default'] = self.singleTabCheckBox.isChecked() o['extra_mode_default'] = self.extraModeCheckBox.isChecked() o['default_serialization_format'] = self.serializationFormatCombo.currentText() + o['use_system_proxy'] = self.useSystemProxyCheckBox.isChecked() # Advanced o['benchmark_interval'] = float(self.benchmarkIntervalLine.text()) diff --git a/setup.py b/setup.py index 32d3230..b14609f 100644 --- a/setup.py +++ b/setup.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- from os.path import dirname, join + from setuptools import setup +from setuptools.command.build_py import build_py from setuptools.command.install import install - VERSION = '2.0.4' @@ -15,7 +16,7 @@ def build_qt_resources(): except ImportError as e: raise Exception("Building from source requires PyQt5") from e pyrcc_main.processResourceFile(['cutelog/resources/resources.qrc'], - 'cutelog/resources.py', False) + 'cutelog/resources.py', False) # Rewrite PyQt5 import statements to qtpy with open('cutelog/resources.py', 'r') as rf: lines = rf.readlines() @@ -39,6 +40,17 @@ class CustomInstall(install): install.run(self) +class CustomBuild(build_py): + def run(self): + try: + build_qt_resources() + except Exception as e: + print('Could not compile the resources.py file due to an exception: "{}"\n' + 'Aborting build.'.format(e)) + raise + build_py.run(self) + + setup( name="cutelog", version=VERSION, @@ -50,8 +62,8 @@ setup( url="https://github.com/busimus/cutelog/", python_requires=">=3.5", - install_requires=['PyQt5;platform_system=="Darwin"', # it's better to use distro-supplied - 'PyQt5;platform_system=="Windows"', # PyQt package on Linux + install_requires=['PyQt5;platform_system=="Darwin"', # it's better to use distro-supplied + 'PyQt5;platform_system=="Windows"', # PyQt package on Linux 'QtPy'], classifiers=[ @@ -80,5 +92,5 @@ setup( data_files=[('share/applications', ['share/cutelog.desktop']), ('share/pixmaps', ['share/cutelog.png'])], zip_safe=False, - cmdclass=dict(install=CustomInstall) + cmdclass=dict(install=CustomInstall, build_py=CustomBuild) ) -- GitLab