Skip to content

Commit

Permalink
Add select dir button (#85)
Browse files Browse the repository at this point in the history
* added pushopendir.py to allow for selecting a directory instead of only a file

* bump version

* reverted automatic formatting

* reverted automatic formatting

* implement review comments
  • Loading branch information
LuukBlom authored Jun 5, 2024
1 parent 259a8a8 commit dd60558
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/guitares/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
@author: ormondt
"""

__version__ = "0.0.9"
__version__ = "0.0.10"
7 changes: 6 additions & 1 deletion src/guitares/element.py
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,11 @@ def add(self):
from .pyqt5.pushopenfile import PushOpenFile
self.widget = PushOpenFile(self)

elif self.style == "pushselectdir":
from .pyqt5.pushopendir import PushOpenDir

self.widget = PushOpenDir(self)

elif self.style == "pushsavefile":
from .pyqt5.pushsavefile import PushSaveFile
self.widget = PushSaveFile(self)
Expand Down Expand Up @@ -553,4 +558,4 @@ def clear_tab(self, index):

def set_collapsed(self, true_or_false):
self.collapsed = true_or_false
self.gui.window.resize_elements(self.elements)
self.gui.window.resize_elements(self.elements)
79 changes: 79 additions & 0 deletions src/guitares/pyqt5/pushopendir.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import os
from PyQt5.QtWidgets import QPushButton, QFileDialog
import traceback


class PushOpenDir(QPushButton):

def __init__(self, element):
super().__init__("", element.parent.widget)

self.element = element

if element.text:
if isinstance(element.text, str):
txt = element.text
else:
txt = self.element.getvar(
element.text.variable_group, element.text.variable
)
self.setText(txt)

if self.element.tooltip:
if isinstance(element.tooltip, str):
txt = self.element.tooltip
else:
txt = self.element.getvar(
self.element.tooltip.variable_group, self.element.tooltip.variable
)
self.setToolTip(txt)

self.setVisible(True)

self.clicked.connect(self.callback)

self.set_geometry()

def set(self):
if not isinstance(self.element.text, str):
self.setText(
self.element.getvar(
self.element.text.variable_group, self.element.text.variable
)
)
if not isinstance(self.element.tooltip, str):
self.setToolTip(
self.element.getvar(
self.element.tooltip.variable_group, self.element.tooltip.variable
)
)

def callback(self):
self.okay = True
group = self.element.variable_group
name = self.element.variable
val = self.element.getvar(group, name)
if not val:
val = os.getcwd()
val = str(val).replace("\\", "/")
dir_name = QFileDialog.getExistingDirectory(
parent=self,
caption=self.element.title,
directory=val,
options=QFileDialog.ShowDirsOnly,
)
if dir_name:
self.element.setvar(group, name, dir_name)
else:
self.okay = False

try:
if self.okay and self.element.callback:
self.element.callback(dir_name, self)
self.element.window.update()
except:
traceback.print_exc()

def set_geometry(self):
x0, y0, wdt, hgt = self.element.get_position()
self.setGeometry(x0, y0, wdt, hgt)

0 comments on commit dd60558

Please sign in to comment.