1
0
mirror of https://github.com/bpozdena/OneDriveGUI.git synced 2025-04-19 04:22:15 +03:00

-implemented 'Browse' button functionality

-several small GUI adjustments
This commit is contained in:
Boris Pozdena 2022-02-07 17:12:51 +01:00
parent ee331846c2
commit d9b2bc79c0
13 changed files with 109 additions and 37 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
venv/
.qt_for_python/
OneDriveGUI/__thrash/
scr/__thrash/
__pycache__/

View File

@ -1,6 +1,6 @@
# Installation steps
1) Ensure [OneDrive for Linux](https://abraunegg.github.io/) is instelled based on [instructions](https://github.com/abraunegg/onedrive/blob/master/docs/INSTALL.md) for your distro.
1) Ensure [OneDrive for Linux](https://abraunegg.github.io/) is installed based on [instructions](https://github.com/abraunegg/onedrive/blob/master/docs/INSTALL.md) for your distro.
1) Ensure Python3 and [pip](https://pip.pypa.io/en/stable/installation/) are installed on your system.
1) Clone or download content this repository.
1) (Optional) Create and activate a Python virtual environment:
@ -15,6 +15,6 @@
1) Start OneDrive GUI:
```sh
cd OneDriveGUI/
cd src/
python3 OneDriveGUI.py
```

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python3
from optparse import Option
import os
import re
import subprocess
@ -7,7 +8,7 @@ import sys
from configparser import ConfigParser
from PySide6.QtCore import QThread, QTimer, QUrl, Signal, QFileInfo, Qt, QDir
from PySide6.QtGui import QIcon, QPixmap
from PySide6.QtGui import QIcon, QPixmap, QDesktopServices
from PySide6.QtWidgets import (
QWidget,
QApplication,
@ -248,12 +249,9 @@ class wizardPage_create(QWizardPage):
return False
def get_dir_name(self):
self.file_dialog = QFileDialog.getExistingDirectory(
dir=os.path.expanduser("~/")
) # getOpenFileName(self, dir=os.path.expanduser("~/.config/"))
self.file_dialog = QFileDialog.getExistingDirectory(dir=os.path.expanduser("~/"))
dir_name = self.file_dialog
print(dir_name)
self.lineEdit_sync_dir.setText(dir_name)
@ -468,14 +466,27 @@ class SettingsWindow(QWidget, Ui_settings_window):
self.horizontalLayout.addLayout(self.stackedLayout)
self.listWidget_profiles.itemSelectionChanged.connect(self.switch_account_settings_page)
self.pushButton_open_create.clicked.connect(self.create_new_profile_window)
self.pushButton_open_create.hide()
self.pushButton_open_import.clicked.connect(self.import_profile_window)
self.pushButton_open_import.hide()
self.pushButton_remove.clicked.connect(self.remove_profile)
self.pushButton_create_import.clicked.connect(self.show_setup_wizard)
self.show()
def closeEvent(self, event):
event.ignore()
self.hide()
def switch_account_settings_page(self):
self.stackedLayout.setCurrentIndex(self.listWidget_profiles.currentRow())
def show_setup_wizard(self):
self.setup_wizard = SetupWizard()
self.setup_wizard.show()
def create_new_profile_window(self):
# Show profile creation window
self.create_window = QWidget()
@ -646,11 +657,20 @@ class ProfileStatusPage(QWidget, Ui_status_page):
self.toolButton_start.clicked.connect(self.start_monitor)
self.toolButton_stop.clicked.connect(self.stop_monitor)
# Open Sync Dir
self.pushButton_open_dir.clicked.connect(self.open_sync_dir)
# Open Settings window
self.pushButton_settings.clicked.connect(lambda: settings_window.show())
self.pushButton_2.setText("Wizard")
self.pushButton_2.clicked.connect(self.show_setup_wizard)
self.pushButton_2.hide()
def open_sync_dir(self):
sync_dir = global_config[self.profile_name]["onedrive"]["sync_dir"].strip('"')
url = QUrl(os.path.expanduser(sync_dir))
QDesktopServices.openUrl(url)
def show_setup_wizard(self):
self.setup_wizard = SetupWizard()
@ -696,6 +716,8 @@ class ProfileSettingsPage(QWidget, Ui_profile_settings):
self.checkBox_sync_root_files.setChecked(self.get_check_box_state("sync_root_files"))
self.checkBox_sync_root_files.stateChanged.connect(self.set_check_box_state)
self.pushButton_sync_dir_browse.clicked.connect(self.get_sync_dir_name)
#
# Excluded files tab
#
@ -798,7 +820,7 @@ class ProfileSettingsPage(QWidget, Ui_profile_settings):
self.lineEdit_azure_tenant_id.setText(self.temp_profile_config["azure_tenant_id"].strip('"'))
self.lineEdit_azure_tenant_id.textChanged.connect(self.set_line_edit_value)
# Rate limit tab
# Rate limit
self.spinBox_rate_limit.setValue(int(self.temp_profile_config["rate_limit"].strip('"')))
self.horizontalSlider_rate_limit.setValue(int(self.temp_profile_config["rate_limit"].strip('"')))
self.label_rate_limit_mbps.setText(
@ -846,6 +868,8 @@ class ProfileSettingsPage(QWidget, Ui_profile_settings):
self.lineEdit_log_dir.setText(self.temp_profile_config["log_dir"].strip('"'))
self.lineEdit_log_dir.textChanged.connect(self.set_log_dir)
self.pushButton_log_dir_browse.clicked.connect(self.get_log_dir_name)
self.checkBox_enable_logging.setChecked(self.get_check_box_state("enable_logging"))
self.checkBox_enable_logging.stateChanged.connect(self.set_check_box_state)
@ -879,9 +903,24 @@ class ProfileSettingsPage(QWidget, Ui_profile_settings):
# self.pushButton_discart.clicked.connect(self.discart_changes)
self.pushButton_save.clicked.connect(self.save_profile_settings)
def str2bool(self, value):
return value.lower() in "true"
def get_sync_dir_name(self):
self.file_dialog = QFileDialog.getExistingDirectory(dir=os.path.expanduser("~/"))
sync_dir = self.file_dialog
print(sync_dir)
self.lineEdit_sync_dir.setText(sync_dir)
def get_log_dir_name(self):
self.file_dialog = QFileDialog.getExistingDirectory(dir=os.path.expanduser("~/"))
log_dir = self.file_dialog
print(log_dir)
self.lineEdit_log_dir.setText(log_dir)
def set_line_edit_value(self, value):
_property = self.sender().objectName()
property = re.search(r"lineEdit_(.+)", _property).group(1)
@ -1259,14 +1298,15 @@ class MainWindow(QMainWindow, Ui_MainWindow):
actionshow = menu.addAction("Show/Hide")
actionshow.triggered.connect(lambda: self.hide() if self.isVisible() else self.show())
setting_action = menu.addAction("Settings")
# setting_action.triggered.connect(self.show_settings)
setting_action.triggered.connect(self.show_settings_window)
quit_action = menu.addAction("Quit")
quit_action.triggered.connect(sys.exit)
self.tray.activated.connect(lambda: self.hide() if self.isVisible() else self.show())
self.tray.setIcon(icon)
self.tray.setContextMenu(menu)
self.tray.show()
self.tray.setToolTip("This is OneDriveGUI")
self.tray.setToolTip("OneDriveGUI")
else:
self.tray = None
@ -1276,6 +1316,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.refresh_process_status.timeout.connect(lambda: self.onedrive_process_status())
self.refresh_process_status.start(500)
def closeEvent(self, event):
event.ignore()
self.hide()
def show_setup_wizard(self):
self.setup_wizard = SetupWizard()
self.setup_wizard.show()
@ -1440,6 +1484,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.lw = Ui_LoginWindow()
self.lw.setupUi(self.window1)
self.window1.show()
self.window1.setWindowTitle(f"OneDrive login for profile {profile}")
self.config_file = global_config[profile]["config_file"].strip('"')
self.config_dir = re.search(r"(.+)/.+$", self.config_file).group(1)

View File

@ -29,7 +29,7 @@
</size>
</property>
<property name="windowTitle">
<string>Form</string>
<string>OneDrive Login</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
@ -51,7 +51,7 @@
<widget class="QWebEngineView" name="loginFrame">
<property name="url">
<url>
<string>https://www.seznam.cz/</string>
<string>about:blank</string>
</url>
</property>
</widget>

View File

@ -7,9 +7,21 @@
<x>0</x>
<y>0</y>
<width>420</width>
<height>807</height>
<height>800</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>420</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>420</width>
<height>16777215</height>
</size>
</property>
<property name="windowTitle">
<string>OneDriveGUI</string>
</property>

View File

@ -154,7 +154,7 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<widget class="QPushButton" name="pushButton_open_dir">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
@ -162,7 +162,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Open Folder</string>
<string>Open Sync Directory</string>
</property>
</widget>
</item>

View File

@ -48,7 +48,7 @@
</size>
</property>
<property name="currentIndex">
<number>5</number>
<number>3</number>
</property>
<widget class="QWidget" name="exemptions_tab_2">
<attribute name="title">
@ -64,7 +64,7 @@
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="2">
<widget class="QPushButton" name="pushButton_3">
<widget class="QPushButton" name="pushButton_sync_dir_browse">
<property name="text">
<string>Browse</string>
</property>
@ -608,7 +608,7 @@
<widget class="QLineEdit" name="lineEdit_log_dir"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButton_log_dir">
<widget class="QPushButton" name="pushButton_log_dir_browse">
<property name="text">
<string>Browse</string>
</property>

View File

@ -51,6 +51,13 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_create_import">
<property name="text">
<string>Create/Import wizard</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_open_create">
<property name="text">

View File

@ -36,7 +36,7 @@ class Ui_LoginWindow(object):
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.loginFrame = QWebEngineView(LoginWindow)
self.loginFrame.setObjectName(u"loginFrame")
self.loginFrame.setUrl(QUrl(u"http://www.seznam.cz"))
self.loginFrame.setUrl(QUrl(u"about:blank"))
self.horizontalLayout.addWidget(self.loginFrame)
@ -47,6 +47,6 @@ class Ui_LoginWindow(object):
# setupUi
def retranslateUi(self, LoginWindow):
LoginWindow.setWindowTitle(QCoreApplication.translate("LoginWindow", u"Form", None))
LoginWindow.setWindowTitle(QCoreApplication.translate("LoginWindow", u"OneDrive Login", None))
# retranslateUi

View File

@ -24,7 +24,9 @@ class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(420, 807)
MainWindow.resize(420, 800)
MainWindow.setMinimumSize(QSize(420, 0))
MainWindow.setMaximumSize(QSize(420, 16777215))
icon = QIcon()
icon.addFile(u"../../../OneDriveGUI_POC_recovered-multi/icons8-clouds-48.png", QSize(), QIcon.Normal, QIcon.Off)
MainWindow.setWindowIcon(icon)

View File

@ -94,15 +94,15 @@ class Ui_status_page(object):
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton = QPushButton(status_page)
self.pushButton.setObjectName(u"pushButton")
self.pushButton_open_dir = QPushButton(status_page)
self.pushButton_open_dir.setObjectName(u"pushButton_open_dir")
sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
sizePolicy.setHeightForWidth(self.pushButton_open_dir.sizePolicy().hasHeightForWidth())
self.pushButton_open_dir.setSizePolicy(sizePolicy)
self.horizontalLayout.addWidget(self.pushButton)
self.horizontalLayout.addWidget(self.pushButton_open_dir)
self.pushButton_2 = QPushButton(status_page)
self.pushButton_2.setObjectName(u"pushButton_2")
@ -135,7 +135,7 @@ class Ui_status_page(object):
self.toolButton_stop.setText(QCoreApplication.translate("status_page", u"Stop", None))
self.label_account_type.setText("")
self.label_free_space.setText("")
self.pushButton.setText(QCoreApplication.translate("status_page", u"Open Folder", None))
self.pushButton_open_dir.setText(QCoreApplication.translate("status_page", u"Open Sync Directory", None))
self.pushButton_2.setText(QCoreApplication.translate("status_page", u"Sync", None))
self.pushButton_settings.setText(QCoreApplication.translate("status_page", u"Settings", None))
# retranslateUi

View File

@ -54,10 +54,10 @@ class Ui_profile_settings(object):
self.gridLayout_9.setObjectName(u"gridLayout_9")
self.gridLayout_5 = QGridLayout()
self.gridLayout_5.setObjectName(u"gridLayout_5")
self.pushButton_3 = QPushButton(self.groupBox_8)
self.pushButton_3.setObjectName(u"pushButton_3")
self.pushButton_sync_dir_browse = QPushButton(self.groupBox_8)
self.pushButton_sync_dir_browse.setObjectName(u"pushButton_sync_dir_browse")
self.gridLayout_5.addWidget(self.pushButton_3, 0, 2, 1, 1)
self.gridLayout_5.addWidget(self.pushButton_sync_dir_browse, 0, 2, 1, 1)
self.label_sync_dir = QLabel(self.groupBox_8)
self.label_sync_dir.setObjectName(u"label_sync_dir")
@ -453,10 +453,10 @@ class Ui_profile_settings(object):
self.gridLayout_8.addWidget(self.lineEdit_log_dir, 1, 1, 1, 1)
self.pushButton_log_dir = QPushButton(self.groupBox_7)
self.pushButton_log_dir.setObjectName(u"pushButton_log_dir")
self.pushButton_log_dir_browse = QPushButton(self.groupBox_7)
self.pushButton_log_dir_browse.setObjectName(u"pushButton_log_dir_browse")
self.gridLayout_8.addWidget(self.pushButton_log_dir, 1, 2, 1, 1)
self.gridLayout_8.addWidget(self.pushButton_log_dir_browse, 1, 2, 1, 1)
self.label_monitor_log_frequency = QLabel(self.groupBox_7)
self.label_monitor_log_frequency.setObjectName(u"label_monitor_log_frequency")
@ -610,7 +610,7 @@ class Ui_profile_settings(object):
self.retranslateUi(profile_settings)
self.tabWidget.setCurrentIndex(5)
self.tabWidget.setCurrentIndex(3)
QMetaObject.connectSlotsByName(profile_settings)
@ -620,7 +620,7 @@ class Ui_profile_settings(object):
profile_settings.setWindowTitle(QCoreApplication.translate("profile_settings", u"OneDriveGUI - Profile Settings", None))
self.label_profile_name.setText(QCoreApplication.translate("profile_settings", u"Profile name", None))
self.groupBox_8.setTitle(QCoreApplication.translate("profile_settings", u"Monitored directory", None))
self.pushButton_3.setText(QCoreApplication.translate("profile_settings", u"Browse", None))
self.pushButton_sync_dir_browse.setText(QCoreApplication.translate("profile_settings", u"Browse", None))
self.label_sync_dir.setText(QCoreApplication.translate("profile_settings", u"Sync Folder:", None))
self.checkBox_sync_root_files.setText(QCoreApplication.translate("profile_settings", u"Sync root files", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.exemptions_tab_2), QCoreApplication.translate("profile_settings", u"Monitored Files", None))
@ -667,7 +667,7 @@ class Ui_profile_settings(object):
self.checkBox_enable_logging.setText(QCoreApplication.translate("profile_settings", u"Enable Logging", None))
self.label_log_dir.setText(QCoreApplication.translate("profile_settings", u"Log location:", None))
self.checkBox_debug_https.setText(QCoreApplication.translate("profile_settings", u"Debug HTTPS", None))
self.pushButton_log_dir.setText(QCoreApplication.translate("profile_settings", u"Browse", None))
self.pushButton_log_dir_browse.setText(QCoreApplication.translate("profile_settings", u"Browse", None))
self.label_monitor_log_frequency.setText(QCoreApplication.translate("profile_settings", u"Monitor log frequency", None))
self.groupBox_6.setTitle(QCoreApplication.translate("profile_settings", u"Notifications", None))
self.label_min_notify_changes.setText(QCoreApplication.translate("profile_settings", u"Minimum notify changes", None))

View File

@ -48,6 +48,11 @@ class Ui_settings_window(object):
self.verticalLayout.addWidget(self.pushButton_remove)
self.pushButton_create_import = QPushButton(settings_window)
self.pushButton_create_import.setObjectName(u"pushButton_create_import")
self.verticalLayout.addWidget(self.pushButton_create_import)
self.pushButton_open_create = QPushButton(settings_window)
self.pushButton_open_create.setObjectName(u"pushButton_open_create")
@ -74,6 +79,7 @@ class Ui_settings_window(object):
settings_window.setWindowTitle(QCoreApplication.translate("settings_window", u"OneDriveGUI - Settings", None))
self.label_profiles.setText(QCoreApplication.translate("settings_window", u"Profiles:", None))
self.pushButton_remove.setText(QCoreApplication.translate("settings_window", u"Remove profile", None))
self.pushButton_create_import.setText(QCoreApplication.translate("settings_window", u"Create/Import wizard", None))
self.pushButton_open_create.setText(QCoreApplication.translate("settings_window", u"Create new profile", None))
self.pushButton_open_import.setText(QCoreApplication.translate("settings_window", u"Import existing profile", None))
# retranslateUi