import os from PyQt6.QtWidgets import QPushButton, QLabel, QButtonGroup from PyQt6.QtGui import QPixmap, QIcon from PyQt6 import QtCore from gui.v2.ui.pages.Page import Page class ResidentialPage(Page): def __init__(self, page_stack, main_window, parent=None): super().__init__("Wireguard", page_stack, main_window, parent) self.title.setGeometry(585, 40, 185, 40) self.title.setText("Pick a Protocol") self.update_status = main_window self.connection_choice = None self.button_reverse.setVisible(True) self.button_reverse.clicked.connect(self.reverse) self.button_go.clicked.connect(self.go_selected) self.display_1 = QLabel(self) self.display_1.setGeometry(QtCore.QRect( 15, 50, 550, 465)) self.display_1.setPixmap( QPixmap(os.path.join(self.btn_path, "browser only.png"))) self.label = QLabel(self) self.label.setGeometry(440, 370, 86, 130) self.label.setPixmap( QPixmap(os.path.join(self.btn_path, "tor 86x130.png"))) self.label.hide() def showEvent(self, event): super().showEvent(event) self.create_interface_elements() def create_interface_elements(self): self.buttonGroup = QButtonGroup(self) self.buttons = [] for j, (object_type, icon_name, page_class, geometry) in enumerate([ (QPushButton, "tor", self.set_connection_choice( 'tor'), (585, 90, 185, 75)), (QPushButton, "just proxy", self.set_connection_choice( 'just proxy'), (585, 90+30+75+30+75, 185, 75)), (QLabel, None, None, (570, 170, 210, 105)), (QLabel, None, None, (570, 385, 210, 115)) ]): if object_type == QPushButton: boton = object_type(self) boton.setGeometry(*geometry) boton.setIconSize(boton.size()) boton.setCheckable(True) boton.setIcon( QIcon(os.path.join(self.btn_path, f"{icon_name}_button.png"))) self.buttons.append(boton) self.buttonGroup.addButton(boton, j) boton.show() boton.clicked.connect( lambda checked, page=page_class, name=icon_name: self.show_residential(name, page)) elif object_type == QLabel: label = object_type(self) label.setGeometry(*geometry) label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) label.setWordWrap(True) label.show() if geometry == (570, 170, 210, 105): text1 = "Connect to tor first\nThen the residential proxy\nThis hides Tor from websites" label.setText(text1) elif geometry == (570, 385, 210, 115): text2 = "Connect directly\nTo the Proxy\nin a browser\nThis has no encryption" label.setText(text2) def set_connection_choice(self, connection_choice): pass def show_residential(self, icon_name, page_class): self.connection_choice = icon_name self.selected_page_class = page_class if icon_name == "tor": self.label.show() if icon_name == "just proxy": self.label.hide() self.button_go.setVisible(True) def go_selected(self): self.update_swarp_json(self.connection_choice) self.custom_window.navigator.navigate("hidetor") self.button_go.setVisible(False) def update_swarp_json(self, icon_name): inserted_data = { "connection": icon_name } self.update_status.write_data(inserted_data) def reverse(self): self.custom_window.navigator.navigate("protocol")