Allow changing downloads_dir from SettingsDialog

This commit is contained in:
Micah Lee 2018-04-25 08:43:40 -07:00
parent a017af0748
commit dd7d97dbbb
No known key found for this signature in database
GPG Key ID: 403C2657CD994F73
9 changed files with 71 additions and 28 deletions

View File

@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from __future__ import division
import os, sys, platform, argparse
from .alert import Alert
from .widgets import Alert
from PyQt5 import QtCore, QtWidgets
from onionshare import strings

View File

@ -27,7 +27,7 @@ from .receive_mode import ReceiveMode
from .tor_connection_dialog import TorConnectionDialog
from .settings_dialog import SettingsDialog
from .alert import Alert
from .widgets import Alert
from .update_checker import UpdateThread
class OnionShareGui(QtWidgets.QMainWindow):

View File

@ -24,7 +24,7 @@ from onionshare import strings, common
from onionshare.settings import Settings
from onionshare.onion import *
from .alert import Alert
from .widgets import Alert
from .update_checker import *
from .tor_connection_dialog import TorConnectionDialog
@ -77,6 +77,23 @@ class SettingsDialog(QtWidgets.QDialog):
sharing_group = QtWidgets.QGroupBox(strings._("gui_settings_sharing_label", True))
sharing_group.setLayout(sharing_group_layout)
# Downloads dir
downloads_label = QtWidgets.QLabel(strings._('gui_settings_downloads_label', True));
self.downloads_dir_lineedit = QtWidgets.QLineEdit()
self.downloads_dir_lineedit.setReadOnly(True)
downloads_button = QtWidgets.QPushButton(strings._('gui_settings_downloads_button', True))
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)
# Receiving options layout
receiving_group_layout = QtWidgets.QVBoxLayout()
receiving_group_layout.addLayout(downloads_layout)
receiving_group = QtWidgets.QGroupBox(strings._("gui_settings_receiving_label", True))
receiving_group.setLayout(receiving_group_layout)
# Stealth options
# Stealth
@ -349,6 +366,7 @@ class SettingsDialog(QtWidgets.QDialog):
# Layout
left_col_layout = QtWidgets.QVBoxLayout()
left_col_layout.addWidget(sharing_group)
left_col_layout.addWidget(receiving_group)
left_col_layout.addWidget(stealth_group)
left_col_layout.addWidget(autoupdate_group)
left_col_layout.addStretch()
@ -392,6 +410,9 @@ class SettingsDialog(QtWidgets.QDialog):
else:
self.save_private_key_checkbox.setCheckState(QtCore.Qt.Unchecked)
downloads_dir = self.old_settings.get('downloads_dir')
self.downloads_dir_lineedit.setText(downloads_dir)
use_stealth = self.old_settings.get('use_stealth')
if use_stealth:
self.stealth_checkbox.setCheckState(QtCore.Qt.Checked)
@ -575,6 +596,18 @@ class SettingsDialog(QtWidgets.QDialog):
clipboard = self.qtapp.clipboard()
clipboard.setText(self.old_settings.get('hidservauth_string'))
def downloads_button_clicked(self):
"""
Browse for a new downloads directory
"""
downloads_dir = self.downloads_dir_lineedit.text()
selected_dir = QtWidgets.QFileDialog.getExistingDirectory(self,
strings._('gui_settings_downloads_label', True), downloads_dir)
if selected_dir:
self.common.log('SettingsDialog', 'downloads_button_clicked', 'selected dir: {}'.format(selected_dir))
self.downloads_dir_lineedit.setText(selected_dir)
def test_tor_clicked(self):
"""
Test Tor Settings button clicked. With the given settings, see if we can
@ -760,6 +793,7 @@ class SettingsDialog(QtWidgets.QDialog):
settings.set('slug', '')
# 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('use_stealth', self.stealth_checkbox.isChecked())
# Always unset the HidServAuth if Stealth mode is unset
if not self.stealth_checkbox.isChecked():

View File

@ -30,7 +30,7 @@ from .file_selection import FileSelection
from .server_status import ServerStatus
from .downloads import Downloads
from ..onion_thread import OnionThread
from ..alert import Alert
from ..widgets import Alert
class ShareMode(QtWidgets.QWidget):

View File

@ -22,7 +22,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings
from ..alert import Alert
from ..widgets import Alert, AddFileDialog
class DropHereLabel(QtWidgets.QLabel):
"""
@ -340,7 +340,7 @@ class FileSelection(QtWidgets.QVBoxLayout):
"""
Add button clicked.
"""
file_dialog = FileDialog(caption=strings._('gui_choose_items', True))
file_dialog = AddFileDialog(self.common, caption=strings._('gui_choose_items', True))
if file_dialog.exec_() == QtWidgets.QDialog.Accepted:
for filename in file_dialog.selectedFiles():
self.file_list.add_file(filename)
@ -388,22 +388,3 @@ class FileSelection(QtWidgets.QVBoxLayout):
Set the Qt app focus on the file selection box.
"""
self.file_list.setFocus()
class FileDialog(QtWidgets.QFileDialog):
"""
Overridden version of QFileDialog which allows us to select
folders as well as, or instead of, files.
"""
def __init__(self, *args, **kwargs):
QtWidgets.QFileDialog.__init__(self, *args, **kwargs)
self.setOption(self.DontUseNativeDialog, True)
self.setOption(self.ReadOnly, True)
self.setOption(self.ShowDirsOnly, False)
self.setFileMode(self.ExistingFiles)
tree_view = self.findChild(QtWidgets.QTreeView)
tree_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
list_view = self.findChild(QtWidgets.QListView, "listView")
list_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
def accept(self):
QtWidgets.QDialog.accept(self)

View File

@ -22,7 +22,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings
from ..alert import Alert
from ..widgets import Alert
class ServerStatus(QtWidgets.QWidget):
"""

View File

@ -22,7 +22,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings
from onionshare.onion import *
from .alert import Alert
from .widgets import Alert
class TorConnectionDialog(QtWidgets.QProgressDialog):
"""

View File

@ -38,3 +38,28 @@ class Alert(QtWidgets.QMessageBox):
if autostart:
self.exec_()
class AddFileDialog(QtWidgets.QFileDialog):
"""
Overridden version of QFileDialog which allows us to select folders as well
as, or instead of, files. For adding files/folders to share.
"""
def __init__(self, common, *args, **kwargs):
QtWidgets.QFileDialog.__init__(self, *args, **kwargs)
self.common = common
self.common.log('AddFileDialog', '__init__')
self.setOption(self.DontUseNativeDialog, True)
self.setOption(self.ReadOnly, True)
self.setOption(self.ShowDirsOnly, False)
self.setFileMode(self.ExistingFiles)
tree_view = self.findChild(QtWidgets.QTreeView)
tree_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
list_view = self.findChild(QtWidgets.QListView, "listView")
list_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
def accept(self):
self.common.log('AddFileDialog', 'accept')
QtWidgets.QDialog.accept(self)

View File

@ -164,5 +164,8 @@
"receive_mode_warning": "Warning: Some files can hack your computer if you open them! Only open files from people you trust, or if you know what you're doing.",
"receive_mode_received_file": "Received file: {}",
"gui_mode_share_button": "Share Files",
"gui_mode_receive_button": "Receive Files"
"gui_mode_receive_button": "Receive Files",
"gui_settings_receiving_label": "Receiving options",
"gui_settings_downloads_label": "Save files to",
"gui_settings_downloads_button": "Browse"
}