summaryrefslogtreecommitdiff
path: root/onionshare_gui
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2019-01-20 15:42:09 -0800
committerMicah Lee <micah@micahflee.com>2019-01-20 15:42:09 -0800
commit0ef0659e2fe08f1e50af5b7a31735234cac8b71f (patch)
treeb68861099a596f17309a8336d8fb47f27913137d /onionshare_gui
parentb75757ee49f58f77f524da9ec32cda8062697628 (diff)
parent45b3105b79af01ee500b63349771764172a91462 (diff)
downloadonionshare-0ef0659e2fe08f1e50af5b7a31735234cac8b71f.tar.gz
onionshare-0ef0659e2fe08f1e50af5b7a31735234cac8b71f.zip
Merge branch 'develop' into 866_receive_mode_crash
Diffstat (limited to 'onionshare_gui')
-rw-r--r--onionshare_gui/mode/__init__.py6
-rw-r--r--onionshare_gui/mode/history.py81
-rw-r--r--onionshare_gui/mode/receive_mode/__init__.py27
-rw-r--r--onionshare_gui/mode/share_mode/__init__.py24
-rw-r--r--onionshare_gui/onionshare_gui.py7
-rw-r--r--onionshare_gui/settings_dialog.py40
6 files changed, 90 insertions, 95 deletions
diff --git a/onionshare_gui/mode/__init__.py b/onionshare_gui/mode/__init__.py
index bd363915..4fe335e7 100644
--- a/onionshare_gui/mode/__init__.py
+++ b/onionshare_gui/mode/__init__.py
@@ -312,12 +312,6 @@ class Mode(QtWidgets.QWidget):
"""
pass
- def handle_request_close_server(self, event):
- """
- Handle REQUEST_CLOSE_SERVER event.
- """
- pass
-
def handle_request_upload_file_renamed(self, event):
"""
Handle REQUEST_UPLOAD_FILE_RENAMED event.
diff --git a/onionshare_gui/mode/history.py b/onionshare_gui/mode/history.py
index 5f895d75..02c34ec4 100644
--- a/onionshare_gui/mode/history.py
+++ b/onionshare_gui/mode/history.py
@@ -40,13 +40,36 @@ class HistoryItem(QtWidgets.QWidget):
def cancel(self):
pass
+ def get_finished_label_text(self, started):
+ """
+ When an item finishes, returns a string displaying the start/end datetime range.
+ started is a datetime object.
+ """
+ ended = datetime.now()
+ if started.year == ended.year and started.month == ended.month and started.day == ended.day:
+ if started.hour == ended.hour and started.minute == ended.minute:
+ text = strings._('gui_all_modes_transfer_finished').format(
+ started.strftime("%b %d, %I:%M%p")
+ )
+ else:
+ text = strings._('gui_all_modes_transfer_finished_range').format(
+ started.strftime("%b %d, %I:%M%p"),
+ ended.strftime("%I:%M%p")
+ )
+ else:
+ text = strings._('gui_all_modes_transfer_finished_range').format(
+ started.strftime("%b %d, %I:%M%p"),
+ ended.strftime("%b %d, %I:%M%p")
+ )
+ return text
-class DownloadHistoryItem(HistoryItem):
+
+class ShareHistoryItem(HistoryItem):
"""
Download history item, for share mode
"""
def __init__(self, common, id, total_bytes):
- super(DownloadHistoryItem, self).__init__()
+ super(ShareHistoryItem, self).__init__()
self.common = common
self.id = id
@@ -56,7 +79,7 @@ class DownloadHistoryItem(HistoryItem):
self.started_dt = datetime.fromtimestamp(self.started)
# Label
- self.label = QtWidgets.QLabel(strings._('gui_download_in_progress').format(self.started_dt.strftime("%b %d, %I:%M%p")))
+ self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started_dt.strftime("%b %d, %I:%M%p")))
# Progress bar
self.progress_bar = QtWidgets.QProgressBar()
@@ -83,18 +106,22 @@ class DownloadHistoryItem(HistoryItem):
self.progress_bar.setValue(downloaded_bytes)
if downloaded_bytes == self.progress_bar.total_bytes:
- pb_fmt = strings._('gui_download_upload_progress_complete').format(
+ pb_fmt = strings._('gui_all_modes_progress_complete').format(
self.common.format_seconds(time.time() - self.started))
+
+ # Change the label
+ self.label.setText(self.get_finished_label_text(self.started_dt))
+
else:
elapsed = time.time() - self.started
if elapsed < 10:
# Wait a couple of seconds for the download rate to stabilize.
# This prevents a "Windows copy dialog"-esque experience at
# the beginning of the download.
- pb_fmt = strings._('gui_download_upload_progress_starting').format(
+ pb_fmt = strings._('gui_all_modes_progress_starting').format(
self.common.human_readable_filesize(downloaded_bytes))
else:
- pb_fmt = strings._('gui_download_upload_progress_eta').format(
+ pb_fmt = strings._('gui_all_modes_progress_eta').format(
self.common.human_readable_filesize(downloaded_bytes),
self.estimated_time_remaining)
@@ -110,12 +137,12 @@ class DownloadHistoryItem(HistoryItem):
self.started)
-class UploadHistoryItemFile(QtWidgets.QWidget):
+class ReceiveHistoryItemFile(QtWidgets.QWidget):
def __init__(self, common, filename):
- super(UploadHistoryItemFile, self).__init__()
+ super(ReceiveHistoryItemFile, self).__init__()
self.common = common
- self.common.log('UploadHistoryItemFile', '__init__', 'filename: {}'.format(filename))
+ self.common.log('ReceiveHistoryItemFile', '__init__', 'filename: {}'.format(filename))
self.filename = filename
self.dir = None
@@ -166,10 +193,10 @@ class UploadHistoryItemFile(QtWidgets.QWidget):
"""
Open the downloads folder, with the file selected, in a cross-platform manner
"""
- self.common.log('UploadHistoryItemFile', 'open_folder')
+ self.common.log('ReceiveHistoryItemFile', 'open_folder')
if not self.dir:
- self.common.log('UploadHistoryItemFile', 'open_folder', "dir has not been set yet, can't open folder")
+ self.common.log('ReceiveHistoryItemFile', 'open_folder', "dir has not been set yet, can't open folder")
return
abs_filename = os.path.join(self.dir, self.filename)
@@ -190,16 +217,16 @@ class UploadHistoryItemFile(QtWidgets.QWidget):
elif self.common.platform == 'Windows':
subprocess.Popen(['explorer', '/select,{}'.format(abs_filename)])
-class UploadHistoryItem(HistoryItem):
+class ReceiveHistoryItem(HistoryItem):
def __init__(self, common, id, content_length):
- super(UploadHistoryItem, self).__init__()
+ super(ReceiveHistoryItem, self).__init__()
self.common = common
self.id = id
self.content_length = content_length
self.started = datetime.now()
# Label
- self.label = QtWidgets.QLabel(strings._('gui_upload_in_progress').format(self.started.strftime("%b %d, %I:%M%p")))
+ self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started.strftime("%b %d, %I:%M%p")))
# Progress bar
self.progress_bar = QtWidgets.QProgressBar()
@@ -244,14 +271,14 @@ class UploadHistoryItem(HistoryItem):
elapsed = datetime.now() - self.started
if elapsed.seconds < 10:
- pb_fmt = strings._('gui_download_upload_progress_starting').format(
+ pb_fmt = strings._('gui_all_modes_progress_starting').format(
self.common.human_readable_filesize(total_uploaded_bytes))
else:
estimated_time_remaining = self.common.estimated_time_remaining(
total_uploaded_bytes,
self.content_length,
self.started.timestamp())
- pb_fmt = strings._('gui_download_upload_progress_eta').format(
+ pb_fmt = strings._('gui_all_modes_progress_eta').format(
self.common.human_readable_filesize(total_uploaded_bytes),
estimated_time_remaining)
@@ -259,7 +286,7 @@ class UploadHistoryItem(HistoryItem):
for filename in list(data['progress']):
# Add a new file if needed
if filename not in self.files:
- self.files[filename] = UploadHistoryItemFile(self.common, filename)
+ self.files[filename] = ReceiveHistoryItemFile(self.common, filename)
self.files_layout.addWidget(self.files[filename])
# Update the file
@@ -277,23 +304,7 @@ class UploadHistoryItem(HistoryItem):
self.progress_bar.hide()
# Change the label
- self.ended = self.started = datetime.now()
- if self.started.year == self.ended.year and self.started.month == self.ended.month and self.started.day == self.ended.day:
- if self.started.hour == self.ended.hour and self.started.minute == self.ended.minute:
- text = strings._('gui_upload_finished').format(
- self.started.strftime("%b %d, %I:%M%p")
- )
- else:
- text = strings._('gui_upload_finished_range').format(
- self.started.strftime("%b %d, %I:%M%p"),
- self.ended.strftime("%I:%M%p")
- )
- else:
- text = strings._('gui_upload_finished_range').format(
- self.started.strftime("%b %d, %I:%M%p"),
- self.ended.strftime("%b %d, %I:%M%p")
- )
- self.label.setText(text)
+ self.label.setText(self.get_finished_label_text(self.started))
elif data['action'] == 'canceled':
# Hide the progress bar
@@ -393,7 +404,7 @@ class History(QtWidgets.QWidget):
# Header
self.header_label = QtWidgets.QLabel(header_text)
self.header_label.setStyleSheet(self.common.css['downloads_uploads_label'])
- clear_button = QtWidgets.QPushButton(strings._('gui_clear_history'))
+ clear_button = QtWidgets.QPushButton(strings._('gui_all_modes_clear_history'))
clear_button.setStyleSheet(self.common.css['downloads_uploads_clear'])
clear_button.setFlat(True)
clear_button.clicked.connect(self.reset)
diff --git a/onionshare_gui/mode/receive_mode/__init__.py b/onionshare_gui/mode/receive_mode/__init__.py
index cde2cb8a..3a90f2f4 100644
--- a/onionshare_gui/mode/receive_mode/__init__.py
+++ b/onionshare_gui/mode/receive_mode/__init__.py
@@ -22,7 +22,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings
from onionshare.web import Web
-from ..history import History, ToggleHistory, UploadHistoryItem
+from ..history import History, ToggleHistory, ReceiveHistoryItem
from .. import Mode
class ReceiveMode(Mode):
@@ -49,17 +49,17 @@ class ReceiveMode(Mode):
# Upload history
self.history = History(
self.common,
- QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/uploads_transparent.png'))),
- strings._('gui_no_uploads'),
- strings._('gui_uploads')
+ QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/receive_icon_transparent.png'))),
+ strings._('gui_receive_mode_no_files'),
+ strings._('gui_all_modes_history')
)
self.history.hide()
# Toggle history
self.toggle_history = ToggleHistory(
self.common, self, self.history,
- QtGui.QIcon(self.common.get_resource_path('images/uploads_toggle.png')),
- QtGui.QIcon(self.common.get_resource_path('images/uploads_toggle_selected.png'))
+ QtGui.QIcon(self.common.get_resource_path('images/receive_icon_toggle.png')),
+ QtGui.QIcon(self.common.get_resource_path('images/receive_icon_toggle_selected.png'))
)
# Receive mode warning
@@ -103,7 +103,7 @@ class ReceiveMode(Mode):
return True
# An upload is probably still running - hold off on stopping the share, but block new shares.
else:
- self.server_status_label.setText(strings._('timeout_upload_still_running'))
+ self.server_status_label.setText(strings._('gui_receive_mode_timeout_waiting'))
self.web.receive_mode.can_upload = False
return False
@@ -136,19 +136,19 @@ class ReceiveMode(Mode):
"""
Handle REQUEST_LOAD event.
"""
- self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_upload_page_loaded_message'))
+ self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_page_loaded_message'))
def handle_request_started(self, event):
"""
Handle REQUEST_STARTED event.
"""
- item = UploadHistoryItem(self.common, event["data"]["id"], event["data"]["content_length"])
+ item = ReceiveHistoryItem(self.common, event["data"]["id"], event["data"]["content_length"])
self.history.add(event["data"]["id"], item)
self.toggle_history.update_indicator(True)
self.history.in_progress_count += 1
self.history.update_in_progress()
- self.system_tray.showMessage(strings._('systray_upload_started_title'), strings._('systray_upload_started_message'))
+ self.system_tray.showMessage(strings._('systray_receive_started_title'), strings._('systray_receive_started_message'))
def handle_request_progress(self, event):
"""
@@ -159,13 +159,6 @@ class ReceiveMode(Mode):
'progress': event["data"]["progress"]
})
- def handle_request_close_server(self, event):
- """
- Handle REQUEST_CLOSE_SERVER event.
- """
- self.stop_server()
- self.system_tray.showMessage(strings._('systray_close_server_title'), strings._('systray_close_server_message'))
-
def handle_request_upload_file_renamed(self, event):
"""
Handle REQUEST_UPLOAD_FILE_RENAMED event.
diff --git a/onionshare_gui/mode/share_mode/__init__.py b/onionshare_gui/mode/share_mode/__init__.py
index d86a17e4..1f5ad00b 100644
--- a/onionshare_gui/mode/share_mode/__init__.py
+++ b/onionshare_gui/mode/share_mode/__init__.py
@@ -28,7 +28,7 @@ from onionshare.web import Web
from .file_selection import FileSelection
from .threads import CompressThread
from .. import Mode
-from ..history import History, ToggleHistory, DownloadHistoryItem
+from ..history import History, ToggleHistory, ShareHistoryItem
from ...widgets import Alert
@@ -74,9 +74,9 @@ class ShareMode(Mode):
# Download history
self.history = History(
self.common,
- QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/downloads_transparent.png'))),
- strings._('gui_no_downloads'),
- strings._('gui_downloads')
+ QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/share_icon_transparent.png'))),
+ strings._('gui_share_mode_no_files'),
+ strings._('gui_all_modes_history')
)
self.history.hide()
@@ -87,8 +87,8 @@ class ShareMode(Mode):
# Toggle history
self.toggle_history = ToggleHistory(
self.common, self, self.history,
- QtGui.QIcon(self.common.get_resource_path('images/downloads_toggle.png')),
- QtGui.QIcon(self.common.get_resource_path('images/downloads_toggle_selected.png'))
+ QtGui.QIcon(self.common.get_resource_path('images/share_icon_toggle.png')),
+ QtGui.QIcon(self.common.get_resource_path('images/share_icon_toggle_selected.png'))
)
# Top bar
@@ -138,7 +138,7 @@ class ShareMode(Mode):
return True
# A download is probably still running - hold off on stopping the share
else:
- self.server_status_label.setText(strings._('timeout_download_still_running'))
+ self.server_status_label.setText(strings._('gui_share_mode_timeout_waiting'))
return False
def start_server_custom(self):
@@ -229,7 +229,7 @@ class ShareMode(Mode):
"""
Handle REQUEST_LOAD event.
"""
- self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_download_page_loaded_message'))
+ self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_page_loaded_message'))
def handle_request_started(self, event):
"""
@@ -240,13 +240,13 @@ class ShareMode(Mode):
else:
filesize = self.web.share_mode.download_filesize
- item = DownloadHistoryItem(self.common, event["data"]["id"], filesize)
+ item = ShareHistoryItem(self.common, event["data"]["id"], filesize)
self.history.add(event["data"]["id"], item)
self.toggle_history.update_indicator(True)
self.history.in_progress_count += 1
self.history.update_in_progress()
- self.system_tray.showMessage(strings._('systray_download_started_title'), strings._('systray_download_started_message'))
+ self.system_tray.showMessage(strings._('systray_share_started_title'), strings._('systray_share_started_message'))
def handle_request_progress(self, event):
"""
@@ -256,7 +256,7 @@ class ShareMode(Mode):
# Is the download complete?
if event["data"]["bytes"] == self.web.share_mode.filesize:
- self.system_tray.showMessage(strings._('systray_download_completed_title'), strings._('systray_download_completed_message'))
+ self.system_tray.showMessage(strings._('systray_share_completed_title'), strings._('systray_share_completed_message'))
# Update completed and in progress labels
self.history.completed_count += 1
@@ -284,7 +284,7 @@ class ShareMode(Mode):
# Update in progress count
self.history.in_progress_count -= 1
self.history.update_in_progress()
- self.system_tray.showMessage(strings._('systray_download_canceled_title'), strings._('systray_download_canceled_message'))
+ self.system_tray.showMessage(strings._('systray_share_canceled_title'), strings._('systray_share_canceled_message'))
def on_reload_settings(self):
"""
diff --git a/onionshare_gui/onionshare_gui.py b/onionshare_gui/onionshare_gui.py
index c4f69b2d..27abf5e5 100644
--- a/onionshare_gui/onionshare_gui.py
+++ b/onionshare_gui/onionshare_gui.py
@@ -384,9 +384,6 @@ class OnionShareGui(QtWidgets.QMainWindow):
elif event["type"] == Web.REQUEST_CANCELED:
mode.handle_request_canceled(event)
- elif event["type"] == Web.REQUEST_CLOSE_SERVER:
- mode.handle_request_close_server(event)
-
elif event["type"] == Web.REQUEST_UPLOAD_FILE_RENAMED:
mode.handle_request_upload_file_renamed(event)
@@ -399,8 +396,8 @@ class OnionShareGui(QtWidgets.QMainWindow):
elif event["type"] == Web.REQUEST_UPLOAD_CANCELED:
mode.handle_request_upload_canceled(event)
- if event["type"] == Web.REQUEST_ERROR_DOWNLOADS_DIR_CANNOT_CREATE:
- Alert(self.common, strings._('error_cannot_create_downloads_dir').format(event["data"]["receive_mode_dir"]))
+ if event["type"] == Web.REQUEST_ERROR_DATA_DIR_CANNOT_CREATE:
+ Alert(self.common, strings._('error_cannot_create_data_dir').format(event["data"]["receive_mode_dir"]))
if event["type"] == Web.REQUEST_OTHER:
if event["path"] != '/favicon.ico' and event["path"] != "/{}/shutdown".format(mode.web.shutdown_slug):
diff --git a/onionshare_gui/settings_dialog.py b/onionshare_gui/settings_dialog.py
index b933c30f..1fe6dc53 100644
--- a/onionshare_gui/settings_dialog.py
+++ b/onionshare_gui/settings_dialog.py
@@ -187,20 +187,20 @@ class SettingsDialog(QtWidgets.QDialog):
sharing_group = QtWidgets.QGroupBox(strings._("gui_settings_sharing_label"))
sharing_group.setLayout(sharing_group_layout)
- # Downloads dir
- downloads_label = QtWidgets.QLabel(strings._('gui_settings_downloads_label'));
- self.downloads_dir_lineedit = QtWidgets.QLineEdit()
- self.downloads_dir_lineedit.setReadOnly(True)
- downloads_button = QtWidgets.QPushButton(strings._('gui_settings_downloads_button'))
- downloads_button.clicked.connect(self.downloads_button_clicked)
- downloads_layout = QtWidgets.QHBoxLayout()
- downloads_layout.addWidget(downloads_label)
- downloads_layout.addWidget(self.downloads_dir_lineedit)
- downloads_layout.addWidget(downloads_button)
+ # OnionShare data dir
+ data_dir_label = QtWidgets.QLabel(strings._('gui_settings_data_dir_label'));
+ self.data_dir_lineedit = QtWidgets.QLineEdit()
+ self.data_dir_lineedit.setReadOnly(True)
+ data_dir_button = QtWidgets.QPushButton(strings._('gui_settings_data_dir_browse_button'))
+ data_dir_button.clicked.connect(self.data_dir_button_clicked)
+ data_dir_layout = QtWidgets.QHBoxLayout()
+ data_dir_layout.addWidget(data_dir_label)
+ data_dir_layout.addWidget(self.data_dir_lineedit)
+ data_dir_layout.addWidget(data_dir_button)
# Receiving options layout
receiving_group_layout = QtWidgets.QVBoxLayout()
- receiving_group_layout.addLayout(downloads_layout)
+ receiving_group_layout.addLayout(data_dir_layout)
receiving_group = QtWidgets.QGroupBox(strings._("gui_settings_receiving_label"))
receiving_group.setLayout(receiving_group_layout)
@@ -508,8 +508,8 @@ class SettingsDialog(QtWidgets.QDialog):
if use_legacy_v2_onions or save_private_key:
self.use_legacy_v2_onions_checkbox.setCheckState(QtCore.Qt.Checked)
- downloads_dir = self.old_settings.get('downloads_dir')
- self.downloads_dir_lineedit.setText(downloads_dir)
+ data_dir = self.old_settings.get('data_dir')
+ self.data_dir_lineedit.setText(data_dir)
public_mode = self.old_settings.get('public_mode')
if public_mode:
@@ -747,17 +747,17 @@ class SettingsDialog(QtWidgets.QDialog):
if not self.save_private_key_checkbox.isChecked():
self.use_legacy_v2_onions_checkbox.setEnabled(True)
- def downloads_button_clicked(self):
+ def data_dir_button_clicked(self):
"""
- Browse for a new downloads directory
+ Browse for a new OnionShare data directory
"""
- downloads_dir = self.downloads_dir_lineedit.text()
+ data_dir = self.data_dir_lineedit.text()
selected_dir = QtWidgets.QFileDialog.getExistingDirectory(self,
- strings._('gui_settings_downloads_label'), downloads_dir)
+ strings._('gui_settings_data_dir_label'), data_dir)
if selected_dir:
- self.common.log('SettingsDialog', 'downloads_button_clicked', 'selected dir: {}'.format(selected_dir))
- self.downloads_dir_lineedit.setText(selected_dir)
+ self.common.log('SettingsDialog', 'data_dir_button_clicked', 'selected dir: {}'.format(selected_dir))
+ self.data_dir_lineedit.setText(selected_dir)
def test_tor_clicked(self):
"""
@@ -981,7 +981,7 @@ class SettingsDialog(QtWidgets.QDialog):
# Also unset the HidServAuth if we are removing our reusable private key
settings.set('hidservauth_string', '')
- settings.set('downloads_dir', self.downloads_dir_lineedit.text())
+ settings.set('data_dir', self.data_dir_lineedit.text())
settings.set('public_mode', self.public_mode_checkbox.isChecked())
settings.set('use_stealth', self.stealth_checkbox.isChecked())
# Always unset the HidServAuth if Stealth mode is unset