From e8f973e5a66ea5b59a7886f82e636fb666e1cfa6 Mon Sep 17 00:00:00 2001 From: Boris Pozdena Date: Thu, 27 Jan 2022 17:05:08 +0100 Subject: [PATCH] added skip_dir settings --- OneDriveGUI/OneDriveGUI.py | 84 ++++++++++------- OneDriveGUI/ui/profile_settings_page.ui | 93 +++++++++---------- OneDriveGUI/ui/ui_profile_settings_page.py | 102 ++++++++++++--------- 3 files changed, 152 insertions(+), 127 deletions(-) diff --git a/OneDriveGUI/OneDriveGUI.py b/OneDriveGUI/OneDriveGUI.py index 521a04a..6d977c6 100644 --- a/OneDriveGUI/OneDriveGUI.py +++ b/OneDriveGUI/OneDriveGUI.py @@ -7,7 +7,9 @@ from configparser import ConfigParser from PySide6.QtCore import QThread, QTimer, QUrl, Signal, QFileInfo from PySide6.QtGui import QIcon -from PySide6.QtWidgets import (QWidget, QApplication, QMainWindow, QMenu, QSystemTrayIcon, QListWidget, QListWidgetItem, QFileIconProvider, QStackedLayout, QVBoxLayout, QLabel) +from PySide6.QtWidgets import ( QWidget, QApplication, QMainWindow, QMenu, QSystemTrayIcon, + QListWidget, QListWidgetItem, QFileIconProvider, QStackedLayout, + QVBoxLayout, QLabel, QAbstractItemView) from ui.ui_login import Ui_LoginWindow from ui.ui_settings import Ui_settings_window @@ -45,20 +47,7 @@ class SettingsWindow(QWidget, Ui_settings_window): self.stackedLayout.setCurrentIndex(self.listWidget.currentRow()) - def add_item_to_qlist(self, source_widget, destination_widget, list): - if source_widget.text() == "": - print("Inoring empty value.") - elif source_widget.text() in list: - print("Item already in exemption list.") - else: - list.append(source_widget.text()) - destination_widget.addItem(source_widget.text()) - def remove_item_from_qlist(self, qlistwidget_name): - for item in qlistwidget_name.selectedItems(): - print("Removing: " + item.text()) - # items.remove(item.text()) - qlistwidget_name.takeItem(qlistwidget_name.row(item)) class ProfileStatusPage(QWidget, Ui_status_page): @@ -98,6 +87,7 @@ class ProfileSettingsPage(QWidget, Ui_profile_settings): super(ProfileSettingsPage, self).__init__() self.profile = profile + # Set up the user interface from Designer. self.setupUi(self) @@ -105,8 +95,8 @@ class ProfileSettingsPage(QWidget, Ui_profile_settings): self.temp_profile_config = temp_global_config[self.profile] - self.lineEdit_6.setText(self.temp_profile_config['onedrive']['sync_dir'].strip('"')) - self.lineEdit_6.textChanged.connect(self.set_sync_dir) + self.lineEdit_sync_dir.setText(self.temp_profile_config['onedrive']['sync_dir'].strip('"')) + self.lineEdit_sync_dir.textChanged.connect(self.set_sync_dir) # self.ui.lineEdit.setText(settings['onedrive']['log_dir'].strip('"')) # self.ui.lineEdit.textChanged.connect( @@ -120,32 +110,58 @@ class ProfileSettingsPage(QWidget, Ui_profile_settings): # lambda: settings.set('onedrive', 'skip_file', '"' + '|'.join(skip_files) + '"')) # self.ui.pushButton_6.clicked.connect(self.ui.lineEdit_2.clear) - # skip_dirs = settings['onedrive']['skip_dir'].strip('"').split('|') - # self.ui.listWidget_2.addItems(skip_dirs) - # self.ui.pushButton_7.clicked.connect( - # lambda: self.add_item_to_qlist(self.ui.lineEdit_3, self.ui.listWidget_2, skip_dirs)) - # self.ui.pushButton_7.clicked.connect( - # lambda: settings.set('onedrive', 'skip_dir', '"' + '|'.join(skip_dirs) + '"')) - # self.ui.pushButton_7.clicked.connect(self.ui.lineEdit_3.clear) + # Skip_dir section + self.skip_dirs = self.temp_profile_config['onedrive']['skip_dir'].strip('"').split('|') + self.listWidget_skip_dir.addItems(self.skip_dirs) + self.listWidget_skip_dir.setSelectionMode(QAbstractItemView.ExtendedSelection) + self.pushButton_add_skip_dir.clicked.connect(self.add_skip_dir) + self.pushButton_add_skip_dir.clicked.connect(self.lineEdit_skip_dir.clear) + self.pushButton_rm_skip_dir.clicked.connect(self.remove_skip_dir) - # self.ui.pushButton_4.clicked.connect(lambda: save_config(settings)) - self.pushButton.hide() - # self.pushButton.clicked.connect(self.discart_changes) - self.pushButton_13.clicked.connect(self.save_profile_settings) # Rate limit - self.lineEdit_10.setText(self.temp_profile_config['onedrive']['rate_limit'].strip('"')) - self.label_12.setText(str(round(int(self.lineEdit_10.text()) * 8 / 1000 / 1000, 2)) + " Mbit/s") - self.lineEdit_10.textChanged.connect(self.set_rate_limit) - # self.ui.lineEdit_5.textChanged.connect(lambda: self.ui.label_6.setText(str(round(int(self.ui.lineEdit_5.text()) * 8 / 1000 / 1000, 2)) + " Mbit/s")) + self.lineEdit_rate_limit.setText(self.temp_profile_config['onedrive']['rate_limit'].strip('"')) + self.label_rate_limit_mbps.setText(str(round(int(self.lineEdit_rate_limit.text()) * 8 / 1000 / 1000, 2)) + " Mbit/s") + self.lineEdit_rate_limit.textChanged.connect(self.set_rate_limit) + + # buttons + self.pushButton_discart.hide() + # TODO: how to discart unsaved changes and refresh the widgets or close window? + # self.pushButton_discart.clicked.connect(self.discart_changes) + self.pushButton_save.clicked.connect(self.save_profile_settings) + + def add_skip_dir(self): + self.add_item_to_qlist(self.lineEdit_skip_dir, self.listWidget_skip_dir, self.skip_dirs) + self.temp_profile_config['onedrive']['skip_dir'] = '"' + '|'.join(self.skip_dirs) + '"' + + def remove_skip_dir(self): + self.remove_item_from_qlist(self.listWidget_skip_dir, self.skip_dirs) + self.temp_profile_config['onedrive']['skip_dir'] = '"' + '|'.join(self.skip_dirs) + '"' + def set_rate_limit(self): - self.temp_profile_config['onedrive']['rate_limit'] = f'"{self.lineEdit_10.text()}"' - self.label_12.setText(str(round(int(self.lineEdit_10.text()) * 8 / 1000 / 1000, 2)) + " Mbit/s") + self.temp_profile_config['onedrive']['rate_limit'] = f'"{self.lineEdit_rate_limit.text()}"' + self.label_rate_limit_mbps.setText(str(round(int(self.lineEdit_rate_limit.text()) * 8 / 1000 / 1000, 2)) + " Mbit/s") def set_sync_dir(self): - self.temp_profile_config['onedrive']['sync_dir'] = f'"{self.lineEdit_6.text()}"' + self.temp_profile_config['onedrive']['sync_dir'] = f'"{self.lineEdit_sync_dir.text()}"' + def add_item_to_qlist(self, source_widget, destination_widget, list): + if source_widget.text() == "": + print("Inoring empty value.") + elif source_widget.text() in list: + print("Item already in exemption list.") + else: + list.append(source_widget.text()) + destination_widget.addItem(source_widget.text()) + + def remove_item_from_qlist(self, qlistwidget_name, list): + for item in qlistwidget_name.selectedItems(): + print("Removing: " + item.text()) + # items.remove(item.text()) + qlistwidget_name.takeItem(qlistwidget_name.row(item)) + print(list) + list.remove(item.text()) def save_profile_settings(self): global_config[self.profile].update(self.temp_profile_config) diff --git a/OneDriveGUI/ui/profile_settings_page.ui b/OneDriveGUI/ui/profile_settings_page.ui index 3f4ef28..599c013 100644 --- a/OneDriveGUI/ui/profile_settings_page.ui +++ b/OneDriveGUI/ui/profile_settings_page.ui @@ -6,7 +6,7 @@ 0 0 - 588 + 614 785 @@ -25,7 +25,7 @@ - 2 + 0 @@ -49,7 +49,7 @@ - + @@ -107,7 +107,7 @@ - + 0 @@ -120,7 +120,7 @@ - + 0 @@ -130,10 +130,10 @@ - + - + 0 @@ -201,45 +201,42 @@ Rate Limit - - - - 110 - 50 - 113 - 22 - - - - Qt::ImhDigitsOnly - - - - - - 10 - 50 - 101 - 16 - - - - Rate Limit [B/s] - - - - - - 250 - 50 - 141 - 16 - - - - (Mbit/s) - - + + + + + Rate Limit [B/s] + + + + + + + Qt::ImhDigitsOnly + + + + + + + (Mbit/s) + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + @@ -253,14 +250,14 @@ - + Discard changes - + Save diff --git a/OneDriveGUI/ui/ui_profile_settings_page.py b/OneDriveGUI/ui/ui_profile_settings_page.py index d356565..65764f6 100644 --- a/OneDriveGUI/ui/ui_profile_settings_page.py +++ b/OneDriveGUI/ui/ui_profile_settings_page.py @@ -24,7 +24,7 @@ class Ui_profile_settings(object): def setupUi(self, profile_settings): if not profile_settings.objectName(): profile_settings.setObjectName(u"profile_settings") - profile_settings.resize(588, 785) + profile_settings.resize(614, 785) self.verticalLayout_2 = QVBoxLayout(profile_settings) self.verticalLayout_2.setObjectName(u"verticalLayout_2") self.verticalLayout = QVBoxLayout() @@ -48,10 +48,10 @@ class Ui_profile_settings(object): self.gridLayout_5.addWidget(self.label_7, 0, 0, 1, 1) - self.lineEdit_6 = QLineEdit(self.exemptions_tab_2) - self.lineEdit_6.setObjectName(u"lineEdit_6") + self.lineEdit_sync_dir = QLineEdit(self.exemptions_tab_2) + self.lineEdit_sync_dir.setObjectName(u"lineEdit_sync_dir") - self.gridLayout_5.addWidget(self.lineEdit_6, 0, 1, 1, 1) + self.gridLayout_5.addWidget(self.lineEdit_sync_dir, 0, 1, 1, 1) self.pushButton_3 = QPushButton(self.exemptions_tab_2) self.pushButton_3.setObjectName(u"pushButton_3") @@ -103,40 +103,40 @@ class Ui_profile_settings(object): self.gridLayout_7 = QGridLayout() self.gridLayout_7.setObjectName(u"gridLayout_7") - self.pushButton_11 = QPushButton(self.exemptions_tab_2) - self.pushButton_11.setObjectName(u"pushButton_11") + self.pushButton_rm_skip_dir = QPushButton(self.exemptions_tab_2) + self.pushButton_rm_skip_dir.setObjectName(u"pushButton_rm_skip_dir") sizePolicy1 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Minimum) sizePolicy1.setHorizontalStretch(0) sizePolicy1.setVerticalStretch(0) - sizePolicy1.setHeightForWidth(self.pushButton_11.sizePolicy().hasHeightForWidth()) - self.pushButton_11.setSizePolicy(sizePolicy1) + sizePolicy1.setHeightForWidth(self.pushButton_rm_skip_dir.sizePolicy().hasHeightForWidth()) + self.pushButton_rm_skip_dir.setSizePolicy(sizePolicy1) - self.gridLayout_7.addWidget(self.pushButton_11, 0, 1, 1, 1) + self.gridLayout_7.addWidget(self.pushButton_rm_skip_dir, 0, 1, 1, 1) - self.listWidget_4 = QListWidget(self.exemptions_tab_2) - self.listWidget_4.setObjectName(u"listWidget_4") + self.listWidget_skip_dir = QListWidget(self.exemptions_tab_2) + self.listWidget_skip_dir.setObjectName(u"listWidget_skip_dir") sizePolicy2 = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Expanding) sizePolicy2.setHorizontalStretch(0) sizePolicy2.setVerticalStretch(0) - sizePolicy2.setHeightForWidth(self.listWidget_4.sizePolicy().hasHeightForWidth()) - self.listWidget_4.setSizePolicy(sizePolicy2) + sizePolicy2.setHeightForWidth(self.listWidget_skip_dir.sizePolicy().hasHeightForWidth()) + self.listWidget_skip_dir.setSizePolicy(sizePolicy2) - self.gridLayout_7.addWidget(self.listWidget_4, 0, 0, 1, 1) + self.gridLayout_7.addWidget(self.listWidget_skip_dir, 0, 0, 1, 1) - self.lineEdit_8 = QLineEdit(self.exemptions_tab_2) - self.lineEdit_8.setObjectName(u"lineEdit_8") + self.lineEdit_skip_dir = QLineEdit(self.exemptions_tab_2) + self.lineEdit_skip_dir.setObjectName(u"lineEdit_skip_dir") - self.gridLayout_7.addWidget(self.lineEdit_8, 1, 0, 1, 1) + self.gridLayout_7.addWidget(self.lineEdit_skip_dir, 1, 0, 1, 1) - self.pushButton_12 = QPushButton(self.exemptions_tab_2) - self.pushButton_12.setObjectName(u"pushButton_12") + self.pushButton_add_skip_dir = QPushButton(self.exemptions_tab_2) + self.pushButton_add_skip_dir.setObjectName(u"pushButton_add_skip_dir") sizePolicy3 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy3.setHorizontalStretch(0) sizePolicy3.setVerticalStretch(0) - sizePolicy3.setHeightForWidth(self.pushButton_12.sizePolicy().hasHeightForWidth()) - self.pushButton_12.setSizePolicy(sizePolicy3) + sizePolicy3.setHeightForWidth(self.pushButton_add_skip_dir.sizePolicy().hasHeightForWidth()) + self.pushButton_add_skip_dir.setSizePolicy(sizePolicy3) - self.gridLayout_7.addWidget(self.pushButton_12, 1, 1, 1, 1) + self.gridLayout_7.addWidget(self.pushButton_add_skip_dir, 1, 1, 1, 1) self.verticalLayout_5.addLayout(self.gridLayout_7) @@ -178,16 +178,28 @@ class Ui_profile_settings(object): self.tabWidget.addTab(self.logging_tab_2, "") self.tab_5 = QWidget() self.tab_5.setObjectName(u"tab_5") - self.lineEdit_10 = QLineEdit(self.tab_5) - self.lineEdit_10.setObjectName(u"lineEdit_10") - self.lineEdit_10.setGeometry(QRect(110, 50, 113, 22)) - self.lineEdit_10.setInputMethodHints(Qt.ImhDigitsOnly) - self.label_11 = QLabel(self.tab_5) - self.label_11.setObjectName(u"label_11") - self.label_11.setGeometry(QRect(10, 50, 101, 16)) - self.label_12 = QLabel(self.tab_5) - self.label_12.setObjectName(u"label_12") - self.label_12.setGeometry(QRect(250, 50, 141, 16)) + self.gridLayout = QGridLayout(self.tab_5) + self.gridLayout.setObjectName(u"gridLayout") + self.label_rate_limit = QLabel(self.tab_5) + self.label_rate_limit.setObjectName(u"label_rate_limit") + + self.gridLayout.addWidget(self.label_rate_limit, 0, 0, 1, 1) + + self.lineEdit_rate_limit = QLineEdit(self.tab_5) + self.lineEdit_rate_limit.setObjectName(u"lineEdit_rate_limit") + self.lineEdit_rate_limit.setInputMethodHints(Qt.ImhDigitsOnly) + + self.gridLayout.addWidget(self.lineEdit_rate_limit, 0, 1, 1, 1) + + self.label_rate_limit_mbps = QLabel(self.tab_5) + self.label_rate_limit_mbps.setObjectName(u"label_rate_limit_mbps") + + self.gridLayout.addWidget(self.label_rate_limit_mbps, 0, 2, 1, 1) + + self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) + + self.gridLayout.addItem(self.verticalSpacer, 1, 1, 1, 1) + self.tabWidget.addTab(self.tab_5, "") self.tab_6 = QWidget() self.tab_6.setObjectName(u"tab_6") @@ -200,15 +212,15 @@ class Ui_profile_settings(object): self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName(u"horizontalLayout") - self.pushButton = QPushButton(profile_settings) - self.pushButton.setObjectName(u"pushButton") + self.pushButton_discart = QPushButton(profile_settings) + self.pushButton_discart.setObjectName(u"pushButton_discart") - self.horizontalLayout.addWidget(self.pushButton) + self.horizontalLayout.addWidget(self.pushButton_discart) - self.pushButton_13 = QPushButton(profile_settings) - self.pushButton_13.setObjectName(u"pushButton_13") + self.pushButton_save = QPushButton(profile_settings) + self.pushButton_save.setObjectName(u"pushButton_save") - self.horizontalLayout.addWidget(self.pushButton_13) + self.horizontalLayout.addWidget(self.pushButton_save) self.verticalLayout_2.addLayout(self.horizontalLayout) @@ -216,7 +228,7 @@ class Ui_profile_settings(object): self.retranslateUi(profile_settings) - self.tabWidget.setCurrentIndex(2) + self.tabWidget.setCurrentIndex(0) QMetaObject.connectSlotsByName(profile_settings) @@ -231,18 +243,18 @@ class Ui_profile_settings(object): self.pushButton_9.setText(QCoreApplication.translate("profile_settings", u"Add", None)) self.pushButton_10.setText(QCoreApplication.translate("profile_settings", u"Remove", None)) self.label_9.setText(QCoreApplication.translate("profile_settings", u"Skip directories:", None)) - self.pushButton_11.setText(QCoreApplication.translate("profile_settings", u"Remove", None)) - self.pushButton_12.setText(QCoreApplication.translate("profile_settings", u"Add", None)) + self.pushButton_rm_skip_dir.setText(QCoreApplication.translate("profile_settings", u"Remove", None)) + self.pushButton_add_skip_dir.setText(QCoreApplication.translate("profile_settings", u"Add", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.exemptions_tab_2), QCoreApplication.translate("profile_settings", u"Monitored Files", None)) self.checkBox_4.setText(QCoreApplication.translate("profile_settings", u"Enable Logging", None)) self.label_10.setText(QCoreApplication.translate("profile_settings", u"Log location:", None)) self.pushButton_4.setText(QCoreApplication.translate("profile_settings", u"Browse", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.logging_tab_2), QCoreApplication.translate("profile_settings", u"Logging", None)) - self.label_11.setText(QCoreApplication.translate("profile_settings", u"Rate Limit [B/s]", None)) - self.label_12.setText(QCoreApplication.translate("profile_settings", u"(Mbit/s)", None)) + self.label_rate_limit.setText(QCoreApplication.translate("profile_settings", u"Rate Limit [B/s]", None)) + self.label_rate_limit_mbps.setText(QCoreApplication.translate("profile_settings", u"(Mbit/s)", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), QCoreApplication.translate("profile_settings", u"Rate Limit", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6), QCoreApplication.translate("profile_settings", u"Page", None)) - self.pushButton.setText(QCoreApplication.translate("profile_settings", u"Discard changes", None)) - self.pushButton_13.setText(QCoreApplication.translate("profile_settings", u"Save", None)) + self.pushButton_discart.setText(QCoreApplication.translate("profile_settings", u"Discard changes", None)) + self.pushButton_save.setText(QCoreApplication.translate("profile_settings", u"Save", None)) # retranslateUi