mirror of
https://github.com/onionshare/onionshare.git
synced 2025-01-10 03:37:28 -03:00
Add country dropdown
This commit is contained in:
parent
08ed7dab65
commit
09ac74a1be
4 changed files with 48 additions and 10 deletions
|
@ -312,7 +312,6 @@ class Common:
|
||||||
"""
|
"""
|
||||||
Returns the absolute path of a resource
|
Returns the absolute path of a resource
|
||||||
"""
|
"""
|
||||||
self.log("Common", "get_resource_path", f"filename={filename}")
|
|
||||||
path = resource_filename("onionshare_cli", os.path.join("resources", filename))
|
path = resource_filename("onionshare_cli", os.path.join("resources", filename))
|
||||||
self.log("Common", "get_resource_path", f"filename={filename}, path={path}")
|
self.log("Common", "get_resource_path", f"filename={filename}, path={path}")
|
||||||
return path
|
return path
|
||||||
|
|
|
@ -18,6 +18,8 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
from PySide2 import QtCore, QtWidgets, QtGui
|
from PySide2 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from onionshare_cli.settings import Settings
|
from onionshare_cli.settings import Settings
|
||||||
|
@ -57,7 +59,9 @@ class AutoConnectTab(QtWidgets.QWidget):
|
||||||
QtGui.QPixmap.fromImage(
|
QtGui.QPixmap.fromImage(
|
||||||
QtGui.QImage(
|
QtGui.QImage(
|
||||||
GuiCommon.get_resource_path(
|
GuiCommon.get_resource_path(
|
||||||
"images/{}_logo_text_bg.png".format(common.gui.color_mode)
|
os.path.join(
|
||||||
|
"images", f"{common.gui.color_mode}_logo_text_bg.png"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -291,7 +295,22 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
|
||||||
detect_layout.addWidget(self.detect_automatic_radio)
|
detect_layout.addWidget(self.detect_automatic_radio)
|
||||||
detect_layout.addWidget(self.detect_manual_radio)
|
detect_layout.addWidget(self.detect_manual_radio)
|
||||||
|
|
||||||
# World map
|
# Country list
|
||||||
|
locale = self.common.settings.get("locale")
|
||||||
|
if not locale:
|
||||||
|
locale = "en"
|
||||||
|
|
||||||
|
with open(
|
||||||
|
GuiCommon.get_resource_path(os.path.join("countries", f"{locale}.json"))
|
||||||
|
) as f:
|
||||||
|
countries = json.loads(f.read())
|
||||||
|
|
||||||
|
self.country_combobox = QtWidgets.QComboBox()
|
||||||
|
self.country_combobox.setStyleSheet(
|
||||||
|
common.gui.css["autoconnect_countries_combobox"]
|
||||||
|
)
|
||||||
|
for country_code in countries:
|
||||||
|
self.country_combobox.addItem(countries[country_code], country_code)
|
||||||
|
|
||||||
# Buttons
|
# Buttons
|
||||||
self.connect_button = QtWidgets.QPushButton(
|
self.connect_button = QtWidgets.QPushButton(
|
||||||
|
@ -326,9 +345,12 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
|
||||||
layout = QtWidgets.QVBoxLayout()
|
layout = QtWidgets.QVBoxLayout()
|
||||||
layout.addWidget(description_label)
|
layout.addWidget(description_label)
|
||||||
layout.addLayout(detect_layout)
|
layout.addLayout(detect_layout)
|
||||||
|
layout.addWidget(self.country_combobox)
|
||||||
layout.addWidget(cta_widget)
|
layout.addWidget(cta_widget)
|
||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
self.detect_automatic_radio.setChecked(True)
|
||||||
|
|
||||||
def hide_buttons(self):
|
def hide_buttons(self):
|
||||||
self.connect_button.hide()
|
self.connect_button.hide()
|
||||||
self.configure_button.hide()
|
self.configure_button.hide()
|
||||||
|
@ -338,10 +360,12 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
|
||||||
self.configure_button.show()
|
self.configure_button.show()
|
||||||
|
|
||||||
def _detect_automatic_toggled(self):
|
def _detect_automatic_toggled(self):
|
||||||
pass
|
self.country_combobox.setEnabled(False)
|
||||||
|
self.country_combobox.hide()
|
||||||
|
|
||||||
def _detect_manual_toggled(self):
|
def _detect_manual_toggled(self):
|
||||||
pass
|
self.country_combobox.setEnabled(True)
|
||||||
|
self.country_combobox.show()
|
||||||
|
|
||||||
def _connect_clicked(self):
|
def _connect_clicked(self):
|
||||||
self.connect_clicked.emit()
|
self.connect_clicked.emit()
|
||||||
|
|
|
@ -176,6 +176,15 @@ class GuiCommon:
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 0;
|
height: 0;
|
||||||
}""",
|
}""",
|
||||||
|
"autoconnect_countries_combobox": """
|
||||||
|
QComboBox {
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
QComboBox:disabled {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
""",
|
||||||
# Common styles between modes and their child widgets
|
# Common styles between modes and their child widgets
|
||||||
"mode_settings_toggle_advanced": """
|
"mode_settings_toggle_advanced": """
|
||||||
QPushButton {
|
QPushButton {
|
||||||
|
@ -562,9 +571,13 @@ class ToggleCheckbox(QtWidgets.QCheckBox):
|
||||||
self.initStyleOption(opt)
|
self.initStyleOption(opt)
|
||||||
s = self.style()
|
s = self.style()
|
||||||
s.drawControl(QtWidgets.QStyle.CE_CheckBox, opt, painter, self)
|
s.drawControl(QtWidgets.QStyle.CE_CheckBox, opt, painter, self)
|
||||||
|
|
||||||
rect = QtCore.QRect(s.subElementRect(QtWidgets.QStyle.SE_CheckBoxContents, opt, self))
|
rect = QtCore.QRect(
|
||||||
x = rect.width() - rect.x() - self.w + 20 # 20 is the padding between text and toggle
|
s.subElementRect(QtWidgets.QStyle.SE_CheckBoxContents, opt, self)
|
||||||
|
)
|
||||||
|
x = (
|
||||||
|
rect.width() - rect.x() - self.w + 20
|
||||||
|
) # 20 is the padding between text and toggle
|
||||||
y = self.height() / 2 - self.h / 2 + self.y() / 2
|
y = self.height() / 2 - self.h / 2 + self.y() / 2
|
||||||
self.toggleRect = QtCore.QRect(x, y, self.w, self.h)
|
self.toggleRect = QtCore.QRect(x, y, self.w, self.h)
|
||||||
painter.setBrush(QtGui.QColor(self.bg_color))
|
painter.setBrush(QtGui.QColor(self.bg_color))
|
||||||
|
@ -574,6 +587,8 @@ class ToggleCheckbox(QtWidgets.QCheckBox):
|
||||||
painter.drawEllipse(x, y - 3, self.h + 6, self.h + 6)
|
painter.drawEllipse(x, y - 3, self.h + 6, self.h + 6)
|
||||||
else:
|
else:
|
||||||
painter.setBrush(QtGui.QColor(self.active_color))
|
painter.setBrush(QtGui.QColor(self.active_color))
|
||||||
painter.drawEllipse(x + self.w - (self.h + 6), y - 3, self.h + 6, self.h + 6)
|
painter.drawEllipse(
|
||||||
|
x + self.w - (self.h + 6), y - 3, self.h + 6, self.h + 6
|
||||||
|
)
|
||||||
|
|
||||||
painter.end()
|
painter.end()
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
"gui_tor_settings_window_title": "Tor Settings",
|
"gui_tor_settings_window_title": "Tor Settings",
|
||||||
"gui_autoconnect_description": "OnionShare relies on the Tor Network, run by thousands of volunteers around the world.",
|
"gui_autoconnect_description": "OnionShare relies on the Tor Network, run by thousands of volunteers around the world.",
|
||||||
"gui_enable_autoconnect_checkbox": "Enable automatically connecting to Tor",
|
"gui_enable_autoconnect_checkbox": "Enable automatically connecting to Tor",
|
||||||
"gui_autoconnect_bridge_description": "<b>Failed connecting to Tor.</b> This could be because your internet is being censored, and you might be able to bypass this censorship by using a bridge.",
|
"gui_autoconnect_bridge_description": "<b>Failed connecting to Tor.</b> This could be because your internet is being censored. You might be able to bypass this censorship by using a bridge.",
|
||||||
"gui_autoconnect_bridge_detect_automatic": "Automatically determine my location to bypass country-specific censorship",
|
"gui_autoconnect_bridge_detect_automatic": "Automatically determine my location to bypass country-specific censorship",
|
||||||
"gui_autoconnect_bridge_detect_manual": "Manually select my country",
|
"gui_autoconnect_bridge_detect_manual": "Manually select my country",
|
||||||
"gui_autoconnect_start": "Connect to Tor",
|
"gui_autoconnect_start": "Connect to Tor",
|
||||||
|
|
Loading…
Reference in a new issue