From 327253fc268b80f4ab39bbe161045f14083eec74 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Thu, 20 Aug 2020 17:16:47 -0400 Subject: [PATCH] Share mode and website mode are looking awesome --- onionshare_gui/gui_common.py | 7 +- onionshare_gui/tab/mode/file_selection.py | 81 +++++++++++------- .../tab/mode/share_mode/__init__.py | 11 +-- .../tab/mode/website_mode/__init__.py | 11 +-- share/images/mode_share.png | Bin 22203 -> 33773 bytes share/locale/en.json | 2 +- 6 files changed, 67 insertions(+), 45 deletions(-) diff --git a/onionshare_gui/gui_common.py b/onionshare_gui/gui_common.py index bf05dac0..13b16923 100644 --- a/onionshare_gui/gui_common.py +++ b/onionshare_gui/gui_common.py @@ -254,9 +254,14 @@ class GuiCommon: color: #333333; } """, + "share_file_selection_drop_here_header_label": """ + QLabel { + color: #333333; + font-size: 30px; + }""", "share_file_selection_drop_here_label": """ QLabel { - color: #999999; + color: #666666; }""", "share_file_selection_drop_count_label": """ QLabel { diff --git a/onionshare_gui/tab/mode/file_selection.py b/onionshare_gui/tab/mode/file_selection.py index 5a9e5d59..52163847 100644 --- a/onionshare_gui/tab/mode/file_selection.py +++ b/onionshare_gui/tab/mode/file_selection.py @@ -25,42 +25,55 @@ from onionshare import strings from ...widgets import Alert, AddFileDialog -class DropHereLabel(QtWidgets.QLabel): +class DropHereWidget(QtWidgets.QWidget): """ 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) - + def __init__(self, common, image_filename, header_text, w, h, parent): + super(DropHereWidget, self).__init__(parent) self.common = common - self.setAcceptDrops(True) - self.setAlignment(QtCore.Qt.AlignCenter) - if image: - 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.gui.css["share_file_selection_drop_here_label"] + self.image_label = QtWidgets.QLabel(parent=self) + self.image_label.setPixmap( + QtGui.QPixmap.fromImage( + QtGui.QImage(self.common.get_resource_path(image_filename)) ) + ) + self.image_label.setAlignment(QtCore.Qt.AlignCenter) + self.image_label.show() + self.header_label = QtWidgets.QLabel(parent=self) + self.header_label.setText(header_text) + self.header_label.setStyleSheet( + self.common.gui.css["share_file_selection_drop_here_header_label"] + ) + self.header_label.setAlignment(QtCore.Qt.AlignCenter) + self.header_label.show() + + self.text_label = QtWidgets.QLabel(parent=self) + self.text_label.setText(strings._("gui_drag_and_drop")) + self.text_label.setStyleSheet( + self.common.gui.css["share_file_selection_drop_here_label"] + ) + self.text_label.setAlignment(QtCore.Qt.AlignCenter) + self.text_label.show() + + self.resize(w, h) self.hide() def dragEnterEvent(self, event): - self.parent.drop_here_image.hide() - self.parent.drop_here_text.hide() + self.text_label.hide() event.accept() + def resize(self, w, h): + self.setGeometry(0, 0, w, h) + self.image_label.setGeometry(0, 0, w, h - 100) + self.header_label.setGeometry(0, 340, w, h - 340) + self.text_label.setGeometry(0, 410, w, h - 410) + class DropCountLabel(QtWidgets.QLabel): """ @@ -93,7 +106,7 @@ class FileList(QtWidgets.QListWidget): files_dropped = QtCore.pyqtSignal() files_updated = QtCore.pyqtSignal() - def __init__(self, common, parent=None): + def __init__(self, common, background_image_filename, header_text, parent=None): super(FileList, self).__init__(parent) self.common = common @@ -103,8 +116,14 @@ class FileList(QtWidgets.QListWidget): self.setSortingEnabled(True) self.setMinimumHeight(160) self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) - self.drop_here_image = DropHereLabel(self.common, self, True) - self.drop_here_text = DropHereLabel(self.common, self, False) + self.drop_here = DropHereWidget( + self.common, + background_image_filename, + header_text, + self.width(), + self.height(), + self, + ) self.drop_count = DropCountLabel(self.common, self) self.resizeEvent(None) self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) @@ -115,11 +134,9 @@ class FileList(QtWidgets.QListWidget): """ # file list should have a background image if empty if self.count() == 0: - self.drop_here_image.show() - self.drop_here_text.show() + self.drop_here.show() else: - self.drop_here_image.hide() - self.drop_here_text.hide() + self.drop_here.hide() def server_started(self): """ @@ -144,9 +161,7 @@ class FileList(QtWidgets.QListWidget): """ When the widget is resized, resize the drop files image and text. """ - offset = 70 - self.drop_here_image.setGeometry(0, 0, self.width(), self.height() - offset) - self.drop_here_text.setGeometry(0, offset, self.width(), self.height() - offset) + self.drop_here.resize(self.width(), self.height()) if self.count() > 0: # Add and delete an empty item, to force all items to get redrawn @@ -313,7 +328,7 @@ class FileSelection(QtWidgets.QVBoxLayout): delete the files and folders. """ - def __init__(self, common, parent): + def __init__(self, common, background_image_filename, header_text, parent): super(FileSelection, self).__init__() self.common = common @@ -322,7 +337,7 @@ class FileSelection(QtWidgets.QVBoxLayout): self.server_on = False # File list - self.file_list = FileList(self.common) + self.file_list = FileList(self.common, background_image_filename, header_text) self.file_list.itemSelectionChanged.connect(self.update) self.file_list.files_dropped.connect(self.update) self.file_list.files_updated.connect(self.update) diff --git a/onionshare_gui/tab/mode/share_mode/__init__.py b/onionshare_gui/tab/mode/share_mode/__init__.py index a81f83d4..aa386e3d 100644 --- a/onionshare_gui/tab/mode/share_mode/__init__.py +++ b/onionshare_gui/tab/mode/share_mode/__init__.py @@ -47,9 +47,6 @@ class ShareMode(Mode): # Create the Web object self.web = Web(self.common, True, self.settings, "share") - # Header - self.header_label.setText(strings._("gui_new_tab_share_button")) - # Settings self.autostop_sharing_checkbox = QtWidgets.QCheckBox() self.autostop_sharing_checkbox.clicked.connect( @@ -68,7 +65,12 @@ class ShareMode(Mode): ) # File selection - self.file_selection = FileSelection(self.common, self) + self.file_selection = FileSelection( + self.common, + "images/mode_share.png", + strings._("gui_new_tab_share_button"), + self, + ) if self.filenames: for filename in self.filenames: self.file_selection.file_list.add_file(filename) @@ -162,7 +164,6 @@ class ShareMode(Mode): # Wrapper layout self.wrapper_layout = QtWidgets.QVBoxLayout() - self.wrapper_layout.addWidget(self.header_label) self.wrapper_layout.addLayout(self.column_layout) self.setLayout(self.wrapper_layout) diff --git a/onionshare_gui/tab/mode/website_mode/__init__.py b/onionshare_gui/tab/mode/website_mode/__init__.py index 6199812c..c520d8f7 100644 --- a/onionshare_gui/tab/mode/website_mode/__init__.py +++ b/onionshare_gui/tab/mode/website_mode/__init__.py @@ -49,9 +49,6 @@ class WebsiteMode(Mode): # Create the Web object self.web = Web(self.common, True, self.settings, "website") - # Header - self.header_label.setText(strings._("gui_new_tab_website_button")) - # Settings self.disable_csp_checkbox = QtWidgets.QCheckBox() self.disable_csp_checkbox.clicked.connect(self.disable_csp_checkbox_clicked) @@ -68,7 +65,12 @@ class WebsiteMode(Mode): ) # File selection - self.file_selection = FileSelection(self.common, self) + self.file_selection = FileSelection( + self.common, + "images/mode_website.png", + strings._("gui_new_tab_website_button"), + self, + ) if self.filenames: for filename in self.filenames: self.file_selection.file_list.add_file(filename) @@ -162,7 +164,6 @@ class WebsiteMode(Mode): # Wrapper layout self.wrapper_layout = QtWidgets.QVBoxLayout() - self.wrapper_layout.addWidget(self.header_label) self.wrapper_layout.addLayout(self.column_layout) self.setLayout(self.wrapper_layout) diff --git a/share/images/mode_share.png b/share/images/mode_share.png index a1ca2abfde51d440d7245a8cf1193adc1d04fd9e..f2565bd533fa2d071cf864d0c3b04d96e707aea6 100644 GIT binary patch delta 11710 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 A;{X5v diff --git a/share/locale/en.json b/share/locale/en.json index dc2f5208..61fc0e2e 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -7,7 +7,7 @@ "close_on_autostop_timer": "Stopped because auto-stop timer ran out", "closing_automatically": "Stopped because transfer is complete", "large_filesize": "Warning: Sending a large share could take hours", - "gui_drag_and_drop": "Drag and drop files and folders\nto start sharing", + "gui_drag_and_drop": "Drag and drop files and folders to start sharing", "gui_add": "Add", "gui_add_files": "Add Files", "gui_add_folder": "Add Folder",