diff options
Diffstat (limited to 'onionshare_gui/mode/file_selection.py')
-rw-r--r-- | onionshare_gui/mode/file_selection.py | 91 |
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): |