first commit
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
venv/
|
||||
.qt_for_python/
|
||||
OneDriveGUI/__thrash/
|
||||
__pycache__/
|
||||
654
OneDriveGUI/OneDriveGUI.py
Normal file
@@ -0,0 +1,654 @@
|
||||
import os
|
||||
import psutil
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
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 ui.ui_login import Ui_LoginWindow
|
||||
from ui.ui_settings import Ui_settings_window
|
||||
from ui.ui_list_item_widget import Ui_list_item_widget
|
||||
|
||||
from ui.ui_mainwindow import Ui_MainWindow
|
||||
from ui.ui_process_status_page import Ui_status_page
|
||||
|
||||
from ui.ui_profile_settings_page import Ui_profile_settings
|
||||
|
||||
CONFIG_FILE = os.path.expanduser('/home/bob/.config/onedrive/accounts/boris@pozdena.eu/config')
|
||||
PROFILES_FILE = os.path.expanduser('~/.config/onedrive-gui/profiles')
|
||||
|
||||
|
||||
class SettingsWindow(QWidget, Ui_settings_window):
|
||||
def __init__(self):
|
||||
super(SettingsWindow, self).__init__()
|
||||
|
||||
# Set up the user interface from Designer.
|
||||
self.setupUi(self)
|
||||
|
||||
|
||||
|
||||
self.stackedLayout = QStackedLayout()
|
||||
|
||||
for account in global_config:
|
||||
print(account)
|
||||
self.listWidget.addItem(account)
|
||||
self.page = ProfileSettingsPage(account)
|
||||
self.stackedLayout.addWidget(self.page)
|
||||
|
||||
self.horizontalLayout.addLayout(self.stackedLayout)
|
||||
self.listWidget.itemSelectionChanged.connect(self.switch_account_settings_page)
|
||||
self.show()
|
||||
|
||||
def switch_account_settings_page(self):
|
||||
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):
|
||||
def __init__(self, profile):
|
||||
super(ProfileStatusPage, self).__init__()
|
||||
|
||||
# Set up the user interface from Designer.
|
||||
self.setupUi(self)
|
||||
|
||||
# Show selected profile name
|
||||
self.label_4.setText(profile)
|
||||
|
||||
# # Open Settings window
|
||||
self.pushButton_settings.clicked.connect(self.show_settings_window)
|
||||
|
||||
# Open login form TODO: testing
|
||||
# self.pushButton_2.setText("login")
|
||||
# self.pushButton_2.clicked.connect(lambda: self.show_login())
|
||||
|
||||
def show_settings_window(self):
|
||||
self.settings_window = SettingsWindow()
|
||||
self.settings_window.show()
|
||||
|
||||
|
||||
class ProfileSettingsPage(QWidget, Ui_profile_settings):
|
||||
def __init__(self, profile):
|
||||
super(ProfileSettingsPage, self).__init__()
|
||||
|
||||
# Set up the user interface from Designer.
|
||||
self.setupUi(self)
|
||||
|
||||
self.lineEdit_6.setText(global_config[profile]['onedrive']['sync_dir'].strip('"'))
|
||||
# self.ui.lineEdit_4.textChanged.connect(
|
||||
# lambda: settings.set('onedrive', 'sync_dir', f'"{self.ui.lineEdit_4.text()}"'))
|
||||
|
||||
# self.ui.lineEdit.setText(settings['onedrive']['log_dir'].strip('"'))
|
||||
# self.ui.lineEdit.textChanged.connect(
|
||||
# lambda: settings.set('onedrive', 'log_dir', f'"{self.ui.lineEdit.text()}"'))
|
||||
|
||||
# skip_files = settings['onedrive']['skip_file'].strip('"').split('|')
|
||||
# self.ui.listWidget.addItems(skip_files)
|
||||
# self.ui.pushButton_6.clicked.connect(
|
||||
# lambda: self.add_item_to_qlist(self.ui.lineEdit_2, self.ui.listWidget, skip_files))
|
||||
# self.ui.pushButton_6.clicked.connect(
|
||||
# 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)
|
||||
|
||||
# self.ui.pushButton_4.clicked.connect(lambda: save_config(settings))
|
||||
|
||||
# # Rate limit
|
||||
# self.ui.lineEdit_5.setText(settings['onedrive']['rate_limit'].strip('"'))
|
||||
# self.ui.label_6.setText(str(round(int(self.ui.lineEdit_5.text()) * 8 / 1000 / 1000, 2)) + " Mbit/s")
|
||||
# self.ui.lineEdit_5.textChanged.connect(lambda: settings.set('onedrive', 'rate_limit', f'"{self.ui.lineEdit_5.text()}"'))
|
||||
# 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"))
|
||||
|
||||
|
||||
|
||||
|
||||
class TaskList(QWidget, Ui_list_item_widget):
|
||||
def __init__(self):
|
||||
super(TaskList, self).__init__()
|
||||
|
||||
# Set up the user interface from Designer.
|
||||
self.setupUi(self)
|
||||
|
||||
|
||||
|
||||
def set_icon (self, file_path):
|
||||
self.fileInfo = QFileInfo(file_path)
|
||||
self.iconProvider = QFileIconProvider()
|
||||
self.icon = self.iconProvider.icon(self.fileInfo)
|
||||
|
||||
# icon = QIcon(icon_file)
|
||||
self.toolButton.setIcon(self.icon)
|
||||
|
||||
def set_file_name(self, file_path):
|
||||
self.ls_label_file_name.setText(file_path)
|
||||
|
||||
def set_progress(self, percentage):
|
||||
self.ls_progressBar.setValue(percentage)
|
||||
|
||||
def set_label_1(self, text):
|
||||
self.ls_label_1.setOpenExternalLinks(True)
|
||||
self.ls_label_1.setText(text)
|
||||
|
||||
def set_label_2(self, text):
|
||||
self.ls_label_2.setText(text)
|
||||
|
||||
def hide_progress_bar(self, transfer_status: bool):
|
||||
# pass
|
||||
if transfer_status:
|
||||
self.ls_progressBar.hide()
|
||||
# self.ls_label_task.hide()
|
||||
# self.ls_label_status.hide()
|
||||
# self.ls_label_dir.show()
|
||||
else:
|
||||
self.ls_progressBar.show()
|
||||
# self.ls_label_task.show()
|
||||
# self.ls_label_status.show()
|
||||
# self.ls_label_dir.hide()
|
||||
|
||||
|
||||
class WorkerThread(QThread):
|
||||
update_credentials = Signal()
|
||||
update_progress = Signal(dict)
|
||||
update_progress_new = Signal(dict, str)
|
||||
trigger_resync = Signal()
|
||||
|
||||
def __init__(self, profile):
|
||||
super(WorkerThread, self).__init__()
|
||||
print(f"starting worker for profile {profile}")
|
||||
print(global_config[profile])
|
||||
self.config_file = global_config[profile]['config_file']
|
||||
self.config_folder = re.search(r"(.+)/.+$", self.config_file)
|
||||
print(self.config_file)
|
||||
self._command = f"onedrive --confdir='{self.config_folder.group(1)}' --monitor -v"
|
||||
print(f"command is: {self._command}")
|
||||
self._profile_name = profile
|
||||
|
||||
def run(self, resync=False):
|
||||
matches = ['Downloading file', 'Downloading new file', 'Uploading file', 'Uploading new file',
|
||||
'Uploading modified file', 'Downloading modified file']
|
||||
file_name = None
|
||||
|
||||
|
||||
|
||||
self.onedrive_process = subprocess.Popen(self._command + '--resync' if resync else self._command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
shell=True,
|
||||
universal_newlines=True)
|
||||
|
||||
# TODO: De-monster once all possible situations are handled correctly.
|
||||
while self.onedrive_process.poll() is None:
|
||||
if self.onedrive_process.stdout:
|
||||
stdout = self.onedrive_process.stdout.readline()
|
||||
# print(f"worker: {stdout.strip()}")
|
||||
print(f'[{self._profile_name}] ' + stdout.strip())
|
||||
|
||||
if 'Authorize this app visiting' in stdout:
|
||||
self.onedrive_process.kill()
|
||||
self.update_credentials.emit()
|
||||
|
||||
elif any(x in stdout for x in matches): # capture file uploads and downloads
|
||||
# self.tray.setIcon(QIcon("resources/images/icons8-cloud-sync-40_2.png"))
|
||||
print('# ' + stdout)
|
||||
file_operation = re.search(r'\b([Uploading|Downloading]+)*', stdout)
|
||||
file_name = re.search(r".*/(.+)\s+\.+", stdout)
|
||||
file_path = re.search(r"\b[file]+\s(.+)\s+\.\.\.", stdout)
|
||||
transfer_complete = 'done' in stdout
|
||||
progress = '0' # if transfer_complete else '0'
|
||||
|
||||
transfer_progress = {
|
||||
"file_operation": file_operation.group(1),
|
||||
"file_name": 'unknown file name' if file_name is None else file_name.group(1),
|
||||
"progress": progress,
|
||||
"transfer_complete": transfer_complete}
|
||||
|
||||
transfer_progress_new = {
|
||||
"file_operation": file_operation.group(1),
|
||||
"file_path": 'unknown file name' if file_path is None else file_path.group(1),
|
||||
"progress": progress,
|
||||
"transfer_complete": transfer_complete}
|
||||
|
||||
if transfer_complete:
|
||||
self.update_progress.emit(transfer_progress)
|
||||
self.update_progress_new.emit(transfer_progress_new, self._profile_name)
|
||||
|
||||
elif '% |' in stdout and file_name is not None: # capture upload/download progress
|
||||
file_operation = re.search(r'\b([Uploading|Downloading]+)*', stdout)
|
||||
progress = re.search(r'\s([0-9]+)%', stdout)
|
||||
transfer_complete = progress.group(1) == '100'
|
||||
|
||||
transfer_progress = {
|
||||
"file_operation": file_operation.group(1),
|
||||
"file_name": 'Resuming last file...' if file_name is None else file_name.group(1),
|
||||
"progress": progress.group(1),
|
||||
"transfer_complete": transfer_complete}
|
||||
|
||||
transfer_progress_new = {
|
||||
"file_operation": file_operation.group(1),
|
||||
"file_path": 'unknown file name' if file_path is None else file_path.group(1),
|
||||
"progress": progress.group(1),
|
||||
"transfer_complete": transfer_complete}
|
||||
|
||||
self.update_progress.emit(transfer_progress)
|
||||
self.update_progress_new.emit(transfer_progress_new, self._profile_name)
|
||||
|
||||
elif 'Sync with OneDrive is complete' in stdout:
|
||||
pass
|
||||
# self.tray.setIcon(QIcon("resources/images/icons8-cloud-done-40_2.png"))
|
||||
|
||||
elif 'Remaining free space on OneDrive' in stdout:
|
||||
pass
|
||||
|
||||
elif 'Processing' in stdout:
|
||||
pass
|
||||
# self.tray.setIcon(QIcon("resources/images/icons8-cloud-sync-40_2.png"))
|
||||
|
||||
else:
|
||||
pass
|
||||
# print('@@ no match')
|
||||
|
||||
if self.onedrive_process.stderr:
|
||||
stderr = self.onedrive_process.stderr.readline()
|
||||
if stderr != '':
|
||||
if 'command not found' in stderr:
|
||||
print("""Onedrive does not seem to be installed. Please install it as per instruction at
|
||||
https://github.com/abraunegg/onedrive/blob/master/docs/INSTALL.md """)
|
||||
|
||||
elif '--resync is required' in stderr:
|
||||
print(str(stderr) + " Starting resync.")
|
||||
self.trigger_resync.emit()
|
||||
|
||||
self.run(resync=True)
|
||||
else:
|
||||
print('@@ERROR' + stderr)
|
||||
|
||||
|
||||
class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
|
||||
def __init__(self):
|
||||
self.workers= {}
|
||||
|
||||
super(MainWindow, self).__init__()
|
||||
self.setupUi(self)
|
||||
#
|
||||
# Menu
|
||||
#
|
||||
|
||||
# Update OneDrive Status
|
||||
self.actionRefresh_Service_Status.triggered.connect(lambda: self.onedrive_process_status())
|
||||
|
||||
# Start OneDrive service
|
||||
self.actionStart_Service.triggered.connect(lambda: os.system('systemctl --user start onedrive'))
|
||||
|
||||
|
||||
# Stop OneDrive service
|
||||
self.actionStop_Service.triggered.connect(lambda: os.system('systemctl --user stop onedrive'))
|
||||
|
||||
|
||||
# Restart OneDrive service
|
||||
self.actionRestart_Service.triggered.connect(lambda: os.system('systemctl --user restart onedrive'))
|
||||
|
||||
|
||||
# Start OneDrive monitoring
|
||||
self.actionStart_Monitor.triggered.connect(lambda: self.start_onedrive_monitor('boris@pozdena.eu'))
|
||||
|
||||
|
||||
# Stop OneDrive monitoring
|
||||
self.actionStop_Monitor.triggered.connect(lambda: os.system('pkill onedrive'))
|
||||
|
||||
|
||||
# Refresh Sync Status
|
||||
self.actionObtain_Sync_Status.triggered.connect(lambda: self.label_4.setText("Retreiving status..."))
|
||||
self.actionObtain_Sync_Status.triggered.connect(lambda: self.onedrive_sync_status())
|
||||
|
||||
# Start second account
|
||||
self.actionstart.triggered.connect(lambda: self.start_onedrive_monitor('bpozdena@gmail.com'))
|
||||
|
||||
|
||||
self.comboBox.activated.connect(self.switch_account_status_page)
|
||||
self.stackedLayout = QStackedLayout()
|
||||
|
||||
self.profile_status_pages = {}
|
||||
for profile in global_config:
|
||||
self.comboBox.addItem(profile)
|
||||
self.profile_status_pages[profile] = ProfileStatusPage(profile)
|
||||
self.stackedLayout.addWidget(self.profile_status_pages[profile])
|
||||
|
||||
self.verticalLayout_2.addLayout(self.stackedLayout)
|
||||
|
||||
|
||||
|
||||
# self.label_5.hide()
|
||||
# self.progressBar.hide()
|
||||
# self.progressBar.setValue(0)
|
||||
|
||||
# self.refresh_process_status = QTimer()
|
||||
# self.refresh_process_status.setSingleShot(False)
|
||||
# self.refresh_process_status.timeout.connect(lambda: self.onedrive_process_status())
|
||||
# self.refresh_process_status.start(1000)
|
||||
|
||||
|
||||
# System Tray
|
||||
self.tray = QSystemTrayIcon()
|
||||
if self.tray.isSystemTrayAvailable():
|
||||
|
||||
icon = QIcon("resources/images/icons8-clouds-48.png")
|
||||
menu = QMenu()
|
||||
|
||||
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)
|
||||
quit_action = menu.addAction("Quit")
|
||||
quit_action.triggered.connect(sys.exit)
|
||||
|
||||
self.tray.setIcon(icon)
|
||||
self.tray.setContextMenu(menu)
|
||||
self.tray.show()
|
||||
self.tray.setToolTip("This is OneDriveGUI")
|
||||
|
||||
else:
|
||||
self.tray = None
|
||||
|
||||
def switch_account_status_page(self):
|
||||
self.stackedLayout.setCurrentIndex(self.comboBox.currentIndex())
|
||||
|
||||
def onedrive_process_status(self):
|
||||
# Check OneDrive status
|
||||
for onedrive_process in psutil.process_iter():
|
||||
if onedrive_process.name().lower() == 'onedrive' and onedrive_process.status() != 'zombie':
|
||||
self.label_3.setText("running")
|
||||
return True
|
||||
|
||||
self.label_3.setText("not running")
|
||||
self.tray.setIcon(QIcon("resources/images/icons8-cloud-cross-40_2.png"))
|
||||
self.progressBar.hide()
|
||||
self.label_5.hide()
|
||||
return False
|
||||
|
||||
def onedrive_sync_status(self):
|
||||
# Check OneDrive sync status
|
||||
status = subprocess.check_output(['onedrive', '--display-sync-status'])
|
||||
if 'in sync' in str(status):
|
||||
self.label_4.setText("In Sync")
|
||||
self.tray.setIcon(QIcon("resources/images/icons8-cloud-done-40_2.png"))
|
||||
return True
|
||||
else:
|
||||
self.label_4.setText("Out of Sync")
|
||||
self.tray.setIcon(QIcon("resources/images/icons8-cloud-sync-40_2.png"))
|
||||
return False
|
||||
|
||||
|
||||
|
||||
def start_onedrive_monitor(self, profile_name):
|
||||
|
||||
|
||||
# for profile in global_config:
|
||||
self.workers[profile_name] = WorkerThread(profile_name)
|
||||
self.workers[profile_name].start()
|
||||
|
||||
# self.worker = WorkerThread()
|
||||
# self.worker.start()
|
||||
# self.worker.update_credentials.connect(self.show_login)
|
||||
# self.worker.update_progress.connect(self.event_update_progress)
|
||||
# self.worker.trigger_resync.connect(self.show_login)
|
||||
self.workers[profile_name].update_progress_new.connect(self.event_update_progress_new)
|
||||
|
||||
def event_update_progress(self, data):
|
||||
"""
|
||||
data:
|
||||
transfer_progress = {
|
||||
"file_operation": file_operation.group(1),
|
||||
"file_name": file_name.group(1),
|
||||
"progress": progress.group(1),
|
||||
"transfer_complete": transfer_complete
|
||||
}
|
||||
"""
|
||||
|
||||
print(data)
|
||||
if self.label_5.isHidden():
|
||||
self.label_5.show()
|
||||
self.progressBar.show()
|
||||
self.label_5.setText(data['file_operation'] + ' ' + data['file_name'])
|
||||
self.progressBar.setValue(int(data['progress']))
|
||||
|
||||
if data["transfer_complete"]:
|
||||
self.listWidget.insertItem(0, data['file_operation'] + ' of ' + data['file_name'] + ' completed.')
|
||||
if not self.label_5.isHidden():
|
||||
self.label_5.hide()
|
||||
self.progressBar.hide()
|
||||
|
||||
|
||||
def event_update_progress_new(self, data, profile):
|
||||
"""
|
||||
data:
|
||||
transfer_progress = {
|
||||
"file_operation": file_operation.group(1),
|
||||
"file_path": file_path.group(1),
|
||||
"progress": progress.group(1),
|
||||
"transfer_complete": transfer_complete
|
||||
}
|
||||
|
||||
TODO: De-monster once all possible situations are handled correctly.
|
||||
"""
|
||||
_sync_dir = os.path.expanduser(global_config[profile]['onedrive']['sync_dir'].strip('"'))
|
||||
# profile_status_page = self.profile_status_pages[profile]
|
||||
|
||||
print(data)
|
||||
file_path = f'{_sync_dir}' + "/" + data['file_path']
|
||||
absolute_path = QFileInfo(file_path).absolutePath()
|
||||
parent_dir = re.search(r".+/([^/]+)/.+$", file_path)
|
||||
file_size = QFileInfo(file_path).size()
|
||||
file_size_human = humanize_file_size(file_size)
|
||||
file_name = QFileInfo(file_path).fileName()
|
||||
file_path2 = QFileInfo(file_path).filePath()
|
||||
progress = data['progress']
|
||||
progress_data = file_size / 100 * int(progress)
|
||||
progress_data_human = humanize_file_size(progress_data)
|
||||
|
||||
print("absolute path " + absolute_path)
|
||||
|
||||
print("parent dir " + parent_dir.group(1))
|
||||
print("progress: " + progress)
|
||||
print("progress data: " + humanize_file_size(progress_data))
|
||||
print("file path: " + file_path)
|
||||
print("file size: " + humanize_file_size(file_size))
|
||||
print("file name: " + file_name)
|
||||
print("file path2: " + file_path2)
|
||||
|
||||
if int(data['progress']) == 0 and data['transfer_complete'] == True:
|
||||
myQCustomQWidget = TaskList()
|
||||
myQCustomQWidget.set_file_name(file_name)
|
||||
myQCustomQWidget.set_progress(100)
|
||||
myQCustomQWidget.set_icon(file_path)
|
||||
myQCustomQWidget.hide_progress_bar(data['transfer_complete'])
|
||||
myQCustomQWidget.set_label_1(f"Available in <a href=file:///{absolute_path}>{parent_dir.group(1)}</a>")
|
||||
myQCustomQWidget.set_label_2(f'{file_size_human}')
|
||||
# Create QListWidgetItem
|
||||
myQListWidgetItem = QListWidgetItem()
|
||||
# Set size hint
|
||||
myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
|
||||
# Add QListWidgetItem into QListWidget
|
||||
self.profile_status_pages[profile].listWidget.insertItem(0, myQListWidgetItem)
|
||||
self.profile_status_pages[profile].listWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget)
|
||||
|
||||
|
||||
elif int(data['progress']) == 0 and data['transfer_complete'] == False:
|
||||
myQCustomQWidget = TaskList()
|
||||
myQCustomQWidget.set_file_name(file_name)
|
||||
myQCustomQWidget.set_progress(0)
|
||||
myQCustomQWidget.set_icon(file_path)
|
||||
myQCustomQWidget.hide_progress_bar(data['transfer_complete'])
|
||||
myQCustomQWidget.set_label_1(data['file_operation'])
|
||||
myQCustomQWidget.set_label_2(f'{progress_data_human} of {file_size_human}')
|
||||
|
||||
# Create QListWidgetItem
|
||||
myQListWidgetItem = QListWidgetItem()
|
||||
# Set size hint
|
||||
myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
|
||||
# Add QListWidgetItem into QListWidget
|
||||
self.profile_status_pages[profile].listWidget.insertItem(0, myQListWidgetItem)
|
||||
self.profile_status_pages[profile].listWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget)
|
||||
|
||||
elif int(data['progress']) == 100 and data['transfer_complete'] == True:
|
||||
self.profile_status_pages[profile].listWidget.takeItem(0)
|
||||
|
||||
myQCustomQWidget = TaskList()
|
||||
myQCustomQWidget.set_file_name(file_name)
|
||||
myQCustomQWidget.set_progress(int(data['progress']))
|
||||
myQCustomQWidget.set_icon(file_path)
|
||||
myQCustomQWidget.hide_progress_bar(data['transfer_complete'])
|
||||
myQCustomQWidget.set_label_1(f"Available in <a href=file:///{absolute_path}>{parent_dir.group(1)}</a>")
|
||||
myQCustomQWidget.set_label_2(f'{file_size_human}')
|
||||
|
||||
# Create QListWidgetItem
|
||||
myQListWidgetItem = QListWidgetItem()
|
||||
# Set size hint
|
||||
myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
|
||||
# Add QListWidgetItem into QListWidget
|
||||
self.profile_status_pages[profile].listWidget.insertItem(0, myQListWidgetItem)
|
||||
self.profile_status_pages[profile].listWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget)
|
||||
|
||||
|
||||
else:
|
||||
self.profile_status_pages[profile].listWidget.takeItem(0)
|
||||
|
||||
myQCustomQWidget = TaskList()
|
||||
myQCustomQWidget.set_file_name(file_name)
|
||||
myQCustomQWidget.set_progress(int(data['progress']))
|
||||
myQCustomQWidget.set_icon(file_path)
|
||||
myQCustomQWidget.hide_progress_bar(data['transfer_complete'])
|
||||
myQCustomQWidget.set_label_1(data['file_operation'])
|
||||
myQCustomQWidget.set_label_2(f'{progress_data_human} of {file_size_human}')
|
||||
|
||||
# Create QListWidgetItem
|
||||
myQListWidgetItem = QListWidgetItem()
|
||||
# Set size hint
|
||||
myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
|
||||
# Add QListWidgetItem into QListWidget
|
||||
self.profile_status_pages[profile].listWidget.insertItem(0, myQListWidgetItem)
|
||||
self.profile_status_pages[profile].listWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget)
|
||||
|
||||
|
||||
|
||||
|
||||
def show_login(self):
|
||||
# Show login window
|
||||
self.window1 = QWidget()
|
||||
self.lw = Ui_LoginWindow()
|
||||
self.lw.setupUi(self.window1)
|
||||
self.window1.show()
|
||||
|
||||
# use static URL for now. TODO: use auth files in the future
|
||||
url = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=d50ca740-c83f-4d1b-b616' \
|
||||
'-12c519384f0c&scope=Files.ReadWrite%20Files.ReadWrite.all%20Sites.Read.All%20Sites.ReadWrite.All' \
|
||||
'%20offline_access&response_type=code&prompt=login&redirect_uri=https://login.microsoftonline.com' \
|
||||
'/common/oauth2/nativeclient '
|
||||
self.lw.loginFrame.setUrl(QUrl(url))
|
||||
|
||||
# Wait for user to login and obtain response URL
|
||||
self.lw.loginFrame.urlChanged.connect(lambda: self.get_response_url(self.lw.loginFrame.url().toString()))
|
||||
|
||||
def get_response_url(self, response_url):
|
||||
# Get response URL from OneDrive OAuth2
|
||||
if 'nativeclient?code=' in response_url:
|
||||
os.system(f'onedrive --auth-response "{response_url}"')
|
||||
print("Login performed")
|
||||
self.window1.hide()
|
||||
else:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
def read_config(config_file):
|
||||
with open(config_file, 'r') as f:
|
||||
config_string = '[onedrive]\n' + f.read()
|
||||
|
||||
config = ConfigParser()
|
||||
config.read_string(config_string)
|
||||
|
||||
return config
|
||||
|
||||
|
||||
def profile_reader():
|
||||
_profiles = ConfigParser()
|
||||
_profiles.read(PROFILES_FILE)
|
||||
profiles = _profiles._sections
|
||||
|
||||
for profile in profiles:
|
||||
profile_name = profile
|
||||
profile_config_file = profiles[profile]['config_file']
|
||||
_od_config = read_config(profile_config_file)
|
||||
od_config = _od_config._sections
|
||||
|
||||
profiles[profile].update(od_config)
|
||||
|
||||
|
||||
return profiles
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def save_config(new_settings):
|
||||
# Save OneDrive config after configuration change.
|
||||
# new_settings.write
|
||||
print(new_settings)
|
||||
print(new_settings['onedrive']['sync_dir'])
|
||||
print('saved')
|
||||
|
||||
with open(CONFIG_FILE, 'w') as configfile:
|
||||
new_settings.write(configfile)
|
||||
|
||||
# remove first line (section) from config file
|
||||
with open(CONFIG_FILE, 'r') as fin:
|
||||
data = fin.read().splitlines(True)
|
||||
with open(CONFIG_FILE, 'w') as fout:
|
||||
fout.writelines(data[1:])
|
||||
|
||||
config = ConfigParser()
|
||||
config.read(new_settings)
|
||||
|
||||
|
||||
def humanize_file_size(num, suffix="B"):
|
||||
for unit in ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]:
|
||||
if abs(num) < 1024.0:
|
||||
return f"{num:3.1f}{unit}{suffix}"
|
||||
num /= 1024.0
|
||||
return f"{num:.1f}Yi{suffix}"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
settings = read_config(CONFIG_FILE)
|
||||
global_config = profile_reader()
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
window = MainWindow()
|
||||
|
||||
window.show()
|
||||
app.exec()
|
||||
BIN
OneDriveGUI/resources/images/icons8-cloud-cross-40_2.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
OneDriveGUI/resources/images/icons8-cloud-done-40_2.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
OneDriveGUI/resources/images/icons8-cloud-sync-40_2.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
OneDriveGUI/resources/images/icons8-clouds-48.png
Normal file
|
After Width: | Height: | Size: 654 B |
BIN
OneDriveGUI/resources/images/icons8-documents-folder-50.png
Normal file
|
After Width: | Height: | Size: 457 B |
BIN
OneDriveGUI/resources/images/icons8-play-48.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
OneDriveGUI/resources/images/icons8-settings-50.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
OneDriveGUI/resources/images/icons8-stop-50.png
Normal file
|
After Width: | Height: | Size: 181 B |
127
OneDriveGUI/ui/list_item_widget.ui
Normal file
@@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>list_item_widget</class>
|
||||
<widget class="QWidget" name="list_item_widget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>426</width>
|
||||
<height>60</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="0" rowspan="5">
|
||||
<widget class="QToolButton" name="toolButton">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoFillBackground">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>../resources/images/icons8-clouds-48.png</normaloff>../resources/images/icons8-clouds-48.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="QLabel" name="ls_label_file_name">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>340</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>FileName</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" rowspan="2">
|
||||
<widget class="QLabel" name="ls_label_2">
|
||||
<property name="text">
|
||||
<string>60KB of 100KB</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" rowspan="2">
|
||||
<widget class="QLabel" name="ls_label_1">
|
||||
<property name="text">
|
||||
<string>Downloading/Uploading </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="2">
|
||||
<widget class="QProgressBar" name="ls_progressBar">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>5</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>24</number>
|
||||
</property>
|
||||
<property name="textVisible">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
71
OneDriveGUI/ui/login.ui
Normal file
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>LoginWindow</class>
|
||||
<widget class="QWidget" name="LoginWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>640</width>
|
||||
<height>480</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>640</width>
|
||||
<height>480</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>640</width>
|
||||
<height>480</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWebEngineView" name="loginFrame">
|
||||
<property name="url">
|
||||
<url>
|
||||
<string>https://www.seznam.cz/</string>
|
||||
</url>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QWebEngineView</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">QtWebEngineWidgets/QWebEngineView</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
159
OneDriveGUI/ui/mainwindow.ui
Normal file
@@ -0,0 +1,159 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>497</width>
|
||||
<height>808</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>OneDriveGUI</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset>
|
||||
<normaloff>../../../OneDriveGUI_POC_recovered-multi/icons8-clouds-48.png</normaloff>../../../OneDriveGUI_POC_recovered-multi/icons8-clouds-48.png</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QComboBox" name="comboBox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>497</width>
|
||||
<height>30</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuAdvanced">
|
||||
<property name="title">
|
||||
<string>Advanced</string>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuDebug">
|
||||
<property name="title">
|
||||
<string>Debug</string>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuService">
|
||||
<property name="title">
|
||||
<string>Service</string>
|
||||
</property>
|
||||
<addaction name="actionStart_Service"/>
|
||||
<addaction name="actionStop_Service"/>
|
||||
<addaction name="actionRestart_Service"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuMonitor">
|
||||
<property name="title">
|
||||
<string>Monitor</string>
|
||||
</property>
|
||||
<addaction name="actionStart_Monitor"/>
|
||||
<addaction name="actionStop_Monitor"/>
|
||||
<addaction name="actionForce_Resync"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuStatus">
|
||||
<property name="title">
|
||||
<string>Status</string>
|
||||
</property>
|
||||
<addaction name="actionRefresh_Service_Status"/>
|
||||
<addaction name="actionObtain_Sync_Status"/>
|
||||
</widget>
|
||||
<addaction name="menuService"/>
|
||||
<addaction name="menuMonitor"/>
|
||||
<addaction name="menuStatus"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuaccount2">
|
||||
<property name="title">
|
||||
<string>account2</string>
|
||||
</property>
|
||||
<addaction name="actionstart"/>
|
||||
</widget>
|
||||
<addaction name="menuDebug"/>
|
||||
<addaction name="menuaccount2"/>
|
||||
</widget>
|
||||
<addaction name="menuAdvanced"/>
|
||||
</widget>
|
||||
<action name="actionfghgfh">
|
||||
<property name="text">
|
||||
<string>fghgfh</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStart_Service">
|
||||
<property name="text">
|
||||
<string>Start Service</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStop_Service">
|
||||
<property name="text">
|
||||
<string>Stop Service</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRestart_Service">
|
||||
<property name="text">
|
||||
<string>Restart Service</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStart_Monitor">
|
||||
<property name="text">
|
||||
<string>Start Monitor</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStop_Monitor">
|
||||
<property name="text">
|
||||
<string>Stop Monitor</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionForce_Resync">
|
||||
<property name="text">
|
||||
<string>Force Resync</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRefresh_Service_Status">
|
||||
<property name="text">
|
||||
<string>Refresh Service Status</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionObtain_Sync_Status">
|
||||
<property name="text">
|
||||
<string>Obtain Sync Status</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionTest_Service">
|
||||
<property name="text">
|
||||
<string>Test Service</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionstart">
|
||||
<property name="text">
|
||||
<string>start</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
298
OneDriveGUI/ui/mainwindow.ui.autosave
Normal file
@@ -0,0 +1,298 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>589</width>
|
||||
<height>683</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>OneDriveGUI</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset>
|
||||
<normaloff>../icons8-clouds-48.png</normaloff>../icons8-clouds-48.png</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>OneDrive Process Status:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Sync Status:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QProgressBar" name="progressBar">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>300</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>New Item</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="tableWidget">
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<row>
|
||||
<property name="text">
|
||||
<string>row1</string>
|
||||
</property>
|
||||
</row>
|
||||
<row>
|
||||
<property name="text">
|
||||
<string>row2</string>
|
||||
</property>
|
||||
</row>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Task</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Filename</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Progress</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>complete</string>
|
||||
</property>
|
||||
</column>
|
||||
<item row="0" column="0">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableView" name="tableView"/>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Open Folder</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Sync</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_settings">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Settings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>589</width>
|
||||
<height>19</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuAdvanced">
|
||||
<property name="title">
|
||||
<string>Advanced</string>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuDebug">
|
||||
<property name="title">
|
||||
<string>Debug</string>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuService">
|
||||
<property name="title">
|
||||
<string>Service</string>
|
||||
</property>
|
||||
<addaction name="actionStart_Service"/>
|
||||
<addaction name="actionStop_Service"/>
|
||||
<addaction name="actionRestart_Service"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuMonitor">
|
||||
<property name="title">
|
||||
<string>Monitor</string>
|
||||
</property>
|
||||
<addaction name="actionStart_Monitor"/>
|
||||
<addaction name="actionStop_Monitor"/>
|
||||
<addaction name="actionForce_Resync"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuStatus">
|
||||
<property name="title">
|
||||
<string>Status</string>
|
||||
</property>
|
||||
<addaction name="actionRefresh_Service_Status"/>
|
||||
<addaction name="actionObtain_Sync_Status"/>
|
||||
</widget>
|
||||
<addaction name="menuService"/>
|
||||
<addaction name="menuMonitor"/>
|
||||
<addaction name="menuStatus"/>
|
||||
</widget>
|
||||
<addaction name="menuDebug"/>
|
||||
</widget>
|
||||
<addaction name="menuAdvanced"/>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
<action name="actionfghgfh">
|
||||
<property name="text">
|
||||
<string>fghgfh</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStart_Service">
|
||||
<property name="text">
|
||||
<string>Start Service</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStop_Service">
|
||||
<property name="text">
|
||||
<string>Stop Service</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRestart_Service">
|
||||
<property name="text">
|
||||
<string>Restart Service</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStart_Monitor">
|
||||
<property name="text">
|
||||
<string>Start Monitor</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionStop_Monitor">
|
||||
<property name="text">
|
||||
<string>Stop Monitor</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionForce_Resync">
|
||||
<property name="text">
|
||||
<string>Force Resync</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRefresh_Service_Status">
|
||||
<property name="text">
|
||||
<string>Refresh Service Status</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionObtain_Sync_Status">
|
||||
<property name="text">
|
||||
<string>Obtain Sync Status</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionTest_Service">
|
||||
<property name="text">
|
||||
<string>Test Service</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
137
OneDriveGUI/ui/process_status_page.ui
Normal file
@@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>status_page</class>
|
||||
<widget class="QWidget" name="status_page">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>441</width>
|
||||
<height>763</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(0, 120, 212);</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="3">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Onedrive is ...</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::NoSelection</enum>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Open Folder</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Sync</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_settings">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Settings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
258
OneDriveGUI/ui/profile_settings_page.ui
Normal file
@@ -0,0 +1,258 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>profile_settings</class>
|
||||
<widget class="QWidget" name="profile_settings">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>588</width>
|
||||
<height>785</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="exemptions_tab_2">
|
||||
<attribute name="title">
|
||||
<string>Monitored Files</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="checkBox_3">
|
||||
<property name="text">
|
||||
<string>Skip Hidden Files</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Sync Folder:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_6"/>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QPushButton" name="pushButton_3">
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Skip files:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_6">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLineEdit" name="lineEdit_7"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="pushButton_9">
|
||||
<property name="text">
|
||||
<string>Add</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="pushButton_10">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Remove</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QListWidget" name="listWidget_3"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Skip directories:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_7">
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="pushButton_11">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Remove</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QListWidget" name="listWidget_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLineEdit" name="lineEdit_8"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="pushButton_12">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Add</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="logging_tab_2">
|
||||
<attribute name="title">
|
||||
<string>Logging</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_8">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="checkBox_4">
|
||||
<property name="text">
|
||||
<string>Enable Logging</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Log location:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_9"/>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QPushButton" name="pushButton_4">
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_5">
|
||||
<attribute name="title">
|
||||
<string>Rate Limit</string>
|
||||
</attribute>
|
||||
<widget class="QLineEdit" name="lineEdit_10">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>110</x>
|
||||
<y>50</y>
|
||||
<width>113</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="inputMethodHints">
|
||||
<set>Qt::ImhDigitsOnly</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>50</y>
|
||||
<width>101</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rate Limit [B/s]</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>250</x>
|
||||
<y>50</y>
|
||||
<width>71</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>(Mbit/s)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_6">
|
||||
<attribute name="title">
|
||||
<string>Page</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_13">
|
||||
<property name="text">
|
||||
<string>Save</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
60
OneDriveGUI/ui/settings.ui
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>settings_window</class>
|
||||
<widget class="QWidget" name="settings_window">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>601</width>
|
||||
<height>817</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_3">
|
||||
<property name="text">
|
||||
<string>Remove profile</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<property name="text">
|
||||
<string>Create new profile</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="text">
|
||||
<string>Import existing profile</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
23
OneDriveGUI/ui/test.ui
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0"?>
|
||||
<ui version="4.0">
|
||||
<author></author>
|
||||
<comment></comment>
|
||||
<exportmacro></exportmacro>
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>240</width>
|
||||
<height>320</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
</widget>
|
||||
<pixmapfunction></pixmapfunction>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
86
OneDriveGUI/ui/ui_list_item_widget.py
Normal file
@@ -0,0 +1,86 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'list_item_widget.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.2.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||
QMetaObject, QObject, QPoint, QRect,
|
||||
QSize, QTime, QUrl, Qt)
|
||||
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||
QFont, QFontDatabase, QGradient, QIcon,
|
||||
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||
from PySide6.QtWidgets import (QApplication, QGridLayout, QLabel, QProgressBar,
|
||||
QSizePolicy, QToolButton, QWidget)
|
||||
|
||||
class Ui_list_item_widget(object):
|
||||
def setupUi(self, list_item_widget):
|
||||
if not list_item_widget.objectName():
|
||||
list_item_widget.setObjectName(u"list_item_widget")
|
||||
list_item_widget.resize(426, 60)
|
||||
list_item_widget.setMinimumSize(QSize(50, 60))
|
||||
self.gridLayout = QGridLayout(list_item_widget)
|
||||
self.gridLayout.setObjectName(u"gridLayout")
|
||||
self.gridLayout.setHorizontalSpacing(5)
|
||||
self.gridLayout.setVerticalSpacing(2)
|
||||
self.gridLayout.setContentsMargins(5, 2, 2, 6)
|
||||
self.toolButton = QToolButton(list_item_widget)
|
||||
self.toolButton.setObjectName(u"toolButton")
|
||||
self.toolButton.setEnabled(True)
|
||||
self.toolButton.setMinimumSize(QSize(0, 0))
|
||||
self.toolButton.setAutoFillBackground(False)
|
||||
icon = QIcon()
|
||||
icon.addFile(u"../resources/images/icons8-clouds-48.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||
self.toolButton.setIcon(icon)
|
||||
self.toolButton.setIconSize(QSize(30, 40))
|
||||
|
||||
self.gridLayout.addWidget(self.toolButton, 0, 0, 5, 1)
|
||||
|
||||
self.ls_label_file_name = QLabel(list_item_widget)
|
||||
self.ls_label_file_name.setObjectName(u"ls_label_file_name")
|
||||
self.ls_label_file_name.setMaximumSize(QSize(340, 16777215))
|
||||
font = QFont()
|
||||
font.setPointSize(10)
|
||||
font.setBold(True)
|
||||
self.ls_label_file_name.setFont(font)
|
||||
|
||||
self.gridLayout.addWidget(self.ls_label_file_name, 0, 1, 1, 2)
|
||||
|
||||
self.ls_label_2 = QLabel(list_item_widget)
|
||||
self.ls_label_2.setObjectName(u"ls_label_2")
|
||||
self.ls_label_2.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
|
||||
|
||||
self.gridLayout.addWidget(self.ls_label_2, 2, 2, 2, 1)
|
||||
|
||||
self.ls_label_1 = QLabel(list_item_widget)
|
||||
self.ls_label_1.setObjectName(u"ls_label_1")
|
||||
|
||||
self.gridLayout.addWidget(self.ls_label_1, 2, 1, 2, 1)
|
||||
|
||||
self.ls_progressBar = QProgressBar(list_item_widget)
|
||||
self.ls_progressBar.setObjectName(u"ls_progressBar")
|
||||
self.ls_progressBar.setMaximumSize(QSize(16777215, 5))
|
||||
self.ls_progressBar.setValue(24)
|
||||
self.ls_progressBar.setTextVisible(False)
|
||||
|
||||
self.gridLayout.addWidget(self.ls_progressBar, 1, 1, 1, 2)
|
||||
|
||||
|
||||
self.retranslateUi(list_item_widget)
|
||||
|
||||
QMetaObject.connectSlotsByName(list_item_widget)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, list_item_widget):
|
||||
list_item_widget.setWindowTitle(QCoreApplication.translate("list_item_widget", u"Form", None))
|
||||
self.toolButton.setText(QCoreApplication.translate("list_item_widget", u"...", None))
|
||||
self.ls_label_file_name.setText(QCoreApplication.translate("list_item_widget", u"FileName", None))
|
||||
self.ls_label_2.setText(QCoreApplication.translate("list_item_widget", u"60KB of 100KB", None))
|
||||
self.ls_label_1.setText(QCoreApplication.translate("list_item_widget", u"Downloading/Uploading ", None))
|
||||
# retranslateUi
|
||||
|
||||
52
OneDriveGUI/ui/ui_login.py
Normal file
@@ -0,0 +1,52 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'login.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.2.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||
QMetaObject, QObject, QPoint, QRect,
|
||||
QSize, QTime, QUrl, Qt)
|
||||
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||
QFont, QFontDatabase, QGradient, QIcon,
|
||||
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||
from PySide6.QtWebEngineWidgets import QWebEngineView
|
||||
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QSizePolicy, QWidget)
|
||||
|
||||
class Ui_LoginWindow(object):
|
||||
def setupUi(self, LoginWindow):
|
||||
if not LoginWindow.objectName():
|
||||
LoginWindow.setObjectName(u"LoginWindow")
|
||||
LoginWindow.resize(640, 480)
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(LoginWindow.sizePolicy().hasHeightForWidth())
|
||||
LoginWindow.setSizePolicy(sizePolicy)
|
||||
LoginWindow.setMinimumSize(QSize(640, 480))
|
||||
LoginWindow.setMaximumSize(QSize(640, 480))
|
||||
self.horizontalLayout = QHBoxLayout(LoginWindow)
|
||||
self.horizontalLayout.setSpacing(0)
|
||||
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||
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.horizontalLayout.addWidget(self.loginFrame)
|
||||
|
||||
|
||||
self.retranslateUi(LoginWindow)
|
||||
|
||||
QMetaObject.connectSlotsByName(LoginWindow)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, LoginWindow):
|
||||
LoginWindow.setWindowTitle(QCoreApplication.translate("LoginWindow", u"Form", None))
|
||||
# retranslateUi
|
||||
|
||||
127
OneDriveGUI/ui/ui_mainwindow.py
Normal file
@@ -0,0 +1,127 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'mainwindow.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.2.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||
QMetaObject, QObject, QPoint, QRect,
|
||||
QSize, QTime, QUrl, Qt)
|
||||
from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
|
||||
QCursor, QFont, QFontDatabase, QGradient,
|
||||
QIcon, QImage, QKeySequence, QLinearGradient,
|
||||
QPainter, QPalette, QPixmap, QRadialGradient,
|
||||
QTransform)
|
||||
from PySide6.QtWidgets import (QApplication, QComboBox, QMainWindow, QMenu,
|
||||
QMenuBar, QSizePolicy, QVBoxLayout, QWidget)
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
if not MainWindow.objectName():
|
||||
MainWindow.setObjectName(u"MainWindow")
|
||||
MainWindow.resize(497, 808)
|
||||
icon = QIcon()
|
||||
icon.addFile(u"../../../OneDriveGUI_POC_recovered-multi/icons8-clouds-48.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||
MainWindow.setWindowIcon(icon)
|
||||
self.actionfghgfh = QAction(MainWindow)
|
||||
self.actionfghgfh.setObjectName(u"actionfghgfh")
|
||||
self.actionStart_Service = QAction(MainWindow)
|
||||
self.actionStart_Service.setObjectName(u"actionStart_Service")
|
||||
self.actionStop_Service = QAction(MainWindow)
|
||||
self.actionStop_Service.setObjectName(u"actionStop_Service")
|
||||
self.actionRestart_Service = QAction(MainWindow)
|
||||
self.actionRestart_Service.setObjectName(u"actionRestart_Service")
|
||||
self.actionStart_Monitor = QAction(MainWindow)
|
||||
self.actionStart_Monitor.setObjectName(u"actionStart_Monitor")
|
||||
self.actionStop_Monitor = QAction(MainWindow)
|
||||
self.actionStop_Monitor.setObjectName(u"actionStop_Monitor")
|
||||
self.actionForce_Resync = QAction(MainWindow)
|
||||
self.actionForce_Resync.setObjectName(u"actionForce_Resync")
|
||||
self.actionRefresh_Service_Status = QAction(MainWindow)
|
||||
self.actionRefresh_Service_Status.setObjectName(u"actionRefresh_Service_Status")
|
||||
self.actionObtain_Sync_Status = QAction(MainWindow)
|
||||
self.actionObtain_Sync_Status.setObjectName(u"actionObtain_Sync_Status")
|
||||
self.actionTest_Service = QAction(MainWindow)
|
||||
self.actionTest_Service.setObjectName(u"actionTest_Service")
|
||||
self.actionstart = QAction(MainWindow)
|
||||
self.actionstart.setObjectName(u"actionstart")
|
||||
self.centralwidget = QWidget(MainWindow)
|
||||
self.centralwidget.setObjectName(u"centralwidget")
|
||||
self.verticalLayout = QVBoxLayout(self.centralwidget)
|
||||
self.verticalLayout.setSpacing(0)
|
||||
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.verticalLayout_2 = QVBoxLayout()
|
||||
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
|
||||
self.comboBox = QComboBox(self.centralwidget)
|
||||
self.comboBox.setObjectName(u"comboBox")
|
||||
|
||||
self.verticalLayout_2.addWidget(self.comboBox)
|
||||
|
||||
|
||||
self.verticalLayout.addLayout(self.verticalLayout_2)
|
||||
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QMenuBar(MainWindow)
|
||||
self.menubar.setObjectName(u"menubar")
|
||||
self.menubar.setGeometry(QRect(0, 0, 497, 30))
|
||||
self.menuAdvanced = QMenu(self.menubar)
|
||||
self.menuAdvanced.setObjectName(u"menuAdvanced")
|
||||
self.menuDebug = QMenu(self.menuAdvanced)
|
||||
self.menuDebug.setObjectName(u"menuDebug")
|
||||
self.menuService = QMenu(self.menuDebug)
|
||||
self.menuService.setObjectName(u"menuService")
|
||||
self.menuMonitor = QMenu(self.menuDebug)
|
||||
self.menuMonitor.setObjectName(u"menuMonitor")
|
||||
self.menuStatus = QMenu(self.menuDebug)
|
||||
self.menuStatus.setObjectName(u"menuStatus")
|
||||
self.menuaccount2 = QMenu(self.menuAdvanced)
|
||||
self.menuaccount2.setObjectName(u"menuaccount2")
|
||||
MainWindow.setMenuBar(self.menubar)
|
||||
|
||||
self.menubar.addAction(self.menuAdvanced.menuAction())
|
||||
self.menuAdvanced.addAction(self.menuDebug.menuAction())
|
||||
self.menuAdvanced.addAction(self.menuaccount2.menuAction())
|
||||
self.menuDebug.addAction(self.menuService.menuAction())
|
||||
self.menuDebug.addAction(self.menuMonitor.menuAction())
|
||||
self.menuDebug.addAction(self.menuStatus.menuAction())
|
||||
self.menuService.addAction(self.actionStart_Service)
|
||||
self.menuService.addAction(self.actionStop_Service)
|
||||
self.menuService.addAction(self.actionRestart_Service)
|
||||
self.menuMonitor.addAction(self.actionStart_Monitor)
|
||||
self.menuMonitor.addAction(self.actionStop_Monitor)
|
||||
self.menuMonitor.addAction(self.actionForce_Resync)
|
||||
self.menuStatus.addAction(self.actionRefresh_Service_Status)
|
||||
self.menuStatus.addAction(self.actionObtain_Sync_Status)
|
||||
self.menuaccount2.addAction(self.actionstart)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
|
||||
QMetaObject.connectSlotsByName(MainWindow)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, MainWindow):
|
||||
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"OneDriveGUI", None))
|
||||
self.actionfghgfh.setText(QCoreApplication.translate("MainWindow", u"fghgfh", None))
|
||||
self.actionStart_Service.setText(QCoreApplication.translate("MainWindow", u"Start Service", None))
|
||||
self.actionStop_Service.setText(QCoreApplication.translate("MainWindow", u"Stop Service", None))
|
||||
self.actionRestart_Service.setText(QCoreApplication.translate("MainWindow", u"Restart Service", None))
|
||||
self.actionStart_Monitor.setText(QCoreApplication.translate("MainWindow", u"Start Monitor", None))
|
||||
self.actionStop_Monitor.setText(QCoreApplication.translate("MainWindow", u"Stop Monitor", None))
|
||||
self.actionForce_Resync.setText(QCoreApplication.translate("MainWindow", u"Force Resync", None))
|
||||
self.actionRefresh_Service_Status.setText(QCoreApplication.translate("MainWindow", u"Refresh Service Status", None))
|
||||
self.actionObtain_Sync_Status.setText(QCoreApplication.translate("MainWindow", u"Obtain Sync Status", None))
|
||||
self.actionTest_Service.setText(QCoreApplication.translate("MainWindow", u"Test Service", None))
|
||||
self.actionstart.setText(QCoreApplication.translate("MainWindow", u"start", None))
|
||||
self.menuAdvanced.setTitle(QCoreApplication.translate("MainWindow", u"Advanced", None))
|
||||
self.menuDebug.setTitle(QCoreApplication.translate("MainWindow", u"Debug", None))
|
||||
self.menuService.setTitle(QCoreApplication.translate("MainWindow", u"Service", None))
|
||||
self.menuMonitor.setTitle(QCoreApplication.translate("MainWindow", u"Monitor", None))
|
||||
self.menuStatus.setTitle(QCoreApplication.translate("MainWindow", u"Status", None))
|
||||
self.menuaccount2.setTitle(QCoreApplication.translate("MainWindow", u"account2", None))
|
||||
# retranslateUi
|
||||
|
||||
110
OneDriveGUI/ui/ui_process_status_page.py
Normal file
@@ -0,0 +1,110 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'process_status_page.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.2.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||
QMetaObject, QObject, QPoint, QRect,
|
||||
QSize, QTime, QUrl, Qt)
|
||||
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||
QFont, QFontDatabase, QGradient, QIcon,
|
||||
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||
from PySide6.QtWidgets import (QAbstractItemView, QApplication, QFrame, QGridLayout,
|
||||
QHBoxLayout, QLabel, QListWidget, QListWidgetItem,
|
||||
QPushButton, QSizePolicy, QVBoxLayout, QWidget)
|
||||
|
||||
class Ui_status_page(object):
|
||||
def setupUi(self, status_page):
|
||||
if not status_page.objectName():
|
||||
status_page.setObjectName(u"status_page")
|
||||
status_page.resize(441, 763)
|
||||
self.verticalLayout = QVBoxLayout(status_page)
|
||||
self.verticalLayout.setSpacing(0)
|
||||
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.frame = QFrame(status_page)
|
||||
self.frame.setObjectName(u"frame")
|
||||
self.frame.setMinimumSize(QSize(0, 100))
|
||||
self.frame.setStyleSheet(u"background-color: rgb(0, 120, 212);")
|
||||
self.frame.setFrameShape(QFrame.StyledPanel)
|
||||
self.frame.setFrameShadow(QFrame.Raised)
|
||||
self.gridLayout = QGridLayout(self.frame)
|
||||
self.gridLayout.setObjectName(u"gridLayout")
|
||||
self.label_4 = QLabel(self.frame)
|
||||
self.label_4.setObjectName(u"label_4")
|
||||
|
||||
self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1)
|
||||
|
||||
self.label_3 = QLabel(self.frame)
|
||||
self.label_3.setObjectName(u"label_3")
|
||||
self.label_3.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
|
||||
|
||||
self.gridLayout.addWidget(self.label_3, 2, 2, 1, 1)
|
||||
|
||||
self.label_6 = QLabel(self.frame)
|
||||
self.label_6.setObjectName(u"label_6")
|
||||
self.label_6.setAlignment(Qt.AlignCenter)
|
||||
|
||||
self.gridLayout.addWidget(self.label_6, 1, 0, 1, 3)
|
||||
|
||||
|
||||
self.verticalLayout.addWidget(self.frame)
|
||||
|
||||
self.listWidget = QListWidget(status_page)
|
||||
self.listWidget.setObjectName(u"listWidget")
|
||||
self.listWidget.setSelectionMode(QAbstractItemView.NoSelection)
|
||||
self.listWidget.setSortingEnabled(False)
|
||||
|
||||
self.verticalLayout.addWidget(self.listWidget)
|
||||
|
||||
self.horizontalLayout = QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||
self.pushButton = QPushButton(status_page)
|
||||
self.pushButton.setObjectName(u"pushButton")
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton.setSizePolicy(sizePolicy)
|
||||
|
||||
self.horizontalLayout.addWidget(self.pushButton)
|
||||
|
||||
self.pushButton_2 = QPushButton(status_page)
|
||||
self.pushButton_2.setObjectName(u"pushButton_2")
|
||||
sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_2.setSizePolicy(sizePolicy)
|
||||
|
||||
self.horizontalLayout.addWidget(self.pushButton_2)
|
||||
|
||||
self.pushButton_settings = QPushButton(status_page)
|
||||
self.pushButton_settings.setObjectName(u"pushButton_settings")
|
||||
sizePolicy.setHeightForWidth(self.pushButton_settings.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_settings.setSizePolicy(sizePolicy)
|
||||
|
||||
self.horizontalLayout.addWidget(self.pushButton_settings)
|
||||
|
||||
|
||||
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||
|
||||
|
||||
self.retranslateUi(status_page)
|
||||
|
||||
QMetaObject.connectSlotsByName(status_page)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, status_page):
|
||||
status_page.setWindowTitle(QCoreApplication.translate("status_page", u"Form", None))
|
||||
self.label_4.setText(QCoreApplication.translate("status_page", u"...", None))
|
||||
self.label_3.setText(QCoreApplication.translate("status_page", u"...", None))
|
||||
self.label_6.setText(QCoreApplication.translate("status_page", u"Onedrive is ...", None))
|
||||
self.pushButton.setText(QCoreApplication.translate("status_page", u"Open Folder", None))
|
||||
self.pushButton_2.setText(QCoreApplication.translate("status_page", u"Sync", None))
|
||||
self.pushButton_settings.setText(QCoreApplication.translate("status_page", u"Settings", None))
|
||||
# retranslateUi
|
||||
|
||||
236
OneDriveGUI/ui/ui_profile_settings_page.py
Normal file
@@ -0,0 +1,236 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'profile_settings_page.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.2.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||
QMetaObject, QObject, QPoint, QRect,
|
||||
QSize, QTime, QUrl, Qt)
|
||||
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||
QFont, QFontDatabase, QGradient, QIcon,
|
||||
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||
from PySide6.QtWidgets import (QApplication, QCheckBox, QGridLayout, QLabel,
|
||||
QLineEdit, QListWidget, QListWidgetItem, QPushButton,
|
||||
QSizePolicy, QSpacerItem, QTabWidget, QVBoxLayout,
|
||||
QWidget)
|
||||
|
||||
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)
|
||||
self.verticalLayout_2 = QVBoxLayout(profile_settings)
|
||||
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
|
||||
self.verticalLayout = QVBoxLayout()
|
||||
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||
self.tabWidget = QTabWidget(profile_settings)
|
||||
self.tabWidget.setObjectName(u"tabWidget")
|
||||
self.exemptions_tab_2 = QWidget()
|
||||
self.exemptions_tab_2.setObjectName(u"exemptions_tab_2")
|
||||
self.verticalLayout_5 = QVBoxLayout(self.exemptions_tab_2)
|
||||
self.verticalLayout_5.setObjectName(u"verticalLayout_5")
|
||||
self.gridLayout_5 = QGridLayout()
|
||||
self.gridLayout_5.setObjectName(u"gridLayout_5")
|
||||
self.checkBox_3 = QCheckBox(self.exemptions_tab_2)
|
||||
self.checkBox_3.setObjectName(u"checkBox_3")
|
||||
|
||||
self.gridLayout_5.addWidget(self.checkBox_3, 1, 0, 1, 2)
|
||||
|
||||
self.label_7 = QLabel(self.exemptions_tab_2)
|
||||
self.label_7.setObjectName(u"label_7")
|
||||
|
||||
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.gridLayout_5.addWidget(self.lineEdit_6, 0, 1, 1, 1)
|
||||
|
||||
self.pushButton_3 = QPushButton(self.exemptions_tab_2)
|
||||
self.pushButton_3.setObjectName(u"pushButton_3")
|
||||
|
||||
self.gridLayout_5.addWidget(self.pushButton_3, 0, 2, 1, 1)
|
||||
|
||||
|
||||
self.verticalLayout_5.addLayout(self.gridLayout_5)
|
||||
|
||||
self.label_8 = QLabel(self.exemptions_tab_2)
|
||||
self.label_8.setObjectName(u"label_8")
|
||||
|
||||
self.verticalLayout_5.addWidget(self.label_8)
|
||||
|
||||
self.gridLayout_6 = QGridLayout()
|
||||
self.gridLayout_6.setObjectName(u"gridLayout_6")
|
||||
self.lineEdit_7 = QLineEdit(self.exemptions_tab_2)
|
||||
self.lineEdit_7.setObjectName(u"lineEdit_7")
|
||||
|
||||
self.gridLayout_6.addWidget(self.lineEdit_7, 1, 0, 1, 1)
|
||||
|
||||
self.pushButton_9 = QPushButton(self.exemptions_tab_2)
|
||||
self.pushButton_9.setObjectName(u"pushButton_9")
|
||||
|
||||
self.gridLayout_6.addWidget(self.pushButton_9, 1, 1, 1, 1)
|
||||
|
||||
self.pushButton_10 = QPushButton(self.exemptions_tab_2)
|
||||
self.pushButton_10.setObjectName(u"pushButton_10")
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.pushButton_10.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_10.setSizePolicy(sizePolicy)
|
||||
|
||||
self.gridLayout_6.addWidget(self.pushButton_10, 0, 1, 1, 1)
|
||||
|
||||
self.listWidget_3 = QListWidget(self.exemptions_tab_2)
|
||||
self.listWidget_3.setObjectName(u"listWidget_3")
|
||||
|
||||
self.gridLayout_6.addWidget(self.listWidget_3, 0, 0, 1, 1)
|
||||
|
||||
|
||||
self.verticalLayout_5.addLayout(self.gridLayout_6)
|
||||
|
||||
self.label_9 = QLabel(self.exemptions_tab_2)
|
||||
self.label_9.setObjectName(u"label_9")
|
||||
|
||||
self.verticalLayout_5.addWidget(self.label_9)
|
||||
|
||||
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")
|
||||
sizePolicy1 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Minimum)
|
||||
sizePolicy1.setHorizontalStretch(0)
|
||||
sizePolicy1.setVerticalStretch(0)
|
||||
sizePolicy1.setHeightForWidth(self.pushButton_11.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_11.setSizePolicy(sizePolicy1)
|
||||
|
||||
self.gridLayout_7.addWidget(self.pushButton_11, 0, 1, 1, 1)
|
||||
|
||||
self.listWidget_4 = QListWidget(self.exemptions_tab_2)
|
||||
self.listWidget_4.setObjectName(u"listWidget_4")
|
||||
sizePolicy2 = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Expanding)
|
||||
sizePolicy2.setHorizontalStretch(0)
|
||||
sizePolicy2.setVerticalStretch(0)
|
||||
sizePolicy2.setHeightForWidth(self.listWidget_4.sizePolicy().hasHeightForWidth())
|
||||
self.listWidget_4.setSizePolicy(sizePolicy2)
|
||||
|
||||
self.gridLayout_7.addWidget(self.listWidget_4, 0, 0, 1, 1)
|
||||
|
||||
self.lineEdit_8 = QLineEdit(self.exemptions_tab_2)
|
||||
self.lineEdit_8.setObjectName(u"lineEdit_8")
|
||||
|
||||
self.gridLayout_7.addWidget(self.lineEdit_8, 1, 0, 1, 1)
|
||||
|
||||
self.pushButton_12 = QPushButton(self.exemptions_tab_2)
|
||||
self.pushButton_12.setObjectName(u"pushButton_12")
|
||||
sizePolicy3 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
||||
sizePolicy3.setHorizontalStretch(0)
|
||||
sizePolicy3.setVerticalStretch(0)
|
||||
sizePolicy3.setHeightForWidth(self.pushButton_12.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_12.setSizePolicy(sizePolicy3)
|
||||
|
||||
self.gridLayout_7.addWidget(self.pushButton_12, 1, 1, 1, 1)
|
||||
|
||||
|
||||
self.verticalLayout_5.addLayout(self.gridLayout_7)
|
||||
|
||||
self.tabWidget.addTab(self.exemptions_tab_2, "")
|
||||
self.logging_tab_2 = QWidget()
|
||||
self.logging_tab_2.setObjectName(u"logging_tab_2")
|
||||
self.verticalLayout_6 = QVBoxLayout(self.logging_tab_2)
|
||||
self.verticalLayout_6.setObjectName(u"verticalLayout_6")
|
||||
self.gridLayout_8 = QGridLayout()
|
||||
self.gridLayout_8.setObjectName(u"gridLayout_8")
|
||||
self.checkBox_4 = QCheckBox(self.logging_tab_2)
|
||||
self.checkBox_4.setObjectName(u"checkBox_4")
|
||||
|
||||
self.gridLayout_8.addWidget(self.checkBox_4, 0, 0, 1, 2)
|
||||
|
||||
self.label_10 = QLabel(self.logging_tab_2)
|
||||
self.label_10.setObjectName(u"label_10")
|
||||
|
||||
self.gridLayout_8.addWidget(self.label_10, 1, 0, 1, 1)
|
||||
|
||||
self.lineEdit_9 = QLineEdit(self.logging_tab_2)
|
||||
self.lineEdit_9.setObjectName(u"lineEdit_9")
|
||||
|
||||
self.gridLayout_8.addWidget(self.lineEdit_9, 1, 1, 1, 1)
|
||||
|
||||
self.pushButton_4 = QPushButton(self.logging_tab_2)
|
||||
self.pushButton_4.setObjectName(u"pushButton_4")
|
||||
|
||||
self.gridLayout_8.addWidget(self.pushButton_4, 1, 2, 1, 1)
|
||||
|
||||
|
||||
self.verticalLayout_6.addLayout(self.gridLayout_8)
|
||||
|
||||
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
|
||||
|
||||
self.verticalLayout_6.addItem(self.verticalSpacer_2)
|
||||
|
||||
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, 71, 16))
|
||||
self.tabWidget.addTab(self.tab_5, "")
|
||||
self.tab_6 = QWidget()
|
||||
self.tab_6.setObjectName(u"tab_6")
|
||||
self.tabWidget.addTab(self.tab_6, "")
|
||||
|
||||
self.verticalLayout.addWidget(self.tabWidget)
|
||||
|
||||
|
||||
self.verticalLayout_2.addLayout(self.verticalLayout)
|
||||
|
||||
self.pushButton_13 = QPushButton(profile_settings)
|
||||
self.pushButton_13.setObjectName(u"pushButton_13")
|
||||
|
||||
self.verticalLayout_2.addWidget(self.pushButton_13)
|
||||
|
||||
|
||||
self.retranslateUi(profile_settings)
|
||||
|
||||
self.tabWidget.setCurrentIndex(2)
|
||||
|
||||
|
||||
QMetaObject.connectSlotsByName(profile_settings)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, profile_settings):
|
||||
profile_settings.setWindowTitle(QCoreApplication.translate("profile_settings", u"Form", None))
|
||||
self.checkBox_3.setText(QCoreApplication.translate("profile_settings", u"Skip Hidden Files", None))
|
||||
self.label_7.setText(QCoreApplication.translate("profile_settings", u"Sync Folder:", None))
|
||||
self.pushButton_3.setText(QCoreApplication.translate("profile_settings", u"Browse", None))
|
||||
self.label_8.setText(QCoreApplication.translate("profile_settings", u"Skip files:", None))
|
||||
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.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.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_13.setText(QCoreApplication.translate("profile_settings", u"Save", None))
|
||||
# retranslateUi
|
||||
|
||||
71
OneDriveGUI/ui/ui_settings.py
Normal file
@@ -0,0 +1,71 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'settings.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.2.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||
QMetaObject, QObject, QPoint, QRect,
|
||||
QSize, QTime, QUrl, Qt)
|
||||
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||
QFont, QFontDatabase, QGradient, QIcon,
|
||||
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QListWidget, QListWidgetItem,
|
||||
QPushButton, QSizePolicy, QVBoxLayout, QWidget)
|
||||
|
||||
class Ui_settings_window(object):
|
||||
def setupUi(self, settings_window):
|
||||
if not settings_window.objectName():
|
||||
settings_window.setObjectName(u"settings_window")
|
||||
settings_window.resize(601, 817)
|
||||
self.verticalLayout_2 = QVBoxLayout(settings_window)
|
||||
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
|
||||
self.horizontalLayout = QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||
self.verticalLayout = QVBoxLayout()
|
||||
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||
self.listWidget = QListWidget(settings_window)
|
||||
self.listWidget.setObjectName(u"listWidget")
|
||||
self.listWidget.setMinimumSize(QSize(200, 0))
|
||||
|
||||
self.verticalLayout.addWidget(self.listWidget)
|
||||
|
||||
self.pushButton_3 = QPushButton(settings_window)
|
||||
self.pushButton_3.setObjectName(u"pushButton_3")
|
||||
|
||||
self.verticalLayout.addWidget(self.pushButton_3)
|
||||
|
||||
self.pushButton_2 = QPushButton(settings_window)
|
||||
self.pushButton_2.setObjectName(u"pushButton_2")
|
||||
|
||||
self.verticalLayout.addWidget(self.pushButton_2)
|
||||
|
||||
self.pushButton = QPushButton(settings_window)
|
||||
self.pushButton.setObjectName(u"pushButton")
|
||||
|
||||
self.verticalLayout.addWidget(self.pushButton)
|
||||
|
||||
|
||||
self.horizontalLayout.addLayout(self.verticalLayout)
|
||||
|
||||
|
||||
self.verticalLayout_2.addLayout(self.horizontalLayout)
|
||||
|
||||
|
||||
self.retranslateUi(settings_window)
|
||||
|
||||
QMetaObject.connectSlotsByName(settings_window)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, settings_window):
|
||||
settings_window.setWindowTitle(QCoreApplication.translate("settings_window", u"Form", None))
|
||||
self.pushButton_3.setText(QCoreApplication.translate("settings_window", u"Remove profile", None))
|
||||
self.pushButton_2.setText(QCoreApplication.translate("settings_window", u"Create new profile", None))
|
||||
self.pushButton.setText(QCoreApplication.translate("settings_window", u"Import existing profile", None))
|
||||
# retranslateUi
|
||||
|
||||
2
requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
psutil==5.9.0
|
||||
PySide6==6.2.2.1
|
||||