From 9143afc1762f02918dc24380839aaf82cdf2da38 Mon Sep 17 00:00:00 2001 From: Roland W-H <r.weirhowell@gmail.com> Date: Tue, 11 Feb 2025 10:57:19 +0000 Subject: [PATCH] begin adding optional fields --- gui/platform_edit.ui | 201 ++++++++++++++++++++++++++++++------------- src/platform_edit.py | 18 +++- 2 files changed, 156 insertions(+), 63 deletions(-) diff --git a/gui/platform_edit.ui b/gui/platform_edit.ui index 0cc4a1f..6233405 100644 --- a/gui/platform_edit.ui +++ b/gui/platform_edit.ui @@ -53,13 +53,6 @@ <property name="verticalSpacing"> <number>5</number> </property> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="plat_name_lab"> - <property name="text"> - <string>Platform name</string> - </property> - </widget> - </item> <item row="8" column="0" colspan="2"> <widget class="QLabel" name="share_deal_reduce_amount_lab"> <property name="text"> @@ -67,44 +60,6 @@ </property> </widget> </item> - <item row="0" column="2"> - <widget class="QLineEdit" name="plat_name_box"/> - </item> - <item row="3" column="0" colspan="2"> - <widget class="QLabel" name="share_plat_fee_lab"> - <property name="text"> - <string>Share platform fee*</string> - </property> - </widget> - </item> - <item row="7" column="0" colspan="2"> - <widget class="QLabel" name="share_deal_reduce_trades_lab"> - <property name="text"> - <string>Share dealing discount # of trades</string> - </property> - </widget> - </item> - <item row="5" column="0" colspan="2"> - <widget class="QLabel" name="share_deal_fee_lab"> - <property name="text"> - <string>Share dealing fee*</string> - </property> - </widget> - </item> - <item row="1" column="0" colspan="2"> - <widget class="QLabel" name="fund_deal_fee_lab"> - <property name="text"> - <string>Fund dealing fee*</string> - </property> - </widget> - </item> - <item row="4" column="0" colspan="2"> - <widget class="QLabel" name="share_plat_max_fee_lab"> - <property name="text"> - <string>Share platform fee cap/mth</string> - </property> - </widget> - </item> <item row="8" column="2"> <widget class="QDoubleSpinBox" name="share_deal_reduce_amount_box"> <property name="buttonSymbols"> @@ -118,19 +73,6 @@ </property> </widget> </item> - <item row="5" column="2"> - <widget class="QDoubleSpinBox" name="share_deal_fee_box"> - <property name="buttonSymbols"> - <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> - </property> - <property name="correctionMode"> - <enum>QAbstractSpinBox::CorrectionMode::CorrectToNearestValue</enum> - </property> - <property name="prefix"> - <string>£</string> - </property> - </widget> - </item> <item row="4" column="2"> <widget class="QDoubleSpinBox" name="share_plat_max_fee_box"> <property name="buttonSymbols"> @@ -144,16 +86,49 @@ </property> </widget> </item> - <item row="3" column="2"> - <widget class="QDoubleSpinBox" name="share_plat_fee_box"> + <item row="0" column="3"> + <widget class="QCheckBox" name="plat_name_check"> + <property name="text"> + <string/> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="0" column="0" colspan="2"> + <widget class="QLabel" name="plat_name_lab"> + <property name="text"> + <string>Platform name</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QLineEdit" name="plat_name_box"/> + </item> + <item row="3" column="3"> + <widget class="QCheckBox" name="share_plat_fee_check"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string/> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="2"> + <widget class="QDoubleSpinBox" name="share_deal_fee_box"> <property name="buttonSymbols"> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> </property> <property name="correctionMode"> <enum>QAbstractSpinBox::CorrectionMode::CorrectToNearestValue</enum> </property> - <property name="suffix"> - <string>%</string> + <property name="prefix"> + <string>£</string> </property> </widget> </item> @@ -170,6 +145,47 @@ </property> </widget> </item> + <item row="1" column="0" colspan="2"> + <widget class="QLabel" name="fund_deal_fee_lab"> + <property name="text"> + <string>Fund dealing fee*</string> + </property> + </widget> + </item> + <item row="4" column="0" colspan="2"> + <widget class="QLabel" name="share_plat_max_fee_lab"> + <property name="text"> + <string>Share platform fee cap/mth</string> + </property> + </widget> + </item> + <item row="3" column="2"> + <widget class="QDoubleSpinBox" name="share_plat_fee_box"> + <property name="buttonSymbols"> + <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> + </property> + <property name="correctionMode"> + <enum>QAbstractSpinBox::CorrectionMode::CorrectToNearestValue</enum> + </property> + <property name="suffix"> + <string>%</string> + </property> + </widget> + </item> + <item row="7" column="3"> + <widget class="QCheckBox" name="share_deal_reduce_trades_check"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="5" column="0" colspan="2"> + <widget class="QLabel" name="share_deal_fee_lab"> + <property name="text"> + <string>Share dealing fee*</string> + </property> + </widget> + </item> <item row="7" column="2"> <widget class="QSpinBox" name="share_deal_reduce_trades_box"> <property name="buttonSymbols"> @@ -180,6 +196,60 @@ </property> </widget> </item> + <item row="7" column="0" colspan="2"> + <widget class="QLabel" name="share_deal_reduce_trades_lab"> + <property name="text"> + <string>Share dealing discount # of trades</string> + </property> + </widget> + </item> + <item row="8" column="3"> + <widget class="QCheckBox" name="share_deal_reduce_amount_check"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="5" column="3"> + <widget class="QCheckBox" name="share_deal_fee_check"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string/> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QLabel" name="share_plat_fee_lab"> + <property name="text"> + <string>Share platform fee*</string> + </property> + </widget> + </item> + <item row="1" column="3"> + <widget class="QCheckBox" name="fund_deal_fee_check"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string/> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="4" column="3"> + <widget class="QCheckBox" name="share_plat_max_fee_check"> + <property name="text"> + <string/> + </property> + </widget> + </item> </layout> </widget> <widget class="QPushButton" name="save_but"> @@ -221,6 +291,13 @@ <tabstop>share_deal_reduce_trades_box</tabstop> <tabstop>share_deal_reduce_amount_box</tabstop> <tabstop>save_but</tabstop> + <tabstop>plat_name_check</tabstop> + <tabstop>fund_deal_fee_check</tabstop> + <tabstop>share_plat_fee_check</tabstop> + <tabstop>share_plat_max_fee_check</tabstop> + <tabstop>share_deal_fee_check</tabstop> + <tabstop>share_deal_reduce_trades_check</tabstop> + <tabstop>share_deal_reduce_amount_check</tabstop> </tabstops> <resources/> <connections> diff --git a/src/platform_edit.py b/src/platform_edit.py index fda14dd..7989e83 100644 --- a/src/platform_edit.py +++ b/src/platform_edit.py @@ -30,6 +30,13 @@ class PlatformEdit(QWidget): if autofill: self.save_but.setEnabled(True) + self.optional_check_boxes = [ + self.plat_name_check, + self.share_plat_max_fee_check, + self.share_deal_reduce_trades_check, + self.share_deal_reduce_amount_check + ] + # Create main window object, passing this instance as param self.main_win = main_window.SIPPCompare(self) @@ -40,6 +47,9 @@ class PlatformEdit(QWidget): self.share_plat_fee_box.valueChanged.connect(self.check_valid) self.share_deal_fee_box.valueChanged.connect(self.check_valid) + for check_box in self.optional_check_boxes: + check_box.checkStateChanged.connect(self.check_valid) + # Install event filter on input boxes in order to select all text on focus self.fund_deal_fee_box.installEventFilter(self) self.share_plat_fee_box.installEventFilter(self) @@ -48,6 +58,9 @@ class PlatformEdit(QWidget): self.share_deal_reduce_trades_box.installEventFilter(self) self.share_deal_reduce_amount_box.installEventFilter(self) + #for check_box in self.optional_check_boxes: + # check_box.installEventFilter(self) + # Set validators # Regex accepts any characters that match [a-Z], [0-9] or _ self.plat_name_box.setValidator( @@ -79,10 +92,13 @@ class PlatformEdit(QWidget): # When focus is given to an input box, select all text in it (easier to edit) def eventFilter(self, obj: QObject, event: QEvent): - if event.type() == QEvent.Type.FocusIn: + if obj.staticMetaObject.className() == "QDoubleSpinBox" and event.type() == QEvent.Type.FocusIn: # Alternative condition for % suffix - currently unused #if obj.value() == 0 or obj == self.share_plat_fee_box: QTimer.singleShot(0, obj.selectAll) + #if obj in self.optional_check_boxes and \ + #event.type() == QEvent.Type.FocusIn or event.type() == QEvent.Type.FocusOut: + # print("Working") return False # Check if all required fields have valid (non-zero) input