summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2018-10-25 21:38:20 -0700
committerMicah Lee <micah@micahflee.com>2018-10-25 21:38:20 -0700
commit65b4afeba34c23aa3fe856e4fadbe7f1d20c8a2d (patch)
tree7b76cc3028b1b2b3990980ac05ed1ad51472f3eb
parent6233487ecdaed7c4a678a01889703bfd0dec0787 (diff)
downloadonionshare-65b4afeba34c23aa3fe856e4fadbe7f1d20c8a2d.tar.gz
onionshare-65b4afeba34c23aa3fe856e4fadbe7f1d20c8a2d.zip
Communicate the receive mode dir to the GUI, so clicking the open folder button opens the file manager to the correct directory
-rw-r--r--onionshare/web/receive_mode.py7
-rw-r--r--onionshare/web/web.py5
-rw-r--r--onionshare_gui/mode/__init__.py6
-rw-r--r--onionshare_gui/mode/history.py13
-rw-r--r--onionshare_gui/mode/receive_mode/__init__.py10
-rw-r--r--onionshare_gui/onionshare_gui.py3
-rw-r--r--onionshare_gui/receive_mode/uploads.py12
7 files changed, 52 insertions, 4 deletions
diff --git a/onionshare/web/receive_mode.py b/onionshare/web/receive_mode.py
index 66e00240..edaf8bbc 100644
--- a/onionshare/web/receive_mode.py
+++ b/onionshare/web/receive_mode.py
@@ -125,6 +125,13 @@ class ReceiveModeWeb(object):
'new_filename': basename
})
+ # Tell the GUI the receive mode directory for this file
+ self.web.add_request(self.web.REQUEST_UPLOAD_SET_DIR, request.path, {
+ 'id': request.upload_id,
+ 'filename': basename,
+ 'dir': receive_mode_dir
+ })
+
self.common.log('ReceiveModeWeb', 'define_routes', '/upload, uploaded {}, saving to {}'.format(f.filename, local_path))
print(strings._('receive_mode_received_file').format(local_path))
f.save(local_path)
diff --git a/onionshare/web/web.py b/onionshare/web/web.py
index 2ae011b7..a423b2e1 100644
--- a/onionshare/web/web.py
+++ b/onionshare/web/web.py
@@ -37,8 +37,9 @@ class Web(object):
REQUEST_RATE_LIMIT = 5
REQUEST_CLOSE_SERVER = 6
REQUEST_UPLOAD_FILE_RENAMED = 7
- REQUEST_UPLOAD_FINISHED = 8
- REQUEST_ERROR_DOWNLOADS_DIR_CANNOT_CREATE = 9
+ REQUEST_UPLOAD_SET_DIR = 8
+ REQUEST_UPLOAD_FINISHED = 9
+ REQUEST_ERROR_DOWNLOADS_DIR_CANNOT_CREATE = 10
def __init__(self, common, is_gui, mode='share'):
self.common = common
diff --git a/onionshare_gui/mode/__init__.py b/onionshare_gui/mode/__init__.py
index 0971ff32..5110289f 100644
--- a/onionshare_gui/mode/__init__.py
+++ b/onionshare_gui/mode/__init__.py
@@ -324,6 +324,12 @@ class Mode(QtWidgets.QWidget):
"""
pass
+ def handle_request_upload_set_dir(self, event):
+ """
+ Handle REQUEST_UPLOAD_SET_DIR event.
+ """
+ pass
+
def handle_request_upload_finished(self, event):
"""
Handle REQUEST_UPLOAD_FINISHED event.
diff --git a/onionshare_gui/mode/history.py b/onionshare_gui/mode/history.py
index b446b9fb..38e0fed3 100644
--- a/onionshare_gui/mode/history.py
+++ b/onionshare_gui/mode/history.py
@@ -118,6 +118,7 @@ class UploadHistoryItemFile(QtWidgets.QWidget):
self.common.log('UploadHistoryItemFile', '__init__', 'filename: {}'.format(filename))
self.filename = filename
+ self.dir = None
self.started = datetime.now()
# Filename label
@@ -158,13 +159,20 @@ class UploadHistoryItemFile(QtWidgets.QWidget):
self.filename = new_filename
self.filename_label.setText(self.filename)
+ def set_dir(self, dir):
+ self.dir = dir
+
def open_folder(self):
"""
Open the downloads folder, with the file selected, in a cross-platform manner
"""
self.common.log('UploadHistoryItemFile', 'open_folder')
- abs_filename = os.path.join(self.common.settings.get('downloads_dir'), self.filename)
+ if not self.dir:
+ self.common.log('UploadHistoryItemFile', 'open_folder', "dir has not been set yet, can't open folder")
+ return
+
+ abs_filename = os.path.join(self.dir, self.filename)
# Linux
if self.common.platform == 'Linux' or self.common.platform == 'BSD':
@@ -266,6 +274,9 @@ class UploadHistoryItem(HistoryItem):
self.files[data['old_filename']].rename(data['new_filename'])
self.files[data['new_filename']] = self.files.pop(data['old_filename'])
+ elif data['action'] == 'set_dir':
+ self.files[data['filename']].set_dir(data['dir'])
+
elif data['action'] == 'finished':
# Hide the progress bar
self.progress_bar.hide()
diff --git a/onionshare_gui/mode/receive_mode/__init__.py b/onionshare_gui/mode/receive_mode/__init__.py
index f070f963..d6c0c351 100644
--- a/onionshare_gui/mode/receive_mode/__init__.py
+++ b/onionshare_gui/mode/receive_mode/__init__.py
@@ -168,6 +168,16 @@ class ReceiveMode(Mode):
'new_filename': event["data"]["new_filename"]
})
+ def handle_request_upload_set_dir(self, event):
+ """
+ Handle REQUEST_UPLOAD_SET_DIR event.
+ """
+ self.history.update(event["data"]["id"], {
+ 'action': 'set_dir',
+ 'filename': event["data"]["filename"],
+ 'dir': event["data"]["dir"]
+ })
+
def handle_request_upload_finished(self, event):
"""
Handle REQUEST_UPLOAD_FINISHED event.
diff --git a/onionshare_gui/onionshare_gui.py b/onionshare_gui/onionshare_gui.py
index 1e254f61..eab3261e 100644
--- a/onionshare_gui/onionshare_gui.py
+++ b/onionshare_gui/onionshare_gui.py
@@ -390,6 +390,9 @@ class OnionShareGui(QtWidgets.QMainWindow):
elif event["type"] == Web.REQUEST_UPLOAD_FILE_RENAMED:
mode.handle_request_upload_file_renamed(event)
+ elif event["type"] == Web.REQUEST_UPLOAD_SET_DIR:
+ mode.handle_request_upload_set_dir(event)
+
elif event["type"] == Web.REQUEST_UPLOAD_FINISHED:
mode.handle_request_upload_finished(event)
diff --git a/onionshare_gui/receive_mode/uploads.py b/onionshare_gui/receive_mode/uploads.py
index 33d993b3..68c94b1c 100644
--- a/onionshare_gui/receive_mode/uploads.py
+++ b/onionshare_gui/receive_mode/uploads.py
@@ -35,6 +35,7 @@ class File(QtWidgets.QWidget):
self.common.log('File', '__init__', 'filename: {}'.format(filename))
self.filename = filename
+ self.dir = None
self.started = datetime.now()
# Filename label
@@ -71,6 +72,9 @@ class File(QtWidgets.QWidget):
if complete:
self.folder_button.show()
+ def set_dir(self, dir):
+ self.dir = dir
+
def rename(self, new_filename):
self.filename = new_filename
self.filename_label.setText(self.filename)
@@ -81,7 +85,10 @@ class File(QtWidgets.QWidget):
"""
self.common.log('File', 'open_folder')
- abs_filename = os.path.join(self.common.settings.get('downloads_dir'), self.filename)
+ if not self.dir:
+ return
+
+ abs_filename = os.path.join(self.dir, self.filename)
# Linux
if self.common.platform == 'Linux' or self.common.platform == 'BSD':
@@ -182,6 +189,9 @@ class Upload(QtWidgets.QWidget):
self.files[old_filename].rename(new_filename)
self.files[new_filename] = self.files.pop(old_filename)
+ def set_dir(self, filename, dir):
+ self.files[filename].set_dir(dir)
+
def finished(self):
# Hide the progress bar
self.progress_bar.hide()