update: updated resolution page
This commit is contained in:
parent
3e0c8d20f2
commit
cde51eac70
1 changed files with 239 additions and 24 deletions
251
gui/__main__.py
251
gui/__main__.py
|
|
@ -346,6 +346,12 @@ class CustomWindow(QMainWindow):
|
||||||
|
|
||||||
self.setAttribute(Qt.WidgetAttribute.WA_NoSystemBackground)
|
self.setAttribute(Qt.WidgetAttribute.WA_NoSystemBackground)
|
||||||
self.setWindowTitle('HydraVeil')
|
self.setWindowTitle('HydraVeil')
|
||||||
|
|
||||||
|
screen = QApplication.primaryScreen()
|
||||||
|
size = screen.size()
|
||||||
|
self.host_screen_width = size.width()
|
||||||
|
self.host_screen_height = size.height()
|
||||||
|
|
||||||
self._data = {"Profile_1": {}}
|
self._data = {"Profile_1": {}}
|
||||||
|
|
||||||
self.gui_config_home = os.path.join(Constants.HV_CONFIG_HOME, 'gui')
|
self.gui_config_home = os.path.join(Constants.HV_CONFIG_HOME, 'gui')
|
||||||
|
|
@ -403,12 +409,14 @@ class CustomWindow(QMainWindow):
|
||||||
connection_observer.subscribe('connecting', lambda event: self.update_status(
|
connection_observer.subscribe('connecting', lambda event: self.update_status(
|
||||||
f'[{event.subject.get("attempt_count")}/{event.subject.get("maximum_number_of_attempts")}] Performing connection attempt...'))
|
f'[{event.subject.get("attempt_count")}/{event.subject.get("maximum_number_of_attempts")}] Performing connection attempt...'))
|
||||||
|
|
||||||
connection_observer.subscribe('tor_bootstrapping', lambda event: self.update_status('Establishing Tor connection...'))
|
connection_observer.subscribe('tor_bootstrapping', lambda event: self.update_status(
|
||||||
|
'Establishing Tor connection...'))
|
||||||
|
|
||||||
connection_observer.subscribe('tor_bootstrap_progressing', lambda event: self.update_status(
|
connection_observer.subscribe('tor_bootstrap_progressing', lambda event: self.update_status(
|
||||||
f'Bootstrapping Tor {event.meta.get('progress'):.2f}%'))
|
f'Bootstrapping Tor {event.meta.get('progress'):.2f}%'))
|
||||||
|
|
||||||
connection_observer.subscribe('tor_bootstrapped', lambda event: self.update_status('Tor connection established.'))
|
connection_observer.subscribe(
|
||||||
|
'tor_bootstrapped', lambda event: self.update_status('Tor connection established.'))
|
||||||
|
|
||||||
self.setFixedSize(800, 570)
|
self.setFixedSize(800, 570)
|
||||||
self.central_widget = QWidget(self)
|
self.central_widget = QWidget(self)
|
||||||
|
|
@ -4214,6 +4222,14 @@ class ScreenPage(Page):
|
||||||
self.button_back.setVisible(True)
|
self.button_back.setVisible(True)
|
||||||
self.title.setGeometry(585, 40, 200, 40)
|
self.title.setGeometry(585, 40, 200, 40)
|
||||||
self.title.setText("Pick a Resolution")
|
self.title.setText("Pick a Resolution")
|
||||||
|
self.host_screen_info = QLabel(
|
||||||
|
f"Host: {self.custom_window.host_screen_width}x{self.custom_window.host_screen_height}", self)
|
||||||
|
self.host_screen_info.setGeometry(QtCore.QRect(355, 30, 200, 30))
|
||||||
|
self.host_screen_info.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||||
|
self.host_screen_info.setStyleSheet(
|
||||||
|
"color: #00ffff; font-size: 14px; font-weight: bold;")
|
||||||
|
self.host_screen_info.show()
|
||||||
|
|
||||||
self.display.setGeometry(QtCore.QRect(5, 50, 580, 435))
|
self.display.setGeometry(QtCore.QRect(5, 50, 580, 435))
|
||||||
self.showing_larger_resolutions = False
|
self.showing_larger_resolutions = False
|
||||||
self.larger_resolution_buttons = []
|
self.larger_resolution_buttons = []
|
||||||
|
|
@ -4222,13 +4238,20 @@ class ScreenPage(Page):
|
||||||
def create_interface_elements(self):
|
def create_interface_elements(self):
|
||||||
self.buttonGroup = QButtonGroup(self)
|
self.buttonGroup = QButtonGroup(self)
|
||||||
self.buttons = []
|
self.buttons = []
|
||||||
for j, (object_type, icon_name, geometry) in enumerate([
|
resolutions = [
|
||||||
(QPushButton, "800x600", (595, 90, 180, 70)),
|
("800x600", (595, 90, 180, 70)),
|
||||||
(QPushButton, "1024x760", (595, 170, 180, 70)),
|
("1024x760", (595, 170, 180, 70)),
|
||||||
(QPushButton, "1152x1080", (595, 250, 180, 70)),
|
("1152x1080", (595, 250, 180, 70)),
|
||||||
(QPushButton, "1280x1024", (595, 330, 180, 70)),
|
("1280x1024", (595, 330, 180, 70)),
|
||||||
(QPushButton, "1920x1080", (595, 410, 180, 70))
|
("1920x1080", (595, 410, 180, 70))
|
||||||
]):
|
]
|
||||||
|
valid_resolutions = []
|
||||||
|
for res, geom in resolutions:
|
||||||
|
w, h = map(int, res.split('x'))
|
||||||
|
if w < self.custom_window.host_screen_width and h < self.custom_window.host_screen_height:
|
||||||
|
valid_resolutions.append((QPushButton, res, geom))
|
||||||
|
|
||||||
|
for j, (object_type, icon_name, geometry) in enumerate(valid_resolutions):
|
||||||
boton = object_type(self)
|
boton = object_type(self)
|
||||||
boton.setGeometry(*geometry)
|
boton.setGeometry(*geometry)
|
||||||
boton.setIconSize(boton.size())
|
boton.setIconSize(boton.size())
|
||||||
|
|
@ -4301,7 +4324,7 @@ class ScreenPage(Page):
|
||||||
self.larger_resolutions_button.setIcon(
|
self.larger_resolutions_button.setIcon(
|
||||||
QIcon(self.create_resolution_button_image("Standard Resolutions")))
|
QIcon(self.create_resolution_button_image("Standard Resolutions")))
|
||||||
|
|
||||||
larger_resolutions = [
|
larger_resolutions_list = [
|
||||||
("2560x1600", (595, 90, 180, 70)),
|
("2560x1600", (595, 90, 180, 70)),
|
||||||
("2560x1440", (595, 170, 180, 70)),
|
("2560x1440", (595, 170, 180, 70)),
|
||||||
("1920x1440", (595, 250, 180, 70)),
|
("1920x1440", (595, 250, 180, 70)),
|
||||||
|
|
@ -4309,7 +4332,13 @@ class ScreenPage(Page):
|
||||||
("2048x1152", (595, 410, 180, 70))
|
("2048x1152", (595, 410, 180, 70))
|
||||||
]
|
]
|
||||||
|
|
||||||
for i, (resolution, geometry) in enumerate(larger_resolutions):
|
valid_larger = []
|
||||||
|
for res, geom in larger_resolutions_list:
|
||||||
|
w, h = map(int, res.split('x'))
|
||||||
|
if w < self.custom_window.host_screen_width and h < self.custom_window.host_screen_height:
|
||||||
|
valid_larger.append((res, geom))
|
||||||
|
|
||||||
|
for i, (resolution, geometry) in enumerate(valid_larger):
|
||||||
button = QPushButton(self)
|
button = QPushButton(self)
|
||||||
button.setGeometry(*geometry)
|
button.setGeometry(*geometry)
|
||||||
button.setIconSize(button.size())
|
button.setIconSize(button.size())
|
||||||
|
|
@ -7562,6 +7591,26 @@ class Settings(Page):
|
||||||
self.enable_fast_registration.setStyleSheet(self.get_checkbox_style())
|
self.enable_fast_registration.setStyleSheet(self.get_checkbox_style())
|
||||||
registrations_layout.addWidget(self.enable_fast_registration)
|
registrations_layout.addWidget(self.enable_fast_registration)
|
||||||
|
|
||||||
|
self.dynamic_profiles_container = QWidget()
|
||||||
|
dynamic_layout = QVBoxLayout(self.dynamic_profiles_container)
|
||||||
|
dynamic_layout.setContentsMargins(20, 0, 0, 0)
|
||||||
|
|
||||||
|
self.enable_dynamic_profiles = QCheckBox(
|
||||||
|
"Enable Dynamic Larger Profiles")
|
||||||
|
self.enable_dynamic_profiles.setStyleSheet(self.get_checkbox_style())
|
||||||
|
dynamic_layout.addWidget(self.enable_dynamic_profiles)
|
||||||
|
|
||||||
|
dynamic_desc = QLabel("This is for fast mode profile creation. Some users may wish to have screen sizes that are nearly as large as their host, but slightly smaller by differing amounts. This fools fingerprinters but still gives larger sizes. So for example if your host is 1200 x 800, then fast mode would offer 1150 x 750, 1100 x 700, 1050 x 650, etc.")
|
||||||
|
dynamic_desc.setWordWrap(True)
|
||||||
|
dynamic_desc.setStyleSheet(
|
||||||
|
f"color: #888888; font-size: 11px; font-style: italic; {self.font_style}")
|
||||||
|
dynamic_layout.addWidget(dynamic_desc)
|
||||||
|
|
||||||
|
registrations_layout.addWidget(self.dynamic_profiles_container)
|
||||||
|
|
||||||
|
self.enable_fast_registration.toggled.connect(
|
||||||
|
lambda checked: self.dynamic_profiles_container.setVisible(checked))
|
||||||
|
|
||||||
layout.addWidget(registrations_group)
|
layout.addWidget(registrations_group)
|
||||||
|
|
||||||
save_button = QPushButton()
|
save_button = QPushButton()
|
||||||
|
|
@ -7780,19 +7829,28 @@ class Settings(Page):
|
||||||
auto_sync = registrations.get("auto_sync_enabled", False)
|
auto_sync = registrations.get("auto_sync_enabled", False)
|
||||||
fast_reg = registrations.get(
|
fast_reg = registrations.get(
|
||||||
"fast_registration_enabled", False)
|
"fast_registration_enabled", False)
|
||||||
if "auto_sync_enabled" not in registrations or "fast_registration_enabled" not in registrations:
|
dynamic_profiles = registrations.get(
|
||||||
|
"dynamic_larger_profiles", False)
|
||||||
|
if "auto_sync_enabled" not in registrations or "fast_registration_enabled" not in registrations or "dynamic_larger_profiles" not in registrations:
|
||||||
registrations["auto_sync_enabled"] = auto_sync
|
registrations["auto_sync_enabled"] = auto_sync
|
||||||
registrations["fast_registration_enabled"] = fast_reg
|
registrations["fast_registration_enabled"] = fast_reg
|
||||||
|
registrations["dynamic_larger_profiles"] = dynamic_profiles
|
||||||
self.update_status._save_gui_config(config)
|
self.update_status._save_gui_config(config)
|
||||||
self.enable_auto_sync.setChecked(auto_sync)
|
self.enable_auto_sync.setChecked(auto_sync)
|
||||||
self.enable_fast_registration.setChecked(fast_reg)
|
self.enable_fast_registration.setChecked(fast_reg)
|
||||||
|
self.enable_dynamic_profiles.setChecked(dynamic_profiles)
|
||||||
|
self.dynamic_profiles_container.setVisible(fast_reg)
|
||||||
else:
|
else:
|
||||||
self.enable_auto_sync.setChecked(False)
|
self.enable_auto_sync.setChecked(False)
|
||||||
self.enable_fast_registration.setChecked(False)
|
self.enable_fast_registration.setChecked(False)
|
||||||
|
self.enable_dynamic_profiles.setChecked(False)
|
||||||
|
self.dynamic_profiles_container.setVisible(False)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Error loading registration settings: {str(e)}")
|
logging.error(f"Error loading registration settings: {str(e)}")
|
||||||
self.enable_auto_sync.setChecked(False)
|
self.enable_auto_sync.setChecked(False)
|
||||||
self.enable_fast_registration.setChecked(False)
|
self.enable_fast_registration.setChecked(False)
|
||||||
|
self.enable_dynamic_profiles.setChecked(False)
|
||||||
|
self.dynamic_profiles_container.setVisible(False)
|
||||||
|
|
||||||
def save_registrations_settings(self) -> None:
|
def save_registrations_settings(self) -> None:
|
||||||
try:
|
try:
|
||||||
|
|
@ -7814,6 +7872,7 @@ class Settings(Page):
|
||||||
|
|
||||||
config["registrations"]["auto_sync_enabled"] = self.enable_auto_sync.isChecked()
|
config["registrations"]["auto_sync_enabled"] = self.enable_auto_sync.isChecked()
|
||||||
config["registrations"]["fast_registration_enabled"] = self.enable_fast_registration.isChecked()
|
config["registrations"]["fast_registration_enabled"] = self.enable_fast_registration.isChecked()
|
||||||
|
config["registrations"]["dynamic_larger_profiles"] = self.enable_dynamic_profiles.isChecked()
|
||||||
|
|
||||||
self.update_status._save_gui_config(config)
|
self.update_status._save_gui_config(config)
|
||||||
self.update_status.update_status("Registration settings saved")
|
self.update_status.update_status("Registration settings saved")
|
||||||
|
|
@ -9567,6 +9626,7 @@ class FastRegistrationPage(Page):
|
||||||
'browser': '',
|
'browser': '',
|
||||||
'resolution': '1024x760'
|
'resolution': '1024x760'
|
||||||
}
|
}
|
||||||
|
self.res_index = 1
|
||||||
|
|
||||||
self.initialize_default_selections()
|
self.initialize_default_selections()
|
||||||
|
|
||||||
|
|
@ -9614,9 +9674,19 @@ class FastRegistrationPage(Page):
|
||||||
else:
|
else:
|
||||||
self.name_hint.hide()
|
self.name_hint.hide()
|
||||||
|
|
||||||
|
self.host_info_label = QLabel(
|
||||||
|
f"Host Screen: {self.update_status.host_screen_width}x{self.update_status.host_screen_height}", self)
|
||||||
|
self.host_info_label.setGeometry(415, 470, 250, 20)
|
||||||
|
self.host_info_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||||
|
self.host_info_label.setStyleSheet(
|
||||||
|
"color: #00ffff; font-size: 13px; font-weight: bold;")
|
||||||
|
self.host_info_label.show()
|
||||||
|
self.labels.append(self.host_info_label)
|
||||||
|
|
||||||
self.create_protocol_section()
|
self.create_protocol_section()
|
||||||
self.create_connection_section()
|
self.create_connection_section()
|
||||||
self.create_location_section()
|
self.create_location_section()
|
||||||
|
if self.selected_values['connection'] != 'system-wide':
|
||||||
self.create_browser_section()
|
self.create_browser_section()
|
||||||
self.create_resolution_section()
|
self.create_resolution_section()
|
||||||
self.update_ui_state_for_connection()
|
self.update_ui_state_for_connection()
|
||||||
|
|
@ -9869,6 +9939,107 @@ class FastRegistrationPage(Page):
|
||||||
next_button.setIconSize(next_button.size())
|
next_button.setIconSize(next_button.size())
|
||||||
self.buttons.append(next_button)
|
self.buttons.append(next_button)
|
||||||
|
|
||||||
|
custom_button = QPushButton("Custom", self)
|
||||||
|
custom_button.setGeometry(435, 430, 185, 30)
|
||||||
|
custom_button.setStyleSheet("""
|
||||||
|
QPushButton {
|
||||||
|
background-color: rgba(0, 255, 255, 0.1);
|
||||||
|
color: #00ffff;
|
||||||
|
border: 1px solid #00ffff;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
QPushButton:hover {
|
||||||
|
background-color: rgba(0, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
""")
|
||||||
|
custom_button.clicked.connect(self.show_custom_res_dialog)
|
||||||
|
custom_button.show()
|
||||||
|
self.buttons.append(custom_button)
|
||||||
|
|
||||||
|
def show_custom_res_dialog(self):
|
||||||
|
dialog = QDialog(self)
|
||||||
|
dialog.setWindowTitle("Custom Resolution")
|
||||||
|
dialog.setFixedSize(300, 150)
|
||||||
|
dialog.setModal(True)
|
||||||
|
dialog.setStyleSheet("""
|
||||||
|
QDialog {
|
||||||
|
background-color: #2c3e50;
|
||||||
|
border: 2px solid #00ffff;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
QLabel {
|
||||||
|
color: white;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
QLineEdit {
|
||||||
|
background-color: #34495e;
|
||||||
|
color: white;
|
||||||
|
border: 1px solid #00ffff;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
QPushButton {
|
||||||
|
background-color: #2c3e50;
|
||||||
|
color: white;
|
||||||
|
border: 2px solid #00ffff;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
QPushButton:hover {
|
||||||
|
background-color: #34495e;
|
||||||
|
}
|
||||||
|
""")
|
||||||
|
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
input_layout = QHBoxLayout()
|
||||||
|
width_label = QLabel("Width:")
|
||||||
|
width_input = QLineEdit()
|
||||||
|
width_input.setPlaceholderText("1920")
|
||||||
|
height_label = QLabel("Height:")
|
||||||
|
height_input = QLineEdit()
|
||||||
|
height_input.setPlaceholderText("1080")
|
||||||
|
|
||||||
|
input_layout.addWidget(width_label)
|
||||||
|
input_layout.addWidget(width_input)
|
||||||
|
input_layout.addWidget(height_label)
|
||||||
|
input_layout.addWidget(height_input)
|
||||||
|
|
||||||
|
button_layout = QHBoxLayout()
|
||||||
|
ok_button = QPushButton("OK")
|
||||||
|
cancel_button = QPushButton("Cancel")
|
||||||
|
button_layout.addWidget(ok_button)
|
||||||
|
button_layout.addWidget(cancel_button)
|
||||||
|
|
||||||
|
layout.addLayout(input_layout)
|
||||||
|
layout.addLayout(button_layout)
|
||||||
|
dialog.setLayout(layout)
|
||||||
|
|
||||||
|
def validate_and_accept():
|
||||||
|
try:
|
||||||
|
width = int(width_input.text())
|
||||||
|
height = int(height_input.text())
|
||||||
|
if width <= 0 or height <= 0:
|
||||||
|
return
|
||||||
|
host_w = self.update_status.host_screen_width
|
||||||
|
host_h = self.update_status.host_screen_height
|
||||||
|
if width > host_w:
|
||||||
|
width = host_w - 50
|
||||||
|
if height > host_h:
|
||||||
|
height = host_h - 50
|
||||||
|
self.selected_values['resolution'] = f"{width}x{height}"
|
||||||
|
self.create_interface_elements()
|
||||||
|
dialog.accept()
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
ok_button.clicked.connect(validate_and_accept)
|
||||||
|
cancel_button.clicked.connect(dialog.reject)
|
||||||
|
dialog.exec()
|
||||||
|
|
||||||
def update_ui_state_for_connection(self):
|
def update_ui_state_for_connection(self):
|
||||||
is_system_wide = self.selected_values['connection'] == 'system-wide'
|
is_system_wide = self.selected_values['connection'] == 'system-wide'
|
||||||
|
|
||||||
|
|
@ -9927,11 +10098,33 @@ class FastRegistrationPage(Page):
|
||||||
elif browsers:
|
elif browsers:
|
||||||
self.selected_values[key] = browsers[0]
|
self.selected_values[key] = browsers[0]
|
||||||
elif key == 'resolution':
|
elif key == 'resolution':
|
||||||
|
config = self.update_status._load_gui_config()
|
||||||
|
dynamic_enabled = config.get("registrations", {}).get(
|
||||||
|
"dynamic_larger_profiles", False) if config else False
|
||||||
|
|
||||||
|
if dynamic_enabled:
|
||||||
|
resolutions = []
|
||||||
|
host_w = self.update_status.host_screen_width
|
||||||
|
host_h = self.update_status.host_screen_height
|
||||||
|
for i in range(5):
|
||||||
|
resolutions.append(
|
||||||
|
f"{host_w - (50 * (i + 1))}x{host_h - (50 * (i + 1))}")
|
||||||
|
self.res_index = (self.res_index - 1) % len(resolutions)
|
||||||
|
self.selected_values[key] = resolutions[self.res_index]
|
||||||
|
else:
|
||||||
resolutions = ['800x600', '1024x760', '1152x1080', '1280x1024', '1920x1080',
|
resolutions = ['800x600', '1024x760', '1152x1080', '1280x1024', '1920x1080',
|
||||||
'2560x1440', '2560x1600', '1920x1440', '1792x1344', '2048x1152']
|
'2560x1440', '2560x1600', '1920x1440', '1792x1344', '2048x1152']
|
||||||
current_index = resolutions.index(self.selected_values[key])
|
self.res_index = (self.res_index - 1) % len(resolutions)
|
||||||
previous_index = (current_index - 1) % len(resolutions)
|
choice = resolutions[self.res_index]
|
||||||
self.selected_values[key] = resolutions[previous_index]
|
w, h = map(int, choice.split('x'))
|
||||||
|
host_w = self.update_status.host_screen_width
|
||||||
|
host_h = self.update_status.host_screen_height
|
||||||
|
new_w, new_h = w, h
|
||||||
|
if w > host_w:
|
||||||
|
new_w = host_w - 50
|
||||||
|
if h > host_h:
|
||||||
|
new_h = host_h - 50
|
||||||
|
self.selected_values[key] = f"{new_w}x{new_h}"
|
||||||
|
|
||||||
self.create_interface_elements()
|
self.create_interface_elements()
|
||||||
|
|
||||||
|
|
@ -9983,11 +10176,33 @@ class FastRegistrationPage(Page):
|
||||||
elif browsers:
|
elif browsers:
|
||||||
self.selected_values[key] = browsers[0]
|
self.selected_values[key] = browsers[0]
|
||||||
elif key == 'resolution':
|
elif key == 'resolution':
|
||||||
|
config = self.update_status._load_gui_config()
|
||||||
|
dynamic_enabled = config.get("registrations", {}).get(
|
||||||
|
"dynamic_larger_profiles", False) if config else False
|
||||||
|
|
||||||
|
if dynamic_enabled:
|
||||||
|
resolutions = []
|
||||||
|
host_w = self.update_status.host_screen_width
|
||||||
|
host_h = self.update_status.host_screen_height
|
||||||
|
for i in range(5):
|
||||||
|
resolutions.append(
|
||||||
|
f"{host_w - (50 * (i + 1))}x{host_h - (50 * (i + 1))}")
|
||||||
|
self.res_index = (self.res_index + 1) % len(resolutions)
|
||||||
|
self.selected_values[key] = resolutions[self.res_index]
|
||||||
|
else:
|
||||||
resolutions = ['800x600', '1024x760', '1152x1080', '1280x1024', '1920x1080',
|
resolutions = ['800x600', '1024x760', '1152x1080', '1280x1024', '1920x1080',
|
||||||
'2560x1440', '2560x1600', '1920x1440', '1792x1344', '2048x1152']
|
'2560x1440', '2560x1600', '1920x1440', '1792x1344', '2048x1152']
|
||||||
current_index = resolutions.index(self.selected_values[key])
|
self.res_index = (self.res_index + 1) % len(resolutions)
|
||||||
next_index = (current_index + 1) % len(resolutions)
|
choice = resolutions[self.res_index]
|
||||||
self.selected_values[key] = resolutions[next_index]
|
w, h = map(int, choice.split('x'))
|
||||||
|
host_w = self.update_status.host_screen_width
|
||||||
|
host_h = self.update_status.host_screen_height
|
||||||
|
new_w, new_h = w, h
|
||||||
|
if w > host_w:
|
||||||
|
new_w = host_w - 50
|
||||||
|
if h > host_h:
|
||||||
|
new_h = host_h - 50
|
||||||
|
self.selected_values[key] = f"{new_w}x{new_h}"
|
||||||
|
|
||||||
self.create_interface_elements()
|
self.create_interface_elements()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue