diff --git a/cutelog/config.py b/cutelog/config.py index 2af282dcd22948fb50aadd6929589db28b3cdab7..4392c4b4eec4023197bff3cd5856822f0aede052 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 e29f996c2aeeee1b62fce42eaf60fc0e83ea6cf8..d8b581b4a922030455f5968149a63b8acdc22a52 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 c20eca4c4653ab424e31a4f9289e3531e3ad1523..8112727a71968b3f2f9def234da4c6614b01f92f 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 9e784e30451692c3cd6604362cb4ead2dd1378f1..de2fde66b8f931462085f3912eecbeaccf48db3a 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 32d3230305618afcafd0b4097f0280602f94d611..b14609fd1dad68edc886c6edcfa8f640cd683070 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) )