diff --git a/desktop/onionshare/connection_tab.py b/desktop/onionshare/connection_tab.py
index 6c35f21b..0ae2d092 100644
--- a/desktop/onionshare/connection_tab.py
+++ b/desktop/onionshare/connection_tab.py
@@ -326,11 +326,20 @@ class AutoConnectTab(QtWidgets.QWidget):
"""
self.tor_con.hide()
- # If we're on first launch, switch to use bridge
+ # If there is a message, update the text of the bridge widget
+ if msg:
+ self.use_bridge_widget.connection_error_message.setText(msg)
+
+ # If we're on first launch, check if wasCanceled
+ # If cancelled, stay in first launch widget and show buttons
+ # Else, switch to use bridge
if self.first_launch_widget.isVisible():
- self.first_launch_widget.show_buttons()
- self.first_launch_widget.hide()
- self.use_bridge_widget.show()
+ if self.tor_con.wasCanceled():
+ self.first_launch_widget.show_buttons()
+ else:
+ self.first_launch_widget.show_buttons()
+ self.first_launch_widget.hide()
+ self.use_bridge_widget.show()
else:
self.use_bridge_widget.show_buttons()
@@ -543,12 +552,21 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
common.gui.css["autoconnect_failed_to_connect_label"]
)
+ # Tor connection error message
+ self.connection_error_message = QtWidgets.QLabel(
+ strings._("gui_autoconnect_connection_error_msg")
+ )
+ self.connection_error_message.setTextFormat(QtCore.Qt.RichText)
+ self.connection_error_message.setWordWrap(True)
+ self.connection_error_message.setContentsMargins(0, 0, 0, 10)
+
# Description
self.description_label = QtWidgets.QLabel(
strings._("gui_autoconnect_bridge_description")
)
self.description_label.setTextFormat(QtCore.Qt.RichText)
self.description_label.setWordWrap(True)
+ self.description_label.setContentsMargins(0, 0, 0, 20)
# Detection preference
self.use_bridge = True
@@ -568,6 +586,14 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
detect_layout.addWidget(self.no_bridge)
detect_layout.addWidget(self.detect_automatic_radio)
detect_layout.addWidget(self.detect_manual_radio)
+ bridge_setting_options = QtWidgets.QGroupBox(
+ strings._("gui_autoconnect_bridge_setting_options")
+ )
+ bridge_setting_options.setLayout(detect_layout)
+ bridge_setting_options.setFlat(True)
+ bridge_setting_options.setStyleSheet(
+ common.gui.css["autoconnect_bridge_setting_options"]
+ )
# Country list
locale = self.common.settings.get("locale")
@@ -640,8 +666,9 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
# Layout
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.connection_status_label)
+ layout.addWidget(self.connection_error_message)
layout.addWidget(self.description_label)
- layout.addLayout(detect_layout)
+ layout.addWidget(bridge_setting_options)
layout.addWidget(self.country_combobox)
layout.addWidget(self.task_label)
layout.addWidget(cta_widget)
@@ -655,6 +682,7 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
def hide_buttons(self):
self.connect_button.hide()
self.configure_button.hide()
+ self.connection_error_message.hide()
self.description_label.hide()
self.error_label.hide()
self.no_bridge.hide()
@@ -663,6 +691,7 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
def show_buttons(self):
self.connect_button.show()
+ self.connection_error_message.show()
self.description_label.show()
self.configure_button.show()
self.no_bridge.show()
diff --git a/desktop/onionshare/gui_common.py b/desktop/onionshare/gui_common.py
index c717fd22..d9e028de 100644
--- a/desktop/onionshare/gui_common.py
+++ b/desktop/onionshare/gui_common.py
@@ -194,6 +194,7 @@ class GuiCommon:
QComboBox {
padding: 10px;
font-size: 16px;
+ margin-left: 32px;
}
QComboBox:disabled {
color: #666666;
@@ -209,6 +210,17 @@ class GuiCommon:
font-size: 18px;
font-weight: bold;
}""",
+ "autoconnect_bridge_setting_options": """
+ QGroupBox {
+ border: 0;
+ border-color: transparent;
+ background-color: transparent;
+ font-weight: bold;
+ margin-top: 16px;
+ }
+ QGroupBox::title {
+ subcontrol-origin: margin;
+ }""",
# Common styles between modes and their child widgets
"mode_settings_toggle_advanced": """
QPushButton {
diff --git a/desktop/onionshare/resources/locale/en.json b/desktop/onionshare/resources/locale/en.json
index 54e2fa09..8c0a8470 100644
--- a/desktop/onionshare/resources/locale/en.json
+++ b/desktop/onionshare/resources/locale/en.json
@@ -46,9 +46,11 @@
"gui_enable_autoconnect_checkbox": "Connect to Tor automatically",
"gui_autoconnect_failed_to_connect_to_tor": "Failed to Connect to Tor",
"gui_autoconnect_trying_to_connect_to_tor": "Trying to Connect to Tor...",
- "gui_autoconnect_bridge_description": "Are you connected to the internet?
It's also possible that your internet is being censored. You might be able to bypass this using a bridge.",
+ "gui_autoconnect_connection_error_msg": "Are you connected to the internet?",
+ "gui_autoconnect_bridge_description": "It's also possible that your internet is being censored. You might be able to bypass this using a bridge.",
"gui_autoconnect_bridge_detect_automatic": "Automatically determine my country from my IP address for bridge settings",
"gui_autoconnect_bridge_detect_manual": "Manually select my country for bridge settings",
+ "gui_autoconnect_bridge_setting_options": "Bridge Settings",
"gui_autoconnect_start": "Connect to Tor",
"gui_autoconnect_configure": "Network Settings",
"gui_autoconnect_no_bridge": "Try again without bridge",