aboutsummaryrefslogtreecommitdiff
path: root/onionshare_gui/mode/file_selection.py
diff options
context:
space:
mode:
Diffstat (limited to 'onionshare_gui/mode/file_selection.py')
-rw-r--r--onionshare_gui/mode/file_selection.py91
1 files changed, 59 insertions, 32 deletions
diff --git a/onionshare_gui/mode/file_selection.py b/onionshare_gui/mode/file_selection.py
index a7af61f8..c505dc03 100644
--- a/onionshare_gui/mode/file_selection.py
+++ b/onionshare_gui/mode/file_selection.py
@@ -24,11 +24,13 @@ from onionshare import strings
from ..widgets import Alert, AddFileDialog
+
class DropHereLabel(QtWidgets.QLabel):
"""
When there are no files or folders in the FileList yet, display the
'drop files here' message and graphic.
"""
+
def __init__(self, common, parent, image=False):
self.parent = parent
super(DropHereLabel, self).__init__(parent=parent)
@@ -39,10 +41,16 @@ class DropHereLabel(QtWidgets.QLabel):
self.setAlignment(QtCore.Qt.AlignCenter)
if image:
- self.setPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/logo_transparent.png'))))
+ self.setPixmap(
+ QtGui.QPixmap.fromImage(
+ QtGui.QImage(
+ self.common.get_resource_path("images/logo_transparent.png")
+ )
+ )
+ )
else:
- self.setText(strings._('gui_drag_and_drop'))
- self.setStyleSheet(self.common.css['share_file_selection_drop_here_label'])
+ self.setText(strings._("gui_drag_and_drop"))
+ self.setStyleSheet(self.common.css["share_file_selection_drop_here_label"])
self.hide()
@@ -57,6 +65,7 @@ class DropCountLabel(QtWidgets.QLabel):
While dragging files over the FileList, this counter displays the
number of files you're dragging.
"""
+
def __init__(self, common, parent):
self.parent = parent
super(DropCountLabel, self).__init__(parent=parent)
@@ -65,8 +74,8 @@ class DropCountLabel(QtWidgets.QLabel):
self.setAcceptDrops(True)
self.setAlignment(QtCore.Qt.AlignCenter)
- self.setText(strings._('gui_drag_and_drop'))
- self.setStyleSheet(self.common.css['share_file_selection_drop_count_label'])
+ self.setText(strings._("gui_drag_and_drop"))
+ self.setStyleSheet(self.common.css["share_file_selection_drop_count_label"])
self.hide()
def dragEnterEvent(self, event):
@@ -78,6 +87,7 @@ class FileList(QtWidgets.QListWidget):
"""
The list of files and folders in the GUI.
"""
+
files_dropped = QtCore.pyqtSignal()
files_updated = QtCore.pyqtSignal()
@@ -139,7 +149,7 @@ class FileList(QtWidgets.QListWidget):
if self.count() > 0:
# Add and delete an empty item, to force all items to get redrawn
# This is ugly, but the only way I could figure out how to proceed
- item = QtWidgets.QListWidgetItem('fake item')
+ item = QtWidgets.QListWidgetItem("fake item")
self.addItem(item)
self.takeItem(self.row(item))
self.update()
@@ -149,21 +159,27 @@ class FileList(QtWidgets.QListWidget):
# and extend based on the overall width minus that amount.
for index in range(self.count()):
metrics = QtGui.QFontMetrics(self.item(index).font())
- elided = metrics.elidedText(self.item(index).basename, QtCore.Qt.ElideRight, self.width() - 200)
+ elided = metrics.elidedText(
+ self.item(index).basename, QtCore.Qt.ElideRight, self.width() - 200
+ )
self.item(index).setText(elided)
-
def dragEnterEvent(self, event):
"""
dragEnterEvent for dragging files and directories into the widget.
"""
if event.mimeData().hasUrls:
- self.setStyleSheet(self.common.css['share_file_list_drag_enter'])
+ self.setStyleSheet(self.common.css["share_file_list_drag_enter"])
count = len(event.mimeData().urls())
- self.drop_count.setText('+{}'.format(count))
+ self.drop_count.setText("+{}".format(count))
size_hint = self.drop_count.sizeHint()
- self.drop_count.setGeometry(self.width() - size_hint.width() - 10, self.height() - size_hint.height() - 10, size_hint.width(), size_hint.height())
+ self.drop_count.setGeometry(
+ self.width() - size_hint.width() - 10,
+ self.height() - size_hint.height() - 10,
+ size_hint.width(),
+ size_hint.height(),
+ )
self.drop_count.show()
event.accept()
else:
@@ -173,7 +189,7 @@ class FileList(QtWidgets.QListWidget):
"""
dragLeaveEvent for dragging files and directories into the widget.
"""
- self.setStyleSheet(self.common.css['share_file_list_drag_leave'])
+ self.setStyleSheet(self.common.css["share_file_list_drag_leave"])
self.drop_count.hide()
event.accept()
self.update()
@@ -201,7 +217,7 @@ class FileList(QtWidgets.QListWidget):
else:
event.ignore()
- self.setStyleSheet(self.common.css['share_file_list_drag_leave'])
+ self.setStyleSheet(self.common.css["share_file_list_drag_leave"])
self.drop_count.hide()
self.files_dropped.emit()
@@ -238,12 +254,14 @@ class FileList(QtWidgets.QListWidget):
# Item's filename attribute and size labels
item.filename = filename
item_size = QtWidgets.QLabel(size_readable)
- item_size.setStyleSheet(self.common.css['share_file_list_item_size'])
+ item_size.setStyleSheet(self.common.css["share_file_list_item_size"])
- item.basename = os.path.basename(filename.rstrip('/'))
+ item.basename = os.path.basename(filename.rstrip("/"))
# Use the basename as the method with which to sort the list
metrics = QtGui.QFontMetrics(item.font())
- elided = metrics.elidedText(item.basename, QtCore.Qt.ElideRight, self.sizeHint().width())
+ elided = metrics.elidedText(
+ item.basename, QtCore.Qt.ElideRight, self.sizeHint().width()
+ )
item.setData(QtCore.Qt.DisplayRole, elided)
# Item's delete button
@@ -255,9 +273,13 @@ class FileList(QtWidgets.QListWidget):
item.item_button = QtWidgets.QPushButton()
item.item_button.setDefault(False)
item.item_button.setFlat(True)
- item.item_button.setIcon( QtGui.QIcon(self.common.get_resource_path('images/file_delete.png')) )
+ item.item_button.setIcon(
+ QtGui.QIcon(self.common.get_resource_path("images/file_delete.png"))
+ )
item.item_button.clicked.connect(delete_item)
- item.item_button.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+ item.item_button.setSizePolicy(
+ QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed
+ )
# Item info widget, with a white background
item_info_layout = QtWidgets.QHBoxLayout()
@@ -265,7 +287,7 @@ class FileList(QtWidgets.QListWidget):
item_info_layout.addWidget(item_size)
item_info_layout.addWidget(item.item_button)
item_info = QtWidgets.QWidget()
- item_info.setObjectName('item-info')
+ item_info.setObjectName("item-info")
item_info.setLayout(item_info_layout)
# Create the item's widget and layouts
@@ -288,6 +310,7 @@ class FileSelection(QtWidgets.QVBoxLayout):
The list of files and folders in the GUI, as well as buttons to add and
delete the files and folders.
"""
+
def __init__(self, common, parent):
super(FileSelection, self).__init__()
@@ -303,21 +326,21 @@ class FileSelection(QtWidgets.QVBoxLayout):
self.file_list.files_updated.connect(self.update)
# Buttons
- if self.common.platform == 'Darwin':
+ if self.common.platform == "Darwin":
# The macOS sandbox makes it so the Mac version needs separate add files
# and folders buttons, in order to use native file selection dialogs
- self.add_files_button = QtWidgets.QPushButton(strings._('gui_add_files'))
+ self.add_files_button = QtWidgets.QPushButton(strings._("gui_add_files"))
self.add_files_button.clicked.connect(self.add_files)
- self.add_folder_button = QtWidgets.QPushButton(strings._('gui_add_folder'))
+ self.add_folder_button = QtWidgets.QPushButton(strings._("gui_add_folder"))
self.add_folder_button.clicked.connect(self.add_folder)
else:
- self.add_button = QtWidgets.QPushButton(strings._('gui_add'))
+ self.add_button = QtWidgets.QPushButton(strings._("gui_add"))
self.add_button.clicked.connect(self.add)
- self.delete_button = QtWidgets.QPushButton(strings._('gui_delete'))
+ self.delete_button = QtWidgets.QPushButton(strings._("gui_delete"))
self.delete_button.clicked.connect(self.delete)
button_layout = QtWidgets.QHBoxLayout()
button_layout.addStretch()
- if self.common.platform == 'Darwin':
+ if self.common.platform == "Darwin":
button_layout.addWidget(self.add_files_button)
button_layout.addWidget(self.add_folder_button)
else:
@@ -336,14 +359,14 @@ class FileSelection(QtWidgets.QVBoxLayout):
"""
# All buttons should be hidden if the server is on
if self.server_on:
- if self.common.platform == 'Darwin':
+ if self.common.platform == "Darwin":
self.add_files_button.hide()
self.add_folder_button.hide()
else:
self.add_button.hide()
self.delete_button.hide()
else:
- if self.common.platform == 'Darwin':
+ if self.common.platform == "Darwin":
self.add_files_button.show()
self.add_folder_button.show()
else:
@@ -362,7 +385,7 @@ class FileSelection(QtWidgets.QVBoxLayout):
"""
Add button clicked.
"""
- file_dialog = AddFileDialog(self.common, caption=strings._('gui_choose_items'))
+ file_dialog = AddFileDialog(self.common, caption=strings._("gui_choose_items"))
if file_dialog.exec_() == QtWidgets.QDialog.Accepted:
for filename in file_dialog.selectedFiles():
self.file_list.add_file(filename)
@@ -374,7 +397,9 @@ class FileSelection(QtWidgets.QVBoxLayout):
"""
Add files button clicked.
"""
- files = QtWidgets.QFileDialog.getOpenFileNames(self.parent, caption=strings._('gui_choose_items'))
+ files = QtWidgets.QFileDialog.getOpenFileNames(
+ self.parent, caption=strings._("gui_choose_items")
+ )
filenames = files[0]
for filename in filenames:
self.file_list.add_file(filename)
@@ -383,9 +408,11 @@ class FileSelection(QtWidgets.QVBoxLayout):
"""
Add folder button clicked.
"""
- filename = QtWidgets.QFileDialog.getExistingDirectory(self.parent,
- caption=strings._('gui_choose_items'),
- options=QtWidgets.QFileDialog.ShowDirsOnly)
+ filename = QtWidgets.QFileDialog.getExistingDirectory(
+ self.parent,
+ caption=strings._("gui_choose_items"),
+ options=QtWidgets.QFileDialog.ShowDirsOnly,
+ )
self.file_list.add_file(filename)
def delete(self):