-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpath_dialog.py
More file actions
52 lines (39 loc) · 1.69 KB
/
path_dialog.py
File metadata and controls
52 lines (39 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import os
from pathlib import Path
from PyQt5 import uic
from PyQt5.QtWidgets import QDialog, QFileDialog, QStyle
from PyQt5.QtGui import QIcon
PATH_UI_PATH = os.path.join(os.path.dirname(__file__), "resources", "path_dialog.ui")
FORM_CLASS, _ = uic.loadUiType(PATH_UI_PATH)
DEFAULT_DOWNLOAD_PATH = str(Path.home() / "HDA_Downloads")
CONFIG_PATH = Path.home() / ".hda_path"
class PathDialog(QDialog, FORM_CLASS):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
icon_path = os.path.join(os.path.dirname(__file__), 'resources', 'icon.png')
self.setWindowIcon(QIcon(icon_path))
# Load saved path or default
self.lineEditPath.setText(self.load_saved_path())
self.btnBrowse.setIcon(self.style().standardIcon(QStyle.SP_DirOpenIcon))
self.btnSave.setIcon(self.style().standardIcon(QStyle.SP_DialogSaveButton))
self.btnCancel.setIcon(self.style().standardIcon(QStyle.SP_DialogCancelButton))
self.btnBrowse.clicked.connect(self.browse)
self.btnSave.clicked.connect(self.save)
self.btnCancel.clicked.connect(self.reject)
def browse(self):
folder = QFileDialog.getExistingDirectory(self, "Select download folder")
if folder:
self.lineEditPath.setText(folder)
def save(self):
path = self.lineEditPath.text().strip()
if not path:
path = DEFAULT_DOWNLOAD_PATH
with open(CONFIG_PATH, 'w') as f:
f.write(path)
self.accept()
def load_saved_path(self):
if CONFIG_PATH.is_file():
with open(CONFIG_PATH, 'r') as f:
return f.read().strip()
return DEFAULT_DOWNLOAD_PATH