diff --git a/README.md b/README.md
index 0dce7f4..b9f1d21 100644
--- a/README.md
+++ b/README.md
@@ -1,26 +1,47 @@
-# CODENAME Nugget
+# Nugget
Unlock your device's full potential! Works on all versions iOS 17.0+
+This uses the sparserestore exploit to write to files outside of the intended restore location, like mobilegestalt.
+
Note: I am not responsible if your device bootloops. Please back up your data before using.
## Features
- Enable Dynamic Island on any device
-- Change Device Model Name
+- Enable iPhone X gestures on iPhone SEs
+- Change Device Model Name (ie what shows in the Settings app)
- Enable Boot Chime
- Enable Charge Limit
+- Enable Tap to Wake on unsupported devices (ie iPhone SEs)
+- Enable iPhone 16 Settings
+- Enable Collision SOS
- Enable Stage Manager
+- Disable the Wallpaper Parallax
+- Disable Region Restrictions (ie. Shutter Sound)
+ - Note: This does not include enabling EU sideloading outside the EU. That will come later.
+- Enable AOD on any device
+- Show the Apple Pencil options in Settings app
+- Show the Action Button options in Settings app
+- Show Internal Storage info (Might cause problems on some devices, use at your own risk)
+- Enabling lock screen clock animation, lock screen page duplication button, and more!
+- Disabling the new iOS 18 Photos UI
+- EU Enabler
## Running the Program
Requirements:
- pymobiledevice3
+- Python 3.8 or newer
Note: It is highly recommended to use a virtual environment:
```
-python -m venv .env # only needed once
-source .env/bin/activate
-pip install -r requirements.txt # only needed once
-python main_app.py
+python3 -m venv .env # only needed once
+# macOS/Linux: source .env/bin/activate
+# Windows: .env/Scripts/activate.bat
+pip3 install -r requirements.txt # only needed once
+python3 main_app.py
```
+Note: It may be either `python`/`pip` or `python3`/`pip3` depending on your path.
+
+The CLI version can be ran with `python3 cli_app.py`.
## Getting the File
You need to get the mobilegestalt file that is specific to your device. To do that, follow these steps:
@@ -29,7 +50,17 @@ You need to get the mobilegestalt file that is specific to your device. To do th
3. Save the file and share it to your computer.
4. Place it in the same folder as the python file (or specify the path in the program)
+## Building
+To compile `mainwindow.ui` for Python, run the following command:
+`pyside6-uic qt/mainwindow.ui -o qt/ui_mainwindow.py`
+
+To compile the resources file for Python, run the following command:
+`pyside6-rcc qt/resources.qrc -o resources_rc.py`
+
+The application itself can be compiled by running `compile.py`.
+
## Credits
- [JJTech](https://github.com/JJTech0130) for Sparserestore/[TrollRestore](https://github.com/JJTech0130/TrollRestore)
- [pymobiledevice3](https://github.com/doronz88/pymobiledevice3)
+- [disfordottie](https://x.com/disfordottie) for some global flag features
diff --git a/cli_app.py b/cli_app.py
new file mode 100644
index 0000000..3fb6690
--- /dev/null
+++ b/cli_app.py
@@ -0,0 +1,215 @@
+from exploit.restore import restore_files, FileToRestore, restore_file
+from tweaks.tweaks import tweaks, TweakModifyType, FeatureFlagTweak, EligibilityTweak
+from devicemanagement.constants import Device
+
+from pymobiledevice3.exceptions import PyMobileDevice3Exception
+from pymobiledevice3.services.diagnostics import DiagnosticsService
+from pymobiledevice3 import usbmux
+from pymobiledevice3.lockdown import create_using_usbmux
+
+from pathlib import Path
+import plistlib
+import traceback
+
+running = True
+passed_check = False
+num_tweaks = len(tweaks)
+
+gestalt_path = Path.joinpath(Path.cwd(), "com.apple.MobileGestalt.plist")
+flags_path = Path.joinpath(Path.cwd(), "Global.plist")
+device = None
+
+def print_option(num: int, active: bool, message: str):
+ txt = str(num) + ". "
+ if active:
+ txt = txt + "[Y] "
+ txt = txt + message
+ print(txt)
+
+def get_apply_number(num: int) -> int:
+ return num + 5-num%5
+
+while running:
+ print("""\n\n\n\n
+
+ ,--.
+ ,--.'| ___
+ ,--,: : | ,--.'|_
+,`--.'`| ' : ,--, | | :,'
+| : : | | ,'_ /| ,----._,. ,----._,. : : ' :
+: | \\ | : .--. | | : / / ' / / / ' / ,---. .;__,' /
+| : ' '; |,'_ /| : . || : || : | / \\ | | |
+' ' ;. ;| ' | | . .| | .\\ .| | .\\ . / / |:__,'| :
+| | | \\ || | ' | | |. ; '; |. ; '; |. ' / | ' : |__
+' : | ; .': | : ; ; |' . . |' . . |' ; /| | | '.'|
+| | '`--' ' : `--' \\`---`-'| | `---`-'| |' | / | ; : ;
+' : | : , .-./.'__/\\_: | .'__/\\_: || : | | , /
+; |.' `--`----' | : : | : : \\ \\ / ---`-'
+'---' \\ \\ / \\ \\ / `----'
+ `--`-' `--`-'
+ """)
+ print("CLI v2.2")
+ print("by LeminLimez")
+ print("Thanks @disfordottie for the clock animation and @lrdsnow for EU Enabler\n")
+ print("Please back up your device before using!")
+
+ while device == None:
+ connected_devices = usbmux.list_devices()
+ # Connect via usbmuxd
+ for current_device in connected_devices:
+ if current_device.is_usb:
+ try:
+ ld = create_using_usbmux(serial=current_device.serial)
+ vals = ld.all_values
+ device = Device(uuid=current_device.serial, name=vals['DeviceName'], version=vals['ProductVersion'], model=vals['ProductType'], locale=ld.locale, ld=ld)
+ except Exception as e:
+ print(traceback.format_exc())
+ input("Press Enter to continue...")
+
+ if device == None:
+ print("Please connect your device and try again!")
+ input("Press Enter to continue...")
+
+ print(f"Connected to {device.name}\niOS {device.version}\n")
+
+ if not passed_check and Path.exists(gestalt_path) and Path.is_file(gestalt_path):
+ passed_check = True
+
+ if passed_check:
+ count = 0
+ for key in tweaks:
+ count += 1
+ # do not show if the tweak is not compatible
+ if tweaks[key].is_compatible(device.version):
+ print_option(count, tweaks[key].enabled, tweaks[key].label)
+ if tweaks[key].divider_below:
+ print()
+
+ # apply will still be the number of tweaks just to keep consistency
+ print(f"\n{get_apply_number(num_tweaks + 1)}. Apply")
+ print(f"{get_apply_number(num_tweaks + 1) + 1}. Remove All Tweaks")
+ print(f"{get_apply_number(num_tweaks + 1) + 2}. Reset Mobile Gestalt")
+ print("0. Exit\n")
+ page = int(input("Enter a number: "))
+ if page == get_apply_number(num_tweaks + 1) or page == get_apply_number(num_tweaks + 1) + 1:
+ # either apply or reset tweaks
+ print()
+ resetting = page == (get_apply_number(num_tweaks + 1) + 1)
+ # set the tweaks and apply
+ # first open the file in read mode
+ with open(gestalt_path, 'rb') as in_fp:
+ gestalt_plist = plistlib.load(in_fp)
+ # create the other plists
+ flag_plist: dict = {}
+ eligibility_files = None
+
+ # verify the device credentials before continuing
+ if gestalt_plist["CacheExtra"]["qNNddlUK+B/YlooNoymwgA"] != device.version or gestalt_plist["CacheExtra"]["0+nc/Udy4WNG8S+Q7a/s1A"] != device.model:
+ print("com.apple.mobilegestalt.plist does not match the device!")
+ print("Please make sure you are using the correct file!")
+ print("If you believe this is a mistake, you can override this check.")
+ override = input("Do you want to overrride? (y/n) ")
+ if override.lower() != 'y':
+ continue # break applying and return to the main page
+
+ # set the plist keys
+ if not resetting:
+ for tweak in tweaks.values:
+ if isinstance(tweak, FeatureFlagTweak):
+ flag_plist = tweak.apply_tweak(flag_plist)
+ elif isinstance(tweak, EligibilityTweak):
+ tweak.set_region_code(device.locale[-2:])
+ eligibility_files = tweak.apply_tweak()
+ else:
+ gestalt_plist = tweak.apply_tweak(gestalt_plist)
+
+ # create the restore file list
+ files_to_restore = [
+ FileToRestore(
+ contents=plistlib.dumps(gestalt_plist),
+ restore_path="/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/",
+ restore_name="com.apple.MobileGestalt.plist"
+ ),
+ FileToRestore(
+ contents=plistlib.dumps(flag_plist),
+ restore_path="/var/preferences/FeatureFlags/",
+ restore_name="Global.plist"
+ )
+ ]
+ if eligibility_files != None:
+ files_to_restore += eligibility_files
+ # restore to the device
+ try:
+ restore_files(files=files_to_restore, reboot=True, lockdown_client=device.ld)
+ except Exception as e:
+ print(traceback.format_exc())
+ finally:
+ input("Press Enter to exit...")
+ running = False
+ elif page == get_apply_number(num_tweaks + 1) + 2:
+ # reset mobilegestalt
+ # restore to the device
+ try:
+ restore_files(files=[FileToRestore(
+ contents=b"",
+ restore_path="/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/",
+ restore_name="com.apple.MobileGestalt.plist"
+ )], reboot=True, lockdown_client=device.ld)
+ except Exception as e:
+ print(traceback.format_exc())
+ finally:
+ input("Press Enter to exit...")
+ running = False
+ elif page == 0:
+ # exit the panel
+ print("Goodbye!")
+ running = False
+ elif page == 42:
+ # restore_file(fp=Path.joinpath(Path.cwd(), "telephony_test.png"), restore_path="/var/mobile/Library/Caches/TelephonyUI-9/", restore_name="en-0---white.png", reboot=True, lockdown_client=device.ld)
+ restore_files(files=[FileToRestore(
+ contents=b"",
+ restore_path="/var/Managed Preferences/mobile/",
+ restore_name="com.apple.purplebuddy.plist"
+ )], reboot=True, lockdown_client=device.ld)
+ else:
+ tweak = list(tweaks.values())[page-1]
+ if page > 0 and page <= num_tweaks and tweak.is_compatible(device.version):
+ if tweak.edit_type == TweakModifyType.TEXT:
+ # text input
+ # for now it is just for set model, deal with a fix later
+ print("\n\nSet Model Name")
+ print("Leave blank to turn off custom name.\n")
+ name = input("Enter Model Name: ")
+ if name == "":
+ tweak.set_enabled(False)
+ else:
+ tweak.set_value(name)
+ elif tweak.edit_type == TweakModifyType.PICKER:
+ # pick between values
+ print("\n\nSelect a value.")
+ print("If you do not know which to try, start with the first option.")
+ values = tweak.value
+ for option in range(len(values)):
+ print_option(
+ num=option+1,
+ active=(tweak.enabled and tweak.get_selected_option() == option),
+ message=str(values[option])
+ )
+ print_option(num=len(values)+1, active=(not tweak.enabled), message="Disable")
+ picker_choice = int(input("Select option: "))
+ if picker_choice > 0 and picker_choice <= len(values):
+ tweak.set_selected_option(picker_choice-1)
+ elif picker_choice == len(values)+1:
+ tweak.set_enabled(False)
+ else:
+ tweak.toggle_enabled()
+ else:
+ print("No MobileGestalt file found!")
+ print(f"Please place the file in \'{Path.cwd()}\' with the name \'com.apple.MobileGestalt.plist\'")
+ print("Remember to make a backup of the file!!\n")
+ print("1. Retry")
+ print("2. Enter path\n")
+ choice = int(input("Enter number: "))
+ if choice == 2:
+ new_path = input("Enter new path to file: ")
+ gestalt_path = Path(new_path)
diff --git a/compile.py b/compile.py
index eefe432..781dc2b 100644
--- a/compile.py
+++ b/compile.py
@@ -6,10 +6,18 @@
'main_app.py',
# '--hidden-import=ipsw_parser',
'--hidden-import=zeroconf',
+ '--hidden-import=pyimg4',
'--hidden-import=zeroconf._utils.ipaddress',
'--hidden-import=zeroconf._handlers.answers',
+ '--add-data=files/:./files',
+ '--copy-metadata=pyimg4',
'--onedir',
- '--name=CODENAME Nugget',
+ '--name=Nugget',
+ '--icon=nugget.ico'
]
-PyInstaller.__main__.run(args)
\ No newline at end of file
+if platform == "darwin":
+ # add --windowed arg for macOS
+ args.append('--windowed')
+
+PyInstaller.__main__.run(args)
diff --git a/credits/LeminLimez.png b/credits/LeminLimez.png
new file mode 100644
index 0000000..3679ad6
Binary files /dev/null and b/credits/LeminLimez.png differ
diff --git a/credits/big_nugget.png b/credits/big_nugget.png
new file mode 100644
index 0000000..35c4d79
Binary files /dev/null and b/credits/big_nugget.png differ
diff --git a/devicemanagement/__init__.py b/devicemanagement/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/devicemanagement/__pycache__/__init__.cpython-312.pyc b/devicemanagement/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000..94b899d
Binary files /dev/null and b/devicemanagement/__pycache__/__init__.cpython-312.pyc differ
diff --git a/devicemanagement/__pycache__/constants.cpython-312.pyc b/devicemanagement/__pycache__/constants.cpython-312.pyc
new file mode 100644
index 0000000..bf2676a
Binary files /dev/null and b/devicemanagement/__pycache__/constants.cpython-312.pyc differ
diff --git a/devicemanagement/__pycache__/data_singleton.cpython-312.pyc b/devicemanagement/__pycache__/data_singleton.cpython-312.pyc
new file mode 100644
index 0000000..943e2d5
Binary files /dev/null and b/devicemanagement/__pycache__/data_singleton.cpython-312.pyc differ
diff --git a/devicemanagement/__pycache__/device_manager.cpython-312.pyc b/devicemanagement/__pycache__/device_manager.cpython-312.pyc
new file mode 100644
index 0000000..c29a9e4
Binary files /dev/null and b/devicemanagement/__pycache__/device_manager.cpython-312.pyc differ
diff --git a/devicemanagement/constants.py b/devicemanagement/constants.py
new file mode 100644
index 0000000..48cb9e7
--- /dev/null
+++ b/devicemanagement/constants.py
@@ -0,0 +1,94 @@
+from enum import Enum
+from pymobiledevice3.lockdown import LockdownClient
+
+class Device:
+ def __init__(self, uuid: int, name: str, version: str, model: str, locale: str, ld: LockdownClient):
+ self.uuid = uuid
+ self.name = name
+ self.version = version
+ self.model = model
+ self.locale = locale
+ self.ld = ld
+
+class Version:
+ def __init__(self, major: int, minor: int = 0, patch: int = 0):
+ self.major = major
+ self.minor = minor
+ self.patch = patch
+
+ def __init__(self, ver: str):
+ nums: list[str] = ver.split(".")
+ self.major = int(nums[0])
+ self.minor = int(nums[1]) if len(nums) > 1 else 0
+ self.patch = int(nums[2]) if len(nums) > 2 else 0
+
+ # Comparison Functions
+ def compare_to(self, other) -> int:
+ if self.major > other.major:
+ return 1
+ elif self.major < other.major:
+ return -1
+ if self.minor > other.minor:
+ return 1
+ elif self.minor < other.minor:
+ return -1
+ if self.patch > other.patch:
+ return 1
+ elif self.patch < other.patch:
+ return -1
+ return 0
+
+ def __gt__(self, other) -> bool:
+ return self.compare_to(other) == 1
+ def __ge__(self, other) -> bool:
+ comp: int = self.compare_to(other)
+ return comp == 0 or comp == 1
+
+ def __lt__(self, other) -> bool:
+ return self.compare_to(other) == -1
+ def __le__(self, other) -> bool:
+ comp: int = self.compare_to(other)
+ return comp == 0 or comp == -1
+
+ def __eq__(self, other) -> bool:
+ return self.compare_to(other) == 0
+
+class Tweak(Enum):
+ StatusBar = 'Status Bar'
+ SpringboardOptions = 'Springboard Options'
+ InternalOptions = 'Internal Options'
+ SkipSetup = 'Setup Options'
+
+class FileLocation(Enum):
+ # Control Center
+ mute = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.control-center.MuteModule.plist"
+ focus = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.FocusUIModule.plist"
+ spoken = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.siri.SpokenNotificationsModule.plist"
+ module_config = "ControlCenter/HomeDomain/Library/ControlCenter/ModuleConfiguration.plist"
+ replay_kit_audio = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.replaykit.AudioConferenceControlCenterModule.plist"
+ replay_kit_video = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.replaykit.VideoConferenceControlCenterModule.plist"
+
+ # Status Bar
+ status_bar = "StatusBar/HomeDomain/Library/SpringBoard/statusBarOverrides"
+
+ # Springboard Options
+ springboard = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.springboard.plist"
+ footnote = "SpringboardOptions/ConfigProfileDomain/Library/ConfigurationProfiles/SharedDeviceConfiguration.plist"
+ wifi = "SpringboardOptions/SystemPreferencesDomain/SystemConfiguration/com.apple.wifi.plist"
+ uikit = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.UIKit.plist"
+ accessibility = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.Accessibility.plist"
+ wifi_debug = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.MobileWiFi.debug.plist"
+ airdrop = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.sharingd.plist"
+
+ # Internal Options
+ global_prefs = "InternalOptions/ManagedPreferencesDomain/mobile/hiddendotGlobalPreferences.plist"
+ app_store = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.AppStore.plist"
+ backboardd = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.backboardd.plist"
+ core_motion = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.CoreMotion.plist"
+ pasteboard = "InternalOptions/HomeDomain/Library/Preferences/com.apple.Pasteboard.plist"
+ notes = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.mobilenotes.plist"
+ maps = "InternalOptions/AppDomain-com.apple.Maps/Library/Preferences/com.apple.Maps.plist"
+ weather = "InternalOptions/AppDomain-com.apple.weather/Library/Preferences/com.apple.weather.plist"
+
+ # Setup Options
+ cloud_config = "SkipSetup/ConfigProfileDomain/Library/ConfigurationProfiles/CloudConfigurationDetails.plist"
\ No newline at end of file
diff --git a/devicemanagement/data_singleton.py b/devicemanagement/data_singleton.py
new file mode 100644
index 0000000..c330de6
--- /dev/null
+++ b/devicemanagement/data_singleton.py
@@ -0,0 +1,9 @@
+from pathlib import Path
+
+from devicemanagement.constants import Device, Tweak
+
+class DataSingleton:
+ def __init__(self):
+ self.current_device: Device
+ self.device_available: bool = False
+ self.gestalt_path = None
\ No newline at end of file
diff --git a/devicemanagement/device_manager.py b/devicemanagement/device_manager.py
new file mode 100644
index 0000000..baaf9b7
--- /dev/null
+++ b/devicemanagement/device_manager.py
@@ -0,0 +1,182 @@
+import traceback
+import plistlib
+from pathlib import Path
+
+from PySide6.QtWidgets import QMessageBox
+
+from pymobiledevice3 import usbmux
+from pymobiledevice3.lockdown import create_using_usbmux
+
+from devicemanagement.constants import Device, Version
+from devicemanagement.data_singleton import DataSingleton
+
+from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak
+from exploit.restore import restore_files, FileToRestore
+
+def show_error_msg(txt: str):
+ detailsBox = QMessageBox()
+ detailsBox.setIcon(QMessageBox.Critical)
+ detailsBox.setWindowTitle("Error!")
+ detailsBox.setText(txt)
+ detailsBox.setDetailedText(str(traceback.format_exc()))
+ detailsBox.exec()
+
+class DeviceManager:
+ min_version: Version = Version("17")
+
+ ## Class Functions
+ def __init__(self):
+ self.devices: list[Device] = []
+ self.data_singleton = DataSingleton()
+ self.current_device_index = 0
+ self.apply_over_wifi = True
+
+ def get_devices(self):
+ self.devices.clear()
+ connected_devices = usbmux.list_devices()
+ # Connect via usbmuxd
+ for device in connected_devices:
+ if self.apply_over_wifi or device.is_usb:
+ try:
+ ld = create_using_usbmux(serial=device.serial)
+ vals = ld.all_values
+ dev = Device(
+ uuid=device.serial,
+ name=vals['DeviceName'],
+ version=vals['ProductVersion'],
+ model=vals['ProductType'],
+ locale=ld.locale,
+ ld=ld
+ )
+ self.devices.append(dev)
+ except Exception as e:
+ print(f"ERROR with lockdown device with UUID {device.serial}")
+ show_error_msg(type(e).__name__)
+
+ if len(connected_devices) > 0:
+ self.set_current_device(index=0)
+ else:
+ self.set_current_device(index=None)
+
+ ## CURRENT DEVICE
+ def set_current_device(self, index: int = None):
+ if index == None:
+ self.data_singleton.current_device = None
+ self.data_singleton.device_available = False
+ self.data_singleton.gestalt_path = None
+ self.current_device_index = 0
+ else:
+ self.data_singleton.current_device = self.devices[index]
+ if Version(self.devices[index].version) < DeviceManager.min_version:
+ self.data_singleton.device_available = False
+ self.data_singleton.gestalt_path = None
+ else:
+ self.data_singleton.device_available = True
+ self.current_device_index = index
+
+ def get_current_device_name(self) -> str:
+ if self.data_singleton.current_device == None:
+ return "No Device"
+ else:
+ return self.data_singleton.current_device.name
+
+ def get_current_device_version(self) -> str:
+ if self.data_singleton.current_device == None:
+ return ""
+ else:
+ return self.data_singleton.current_device.version
+
+ def get_current_device_uuid(self) -> str:
+ if self.data_singleton.current_device == None:
+ return ""
+ else:
+ return self.data_singleton.current_device.uuid
+
+
+ ## APPLYING OR REMOVING TWEAKS AND RESTORING
+ def apply_changes(self, resetting: bool = False, update_label=lambda x: None):
+ # set the tweaks and apply
+ # first open the file in read mode
+ update_label("Applying changes to files...")
+ gestalt_plist = None
+ if self.data_singleton.gestalt_path != None:
+ with open(self.data_singleton.gestalt_path, 'rb') as in_fp:
+ gestalt_plist = plistlib.load(in_fp)
+ # create the other plists
+ flag_plist: dict = {}
+ eligibility_files = None
+
+ # set the plist keys
+ if not resetting:
+ for tweak_name in tweaks:
+ tweak = tweaks[tweak_name]
+ if isinstance(tweak, FeatureFlagTweak):
+ flag_plist = tweak.apply_tweak(flag_plist)
+ elif isinstance(tweak, EligibilityTweak):
+ eligibility_files = tweak.apply_tweak()
+ else:
+ if gestalt_plist != None:
+ gestalt_plist = tweak.apply_tweak(gestalt_plist)
+
+ # Generate backup
+ update_label("Generating backup...")
+ # create the restore file list
+ files_to_restore = [
+ FileToRestore(
+ contents=plistlib.dumps(flag_plist),
+ restore_path="/var/preferences/FeatureFlags/",
+ restore_name="Global.plist"
+ )
+ ]
+ if gestalt_plist != None:
+ files_to_restore.append(FileToRestore(
+ contents=plistlib.dumps(gestalt_plist),
+ restore_path="/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/",
+ restore_name="com.apple.MobileGestalt.plist"
+ ))
+ if eligibility_files:
+ files_to_restore += eligibility_files
+
+ # restore to the device
+ update_label("Restoring to device...")
+ try:
+ restore_files(files=files_to_restore, reboot=True, lockdown_client=self.data_singleton.current_device.ld)
+ QMessageBox.information(None, "Success!", "All done! Your device will now restart.")
+ update_label("Success!")
+ except Exception as e:
+ if "Find My" in str(e):
+ detailsBox = QMessageBox()
+ detailsBox.setIcon(QMessageBox.Critical)
+ detailsBox.setWindowTitle("Error!")
+ detailsBox.setText("Find My must be disabled in order to use this tool.")
+ detailsBox.setDetailedText("Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
+ detailsBox.exec()
+ else:
+ print(traceback.format_exc())
+ update_label("Failed to restore")
+ show_error_msg(type(e).__name__)
+
+ ## RESETTING MOBILE GESTALT
+ def reset_mobilegestalt(self, update_label=lambda x: None):
+ # restore to the device
+ update_label("Restoring to device...")
+ try:
+ restore_files(files=[FileToRestore(
+ contents=b"",
+ restore_path="/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/",
+ restore_name="com.apple.MobileGestalt.plist"
+ )], reboot=True, lockdown_client=self.data_singleton.current_device.ld)
+ QMessageBox.information(None, "Success!", "All done! Your device will now restart.")
+ update_label("Success!")
+ except Exception as e:
+ if "Find My" in str(e):
+ detailsBox = QMessageBox()
+ detailsBox.setIcon(QMessageBox.Critical)
+ detailsBox.setWindowTitle("Error!")
+ detailsBox.setText("Find My must be disabled in order to use this tool.")
+ detailsBox.setDetailedText("Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
+ detailsBox.exec()
+ else:
+ print(traceback.format_exc())
+ update_label("Failed to restore")
+ show_error_msg(type(e).__name__)
diff --git a/exploit/__init__.py b/exploit/__init__.py
index 36297c8..0c037de 100644
--- a/exploit/__init__.py
+++ b/exploit/__init__.py
@@ -1 +1,33 @@
-from . import backup
\ No newline at end of file
+from tempfile import TemporaryDirectory
+from pathlib import Path
+
+from pymobiledevice3.lockdown import create_using_usbmux
+from pymobiledevice3.services.mobilebackup2 import Mobilebackup2Service
+from pymobiledevice3.exceptions import PyMobileDevice3Exception
+from pymobiledevice3.services.diagnostics import DiagnosticsService
+from pymobiledevice3.lockdown import LockdownClient
+
+from . import backup
+
+def perform_restore(backup: backup.Backup, reboot: bool = False, lockdown_client: LockdownClient = None):
+ try:
+ with TemporaryDirectory() as backup_dir:
+ backup.write_to_directory(Path(backup_dir))
+
+ if lockdown_client == None:
+ lockdown_client = create_using_usbmux()
+ with Mobilebackup2Service(lockdown_client) as mb:
+ mb.restore(backup_dir, system=True, reboot=False, copy=False, source=".")
+ except PyMobileDevice3Exception as e:
+ if "Find My" in str(e):
+ print("Find My must be disabled in order to use this tool.")
+ print("Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
+ raise e
+ elif "crash_on_purpose" not in str(e):
+ raise e
+ else:
+ if reboot and lockdown_client != None:
+ print("Success! Rebooting your device...")
+ with DiagnosticsService(lockdown_client) as diagnostics_service:
+ diagnostics_service.restart()
+ print("Remember to turn Find My back on!")
\ No newline at end of file
diff --git a/exploit/__pycache__/__init__.cpython-312.pyc b/exploit/__pycache__/__init__.cpython-312.pyc
index 66a9a06..e418ec0 100644
Binary files a/exploit/__pycache__/__init__.cpython-312.pyc and b/exploit/__pycache__/__init__.cpython-312.pyc differ
diff --git a/exploit/__pycache__/backup.cpython-312.pyc b/exploit/__pycache__/backup.cpython-312.pyc
index 023ac03..b69d840 100644
Binary files a/exploit/__pycache__/backup.cpython-312.pyc and b/exploit/__pycache__/backup.cpython-312.pyc differ
diff --git a/exploit/__pycache__/mbdb.cpython-312.pyc b/exploit/__pycache__/mbdb.cpython-312.pyc
index 4043224..b5275f3 100644
Binary files a/exploit/__pycache__/mbdb.cpython-312.pyc and b/exploit/__pycache__/mbdb.cpython-312.pyc differ
diff --git a/exploit/__pycache__/restore.cpython-312.pyc b/exploit/__pycache__/restore.cpython-312.pyc
index b406837..3c27278 100644
Binary files a/exploit/__pycache__/restore.cpython-312.pyc and b/exploit/__pycache__/restore.cpython-312.pyc differ
diff --git a/exploit/restore.py b/exploit/restore.py
index 572efea..8d4e206 100644
--- a/exploit/restore.py
+++ b/exploit/restore.py
@@ -1,31 +1,113 @@
-from exploit import backup
-from pymobiledevice3.lockdown import create_using_usbmux
-from pymobiledevice3.services.mobilebackup2 import Mobilebackup2Service
-from tempfile import TemporaryDirectory
-from pathlib import Path
+from . import backup, perform_restore
+from pymobiledevice3.lockdown import LockdownClient
-def restore_file(fp: str, restore_path: str, restore_name: str):
+class FileToRestore:
+ def __init__(self, contents: str, restore_path: str, restore_name: str, owner: int = 501, group: int = 501):
+ self.contents = contents
+ self.restore_path = restore_path
+ self.restore_name = restore_name
+ self.owner = owner
+ self.group = group
+
+# files is a list of FileToRestore objects
+def restore_files(files: list, reboot: bool = False, lockdown_client: LockdownClient = None):
+ # create the files to be backed up
+ files_list = [
+ backup.Directory("", "RootDomain"),
+ backup.Directory("Library", "RootDomain"),
+ backup.Directory("Library/Preferences", "RootDomain"),
+ ]
+ # create the links
+ for file_num in range(len(files)):
+ files_list.append(backup.ConcreteFile(
+ f"Library/Preferences/temp{file_num}",
+ "RootDomain",
+ owner=files[file_num].owner,
+ group=files[file_num].group,
+ contents=files[file_num].contents,
+ inode=file_num
+ ))
+ # add the file paths
+ for file_num in range(len(files)):
+ file = files[file_num]
+ base_path = "/var/backup"
+ # set it to work in the separate volumes (prevents a bootloop)
+ if file.restore_path.startswith("/var/mobile/"):
+ # required on iOS 17.0+ since /var/mobile is on a separate partition
+ base_path = "/var/mobile/backup"
+ elif file.restore_path.startswith("/private/var/mobile/"):
+ base_path = "/private/var/mobile/backup"
+ elif file.restore_path.startswith("/private/var/"):
+ base_path = "/private/var/backup"
+ files_list.append(backup.Directory(
+ "",
+ f"SysContainerDomain-../../../../../../../..{base_path}{file.restore_path}",
+ owner=file.owner,
+ group=file.group
+ ))
+ files_list.append(backup.ConcreteFile(
+ "",
+ f"SysContainerDomain-../../../../../../../..{base_path}{file.restore_path}{file.restore_name}",
+ owner=file.owner,
+ group=file.group,
+ contents=b"",
+ inode=file_num
+ ))
+ # break the hard links
+ for file_num in range(len(files)):
+ files_list.append(backup.ConcreteFile(
+ "",
+ f"SysContainerDomain-../../../../../../../../var/.backup.i/var/root/Library/Preferences/temp{file_num}",
+ owner=501,
+ group=501,
+ contents=b"",
+ )) # Break the hard link
+ files_list.append(backup.ConcreteFile("", "SysContainerDomain-../../../../../../../.." + "/crash_on_purpose", contents=b""))
+
+ # create the backup
+ back = backup.Backup(files=files_list)
+
+ perform_restore(backup=back, reboot=reboot, lockdown_client=lockdown_client)
+
+
+def restore_file(fp: str, restore_path: str, restore_name: str, reboot: bool = False, lockdown_client: LockdownClient = None):
# open the file and read the contents
contents = open(fp, "rb").read()
+ base_path = "/var/backup"
+ if restore_path.startswith("/var/mobile/"):
+ # required on iOS 17.0+ since /var/mobile is on a separate partition
+ base_path = "/var/mobile/backup"
+
# create the backup
back = backup.Backup(files=[
- backup.Directory("", "RootDomain", owner=501, group=501),
- backup.Directory("Library", "RootDomain", owner=501, group=501),
- backup.Directory("Library/Preferences", "RootDomain", owner=501, group=501),
- backup.ConcreteFile("Library/Preferences/Hello", "RootDomain", owner=501, group=501, contents=contents),
- backup.Directory("", f"SysContainerDomain-../../../../../../../../var/.backup.i{restore_path}", owner=501, group=501),
- backup.ConcreteFile("", f"SysContainerDomain-../../../../../../../../var/.backup.i{restore_path}{restore_name}", owner=501, group=501, contents=contents),
- backup.Directory("", "SysContainerDomain-../../../../../../../../var/.backup.i/var/root/Library/Preferences/Hello", owner=501, group=501),
+ # backup.Directory("", "HomeDomain"),
+ # backup.Directory("Library", "HomeDomain"),
+ # backup.Directory("Library/Preferences", "HomeDomain"),
+ # backup.ConcreteFile("Library/Preferences/temp", "HomeDomain", owner=501, group=501, contents=contents, inode=0),
+ backup.Directory(
+ "",
+ f"HomeDomain-../../../../../../..{base_path}{restore_path}",
+ owner=501,
+ group=501
+ ),
+ backup.ConcreteFile(
+ "",
+ f"HomeDomain-../../../../../../..{base_path}{restore_path}{restore_name}",
+ owner=501,
+ group=501,
+ contents=contents#b"",
+ # inode=0
+ ),
+ # backup.ConcreteFile(
+ # "",
+ # "SysContainerDomain-../../../../../../../../var/.backup.i/var/root/Library/Preferences/temp",
+ # owner=501,
+ # group=501,
+ # contents=b"",
+ # ), # Break the hard link
+ backup.ConcreteFile("", "SysContainerDomain-../../../../../../../.." + "/crash_on_purpose", contents=b""),
])
- # get a temporary dir to store the backup
- with TemporaryDirectory() as backup_dir:
- backup_dir_path = Path(backup_dir)
- back.write_to_directory(backup_dir_path)
- print(f"Backup written to {backup_dir}")
- input("Press Enter to continue...")
-
- lockdown = create_using_usbmux()
- with Mobilebackup2Service(lockdown) as mb:
- mb.restore(backup_dir, system=True, reboot=False, copy=False, source=".")
\ No newline at end of file
+
+ perform_restore(backup=back, reboot=reboot, lockdown_client=lockdown_client)
\ No newline at end of file
diff --git a/files/eligibility/Config.plist b/files/eligibility/Config.plist
new file mode 100644
index 0000000..bf8605b
Binary files /dev/null and b/files/eligibility/Config.plist differ
diff --git a/files/eligibility/eligibility.plist b/files/eligibility/eligibility.plist
new file mode 100644
index 0000000..2006e0b
--- /dev/null
+++ b/files/eligibility/eligibility.plist
@@ -0,0 +1,546 @@
+
+
+
+
+ OS_ELIGIBILITY_DOMAIN_ALUMINUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_ARGON
+
+ os_eligibility_answer_source_t
+ 4
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 4
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 4
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 4
+
+
+ OS_ELIGIBILITY_DOMAIN_BERYLLIUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_BORON
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_CARBON
+
+ os_eligibility_answer_source_t
+ 4
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 4
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 4
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 4
+
+
+ OS_ELIGIBILITY_DOMAIN_CHLORINE
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+ OS_ELIGIBILITY_INPUT_DEVICE_LOCALE
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_CHROMIUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_COBALT
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_COPPER
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+
+ OS_ELIGIBILITY_DOMAIN_FLUORINE
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_HELIUM
+
+ os_eligibility_answer_source_t
+ 4
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 4
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 4
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 4
+
+
+ OS_ELIGIBILITY_DOMAIN_HYDROGEN
+
+ os_eligibility_answer_source_t
+ 4
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 4
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 4
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 4
+
+
+ OS_ELIGIBILITY_DOMAIN_IRON
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 3
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_KRYPTON
+
+ context
+
+ OS_ELIGIBILITY_CONTEXT_COUNTRY_BILLING
+ US
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_LITHIUM
+
+ os_eligibility_answer_source_t
+ 4
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 4
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 4
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 4
+
+
+ OS_ELIGIBILITY_DOMAIN_LOTX
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_MAGNESIUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_MANGANESE
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_NEON
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 3
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_NICKEL
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_LOCALE
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_NITROGEN
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_OXYGEN
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 3
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_PHOSPHORUS
+
+ context
+
+ OS_ELIGIBILITY_CONTEXT_COUNTRY_BILLING
+ US
+
+ os_eligibility_answer_source_t
+ 4
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 4
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 4
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 4
+
+
+ OS_ELIGIBILITY_DOMAIN_PODCASTS_TRANSCRIPTS
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_POTASSIUM
+
+ os_eligibility_answer_source_t
+ 4
+ os_eligibility_answer_t
+ 4
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 4
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 4
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 4
+
+
+ OS_ELIGIBILITY_DOMAIN_SCANDIUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_SEARCH_MARKETPLACES
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_SILICON
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_SODIUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+
+
+ OS_ELIGIBILITY_DOMAIN_SULFUR
+
+ context
+
+ OS_ELIGIBILITY_CONTEXT_COUNTRY_BILLING
+ US
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_SWIFT_ASSIST
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_REGION_CODE
+ 3
+ OS_ELIGIBILITY_INPUT_EXTERNAL_BOOT_DRIVE
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_TITANIUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_VANADIUM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_COUNTRY_LOCATION
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_XCODE_LLM
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_DEVICE_CLASS
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_REGION_CODE
+ 3
+ OS_ELIGIBILITY_INPUT_EXTERNAL_BOOT_DRIVE
+ 3
+
+
+ OS_ELIGIBILITY_DOMAIN_ZINC
+
+ os_eligibility_answer_source_t
+ 1
+ os_eligibility_answer_t
+ 2
+ status
+
+ OS_ELIGIBILITY_INPUT_COUNTRY_BILLING
+ 2
+ OS_ELIGIBILITY_INPUT_DEVICE_LANGUAGE
+ 2
+
+
+
+
diff --git a/gui/__init__.py b/gui/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/gui/__pycache__/__init__.cpython-312.pyc b/gui/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000..8b12a73
Binary files /dev/null and b/gui/__pycache__/__init__.cpython-312.pyc differ
diff --git a/gui/__pycache__/gestalt_dialog.cpython-312.pyc b/gui/__pycache__/gestalt_dialog.cpython-312.pyc
new file mode 100644
index 0000000..c210875
Binary files /dev/null and b/gui/__pycache__/gestalt_dialog.cpython-312.pyc differ
diff --git a/gui/__pycache__/main_window.cpython-312.pyc b/gui/__pycache__/main_window.cpython-312.pyc
new file mode 100644
index 0000000..c21eb9b
Binary files /dev/null and b/gui/__pycache__/main_window.cpython-312.pyc differ
diff --git a/gui/__pycache__/ui_mainwindow.cpython-312.pyc b/gui/__pycache__/ui_mainwindow.cpython-312.pyc
new file mode 100644
index 0000000..6030973
Binary files /dev/null and b/gui/__pycache__/ui_mainwindow.cpython-312.pyc differ
diff --git a/gui/gestalt_dialog.py b/gui/gestalt_dialog.py
new file mode 100644
index 0000000..78d7edf
--- /dev/null
+++ b/gui/gestalt_dialog.py
@@ -0,0 +1,27 @@
+from PySide6.QtWidgets import QDialog, QDialogButtonBox, QLabel, QVBoxLayout
+
+class GestaltDialog(QDialog):
+ def __init__(self, device_manager, gestalt_label, selected_file, parent=None):
+ super().__init__(parent)
+ self.device_manager = device_manager
+ self.gestalt_label = gestalt_label
+ self.selected_file = selected_file
+
+ QBtn = (
+ QDialogButtonBox.Ok | QDialogButtonBox.Cancel
+ )
+
+ self.buttonBox = QDialogButtonBox(QBtn)
+ self.buttonBox.accepted.connect(self.accept)
+ self.buttonBox.rejected.connect(self.reject)
+
+ layout = QVBoxLayout()
+ message = QLabel("The gestalt file looks like it was made for a different device.\nAre you sure you want to use this one?")
+ layout.addWidget(message)
+ layout.addWidget(self.buttonBox)
+ self.setLayout(layout)
+
+ def accept(self):
+ self.device_manager.data_singleton.gestalt_path = self.selected_file
+ self.gestalt_label.setText(self.selected_file)
+ super().accept()
\ No newline at end of file
diff --git a/gui/main_window.py b/gui/main_window.py
new file mode 100644
index 0000000..8719229
--- /dev/null
+++ b/gui/main_window.py
@@ -0,0 +1,413 @@
+from PySide6 import QtCore, QtWidgets
+from enum import Enum
+import webbrowser
+import plistlib
+
+from pymobiledevice3.lockdown import create_using_usbmux
+
+from qt.ui_mainwindow import Ui_Nugget
+
+from devicemanagement.constants import Version
+from devicemanagement.device_manager import DeviceManager
+
+from gui.gestalt_dialog import GestaltDialog
+
+from tweaks.tweaks import tweaks
+
+class Page(Enum):
+ Home = 0
+ Explore = 1
+ LocSim = 2
+ CustomOperations = 5
+ Themes = 3
+ Gestalt = 4
+ Settings = 6
+ FeatureFlags = 7
+ EUEnabler = 8
+ Apply = 9
+
+class MainWindow(QtWidgets.QMainWindow):
+ def __init__(self, device_manager: DeviceManager):
+ super(MainWindow, self).__init__()
+ self.device_manager = device_manager
+ self.ui = Ui_Nugget()
+ self.ui.setupUi(self)
+ self.show_uuid = False
+ self.loadSettings()
+
+ ## DEVICE BAR
+ self.refresh_devices()
+
+ self.ui.refreshBtn.clicked.connect(self.refresh_devices)
+ self.ui.devicePicker.currentIndexChanged.connect(self.change_selected_device)
+
+ ## SIDE BAR ACTIONS
+ self.ui.homePageBtn.clicked.connect(self.on_homePageBtn_clicked)
+ self.ui.gestaltPageBtn.clicked.connect(self.on_gestaltPageBtn_clicked)
+ self.ui.featureFlagsPageBtn.clicked.connect(self.on_featureFlagsPageBtn_clicked)
+ self.ui.euEnablerPageBtn.clicked.connect(self.on_euEnablerPageBtn_clicked)
+ self.ui.applyPageBtn.clicked.connect(self.on_applyPageBtn_clicked)
+ self.ui.settingsPageBtn.clicked.connect(self.on_settingsPageBtn_clicked)
+
+ ## HOME PAGE ACTIONS
+ self.ui.phoneVersionLbl.linkActivated.connect(self.toggle_version_label)
+
+ ## HOME PAGE LINKS
+ self.ui.bigNuggetBtn.clicked.connect(self.on_bigNuggetBtn_clicked)
+
+ # self.ui.leminGitHubBtn.clicked.connect(self.on_leminGitHubBtn_clicked)
+ self.ui.leminTwitterBtn.clicked.connect(self.on_leminTwitterBtn_clicked)
+ self.ui.leminKoFiBtn.clicked.connect(self.on_leminKoFiBtn_clicked)
+
+ self.ui.jjtechBtn.clicked.connect(self.on_jjtechBtn_clicked)
+ self.ui.disfordottieBtn.clicked.connect(self.on_disfordottieBtn_clicked)
+ self.ui.lrdsnowBtn.clicked.connect(self.on_lrdsnowBtn_clicked)
+
+ self.ui.libiBtn.clicked.connect(self.on_libiBtn_clicked)
+ self.ui.qtBtn.clicked.connect(self.on_qtBtn_clicked)
+
+ self.ui.discordBtn.clicked.connect(self.on_discordBtn_clicked)
+
+ ## EU ENABLER PAGE ACTIONS
+ self.ui.euEnablerEnabledChk.toggled.connect(self.on_euEnablerEnabledChk_toggled)
+ self.ui.methodChoiceDrp.activated.connect(self.on_methodChoiceDrp_activated)
+ self.ui.regionCodeTxt.textEdited.connect(self.on_regionCodeTxt_textEdited)
+
+ ## FEATURE FLAGS PAGE
+ self.ui.clockAnimChk.toggled.connect(self.on_clockAnimChk_toggled)
+ self.ui.lockscreenChk.toggled.connect(self.on_lockscreenChk_clicked)
+ self.ui.photosChk.toggled.connect(self.on_photosChk_clicked)
+ self.ui.aiChk.toggled.connect(self.on_aiChk_clicked)
+
+ ## APPLY PAGE ACTIONS
+ self.ui.applyTweaksBtn.clicked.connect(self.on_applyPageBtn_clicked)
+ self.ui.removeTweaksBtn.clicked.connect(self.on_removeTweaksBtn_clicked)
+ self.ui.chooseGestaltBtn.clicked.connect(self.on_chooseGestaltBtn_clicked)
+ self.ui.resetGestaltBtn.clicked.connect(self.on_resetGestaltBtn_clicked)
+
+ ## MOBILE GESTALT PAGE ACTIONS
+ self.ui.dynamicIslandDrp.activated.connect(self.on_dynamicIslandDrp_activated)
+ self.ui.modelNameChk.toggled.connect(self.on_modelNameChk_clicked)
+ self.ui.modelNameTxt.textEdited.connect(self.on_modelNameTxt_textEdited)
+
+ self.ui.bootChimeChk.clicked.connect(self.on_bootChimeChk_clicked)
+ self.ui.chargeLimitChk.clicked.connect(self.on_chargeLimitChk_clicked)
+ self.ui.tapToWakeChk.clicked.connect(self.on_tapToWakeChk_clicked)
+ self.ui.iphone16SettingsChk.clicked.connect(self.on_iphone16SettingsChk_clicked)
+ self.ui.parallaxChk.clicked.connect(self.on_parallaxChk_clicked)
+ self.ui.stageManagerChk.clicked.connect(self.on_stageManagerChk_clicked)
+ self.ui.ipadAppsChk.clicked.connect(self.on_ipadAppsChk_clicked)
+ self.ui.shutterChk.clicked.connect(self.on_shutterChk_clicked)
+ self.ui.pencilChk.clicked.connect(self.on_pencilChk_clicked)
+ self.ui.actionButtonChk.clicked.connect(self.on_actionButtonChk_clicked)
+
+ self.ui.internalInstallChk.clicked.connect(self.on_internalInstallChk_clicked)
+ self.ui.internalStorageChk.clicked.connect(self.on_internalStorageChk_clicked)
+ self.ui.collisionSOSChk.clicked.connect(self.on_collisionSOSChk_clicked)
+ self.ui.aodChk.clicked.connect(self.on_aodChk_clicked)
+ self.ui.sleepApneaChk.clicked.connect(self.on_sleepApneaChk_clicked)
+
+
+ ## GENERAL INTERFACE FUNCTIONS
+ def updateInterfaceForNewDevice(self):
+ # update the home page
+ self.updatePhoneInfo()
+
+
+ ## DEVICE BAR FUNCTIONS
+ @QtCore.Slot()
+ def refresh_devices(self):
+ # get the devices
+ self.device_manager.get_devices()
+ # clear the picker
+ self.ui.devicePicker.clear()
+ self.ui.restoreProgressBar.hide()
+ if len(self.device_manager.devices) == 0:
+ self.ui.devicePicker.setEnabled(False)
+ self.ui.devicePicker.addItem('None')
+ self.ui.pages.setCurrentIndex(Page.Home.value)
+ self.ui.homePageBtn.setChecked(True)
+
+ # hide all pages
+ self.ui.explorePageBtn.hide()
+ self.ui.customOperationsPageBtn.hide()
+ self.ui.locSimPageBtn.hide()
+ self.ui.sidebarDiv1.hide()
+ self.ui.gestaltPageBtn.hide()
+ self.ui.featureFlagsPageBtn.hide()
+ self.ui.euEnablerPageBtn.hide()
+ self.ui.internalOptionsPageBtn.hide()
+ self.ui.sidebarDiv2.hide()
+ self.ui.applyPageBtn.hide()
+ else:
+ self.ui.devicePicker.setEnabled(True)
+ # populate the ComboBox with device names
+ for device in self.device_manager.devices:
+ self.ui.devicePicker.addItem(device.name)
+
+ # show all pages
+ self.ui.explorePageBtn.hide()
+ self.ui.customOperationsPageBtn.hide()
+ self.ui.locSimPageBtn.hide()
+ self.ui.sidebarDiv1.show()
+ self.ui.gestaltPageBtn.show()
+ # self.ui.featureFlagsPageBtn.show()
+ self.ui.euEnablerPageBtn.show()
+ self.ui.internalOptionsPageBtn.hide()
+ self.ui.sidebarDiv2.show()
+ self.ui.applyPageBtn.show()
+ self.ui.gestaltPageContent.setDisabled(False)
+ self.ui.featureFlagsPageContent.setDisabled(False)
+
+ # update the selected device
+ self.ui.devicePicker.setCurrentIndex(0)
+ self.change_selected_device(0)
+
+ # update the interface
+ self.updateInterfaceForNewDevice()
+
+ def change_selected_device(self, index):
+ if len(self.device_manager.devices) > 0:
+ self.device_manager.set_current_device(index=index)
+ # hide options that are for newer versions
+ # remove the new dynamic island options
+ try:
+ self.ui.dynamicIslandDrp.removeItem(6)
+ self.ui.dynamicIslandDrp.removeItem(5)
+ except:
+ pass
+ if Version(self.device_manager.data_singleton.current_device.version) >= Version("18.0"):
+ self.ui.aodChk.show()
+ self.ui.sleepApneaChk.show()
+ self.ui.featureFlagsPageBtn.show()
+ # show the other dynamic island options
+ self.ui.dynamicIslandDrp.addItem("2622 (iPhone 16 Pro Dynamic Island)")
+ self.ui.dynamicIslandDrp.addItem("2868 (iPhone 16 Pro Max Dynamic Island)")
+ else:
+ self.ui.aodChk.hide()
+ self.ui.sleepApneaChk.hide()
+ self.ui.featureFlagsPageBtn.hide()
+ else:
+ self.device_manager.set_current_device(index=None)
+ self.ui.featureFlagsPageBtn.hide()
+
+ def loadSettings(self):
+ self.settings = QtCore.QSettings()
+ try:
+ # load the settings
+ apply_over_wifi = self.settings.value("apply_over_wifi", True, type=bool)
+ self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi)
+ self.device_manager.apply_over_wifi = apply_over_wifi
+ except:
+ pass
+
+
+ ## SIDE BAR FUNCTIONS
+ def on_homePageBtn_clicked(self):
+ self.ui.pages.setCurrentIndex(Page.Home.value)
+
+ def on_gestaltPageBtn_clicked(self):
+ self.ui.pages.setCurrentIndex(Page.Gestalt.value)
+
+ def on_featureFlagsPageBtn_clicked(self):
+ self.ui.pages.setCurrentIndex(Page.FeatureFlags.value)
+
+ def on_euEnablerPageBtn_clicked(self):
+ self.ui.pages.setCurrentIndex(Page.EUEnabler.value)
+
+ def on_applyPageBtn_clicked(self):
+ self.ui.pages.setCurrentIndex(Page.Apply.value)
+
+ def on_settingsPageBtn_clicked(self):
+ self.ui.pages.setCurrentIndex(Page.Settings.value)
+
+ def update_side_btn_color(self, btn: QtWidgets.QToolButton, toggled: bool):
+ if toggled:
+ btn.setStyleSheet("QToolButton {\ncolor: #00FF00;\n}")
+ else:
+ btn.setStyleSheet("")
+
+
+ ## HOME PAGE
+ def updatePhoneInfo(self):
+ # name label
+ self.ui.phoneNameLbl.setText(self.device_manager.get_current_device_name())
+ # version label
+ ver = self.device_manager.get_current_device_version()
+ self.show_uuid = False
+ if ver != "":
+ self.show_version_text(version=ver)
+ else:
+ self.ui.phoneVersionLbl.setText("Please connect a device.")
+
+ def toggle_version_label(self):
+ if self.show_uuid:
+ self.show_uuid = False
+ ver = self.device_manager.get_current_device_version()
+ if ver != "":
+ self.show_version_text(version=ver)
+ else:
+ self.show_uuid = True
+ uuid = self.device_manager.get_current_device_uuid()
+ if uuid != "":
+ self.ui.phoneVersionLbl.setText(f"{uuid}")
+
+ def show_version_text(self, version: str):
+ parsed_ver: Version = Version(version)
+ support_str: str = "Supported!"
+ if parsed_ver < DeviceManager.min_version:
+ support_str = "Not Supported."
+ self.ui.phoneVersionLbl.setText(f"iOS {version} {support_str}")
+
+ ## HOME PAGE LINKS
+ def on_bigMilkBtn_clicked(self):
+ webbrowser.open_new_tab("https://cowabun.ga")
+
+ def on_leminGitHubBtn_clicked(self):
+ webbrowser.open_new_tab("https://github.com/leminlimez")
+ def on_leminTwitterBtn_clicked(self):
+ webbrowser.open_new_tab("https://twitter.com/LeminLimez")
+ def on_leminKoFiBtn_clicked(self):
+ webbrowser.open_new_tab("https://ko-fi.com/leminlimez")
+
+ def on_jjtechBtn_clicked(self):
+ webbrowser.open_new_tab("https://github.com/JJTech0130/TrollRestore")
+ def on_disfordottieBtn_clicked(self):
+ webbrowser.open_new_tab("https://twitter.com/disfordottie")
+ def on_lrdsnowBtn_clicked(self):
+ webbrowser.open_new_tab("https://github.com/Lrdsnow/EUEnabler")
+
+ def on_libiBtn_clicked(self):
+ webbrowser.open_new_tab("https://github.com/doronz88/pymobiledevice3")
+ def on_qtBtn_clicked(self):
+ webbrowser.open_new_tab("https://www.qt.io/product/development-tools")
+
+ def on_discordBtn_clicked(self):
+ webbrowser.open_new_tab("https://discord.gg/MN8JgqSAqT")
+ def on_bigNuggetBtn_clicked(self):
+ webbrowser.open_new_tab("https://cowabun.ga")
+
+
+ ## MOBILE GESTALT PAGE
+ def on_dynamicIslandDrp_activated(self, index: int):
+ if index == 0:
+ tweaks["DynamicIsland"].set_enabled(False)
+ else:
+ tweaks["DynamicIsland"].set_selected_option(index - 1)
+
+ def on_modelNameChk_clicked(self, checked: bool):
+ tweaks["ModelName"].set_enabled(checked)
+ def on_modelNameTxt_textEdited(self, text: str):
+ tweaks["ModelName"].set_value(text, toggle_enabled=False)
+
+ def on_bootChimeChk_clicked(self, checked: bool):
+ tweaks["BootChime"].set_enabled(checked)
+ def on_chargeLimitChk_clicked(self, checked: bool):
+ tweaks["ChargeLimit"].set_enabled(checked)
+ def on_tapToWakeChk_clicked(self, checked: bool):
+ tweaks["TapToWake"].set_enabled(checked)
+ def on_iphone16SettingsChk_clicked(self, checked: bool):
+ tweaks["CameraButton"].set_enabled(checked)
+ def on_parallaxChk_clicked(self, checked: bool):
+ tweaks["Parallax"].set_enabled(checked)
+
+ def on_stageManagerChk_clicked(self, checked: bool):
+ tweaks["StageManager"].set_enabled(checked)
+ def on_ipadAppsChk_clicked(self, checked: bool):
+ tweaks["iPadApps"].set_enabled(checked)
+ def on_shutterChk_clicked(self, checked: bool):
+ # TODO: allow the user to select the region
+ tweaks["Shutter"].set_enabled(checked)
+ def on_pencilChk_clicked(self, checked: bool):
+ tweaks["Pencil"].set_enabled(checked)
+ def on_actionButtonChk_clicked(self, checked: bool):
+ tweaks["ActionButton"].set_enabled(checked)
+
+ def on_internalInstallChk_clicked(self, checked: bool):
+ tweaks["InternalInstall"].set_enabled(checked)
+ def on_internalStorageChk_clicked(self, checked: bool):
+ tweaks["InternalStorage"].set_enabled(checked)
+
+ def on_collisionSOSChk_clicked(self, checked: bool):
+ tweaks["CollisionSOS"].set_enabled(checked)
+ def on_aodChk_clicked(self, checked: bool):
+ tweaks["AOD"].set_enabled(checked)
+ def on_sleepApneaChk_clicked(self, checked: bool):
+ tweaks["SleepApnea"].set_enabled(checked)
+
+
+ ## FEATURE FLAGS PAGE
+ def on_clockAnimChk_toggled(self, checked: bool):
+ tweaks["ClockAnim"].set_enabled(checked)
+ def on_lockscreenChk_clicked(self, checked: bool):
+ tweaks["Lockscreen"].set_enabled(checked)
+
+ def on_photosChk_clicked(self, checked: bool):
+ tweaks["PhotoUI"].set_enabled(checked)
+ def on_aiChk_clicked(self, checked: bool):
+ tweaks["AI"].set_enabled(checked)
+
+
+ ## EU ENABLER PAGE
+ def on_euEnablerEnabledChk_toggled(self, checked: bool):
+ tweaks["EUEnabler"].set_enabled(checked)
+ self.ui.euEnablerPageContent.setDisabled(not checked)
+ def on_methodChoiceDrp_activated(self, index: int):
+ tweaks["EUEnabler"].set_selected_option(index)
+ def on_regionCodeTxt_textEdited(self, text: str):
+ tweaks["EUEnabler"].set_region_code(text)
+
+
+ ## SETTINGS PAGE
+ def on_allowWifiApplyingChk_toggled(self, checked: bool):
+ self.device_manager.apply_over_wifi = checked
+ # save the setting
+ self.settings.setValue("apply_over_wifi", checked)
+
+
+ ## APPLY PAGE
+ def on_chooseGestaltBtn_clicked(self):
+ selected_file, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select Mobile Gestalt File", "", "Plist Files (*.plist)", options=QtWidgets.QFileDialog.ReadOnly)
+ if selected_file == "" or selected_file == None:
+ self.device_manager.data_singleton.gestalt_path = None
+ self.ui.gestaltLocationLbl.setText("None")
+ else:
+ # verify that the gestalt is correct and compatible
+ with open(selected_file, 'rb') as in_fp:
+ gestalt_plist = plistlib.load(in_fp)
+ if not "CacheExtra" in gestalt_plist:
+ detailsBox = QtWidgets.QMessageBox()
+ detailsBox.setIcon(QtWidgets.QMessageBox.Critical)
+ detailsBox.setWindowTitle("Error!")
+ detailsBox.setText("The file is not a mobile gestalt file!")
+ detailsBox.exec()
+ return
+ if (
+ not "qNNddlUK+B/YlooNoymwgA" in gestalt_plist["CacheExtra"]
+ or gestalt_plist["CacheExtra"]["qNNddlUK+B/YlooNoymwgA"] != self.device_manager.data_singleton.current_device.version
+ or gestalt_plist["CacheExtra"]["0+nc/Udy4WNG8S+Q7a/s1A"] != self.device_manager.data_singleton.current_device.model
+ or not "0+nc/Udy4WNG8S+Q7a/s1A" in gestalt_plist["CacheExtra"]
+ ):
+ dialog = GestaltDialog(
+ device_manager=self.device_manager,
+ gestalt_label=self.ui.gestaltLocationLbl,
+ selected_file=selected_file
+ )
+ dialog.exec()
+ self.device_manager.data_singleton.gestalt_path = selected_file
+ self.ui.gestaltLocationLbl.setText(selected_file)
+
+ def update_label(self, txt: str):
+ self.ui.statusLbl.setText(txt)
+ def update_bar(self, percent):
+ self.ui.restoreProgressBar.setValue(int(percent))
+ def on_removeTweaksBtn_clicked(self):
+ # TODO: Add safety here
+ self.device_manager.apply_changes(resetting=True, update_label=self.update_label)
+ def on_resetGestaltBtn_clicked(self):
+ self.device_manager.reset_mobilegestalt(update_label=self.update_label)
+
+ @QtCore.Slot()
+ def on_applyTweaksBtn_clicked(self):
+ # TODO: Add safety here
+ self.device_manager.apply_changes(update_label=self.update_label)
diff --git a/icon/app-indicator.svg b/icon/app-indicator.svg
new file mode 100644
index 0000000..fb2ada2
--- /dev/null
+++ b/icon/app-indicator.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/arrow-clockwise.svg b/icon/arrow-clockwise.svg
new file mode 100644
index 0000000..6fa35a6
--- /dev/null
+++ b/icon/arrow-clockwise.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/brush.svg b/icon/brush.svg
new file mode 100644
index 0000000..2768307
--- /dev/null
+++ b/icon/brush.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/caret-down-fill.svg b/icon/caret-down-fill.svg
new file mode 100644
index 0000000..ab2770e
--- /dev/null
+++ b/icon/caret-down-fill.svg
@@ -0,0 +1,3 @@
+
diff --git a/icon/check-circle.svg b/icon/check-circle.svg
new file mode 100644
index 0000000..5c2ef83
--- /dev/null
+++ b/icon/check-circle.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/compass.svg b/icon/compass.svg
new file mode 100644
index 0000000..51b13ff
--- /dev/null
+++ b/icon/compass.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/currency-dollar.svg b/icon/currency-dollar.svg
new file mode 100644
index 0000000..07b2f55
--- /dev/null
+++ b/icon/currency-dollar.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/discord.svg b/icon/discord.svg
new file mode 100644
index 0000000..60d995c
--- /dev/null
+++ b/icon/discord.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/file-earmark-zip.svg b/icon/file-earmark-zip.svg
new file mode 100644
index 0000000..2330876
--- /dev/null
+++ b/icon/file-earmark-zip.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/flag.svg b/icon/flag.svg
new file mode 100644
index 0000000..646648a
--- /dev/null
+++ b/icon/flag.svg
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/icon/folder.svg b/icon/folder.svg
new file mode 100644
index 0000000..54d8b1c
--- /dev/null
+++ b/icon/folder.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/gear.svg b/icon/gear.svg
new file mode 100644
index 0000000..ca8470f
--- /dev/null
+++ b/icon/gear.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/geo-alt.svg b/icon/geo-alt.svg
new file mode 100644
index 0000000..e0df02f
--- /dev/null
+++ b/icon/geo-alt.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/github.svg b/icon/github.svg
new file mode 100644
index 0000000..acf0263
--- /dev/null
+++ b/icon/github.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/hdd.svg b/icon/hdd.svg
new file mode 100644
index 0000000..3de2da4
--- /dev/null
+++ b/icon/hdd.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/heart-fill.svg b/icon/heart-fill.svg
new file mode 100644
index 0000000..75ff70c
--- /dev/null
+++ b/icon/heart-fill.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/house.svg b/icon/house.svg
new file mode 100644
index 0000000..886ecfe
--- /dev/null
+++ b/icon/house.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/import.svg b/icon/import.svg
new file mode 100644
index 0000000..4b3c056
--- /dev/null
+++ b/icon/import.svg
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/icon/iphone-island.svg b/icon/iphone-island.svg
new file mode 100644
index 0000000..33112cf
--- /dev/null
+++ b/icon/iphone-island.svg
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/icon/pencil.svg b/icon/pencil.svg
new file mode 100644
index 0000000..4849bbb
--- /dev/null
+++ b/icon/pencil.svg
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/icon/phone.svg b/icon/phone.svg
new file mode 100644
index 0000000..e77a02f
--- /dev/null
+++ b/icon/phone.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/plus.svg b/icon/plus.svg
new file mode 100644
index 0000000..9fc8d09
--- /dev/null
+++ b/icon/plus.svg
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/icon/star.svg b/icon/star.svg
new file mode 100644
index 0000000..79c5e9d
--- /dev/null
+++ b/icon/star.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/toggles.svg b/icon/toggles.svg
new file mode 100644
index 0000000..7cbfc65
--- /dev/null
+++ b/icon/toggles.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/trash.svg b/icon/trash.svg
new file mode 100644
index 0000000..c153bd2
--- /dev/null
+++ b/icon/trash.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/twitter.svg b/icon/twitter.svg
new file mode 100644
index 0000000..fb29a13
--- /dev/null
+++ b/icon/twitter.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/icon/wifi.svg b/icon/wifi.svg
new file mode 100644
index 0000000..1bd4c43
--- /dev/null
+++ b/icon/wifi.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/icon/x-lg.svg b/icon/x-lg.svg
new file mode 100644
index 0000000..879ef4d
--- /dev/null
+++ b/icon/x-lg.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/main_app.py b/main_app.py
index 77cbbef..0acd001 100644
--- a/main_app.py
+++ b/main_app.py
@@ -1,147 +1,16 @@
-from exploit.restore import restore_file
-from pathlib import Path
-import plistlib
-import traceback
+import sys
+from PySide6 import QtCore, QtWidgets
-running = True
-passed_check = False
-# tweaks
-dynamic_island_enabled = False
-current_model_name = ""
-boot_chime_enabled = False
-charge_limit_enabled = False
-stage_manager_enabled = False
-shutter_sound_enabled = False
-always_on_display_enabled = False
-apple_pencil_enabled = False
-action_button_enabled = False
-internal_storage_enabled = False
+from gui.main_window import MainWindow
+from devicemanagement.device_manager import DeviceManager
-gestalt_path = Path.joinpath(Path.cwd(), "com.apple.MobileGestalt.plist")
+if __name__ == "__main__":
+ app = QtWidgets.QApplication([])
+ dm = DeviceManager()
+ dm.get_devices()
-def print_option(num: int, active: bool, message: str):
- txt = str(num) + ". "
- if active:
- txt = txt + "[Y] "
- txt = txt + message
- print(txt)
-
-while running:
- print("""\n\n\n\n
-
- ,--.
- ,--.'| ___
- ,--,: : | ,--.'|_
-,`--.'`| ' : ,--, | | :,'
-| : : | | ,'_ /| ,----._,. ,----._,. : : ' :
-: | \\ | : .--. | | : / / ' / / / ' / ,---. .;__,' /
-| : ' '; |,'_ /| : . || : || : | / \\ | | |
-' ' ;. ;| ' | | . .| | .\\ .| | .\\ . / / |:__,'| :
-| | | \\ || | ' | | |. ; '; |. ; '; |. ' / | ' : |__
-' : | ; .': | : ; ; |' . . |' . . |' ; /| | | '.'|
-| | '`--' ' : `--' \\`---`-'| | `---`-'| |' | / | ; : ;
-' : | : , .-./.'__/\\_: | .'__/\\_: || : | | , /
-; |.' `--`----' | : : | : : \\ \\ / ---`-'
-'---' \\ \\ / \\ \\ / `----'
- `--`-' `--`-'
- """)
- print("by LeminLimez")
- print("v1.2\n\n")
- print("\nPlease back up your device before using!")
-
- if not passed_check and Path.exists(gestalt_path) and Path.is_file(gestalt_path):
- passed_check = True
+ widget = MainWindow(device_manager=dm)
+ widget.resize(800, 600)
+ widget.show()
- if passed_check:
- print_option(1, dynamic_island_enabled, "Toggle Dynamic Island")
- print_option(2, current_model_name != "", "Set Device Model Name")
- print_option(3, boot_chime_enabled, "Toggle Boot Chime")
- print_option(4, charge_limit_enabled, "Toggle Charge Limit")
- print_option(5, stage_manager_enabled, "Toggle Stage Manager Supported")
- print_option(6, shutter_sound_enabled, "Disable Region Restrictions (ie. Shutter Sound)")
- print_option(7, always_on_display_enabled, "Always On Display (iOS 18+ only)")
- print_option(8, apple_pencil_enabled, "Toggle Apple Pencil")
- print_option(9, action_button_enabled, "Toggle Action Button")
- print_option(10, internal_storage_enabled, "Toggle Internal Storage")
- print("\n11. Apply")
- print("0. Exit\n")
- page = int(input("Enter a number: "))
- if page == 1:
- dynamic_island_enabled = not dynamic_island_enabled
- elif page == 2:
- print("\n\nSet Model Name")
- print("Leave blank to turn off custom name.\n")
- name = input("Enter Model Name: ")
- current_model_name = name
- elif page == 3:
- boot_chime_enabled = not boot_chime_enabled
- elif page == 4:
- charge_limit_enabled = not charge_limit_enabled
- elif page == 5:
- stage_manager_enabled = not stage_manager_enabled
- elif page == 6:
- shutter_sound_enabled = not shutter_sound_enabled
- elif page == 7:
- always_on_display_enabled = not always_on_display_enabled
- elif page == 8:
- apple_pencil_enabled = not apple_pencil_enabled
- elif page == 9:
- action_button_enabled = not action_button_enabled
- elif page == 10:
- internal_storage_enabled = not internal_storage_enabled
- elif page == 11:
- print()
- # set the tweaks and apply
- # first open the file in read mode
- with open(gestalt_path, 'rb') as in_fp:
- plist = plistlib.load(in_fp)
-
- # set the plist keys
- if dynamic_island_enabled:
- plist["CacheExtra"]["oPeik/9e8lQWMszEjbPzng"]["ArtworkDeviceSubType"] = 2556
- if current_model_name != "":
- plist["CacheExtra"]["oPeik/9e8lQWMszEjbPzng"]["ArtworkDeviceProductDescription"] = current_model_name
- if boot_chime_enabled:
- plist["CacheExtra"]["QHxt+hGLaBPbQJbXiUJX3w"] = True
- if charge_limit_enabled:
- plist["CacheExtra"]["37NVydb//GP/GrhuTN+exg"] = True
- if stage_manager_enabled:
- plist["CacheExtra"]["qeaj75wk3HF4DwQ8qbIi7g"] = 1
- if shutter_sound_enabled:
- plist["CacheExtra"]["h63QSdBCiT/z0WU6rdQv6Q"] = "US"
- plist["CacheExtra"]["zHeENZu+wbg7PUprwNwBWg"] = "LL/A"
- if always_on_display_enabled:
- plist["CacheExtra"]["2OOJf1VhaM7NxfRok3HbWQ"] = True
- plist["CacheExtra"]["j8/Omm6s1lsmTDFsXjsBfA"] = True
- if apple_pencil_enabled:
- plist["CacheExtra"]["yhHcB0iH0d1XzPO/CFd3ow"] = True
- if action_button_enabled:
- plist["CacheExtra"]["cT44WE1EohiwRzhsZ8xEsw"] = True
- if internal_storage_enabled:
- plist["CacheExtra"]["LBJfwOEzExRxzlAnSuI7eg"] = True
-
- # write back to the file
- with open(gestalt_path, 'wb') as out_fp:
- plistlib.dump(plist, out_fp)
- # restore to the device
- try:
- restore_file(fp=gestalt_path, restore_path="/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/", restore_name="com.apple.MobileGestalt.plist")
- input("Success! Reboot your device to see the changes.")
- except Exception as e:
- print(traceback.format_exc())
- input("Press Enter to continue...")
- running = False
- elif page == 0:
- # exit the panel
- print("Goodbye!")
- running = False
- else:
- print("No MobileGestalt file found!")
- print(f"Please place the file in \'{Path.cwd()}\' with the name \'com.apple.MobileGestalt.plist\'")
- print("Remember to make a backup of the file!!\n")
- print("1. Retry")
- print("2. Enter path\n")
- choice = int(input("Enter number: "))
- if choice == 2:
- new_path = input("Enter new path to file: ")
- gestalt_path = Path(new_path)
+ sys.exit(app.exec())
\ No newline at end of file
diff --git a/nugget.ico b/nugget.ico
new file mode 100644
index 0000000..30498bb
Binary files /dev/null and b/nugget.ico differ
diff --git a/qt/__pycache__/ui_mainwindow.cpython-312.pyc b/qt/__pycache__/ui_mainwindow.cpython-312.pyc
new file mode 100644
index 0000000..a6e0f5c
Binary files /dev/null and b/qt/__pycache__/ui_mainwindow.cpython-312.pyc differ
diff --git a/qt/mainwindow.ui b/qt/mainwindow.ui
new file mode 100644
index 0000000..926c131
--- /dev/null
+++ b/qt/mainwindow.ui
@@ -0,0 +1,3975 @@
+
+
+ Nugget
+
+
+
+ 0
+ 0
+ 1000
+ 600
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 1000
+ 600
+
+
+
+
+ 1000
+ 600
+
+
+
+ Nugget
+
+
+ 1.000000000000000
+
+
+ QWidget {
+ color: #FFFFFF;
+ background-color: transparent;
+ spacing: 0px;
+}
+
+QWidget:focus {
+ outline: none;
+}
+
+QWidget [cls=central] {
+ background-color: #1e1e1e;
+ border-radius: 0px;
+ border: 1px solid #4B4B4B;
+}
+
+QLabel {
+ font-size: 14px;
+}
+
+QToolButton {
+ background-color: #3b3b3b;
+ border: none;
+ color: #e8e8e8;
+ font-size: 14px;
+ min-height: 35px;
+ icon-size: 16px;
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 8px;
+}
+
+QToolButton[cls=sidebarBtn] {
+ background-color: transparent;
+ icon-size: 24px;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+QToolButton:checked {
+ background-color: #2860ca;
+ color: #FFFFFF;
+}
+
+QCheckBox {
+ spacing: 8px;
+ font-size: 14px;
+}
+
+QRadioButton {
+ spacing: 8px;
+ font-size: 14px;
+}
+
+QLineEdit {
+ border: none;
+ background-color: transparent;
+ color: #FFFFFF;
+ font-size: 14px;
+}
+
+QScrollBar:vertical {
+ background: transparent;
+ width: 8px;
+}
+
+QScrollBar:horizontal {
+ background: transparent;
+ height: 8px;
+}
+
+QScrollBar::handle {
+ background: #3b3b3b;
+ border-radius: 4px;
+}
+
+QScrollBar::handle:pressed {
+ background: #535353;
+}
+
+QScrollBar::add-line,
+QScrollBar::sub-line {
+ background: none;
+}
+
+QScrollBar::add-page,
+QScrollBar::sub-page {
+ background: none;
+}
+
+QSlider::groove:horizontal {
+ background-color: #3b3b3b;
+ height: 4px;
+ border-radius: 2px;
+}
+
+QSlider::handle:horizontal {
+ background-color: #535353;
+ width: 8px;
+ margin: -8px 0;
+ border-radius: 4px;
+}
+
+QSlider::handle:horizontal:pressed {
+ background-color: #3b82f7;
+}
+
+QSlider::tick:horizontal {
+ background-color: #535353;
+ width: 1px;
+}
+
+
+
+
+ true
+
+
+ Qt::NoContextMenu
+
+
+
+
+
+ central
+
+
+ -
+
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 300
+ 0
+
+
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+
+
+
+ :/icon/phone.svg:/icon/phone.svg
+
+
+
+ -
+
+
+ #devicePicker {
+ background-color: #3b3b3b;
+ border: none;
+ color: #e8e8e8;
+ font-size: 14px;
+ min-height: 38px;
+ min-width: 35px;
+ padding-left: 8px;
+}
+
+#devicePicker::drop-down {
+ image: url(:/icon/caret-down-fill.svg);
+ icon-size: 16px;
+ subcontrol-position: right center;
+ margin-right: 8px;
+}
+
+#devicePicker QAbstractItemView {
+ background-color: #3b3b3b;
+ outline: none;
+ margin-top: 1px;
+}
+
+#devicePicker QAbstractItemView::item {
+ background-color: #3b3b3b;
+ color: #e8e8e8;
+ min-height: 38px;
+ padding-left: 8px;
+}
+
+#devicePicker QAbstractItemView::item:hover {
+ background-color: #535353;
+ color: #ffffff;
+}
+
+
+ -1
+
+
+ None
+
+
+ true
+
+
+
+
+
+
+ -
+
+
+ QToolButton {
+ border-radius: 0px;
+}
+
+
+
+ :/icon/arrow-clockwise.svg:/icon/arrow-clockwise.svg
+
+
+ false
+
+
+ Qt::ToolButtonIconOnly
+
+
+ btn
+
+
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+ QToolButton {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+
+
+ Nugget
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 20
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 300
+ 0
+
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+
+ 0
+
+
+ 9
+
+
+ 9
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Home
+
+
+
+ :/icon/house.svg:/icon/house.svg
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+ Explore
+
+
+
+ :/icon/compass.svg:/icon/compass.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Location Simulation
+
+
+
+ :/icon/geo-alt.svg:/icon/geo-alt.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Custom Operations
+
+
+
+ :/icon/pencil.svg:/icon/pencil.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Mobile Gestalt
+
+
+
+ :/icon/iphone-island.svg:/icon/iphone-island.svg
+
+
+
+ 24
+ 28
+
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ Qt::NoArrow
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ .AppleSystemUIFont
+ -1
+
+
+
+ Feature Flags
+
+
+
+ :/icon/flag.svg:/icon/flag.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ EU Enabler
+
+
+
+ :/icon/geo-alt.svg:/icon/geo-alt.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Internal Options
+
+
+
+ :/icon/hdd.svg:/icon/hdd.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Apply
+
+
+
+ :/icon/check-circle.svg:/icon/check-circle.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Settings
+
+
+
+ :/icon/gear.svg:/icon/gear.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ 0
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 10
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/phone.svg:/icon/phone.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Phone
+
+
+
+ -
+
+
+ PointingHandCursor
+
+
+ <a style="text-decoration:none; color: white" href="#">Version</a>
+
+
+ Qt::RichText
+
+
+ false
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 50
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ QToolButton {
+ background-color: transparent;
+ padding: 0px;
+}
+
+
+ ...
+
+
+
+ :/credits/big_nugget.png:/credits/big_nugget.png
+
+
+
+ 150
+ 200
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+ -1
+ true
+
+
+
+ QLabel {
+ font-size: 35px;
+}
+
+
+ Nugget
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Join the Discord
+
+
+
+ :/icon/discord.svg:/icon/discord.svg
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+
+ 15
+
+
+ 0
+
+
+ 30
+
+
+ 0
+
+
+ 30
+
+
-
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ 150
+ 35
+
+
+
+ QToolButton {
+ background: none;
+}
+
+
+ LeminLimez
+
+
+
+ :/credits/LeminLimez.png:/credits/LeminLimez.png
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+
+ -
+
+
+ QToolButton {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+ background: none;
+ border: 1px solid #3b3b3b;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+
+ ...
+
+
+
+ :/icon/twitter.svg:/icon/twitter.svg
+
+
+
+ -
+
+
+ QToolButton {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ background: none;
+ border: 1px solid #3b3b3b;
+ border-left: none;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+
+ ...
+
+
+
+ :/icon/currency-dollar.svg:/icon/currency-dollar.svg
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+ QToolButton {
+ background: none;
+}
+
+
+ Main Developer
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Expanding
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 10
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ 150
+ 35
+
+
+
+ QToolButton {
+ background: none;
+}
+
+
+ With Help From
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 37
+
+
+
+ QToolButton {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+ background: none;
+ border: 1px solid #3b3b3b;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+
+ JJTech
+Sparserestore
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 37
+
+
+
+ QToolButton {
+ border-radius: 0px;
+ background: none;
+ border: 1px solid #3b3b3b;
+ border-left: none;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+
+ disfordottie
+Clock Anim, Photos UI
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 37
+
+
+
+ QToolButton {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ background: none;
+ border: 1px solid #3b3b3b;
+ border-left: none;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+
+ lrdsnow
+EU Enabler
+
+
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+
+ 150
+ 35
+
+
+
+ QToolButton {
+ background: none;
+}
+
+
+ Additional Thanks
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QToolButton {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+ background: none;
+ border: 1px solid #3b3b3b;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+
+ pymobiledevice3
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QToolButton {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ background: none;
+ border: 1px solid #3b3b3b;
+ border-left: none;
+}
+
+QToolButton:pressed {
+ background-color: #535353;
+ color: #FFFFFF;
+}
+
+
+ Qt Creator
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Nugget GUI - Version 2.2
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/compass.svg:/icon/compass.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Explore
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/geo-alt.svg:/icon/geo-alt.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Location Simulation
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Start Location Simulation
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Latitude
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ XXX.XXXXX
+
+
+
+ -
+
+
+ Longitude
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ XXX.XXXXX
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Set Location
+
+
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Reset Location
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+ true
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/iphone-island.svg:/icon/iphone-island.svg
+
+
+
+ 30
+ 30
+
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Mobile Gestalt Modifications
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ background: none;
+}
+
+
+ Import Theme:
+
+
+
+ -
+
+
+ ...
+
+
+
+ :/icon/folder.svg:/icon/folder.svg
+
+
+
+ -
+
+
+ ...
+
+
+
+ :/icon/file-earmark-zip.svg:/icon/file-earmark-zip.svg
+
+
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Customize Individual Apps
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Hide/Show All App Names
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Toggle All "Border"
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Toggle All "Add to Device"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/iphone-island.svg:/icon/iphone-island.svg
+
+
+
+ 30
+ 30
+
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Mobile Gestalt
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 16
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Plain
+
+
+ 0
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+
+
+ 0
+ 0
+ 650
+ 1200
+
+
+
+
+ 650
+ 1200
+
+
+
+
+ 650
+ 1200
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Device Subtype Preset
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 325
+ 16777215
+
+
+
+ QComboBox {
+ background-color: #3b3b3b;
+ border: none;
+ color: #e8e8e8;
+ font-size: 14px;
+ padding-left: 8px;
+ border-radius: 8px;
+}
+
+QComboBox::drop-down {
+ image: url(:/icon/caret-down-fill.svg);
+ icon-size: 16px;
+ subcontrol-position: right center;
+ margin-right: 8px;
+}
+
+QComboBox QAbstractItemView {
+ background-color: #3b3b3b;
+ outline: none;
+ margin-top: 1px;
+}
+
+QComboBox QAbstractItemView::item {
+ background-color: #3b3b3b;
+ color: #e8e8e8;
+ padding-left: 8px;
+}
+
+QComboBox QAbstractItemView::item:hover {
+ background-color: #535353;
+ color: #ffffff;
+}
+
+
+ None
+
+
+ 0
+
+
+ 15
+
+
-
+
+ None
+
+
+ -
+
+ 2436 (iPhone X Gestures for SE phones)
+
+
+ -
+
+ 2556 (iPhone 14 Pro Dynamic Island)
+
+
+ -
+
+ 2796 (iPhone 14 Pro Max Dynamic Island)
+
+
+ -
+
+ 2976 (iPhone 15 Pro Max Dynamic Island)
+
+
+ -
+
+ 2622 (iPhone 16 Pro Dynamic Island)
+
+
+ -
+
+ 2868 (iPhone 16 Pro Max Dynamic Island)
+
+
+
+
+ -
+
+
+ Change Device Model Name
+
+
+
+ -
+
+
+ Model Name
+
+
+
+ -
+
+
+ Enable Boot Chime
+
+
+
+ -
+
+
+ Enable Charge Limit
+
+
+
+ -
+
+
+ Enable Tap to Wake (for iPhone SEs)
+
+
+
+ -
+
+
+ Enable iPhone 16 Settings
+
+
+
+ -
+
+
+ Disable Wallpaper Parallax
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Enable Stage Manager Supported (WARNING: risky on some devices, mainly phones)
+
+
+
+ -
+
+
+ Allow iPad Apps on iPhone
+
+
+
+ -
+
+
+ Disable Region Restrictions (ie. Shutter Sound)
+
+
+
+ -
+
+
+ Enable Apple Pencil Settings Tab
+
+
+
+ -
+
+
+ Enable Action Button Settings Tab
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Set as Apple Internal Install (ie Metal HUD in any app)
+
+
+
+ -
+
+
+ Enable Internal Storage (WARNING: risky for some devices, mainly iPads)
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Enable Collision SOS
+
+
+
+ -
+
+
+ Enable Sleep Apnea (real) [for Apple Watches]
+
+
+
+ -
+
+
+ Enable Always On Display
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/pencil.svg:/icon/pencil.svg
+
+
+
+ 25
+ 25
+
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Custom Operations
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ -1
+
+
+ 0
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ true
+
+
+ Import .cowperation
+
+
+
+ :/icon/import.svg:/icon/import.svg
+
+
+
+ 20
+ 20
+
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 35
+
+
+
+ New Operation
+
+
+
+ :/icon/plus.svg:/icon/plus.svg
+
+
+
+ 16
+ 16
+
+
+
+ false
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/gear.svg:/icon/gear.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Nugget Settings
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 16
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ true
+
+
+
+ 650
+ 16777215
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Allow Applying Over WiFi
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/flag.svg:/icon/flag.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Feature Flags
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 16
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Enable Lockscreen Clock Animation
+
+
+
+ -
+
+
+ Enable Duplicate Lockscreen Button and Lockscreen Quickswitch
+
+
+
+ -
+
+
+ false
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Enable Old Photo UI
+
+
+
+ -
+
+
+ Enable Apple Intelligence
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/geo-alt.svg:/icon/geo-alt.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ EU Enabler
+
+
+
+ -
+
+
+ Enabled
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Method Type
+
+
+
+ -
+
+
+
+ 150
+ 16777215
+
+
+
+ QComboBox {
+ background-color: #3b3b3b;
+ border: none;
+ color: #e8e8e8;
+ font-size: 14px;
+ padding-left: 8px;
+ border-radius: 8px;
+}
+
+QComboBox::drop-down {
+ image: url(:/icon/caret-down-fill.svg);
+ icon-size: 16px;
+ subcontrol-position: right center;
+ margin-right: 8px;
+}
+
+QComboBox QAbstractItemView {
+ background-color: #3b3b3b;
+ outline: none;
+ margin-top: 1px;
+}
+
+QComboBox QAbstractItemView::item {
+ background-color: #3b3b3b;
+ color: #e8e8e8;
+ padding-left: 8px;
+}
+
+QComboBox QAbstractItemView::item:hover {
+ background-color: #535353;
+ color: #ffffff;
+}
+
+
-
+
+ Method 1
+
+
+ -
+
+ Method 2
+
+
+
+
+ -
+
+
+ Region Code (Should be 2 letters)
+
+
+
+ -
+
+
+ Region Code (Default: US)
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/check-circle.svg:/icon/check-circle.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Apply
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Current gestalt file location:
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ None
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+
-
+
+
+ Choose Gestalt File
+
+
+
+ :/icon/folder.svg:/icon/folder.svg
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Apply Changes
+
+
+
+ :/icon/check-circle.svg:/icon/check-circle.svg
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+
+
+
+
+ -
+
+
+ Ready!
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 150
+ 0
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Remove All Tweaks
+
+
+
+ -
+
+
+ Reset Mobile Gestalt
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qt/mainwindow_ui.py b/qt/mainwindow_ui.py
new file mode 100644
index 0000000..7daedfe
--- /dev/null
+++ b/qt/mainwindow_ui.py
@@ -0,0 +1,2231 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.6.3
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QFrame,
+ QHBoxLayout, QLabel, QLineEdit, QMainWindow,
+ QProgressBar, QScrollArea, QSizePolicy, QSpacerItem,
+ QStackedWidget, QToolButton, QVBoxLayout, QWidget)
+import resources_rc
+
+class Ui_Nugget(object):
+ def setupUi(self, Nugget):
+ if not Nugget.objectName():
+ Nugget.setObjectName(u"Nugget")
+ Nugget.resize(1000, 600)
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(Nugget.sizePolicy().hasHeightForWidth())
+ Nugget.setSizePolicy(sizePolicy)
+ Nugget.setMinimumSize(QSize(1000, 600))
+ Nugget.setMaximumSize(QSize(1000, 600))
+ Nugget.setWindowOpacity(1.000000000000000)
+ Nugget.setStyleSheet(u"QWidget {\n"
+" color: #FFFFFF;\n"
+" background-color: transparent;\n"
+" spacing: 0px;\n"
+"}\n"
+"\n"
+"QWidget:focus {\n"
+" outline: none;\n"
+"}\n"
+"\n"
+"QWidget [cls=central] {\n"
+" background-color: #1e1e1e;\n"
+" border-radius: 0px;\n"
+" border: 1px solid #4B4B4B;\n"
+"}\n"
+"\n"
+"QLabel {\n"
+" font-size: 14px;\n"
+"}\n"
+"\n"
+"QToolButton {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" min-height: 35px;\n"
+" icon-size: 16px;\n"
+" padding-left: 10px;\n"
+" padding-right: 10px;\n"
+" border-radius: 8px;\n"
+"}\n"
+"\n"
+"QToolButton[cls=sidebarBtn] {\n"
+" background-color: transparent;\n"
+" icon-size: 24px;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}\n"
+"\n"
+"QToolButton:checked {\n"
+" background-color: #2860ca;\n"
+" color: #FFFFFF;\n"
+"}\n"
+"\n"
+"QCheckBox {\n"
+" spacing: 8px;\n"
+" font-size: 14px;\n"
+"}\n"
+"\n"
+"QRadioButton {\n"
+" spacing: 8px;\n"
+" font-size: 14px;\n"
+"}\n"
+""
+ "\n"
+"QLineEdit {\n"
+" border: none;\n"
+" background-color: transparent;\n"
+" color: #FFFFFF;\n"
+" font-size: 14px;\n"
+"}\n"
+"\n"
+"QScrollBar:vertical {\n"
+" background: transparent;\n"
+" width: 8px;\n"
+"}\n"
+"\n"
+"QScrollBar:horizontal {\n"
+" background: transparent;\n"
+" height: 8px;\n"
+"}\n"
+"\n"
+"QScrollBar::handle {\n"
+" background: #3b3b3b;\n"
+" border-radius: 4px;\n"
+"}\n"
+"\n"
+"QScrollBar::handle:pressed {\n"
+" background: #535353;\n"
+"}\n"
+"\n"
+"QScrollBar::add-line,\n"
+"QScrollBar::sub-line {\n"
+" background: none;\n"
+"}\n"
+"\n"
+"QScrollBar::add-page,\n"
+"QScrollBar::sub-page {\n"
+" background: none;\n"
+"}\n"
+"\n"
+"QSlider::groove:horizontal {\n"
+" background-color: #3b3b3b;\n"
+" height: 4px;\n"
+" border-radius: 2px;\n"
+"}\n"
+"\n"
+"QSlider::handle:horizontal {\n"
+" background-color: #535353;\n"
+" width: 8px;\n"
+" margin: -8px 0;\n"
+" border-radius: 4px;\n"
+"}\n"
+"\n"
+"QSlider::handle:horizontal:pressed {\n"
+" background-color: #3b82f7;\n"
+"}\n"
+"\n"
+"QSl"
+ "ider::tick:horizontal {\n"
+" background-color: #535353;\n"
+" width: 1px;\n"
+"}\n"
+"")
+ self.centralwidget = QWidget(Nugget)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.centralwidget.setEnabled(True)
+ self.centralwidget.setContextMenuPolicy(Qt.NoContextMenu)
+ self.centralwidget.setLocale(QLocale(QLocale.English, QLocale.UnitedStates))
+ self.verticalLayout_11 = QVBoxLayout(self.centralwidget)
+ self.verticalLayout_11.setObjectName(u"verticalLayout_11")
+ self.deviceBar = QWidget(self.centralwidget)
+ self.deviceBar.setObjectName(u"deviceBar")
+ self.horizontalLayout_4 = QHBoxLayout(self.deviceBar)
+ self.horizontalLayout_4.setSpacing(1)
+ self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
+ self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_2 = QWidget(self.deviceBar)
+ self.horizontalWidget_2.setObjectName(u"horizontalWidget_2")
+ self.horizontalWidget_2.setMinimumSize(QSize(300, 0))
+ self.horizontalLayout_19 = QHBoxLayout(self.horizontalWidget_2)
+ self.horizontalLayout_19.setSpacing(1)
+ self.horizontalLayout_19.setObjectName(u"horizontalLayout_19")
+ self.horizontalLayout_19.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_3 = QWidget(self.horizontalWidget_2)
+ self.horizontalWidget_3.setObjectName(u"horizontalWidget_3")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.horizontalWidget_3.sizePolicy().hasHeightForWidth())
+ self.horizontalWidget_3.setSizePolicy(sizePolicy1)
+ self.horizontalLayout_15 = QHBoxLayout(self.horizontalWidget_3)
+ self.horizontalLayout_15.setSpacing(0)
+ self.horizontalLayout_15.setObjectName(u"horizontalLayout_15")
+ self.horizontalLayout_15.setContentsMargins(0, 0, 0, 0)
+ self.toolButton_6 = QToolButton(self.horizontalWidget_3)
+ self.toolButton_6.setObjectName(u"toolButton_6")
+ self.toolButton_6.setEnabled(False)
+ self.toolButton_6.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+"}")
+ icon = QIcon()
+ icon.addFile(u":/icon/phone.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.toolButton_6.setIcon(icon)
+
+ self.horizontalLayout_15.addWidget(self.toolButton_6)
+
+ self.devicePicker = QComboBox(self.horizontalWidget_3)
+ self.devicePicker.setObjectName(u"devicePicker")
+ self.devicePicker.setStyleSheet(u"#devicePicker {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" min-height: 38px;\n"
+" min-width: 35px;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"#devicePicker::drop-down {\n"
+" image: url(:/icon/caret-down-fill.svg);\n"
+" icon-size: 16px;\n"
+" subcontrol-position: right center;\n"
+" margin-right: 8px;\n"
+"}\n"
+"\n"
+"#devicePicker QAbstractItemView {\n"
+" background-color: #3b3b3b;\n"
+" outline: none;\n"
+" margin-top: 1px;\n"
+"}\n"
+"\n"
+"#devicePicker QAbstractItemView::item {\n"
+" background-color: #3b3b3b;\n"
+" color: #e8e8e8;\n"
+" min-height: 38px;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"#devicePicker QAbstractItemView::item:hover {\n"
+" background-color: #535353;\n"
+" color: #ffffff;\n"
+"}")
+ self.devicePicker.setDuplicatesEnabled(True)
+
+ self.horizontalLayout_15.addWidget(self.devicePicker)
+
+
+ self.horizontalLayout_19.addWidget(self.horizontalWidget_3)
+
+ self.refreshBtn = QToolButton(self.horizontalWidget_2)
+ self.refreshBtn.setObjectName(u"refreshBtn")
+ self.refreshBtn.setStyleSheet(u"QToolButton {\n"
+" border-radius: 0px;\n"
+"}")
+ icon1 = QIcon()
+ icon1.addFile(u":/icon/arrow-clockwise.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.refreshBtn.setIcon(icon1)
+ self.refreshBtn.setCheckable(False)
+ self.refreshBtn.setToolButtonStyle(Qt.ToolButtonIconOnly)
+
+ self.horizontalLayout_19.addWidget(self.refreshBtn)
+
+
+ self.horizontalLayout_4.addWidget(self.horizontalWidget_2)
+
+ self.titleBar = QToolButton(self.deviceBar)
+ self.titleBar.setObjectName(u"titleBar")
+ self.titleBar.setEnabled(False)
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
+ sizePolicy2.setHorizontalStretch(0)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.titleBar.sizePolicy().hasHeightForWidth())
+ self.titleBar.setSizePolicy(sizePolicy2)
+ self.titleBar.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+"}")
+
+ self.horizontalLayout_4.addWidget(self.titleBar)
+
+
+ self.verticalLayout_11.addWidget(self.deviceBar)
+
+ self.body = QWidget(self.centralwidget)
+ self.body.setObjectName(u"body")
+ self.body.setMinimumSize(QSize(0, 20))
+ self.horizontalLayout_18 = QHBoxLayout(self.body)
+ self.horizontalLayout_18.setObjectName(u"horizontalLayout_18")
+ self.horizontalLayout_18.setContentsMargins(0, 0, 0, 0)
+ self.sidebar = QWidget(self.body)
+ self.sidebar.setObjectName(u"sidebar")
+ sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Preferred)
+ sizePolicy3.setHorizontalStretch(0)
+ sizePolicy3.setVerticalStretch(0)
+ sizePolicy3.setHeightForWidth(self.sidebar.sizePolicy().hasHeightForWidth())
+ self.sidebar.setSizePolicy(sizePolicy3)
+ self.sidebar.setMinimumSize(QSize(300, 0))
+ self.sidebar.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.verticalLayout = QVBoxLayout(self.sidebar)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.verticalLayout.setContentsMargins(0, 9, 9, 0)
+ self.homePageBtn = QToolButton(self.sidebar)
+ self.homePageBtn.setObjectName(u"homePageBtn")
+ sizePolicy2.setHeightForWidth(self.homePageBtn.sizePolicy().hasHeightForWidth())
+ self.homePageBtn.setSizePolicy(sizePolicy2)
+ icon2 = QIcon()
+ icon2.addFile(u":/icon/house.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.homePageBtn.setIcon(icon2)
+ self.homePageBtn.setCheckable(True)
+ self.homePageBtn.setChecked(True)
+ self.homePageBtn.setAutoExclusive(True)
+ self.homePageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.homePageBtn)
+
+ self.explorePageBtn = QToolButton(self.sidebar)
+ self.explorePageBtn.setObjectName(u"explorePageBtn")
+ self.explorePageBtn.setEnabled(True)
+ sizePolicy2.setHeightForWidth(self.explorePageBtn.sizePolicy().hasHeightForWidth())
+ self.explorePageBtn.setSizePolicy(sizePolicy2)
+ icon3 = QIcon()
+ icon3.addFile(u":/icon/compass.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.explorePageBtn.setIcon(icon3)
+ self.explorePageBtn.setCheckable(True)
+ self.explorePageBtn.setAutoExclusive(True)
+ self.explorePageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.explorePageBtn)
+
+ self.locSimPageBtn = QToolButton(self.sidebar)
+ self.locSimPageBtn.setObjectName(u"locSimPageBtn")
+ sizePolicy2.setHeightForWidth(self.locSimPageBtn.sizePolicy().hasHeightForWidth())
+ self.locSimPageBtn.setSizePolicy(sizePolicy2)
+ icon4 = QIcon()
+ icon4.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.locSimPageBtn.setIcon(icon4)
+ self.locSimPageBtn.setCheckable(True)
+ self.locSimPageBtn.setAutoExclusive(True)
+ self.locSimPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.locSimPageBtn)
+
+ self.sidebarDiv1 = QFrame(self.sidebar)
+ self.sidebarDiv1.setObjectName(u"sidebarDiv1")
+ self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.sidebarDiv1.setFrameShadow(QFrame.Plain)
+ self.sidebarDiv1.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout.addWidget(self.sidebarDiv1)
+
+ self.customOperationsPageBtn = QToolButton(self.sidebar)
+ self.customOperationsPageBtn.setObjectName(u"customOperationsPageBtn")
+ sizePolicy2.setHeightForWidth(self.customOperationsPageBtn.sizePolicy().hasHeightForWidth())
+ self.customOperationsPageBtn.setSizePolicy(sizePolicy2)
+ icon5 = QIcon()
+ icon5.addFile(u":/icon/pencil.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.customOperationsPageBtn.setIcon(icon5)
+ self.customOperationsPageBtn.setCheckable(True)
+ self.customOperationsPageBtn.setAutoExclusive(True)
+ self.customOperationsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.customOperationsPageBtn)
+
+ self.gestaltPageBtn = QToolButton(self.sidebar)
+ self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
+ sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
+ self.gestaltPageBtn.setSizePolicy(sizePolicy2)
+ icon6 = QIcon()
+ icon6.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.gestaltPageBtn.setIcon(icon6)
+ self.gestaltPageBtn.setIconSize(QSize(24, 28))
+ self.gestaltPageBtn.setCheckable(True)
+ self.gestaltPageBtn.setAutoExclusive(True)
+ self.gestaltPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+ self.gestaltPageBtn.setArrowType(Qt.NoArrow)
+
+ self.verticalLayout.addWidget(self.gestaltPageBtn)
+
+ self.featureFlagsPageBtn = QToolButton(self.sidebar)
+ self.featureFlagsPageBtn.setObjectName(u"featureFlagsPageBtn")
+ sizePolicy2.setHeightForWidth(self.featureFlagsPageBtn.sizePolicy().hasHeightForWidth())
+ self.featureFlagsPageBtn.setSizePolicy(sizePolicy2)
+ font = QFont()
+ font.setFamilies([u".AppleSystemUIFont"])
+ self.featureFlagsPageBtn.setFont(font)
+ icon7 = QIcon()
+ icon7.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.featureFlagsPageBtn.setIcon(icon7)
+ self.featureFlagsPageBtn.setCheckable(True)
+ self.featureFlagsPageBtn.setAutoExclusive(True)
+ self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.featureFlagsPageBtn)
+
+ self.euEnablerPageBtn = QToolButton(self.sidebar)
+ self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
+ sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
+ self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
+ self.euEnablerPageBtn.setIcon(icon4)
+ self.euEnablerPageBtn.setCheckable(True)
+ self.euEnablerPageBtn.setAutoExclusive(True)
+ self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.euEnablerPageBtn)
+
+ self.internalOptionsPageBtn = QToolButton(self.sidebar)
+ self.internalOptionsPageBtn.setObjectName(u"internalOptionsPageBtn")
+ sizePolicy2.setHeightForWidth(self.internalOptionsPageBtn.sizePolicy().hasHeightForWidth())
+ self.internalOptionsPageBtn.setSizePolicy(sizePolicy2)
+ icon8 = QIcon()
+ icon8.addFile(u":/icon/hdd.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.internalOptionsPageBtn.setIcon(icon8)
+ self.internalOptionsPageBtn.setCheckable(True)
+ self.internalOptionsPageBtn.setAutoExclusive(True)
+ self.internalOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.internalOptionsPageBtn)
+
+ self.sidebarDiv2 = QFrame(self.sidebar)
+ self.sidebarDiv2.setObjectName(u"sidebarDiv2")
+ self.sidebarDiv2.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.sidebarDiv2.setFrameShadow(QFrame.Plain)
+ self.sidebarDiv2.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout.addWidget(self.sidebarDiv2)
+
+ self.applyPageBtn = QToolButton(self.sidebar)
+ self.applyPageBtn.setObjectName(u"applyPageBtn")
+ sizePolicy2.setHeightForWidth(self.applyPageBtn.sizePolicy().hasHeightForWidth())
+ self.applyPageBtn.setSizePolicy(sizePolicy2)
+ icon9 = QIcon()
+ icon9.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.applyPageBtn.setIcon(icon9)
+ self.applyPageBtn.setCheckable(True)
+ self.applyPageBtn.setAutoExclusive(True)
+ self.applyPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.applyPageBtn)
+
+ self.settingsPageBtn = QToolButton(self.sidebar)
+ self.settingsPageBtn.setObjectName(u"settingsPageBtn")
+ sizePolicy2.setHeightForWidth(self.settingsPageBtn.sizePolicy().hasHeightForWidth())
+ self.settingsPageBtn.setSizePolicy(sizePolicy2)
+ icon10 = QIcon()
+ icon10.addFile(u":/icon/gear.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.settingsPageBtn.setIcon(icon10)
+ self.settingsPageBtn.setCheckable(True)
+ self.settingsPageBtn.setAutoExclusive(True)
+ self.settingsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.settingsPageBtn)
+
+ self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout.addItem(self.verticalSpacer)
+
+
+ self.horizontalLayout_18.addWidget(self.sidebar)
+
+ self.main = QWidget(self.body)
+ self.main.setObjectName(u"main")
+ sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
+ sizePolicy4.setHorizontalStretch(0)
+ sizePolicy4.setVerticalStretch(0)
+ sizePolicy4.setHeightForWidth(self.main.sizePolicy().hasHeightForWidth())
+ self.main.setSizePolicy(sizePolicy4)
+ self._3 = QVBoxLayout(self.main)
+ self._3.setSpacing(0)
+ self._3.setObjectName(u"_3")
+ self._3.setContentsMargins(9, 0, 0, 0)
+ self.pages = QStackedWidget(self.main)
+ self.pages.setObjectName(u"pages")
+ self.homePage = QWidget()
+ self.homePage.setObjectName(u"homePage")
+ self.verticalLayout_2 = QVBoxLayout(self.homePage)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget = QWidget(self.homePage)
+ self.horizontalWidget.setObjectName(u"horizontalWidget")
+ self.horizontalLayout = QHBoxLayout(self.horizontalWidget)
+ self.horizontalLayout.setSpacing(10)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalLayout.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_9 = QToolButton(self.horizontalWidget)
+ self.toolButton_9.setObjectName(u"toolButton_9")
+ self.toolButton_9.setEnabled(False)
+ self.toolButton_9.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_9.setIcon(icon)
+
+ self.horizontalLayout.addWidget(self.toolButton_9)
+
+ self.verticalWidget = QWidget(self.horizontalWidget)
+ self.verticalWidget.setObjectName(u"verticalWidget")
+ self.verticalLayout_3 = QVBoxLayout(self.verticalWidget)
+ self.verticalLayout_3.setSpacing(6)
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.phoneNameLbl = QLabel(self.verticalWidget)
+ self.phoneNameLbl.setObjectName(u"phoneNameLbl")
+ font1 = QFont()
+ font1.setBold(False)
+ self.phoneNameLbl.setFont(font1)
+
+ self.verticalLayout_3.addWidget(self.phoneNameLbl)
+
+ self.phoneVersionLbl = QLabel(self.verticalWidget)
+ self.phoneVersionLbl.setObjectName(u"phoneVersionLbl")
+ self.phoneVersionLbl.setCursor(QCursor(Qt.PointingHandCursor))
+ self.phoneVersionLbl.setTextFormat(Qt.RichText)
+ self.phoneVersionLbl.setOpenExternalLinks(False)
+
+ self.verticalLayout_3.addWidget(self.phoneVersionLbl)
+
+
+ self.horizontalLayout.addWidget(self.verticalWidget)
+
+ self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout.addItem(self.horizontalSpacer_3)
+
+
+ self.verticalLayout_2.addWidget(self.horizontalWidget)
+
+ self.line_4 = QFrame(self.homePage)
+ self.line_4.setObjectName(u"line_4")
+ self.line_4.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_4.setFrameShadow(QFrame.Plain)
+ self.line_4.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_2.addWidget(self.line_4)
+
+ self.horizontalWidget1 = QWidget(self.homePage)
+ self.horizontalWidget1.setObjectName(u"horizontalWidget1")
+ self.horizontalLayout_27 = QHBoxLayout(self.horizontalWidget1)
+ self.horizontalLayout_27.setSpacing(50)
+ self.horizontalLayout_27.setObjectName(u"horizontalLayout_27")
+ self.horizontalLayout_27.setContentsMargins(0, 0, 0, 0)
+ self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_27.addItem(self.horizontalSpacer_2)
+
+ self.bigNuggetBtn = QToolButton(self.horizontalWidget1)
+ self.bigNuggetBtn.setObjectName(u"bigNuggetBtn")
+ self.bigNuggetBtn.setStyleSheet(u"QToolButton {\n"
+" background-color: transparent;\n"
+" padding: 0px;\n"
+"}")
+ icon11 = QIcon()
+ icon11.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.bigNuggetBtn.setIcon(icon11)
+ self.bigNuggetBtn.setIconSize(QSize(150, 200))
+
+ self.horizontalLayout_27.addWidget(self.bigNuggetBtn)
+
+ self.verticalWidget1 = QWidget(self.horizontalWidget1)
+ self.verticalWidget1.setObjectName(u"verticalWidget1")
+ self.verticalLayout_26 = QVBoxLayout(self.verticalWidget1)
+ self.verticalLayout_26.setObjectName(u"verticalLayout_26")
+ self.verticalLayout_26.setContentsMargins(0, 0, 0, 0)
+ self.verticalSpacer_11 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_26.addItem(self.verticalSpacer_11)
+
+ self.label_2 = QLabel(self.verticalWidget1)
+ self.label_2.setObjectName(u"label_2")
+ font2 = QFont()
+ font2.setBold(True)
+ self.label_2.setFont(font2)
+ self.label_2.setStyleSheet(u"QLabel {\n"
+" font-size: 35px;\n"
+"}")
+ self.label_2.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_26.addWidget(self.label_2)
+
+ self.verticalSpacer_12 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_26.addItem(self.verticalSpacer_12)
+
+ self.discordBtn = QToolButton(self.verticalWidget1)
+ self.discordBtn.setObjectName(u"discordBtn")
+ icon12 = QIcon()
+ icon12.addFile(u":/icon/discord.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.discordBtn.setIcon(icon12)
+ self.discordBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout_26.addWidget(self.discordBtn)
+
+ self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_26.addItem(self.verticalSpacer_4)
+
+
+ self.horizontalLayout_27.addWidget(self.verticalWidget1)
+
+ self.horizontalSpacer_12 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_27.addItem(self.horizontalSpacer_12)
+
+
+ self.verticalLayout_2.addWidget(self.horizontalWidget1)
+
+ self.verticalWidget_2 = QWidget(self.homePage)
+ self.verticalWidget_2.setObjectName(u"verticalWidget_2")
+ self.verticalLayout_25 = QVBoxLayout(self.verticalWidget_2)
+ self.verticalLayout_25.setSpacing(15)
+ self.verticalLayout_25.setObjectName(u"verticalLayout_25")
+ self.verticalLayout_25.setContentsMargins(0, 30, 0, 30)
+ self.horizontalWidget2 = QWidget(self.verticalWidget_2)
+ self.horizontalWidget2.setObjectName(u"horizontalWidget2")
+ self.horizontalWidget2.setEnabled(True)
+ self.horizontalLayout_6 = QHBoxLayout(self.horizontalWidget2)
+ self.horizontalLayout_6.setSpacing(0)
+ self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
+ self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
+ self.leminBtn = QToolButton(self.horizontalWidget2)
+ self.leminBtn.setObjectName(u"leminBtn")
+ self.leminBtn.setEnabled(True)
+ self.leminBtn.setMinimumSize(QSize(150, 35))
+ self.leminBtn.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+ icon13 = QIcon()
+ icon13.addFile(u":/credits/LeminLimez.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.leminBtn.setIcon(icon13)
+ self.leminBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_6.addWidget(self.leminBtn)
+
+ self.leminTwitterBtn = QToolButton(self.horizontalWidget2)
+ self.leminTwitterBtn.setObjectName(u"leminTwitterBtn")
+ self.leminTwitterBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+ icon14 = QIcon()
+ icon14.addFile(u":/icon/twitter.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.leminTwitterBtn.setIcon(icon14)
+
+ self.horizontalLayout_6.addWidget(self.leminTwitterBtn)
+
+ self.leminKoFiBtn = QToolButton(self.horizontalWidget2)
+ self.leminKoFiBtn.setObjectName(u"leminKoFiBtn")
+ self.leminKoFiBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+ icon15 = QIcon()
+ icon15.addFile(u":/icon/currency-dollar.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.leminKoFiBtn.setIcon(icon15)
+
+ self.horizontalLayout_6.addWidget(self.leminKoFiBtn)
+
+ self.horizontalSpacer = QSpacerItem(10, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_6.addItem(self.horizontalSpacer)
+
+ self.toolButton_14 = QToolButton(self.horizontalWidget2)
+ self.toolButton_14.setObjectName(u"toolButton_14")
+ self.toolButton_14.setEnabled(False)
+ sizePolicy2.setHeightForWidth(self.toolButton_14.sizePolicy().hasHeightForWidth())
+ self.toolButton_14.setSizePolicy(sizePolicy2)
+ self.toolButton_14.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+
+ self.horizontalLayout_6.addWidget(self.toolButton_14)
+
+ self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_6.addItem(self.horizontalSpacer_5)
+
+
+ self.verticalLayout_25.addWidget(self.horizontalWidget2)
+
+ self.verticalSpacer_16 = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_25.addItem(self.verticalSpacer_16)
+
+ self.horizontalWidget_21 = QWidget(self.verticalWidget_2)
+ self.horizontalWidget_21.setObjectName(u"horizontalWidget_21")
+ self.horizontalLayout_2 = QHBoxLayout(self.horizontalWidget_21)
+ self.horizontalLayout_2.setSpacing(0)
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.helpFromBtn = QToolButton(self.horizontalWidget_21)
+ self.helpFromBtn.setObjectName(u"helpFromBtn")
+ self.helpFromBtn.setEnabled(True)
+ self.helpFromBtn.setMinimumSize(QSize(150, 35))
+ self.helpFromBtn.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+ self.helpFromBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_2.addWidget(self.helpFromBtn)
+
+ self.jjtechBtn = QToolButton(self.horizontalWidget_21)
+ self.jjtechBtn.setObjectName(u"jjtechBtn")
+ sizePolicy2.setHeightForWidth(self.jjtechBtn.sizePolicy().hasHeightForWidth())
+ self.jjtechBtn.setSizePolicy(sizePolicy2)
+ self.jjtechBtn.setMinimumSize(QSize(0, 37))
+ self.jjtechBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_2.addWidget(self.jjtechBtn)
+
+ self.disfordottieBtn = QToolButton(self.horizontalWidget_21)
+ self.disfordottieBtn.setObjectName(u"disfordottieBtn")
+ sizePolicy2.setHeightForWidth(self.disfordottieBtn.sizePolicy().hasHeightForWidth())
+ self.disfordottieBtn.setSizePolicy(sizePolicy2)
+ self.disfordottieBtn.setMinimumSize(QSize(0, 37))
+ self.disfordottieBtn.setStyleSheet(u"QToolButton {\n"
+" border-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_2.addWidget(self.disfordottieBtn)
+
+ self.lrdsnowBtn = QToolButton(self.horizontalWidget_21)
+ self.lrdsnowBtn.setObjectName(u"lrdsnowBtn")
+ sizePolicy2.setHeightForWidth(self.lrdsnowBtn.sizePolicy().hasHeightForWidth())
+ self.lrdsnowBtn.setSizePolicy(sizePolicy2)
+ self.lrdsnowBtn.setMinimumSize(QSize(0, 37))
+ self.lrdsnowBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_2.addWidget(self.lrdsnowBtn)
+
+
+ self.verticalLayout_25.addWidget(self.horizontalWidget_21)
+
+ self.horizontalWidget3 = QWidget(self.verticalWidget_2)
+ self.horizontalWidget3.setObjectName(u"horizontalWidget3")
+ self.horizontalLayout_24 = QHBoxLayout(self.horizontalWidget3)
+ self.horizontalLayout_24.setSpacing(0)
+ self.horizontalLayout_24.setObjectName(u"horizontalLayout_24")
+ self.horizontalLayout_24.setContentsMargins(0, 0, 0, 0)
+ self.toolButton_15 = QToolButton(self.horizontalWidget3)
+ self.toolButton_15.setObjectName(u"toolButton_15")
+ self.toolButton_15.setEnabled(False)
+ self.toolButton_15.setMinimumSize(QSize(150, 35))
+ self.toolButton_15.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+
+ self.horizontalLayout_24.addWidget(self.toolButton_15)
+
+ self.libiBtn = QToolButton(self.horizontalWidget3)
+ self.libiBtn.setObjectName(u"libiBtn")
+ sizePolicy2.setHeightForWidth(self.libiBtn.sizePolicy().hasHeightForWidth())
+ self.libiBtn.setSizePolicy(sizePolicy2)
+ self.libiBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_24.addWidget(self.libiBtn)
+
+ self.qtBtn = QToolButton(self.horizontalWidget3)
+ self.qtBtn.setObjectName(u"qtBtn")
+ sizePolicy2.setHeightForWidth(self.qtBtn.sizePolicy().hasHeightForWidth())
+ self.qtBtn.setSizePolicy(sizePolicy2)
+ self.qtBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_24.addWidget(self.qtBtn)
+
+
+ self.verticalLayout_25.addWidget(self.horizontalWidget3)
+
+
+ self.verticalLayout_2.addWidget(self.verticalWidget_2)
+
+ self.label = QLabel(self.homePage)
+ self.label.setObjectName(u"label")
+ self.label.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.verticalLayout_2.addWidget(self.label)
+
+ self.pages.addWidget(self.homePage)
+ self.explorePage = QWidget()
+ self.explorePage.setObjectName(u"explorePage")
+ self.verticalLayout_31 = QVBoxLayout(self.explorePage)
+ self.verticalLayout_31.setObjectName(u"verticalLayout_31")
+ self.verticalLayout_31.setContentsMargins(0, 0, 0, 0)
+ self.explorePageHeader = QWidget(self.explorePage)
+ self.explorePageHeader.setObjectName(u"explorePageHeader")
+ self.horizontalLayout_31 = QHBoxLayout(self.explorePageHeader)
+ self.horizontalLayout_31.setSpacing(10)
+ self.horizontalLayout_31.setObjectName(u"horizontalLayout_31")
+ self.horizontalLayout_31.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_16 = QToolButton(self.explorePageHeader)
+ self.toolButton_16.setObjectName(u"toolButton_16")
+ self.toolButton_16.setEnabled(False)
+ self.toolButton_16.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_16.setIcon(icon3)
+
+ self.horizontalLayout_31.addWidget(self.toolButton_16)
+
+ self.verticalWidget_9 = QWidget(self.explorePageHeader)
+ self.verticalWidget_9.setObjectName(u"verticalWidget_9")
+ self.verticalLayout_30 = QVBoxLayout(self.verticalWidget_9)
+ self.verticalLayout_30.setSpacing(6)
+ self.verticalLayout_30.setObjectName(u"verticalLayout_30")
+ self.verticalLayout_30.setContentsMargins(0, 0, 0, 0)
+ self.exploreLbl = QLabel(self.verticalWidget_9)
+ self.exploreLbl.setObjectName(u"exploreLbl")
+ self.exploreLbl.setFont(font1)
+
+ self.verticalLayout_30.addWidget(self.exploreLbl)
+
+ self.exploreSubLbl = QLabel(self.verticalWidget_9)
+ self.exploreSubLbl.setObjectName(u"exploreSubLbl")
+
+ self.verticalLayout_30.addWidget(self.exploreSubLbl)
+
+
+ self.horizontalLayout_31.addWidget(self.verticalWidget_9)
+
+ self.horizontalSpacer_13 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_31.addItem(self.horizontalSpacer_13)
+
+
+ self.verticalLayout_31.addWidget(self.explorePageHeader)
+
+ self.line_3 = QFrame(self.explorePage)
+ self.line_3.setObjectName(u"line_3")
+ self.line_3.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_3.setFrameShadow(QFrame.Plain)
+ self.line_3.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_31.addWidget(self.line_3)
+
+ self.exploreThemesCnt = QWidget(self.explorePage)
+ self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
+ sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy5.setHorizontalStretch(0)
+ sizePolicy5.setVerticalStretch(0)
+ sizePolicy5.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
+ self.exploreThemesCnt.setSizePolicy(sizePolicy5)
+
+ self.verticalLayout_31.addWidget(self.exploreThemesCnt)
+
+ self.pages.addWidget(self.explorePage)
+ self.locSimPage = QWidget()
+ self.locSimPage.setObjectName(u"locSimPage")
+ self.verticalLayout_28 = QVBoxLayout(self.locSimPage)
+ self.verticalLayout_28.setObjectName(u"verticalLayout_28")
+ self.verticalLayout_28.setContentsMargins(0, 0, 0, 0)
+ self.locSimPageHeader = QWidget(self.locSimPage)
+ self.locSimPageHeader.setObjectName(u"locSimPageHeader")
+ self.horizontalLayout_28 = QHBoxLayout(self.locSimPageHeader)
+ self.horizontalLayout_28.setSpacing(10)
+ self.horizontalLayout_28.setObjectName(u"horizontalLayout_28")
+ self.horizontalLayout_28.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_13 = QToolButton(self.locSimPageHeader)
+ self.toolButton_13.setObjectName(u"toolButton_13")
+ self.toolButton_13.setEnabled(False)
+ self.toolButton_13.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_13.setIcon(icon4)
+
+ self.horizontalLayout_28.addWidget(self.toolButton_13)
+
+ self.verticalWidget_8 = QWidget(self.locSimPageHeader)
+ self.verticalWidget_8.setObjectName(u"verticalWidget_8")
+ self.verticalLayout_27 = QVBoxLayout(self.verticalWidget_8)
+ self.verticalLayout_27.setSpacing(6)
+ self.verticalLayout_27.setObjectName(u"verticalLayout_27")
+ self.verticalLayout_27.setContentsMargins(0, 0, 0, 0)
+ self.statusBarLbl_2 = QLabel(self.verticalWidget_8)
+ self.statusBarLbl_2.setObjectName(u"statusBarLbl_2")
+ self.statusBarLbl_2.setFont(font1)
+
+ self.verticalLayout_27.addWidget(self.statusBarLbl_2)
+
+ self.label_4 = QLabel(self.verticalWidget_8)
+ self.label_4.setObjectName(u"label_4")
+
+ self.verticalLayout_27.addWidget(self.label_4)
+
+
+ self.horizontalLayout_28.addWidget(self.verticalWidget_8)
+
+ self.horizontalSpacer_11 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_28.addItem(self.horizontalSpacer_11)
+
+ self.loadLocSimBtn = QToolButton(self.locSimPageHeader)
+ self.loadLocSimBtn.setObjectName(u"loadLocSimBtn")
+
+ self.horizontalLayout_28.addWidget(self.loadLocSimBtn)
+
+
+ self.verticalLayout_28.addWidget(self.locSimPageHeader)
+
+ self.line_2 = QFrame(self.locSimPage)
+ self.line_2.setObjectName(u"line_2")
+ self.line_2.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_2.setFrameShadow(QFrame.Plain)
+ self.line_2.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_28.addWidget(self.line_2)
+
+ self.verticalSpacer_14 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_28.addItem(self.verticalSpacer_14)
+
+ self.locSimCnt = QWidget(self.locSimPage)
+ self.locSimCnt.setObjectName(u"locSimCnt")
+ self.locSimPageContent = QVBoxLayout(self.locSimCnt)
+ self.locSimPageContent.setObjectName(u"locSimPageContent")
+ self.locSimPageContent.setContentsMargins(0, 0, 0, 0)
+ self.verticalWidget2 = QWidget(self.locSimCnt)
+ self.verticalWidget2.setObjectName(u"verticalWidget2")
+ self.verticalLayout_29 = QVBoxLayout(self.verticalWidget2)
+ self.verticalLayout_29.setObjectName(u"verticalLayout_29")
+ self.verticalLayout_29.setContentsMargins(0, 0, 0, 0)
+ self.label_7 = QLabel(self.verticalWidget2)
+ self.label_7.setObjectName(u"label_7")
+ self.label_7.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.label_7)
+
+ self.latitudeTxt = QLineEdit(self.verticalWidget2)
+ self.latitudeTxt.setObjectName(u"latitudeTxt")
+ self.latitudeTxt.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.latitudeTxt)
+
+ self.label_11 = QLabel(self.verticalWidget2)
+ self.label_11.setObjectName(u"label_11")
+ self.label_11.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.label_11)
+
+ self.longitudeTxt = QLineEdit(self.verticalWidget2)
+ self.longitudeTxt.setObjectName(u"longitudeTxt")
+ self.longitudeTxt.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.longitudeTxt)
+
+ self.horizontalWidget4 = QWidget(self.verticalWidget2)
+ self.horizontalWidget4.setObjectName(u"horizontalWidget4")
+ self.horizontalLayout_3 = QHBoxLayout(self.horizontalWidget4)
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
+ self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.setLocationBtn = QToolButton(self.horizontalWidget4)
+ self.setLocationBtn.setObjectName(u"setLocationBtn")
+
+ self.horizontalLayout_3.addWidget(self.setLocationBtn)
+
+
+ self.verticalLayout_29.addWidget(self.horizontalWidget4)
+
+ self.horizontalWidget_22 = QWidget(self.verticalWidget2)
+ self.horizontalWidget_22.setObjectName(u"horizontalWidget_22")
+ self.horizontalLayout_29 = QHBoxLayout(self.horizontalWidget_22)
+ self.horizontalLayout_29.setObjectName(u"horizontalLayout_29")
+ self.horizontalLayout_29.setContentsMargins(0, 0, 0, 0)
+ self.resetLocationBtn = QToolButton(self.horizontalWidget_22)
+ self.resetLocationBtn.setObjectName(u"resetLocationBtn")
+
+ self.horizontalLayout_29.addWidget(self.resetLocationBtn)
+
+
+ self.verticalLayout_29.addWidget(self.horizontalWidget_22)
+
+
+ self.locSimPageContent.addWidget(self.verticalWidget2)
+
+
+ self.verticalLayout_28.addWidget(self.locSimCnt)
+
+ self.verticalSpacer_13 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_28.addItem(self.verticalSpacer_13)
+
+ self.pages.addWidget(self.locSimPage)
+ self.themingPage = QWidget()
+ self.themingPage.setObjectName(u"themingPage")
+ self.verticalLayout_23 = QVBoxLayout(self.themingPage)
+ self.verticalLayout_23.setObjectName(u"verticalLayout_23")
+ self.verticalLayout_23.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_8 = QWidget(self.themingPage)
+ self.horizontalWidget_8.setObjectName(u"horizontalWidget_8")
+ self.horizontalLayout_23 = QHBoxLayout(self.horizontalWidget_8)
+ self.horizontalLayout_23.setSpacing(10)
+ self.horizontalLayout_23.setObjectName(u"horizontalLayout_23")
+ self.horizontalLayout_23.setContentsMargins(0, 9, 0, 9)
+ self.themesBtn = QToolButton(self.horizontalWidget_8)
+ self.themesBtn.setObjectName(u"themesBtn")
+ self.themesBtn.setEnabled(True)
+ self.themesBtn.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.themesBtn.setIcon(icon6)
+ self.themesBtn.setIconSize(QSize(30, 30))
+
+ self.horizontalLayout_23.addWidget(self.themesBtn)
+
+ self.verticalWidget_7 = QWidget(self.horizontalWidget_8)
+ self.verticalWidget_7.setObjectName(u"verticalWidget_7")
+ self.verticalLayout_21 = QVBoxLayout(self.verticalWidget_7)
+ self.verticalLayout_21.setSpacing(6)
+ self.verticalLayout_21.setObjectName(u"verticalLayout_21")
+ self.verticalLayout_21.setContentsMargins(0, 0, 0, 0)
+ self.themesLbl = QLabel(self.verticalWidget_7)
+ self.themesLbl.setObjectName(u"themesLbl")
+ self.themesLbl.setFont(font1)
+
+ self.verticalLayout_21.addWidget(self.themesLbl)
+
+
+ self.horizontalLayout_23.addWidget(self.verticalWidget_7)
+
+ self.horizontalSpacer_10 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_23.addItem(self.horizontalSpacer_10)
+
+ self.horizontalWidget5 = QWidget(self.horizontalWidget_8)
+ self.horizontalWidget5.setObjectName(u"horizontalWidget5")
+ self.horizontalLayout_26 = QHBoxLayout(self.horizontalWidget5)
+ self.horizontalLayout_26.setObjectName(u"horizontalLayout_26")
+ self.horizontalLayout_26.setContentsMargins(0, 0, 0, 0)
+ self.importThemeBtn = QToolButton(self.horizontalWidget5)
+ self.importThemeBtn.setObjectName(u"importThemeBtn")
+ self.importThemeBtn.setEnabled(False)
+ self.importThemeBtn.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+
+ self.horizontalLayout_26.addWidget(self.importThemeBtn)
+
+ self.importThemeFolderBtn = QToolButton(self.horizontalWidget5)
+ self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
+ icon16 = QIcon()
+ icon16.addFile(u":/icon/folder.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.importThemeFolderBtn.setIcon(icon16)
+
+ self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
+
+ self.importThemeZipBtn = QToolButton(self.horizontalWidget5)
+ self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
+ icon17 = QIcon()
+ icon17.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.importThemeZipBtn.setIcon(icon17)
+
+ self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
+
+
+ self.horizontalLayout_23.addWidget(self.horizontalWidget5)
+
+
+ self.verticalLayout_23.addWidget(self.horizontalWidget_8)
+
+ self.line_15 = QFrame(self.themingPage)
+ self.line_15.setObjectName(u"line_15")
+ self.line_15.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_15.setFrameShadow(QFrame.Plain)
+ self.line_15.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_23.addWidget(self.line_15)
+
+ self.themesPageContent = QWidget(self.themingPage)
+ self.themesPageContent.setObjectName(u"themesPageContent")
+ self.themesPageContent.setEnabled(False)
+ self.verticalLayout_22 = QVBoxLayout(self.themesPageContent)
+ self.verticalLayout_22.setObjectName(u"verticalLayout_22")
+ self.verticalLayout_22.setContentsMargins(0, 0, 0, 0)
+ self.themesCnt = QWidget(self.themesPageContent)
+ self.themesCnt.setObjectName(u"themesCnt")
+
+ self.verticalLayout_22.addWidget(self.themesCnt)
+
+ self.line = QFrame(self.themesPageContent)
+ self.line.setObjectName(u"line")
+ self.line.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line.setFrameShadow(QFrame.Plain)
+ self.line.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_22.addWidget(self.line)
+
+ self.label_3 = QLabel(self.themesPageContent)
+ self.label_3.setObjectName(u"label_3")
+
+ self.verticalLayout_22.addWidget(self.label_3)
+
+ self.iconsCnt = QWidget(self.themesPageContent)
+ self.iconsCnt.setObjectName(u"iconsCnt")
+
+ self.verticalLayout_22.addWidget(self.iconsCnt)
+
+ self.verticalSpacer_9 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_22.addItem(self.verticalSpacer_9)
+
+ self.horizontalWidget6 = QWidget(self.themesPageContent)
+ self.horizontalWidget6.setObjectName(u"horizontalWidget6")
+ self.horizontalLayout_16 = QHBoxLayout(self.horizontalWidget6)
+ self.horizontalLayout_16.setObjectName(u"horizontalLayout_16")
+ self.horizontalLayout_16.setContentsMargins(0, 0, 0, 0)
+ self.hideNamesBtn = QToolButton(self.horizontalWidget6)
+ self.hideNamesBtn.setObjectName(u"hideNamesBtn")
+ sizePolicy2.setHeightForWidth(self.hideNamesBtn.sizePolicy().hasHeightForWidth())
+ self.hideNamesBtn.setSizePolicy(sizePolicy2)
+
+ self.horizontalLayout_16.addWidget(self.hideNamesBtn)
+
+ self.borderAllBtn = QToolButton(self.horizontalWidget6)
+ self.borderAllBtn.setObjectName(u"borderAllBtn")
+ sizePolicy2.setHeightForWidth(self.borderAllBtn.sizePolicy().hasHeightForWidth())
+ self.borderAllBtn.setSizePolicy(sizePolicy2)
+
+ self.horizontalLayout_16.addWidget(self.borderAllBtn)
+
+ self.addAllBtn = QToolButton(self.horizontalWidget6)
+ self.addAllBtn.setObjectName(u"addAllBtn")
+ sizePolicy2.setHeightForWidth(self.addAllBtn.sizePolicy().hasHeightForWidth())
+ self.addAllBtn.setSizePolicy(sizePolicy2)
+
+ self.horizontalLayout_16.addWidget(self.addAllBtn)
+
+
+ self.verticalLayout_22.addWidget(self.horizontalWidget6)
+
+
+ self.verticalLayout_23.addWidget(self.themesPageContent)
+
+ self.pages.addWidget(self.themingPage)
+ self.gestaltPage = QWidget()
+ self.gestaltPage.setObjectName(u"gestaltPage")
+ self.verticalLayout_4 = QVBoxLayout(self.gestaltPage)
+ self.verticalLayout_4.setObjectName(u"verticalLayout_4")
+ self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
+ self.statusBarPageHeader = QWidget(self.gestaltPage)
+ self.statusBarPageHeader.setObjectName(u"statusBarPageHeader")
+ self.horizontalLayout_5 = QHBoxLayout(self.statusBarPageHeader)
+ self.horizontalLayout_5.setSpacing(10)
+ self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
+ self.horizontalLayout_5.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_8 = QToolButton(self.statusBarPageHeader)
+ self.toolButton_8.setObjectName(u"toolButton_8")
+ self.toolButton_8.setEnabled(False)
+ self.toolButton_8.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_8.setIcon(icon6)
+ self.toolButton_8.setIconSize(QSize(30, 30))
+
+ self.horizontalLayout_5.addWidget(self.toolButton_8)
+
+ self.verticalWidget_21 = QWidget(self.statusBarPageHeader)
+ self.verticalWidget_21.setObjectName(u"verticalWidget_21")
+ self.verticalLayout_5 = QVBoxLayout(self.verticalWidget_21)
+ self.verticalLayout_5.setSpacing(6)
+ self.verticalLayout_5.setObjectName(u"verticalLayout_5")
+ self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
+ self.statusBarLbl = QLabel(self.verticalWidget_21)
+ self.statusBarLbl.setObjectName(u"statusBarLbl")
+ self.statusBarLbl.setFont(font1)
+
+ self.verticalLayout_5.addWidget(self.statusBarLbl)
+
+ self.verticalSpacer_8 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_5.addItem(self.verticalSpacer_8)
+
+
+ self.horizontalLayout_5.addWidget(self.verticalWidget_21)
+
+ self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_5.addItem(self.horizontalSpacer_4)
+
+
+ self.verticalLayout_4.addWidget(self.statusBarPageHeader)
+
+ self.line_8 = QFrame(self.gestaltPage)
+ self.line_8.setObjectName(u"line_8")
+ self.line_8.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_8.setFrameShadow(QFrame.Plain)
+ self.line_8.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_4.addWidget(self.line_8)
+
+ self.scrollArea = QScrollArea(self.gestaltPage)
+ self.scrollArea.setObjectName(u"scrollArea")
+ self.scrollArea.setFrameShape(QFrame.NoFrame)
+ self.scrollArea.setFrameShadow(QFrame.Plain)
+ self.scrollArea.setLineWidth(0)
+ self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+ self.scrollAreaWidgetContents = QWidget()
+ self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
+ self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 650, 1200))
+ self.scrollAreaWidgetContents.setMinimumSize(QSize(650, 1200))
+ self.scrollAreaWidgetContents.setMaximumSize(QSize(650, 1200))
+ self.verticalLayout_9 = QVBoxLayout(self.scrollAreaWidgetContents)
+ self.verticalLayout_9.setObjectName(u"verticalLayout_9")
+ self.verticalLayout_9.setContentsMargins(0, 0, 0, 0)
+ self.gestaltPageContent = QWidget(self.scrollAreaWidgetContents)
+ self.gestaltPageContent.setObjectName(u"gestaltPageContent")
+ self.gestaltPageContent.setEnabled(False)
+ self.verticalLayout_8 = QVBoxLayout(self.gestaltPageContent)
+ self.verticalLayout_8.setObjectName(u"verticalLayout_8")
+ self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
+ self.label_9 = QLabel(self.gestaltPageContent)
+ self.label_9.setObjectName(u"label_9")
+
+ self.verticalLayout_8.addWidget(self.label_9)
+
+ self.dynamicIslandDrp = QComboBox(self.gestaltPageContent)
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.setObjectName(u"dynamicIslandDrp")
+ self.dynamicIslandDrp.setMinimumSize(QSize(0, 0))
+ self.dynamicIslandDrp.setMaximumSize(QSize(325, 16777215))
+ self.dynamicIslandDrp.setStyleSheet(u"QComboBox {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" padding-left: 8px;\n"
+" border-radius: 8px;\n"
+"}\n"
+"\n"
+"QComboBox::drop-down {\n"
+" image: url(:/icon/caret-down-fill.svg);\n"
+" icon-size: 16px;\n"
+" subcontrol-position: right center;\n"
+" margin-right: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView {\n"
+" background-color: #3b3b3b;\n"
+" outline: none;\n"
+" margin-top: 1px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item {\n"
+" background-color: #3b3b3b;\n"
+" color: #e8e8e8;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item:hover {\n"
+" background-color: #535353;\n"
+" color: #ffffff;\n"
+"}")
+ self.dynamicIslandDrp.setMaxVisibleItems(15)
+
+ self.verticalLayout_8.addWidget(self.dynamicIslandDrp)
+
+ self.modelNameChk = QCheckBox(self.gestaltPageContent)
+ self.modelNameChk.setObjectName(u"modelNameChk")
+
+ self.verticalLayout_8.addWidget(self.modelNameChk)
+
+ self.modelNameTxt = QLineEdit(self.gestaltPageContent)
+ self.modelNameTxt.setObjectName(u"modelNameTxt")
+
+ self.verticalLayout_8.addWidget(self.modelNameTxt)
+
+ self.bootChimeChk = QCheckBox(self.gestaltPageContent)
+ self.bootChimeChk.setObjectName(u"bootChimeChk")
+
+ self.verticalLayout_8.addWidget(self.bootChimeChk)
+
+ self.chargeLimitChk = QCheckBox(self.gestaltPageContent)
+ self.chargeLimitChk.setObjectName(u"chargeLimitChk")
+
+ self.verticalLayout_8.addWidget(self.chargeLimitChk)
+
+ self.tapToWakeChk = QCheckBox(self.gestaltPageContent)
+ self.tapToWakeChk.setObjectName(u"tapToWakeChk")
+
+ self.verticalLayout_8.addWidget(self.tapToWakeChk)
+
+ self.iphone16SettingsChk = QCheckBox(self.gestaltPageContent)
+ self.iphone16SettingsChk.setObjectName(u"iphone16SettingsChk")
+
+ self.verticalLayout_8.addWidget(self.iphone16SettingsChk)
+
+ self.parallaxChk = QCheckBox(self.gestaltPageContent)
+ self.parallaxChk.setObjectName(u"parallaxChk")
+
+ self.verticalLayout_8.addWidget(self.parallaxChk)
+
+ self.horizontalWidget7 = QWidget(self.gestaltPageContent)
+ self.horizontalWidget7.setObjectName(u"horizontalWidget7")
+ self.horizontalLayout_10 = QHBoxLayout(self.horizontalWidget7)
+ self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
+ self.horizontalLayout_10.setContentsMargins(0, 0, 0, 0)
+
+ self.verticalLayout_8.addWidget(self.horizontalWidget7)
+
+ self.line_7 = QFrame(self.gestaltPageContent)
+ self.line_7.setObjectName(u"line_7")
+ self.line_7.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_7.setFrameShadow(QFrame.Plain)
+ self.line_7.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_8.addWidget(self.line_7)
+
+ self.stageManagerChk = QCheckBox(self.gestaltPageContent)
+ self.stageManagerChk.setObjectName(u"stageManagerChk")
+
+ self.verticalLayout_8.addWidget(self.stageManagerChk)
+
+ self.ipadAppsChk = QCheckBox(self.gestaltPageContent)
+ self.ipadAppsChk.setObjectName(u"ipadAppsChk")
+
+ self.verticalLayout_8.addWidget(self.ipadAppsChk)
+
+ self.shutterChk = QCheckBox(self.gestaltPageContent)
+ self.shutterChk.setObjectName(u"shutterChk")
+
+ self.verticalLayout_8.addWidget(self.shutterChk)
+
+ self.pencilChk = QCheckBox(self.gestaltPageContent)
+ self.pencilChk.setObjectName(u"pencilChk")
+
+ self.verticalLayout_8.addWidget(self.pencilChk)
+
+ self.actionButtonChk = QCheckBox(self.gestaltPageContent)
+ self.actionButtonChk.setObjectName(u"actionButtonChk")
+
+ self.verticalLayout_8.addWidget(self.actionButtonChk)
+
+ self.line_9 = QFrame(self.gestaltPageContent)
+ self.line_9.setObjectName(u"line_9")
+ self.line_9.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_9.setFrameShadow(QFrame.Plain)
+ self.line_9.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_8.addWidget(self.line_9)
+
+ self.internalInstallChk = QCheckBox(self.gestaltPageContent)
+ self.internalInstallChk.setObjectName(u"internalInstallChk")
+
+ self.verticalLayout_8.addWidget(self.internalInstallChk)
+
+ self.internalStorageChk = QCheckBox(self.gestaltPageContent)
+ self.internalStorageChk.setObjectName(u"internalStorageChk")
+
+ self.verticalLayout_8.addWidget(self.internalStorageChk)
+
+ self.line_10 = QFrame(self.gestaltPageContent)
+ self.line_10.setObjectName(u"line_10")
+ self.line_10.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_10.setFrameShadow(QFrame.Plain)
+ self.line_10.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_8.addWidget(self.line_10)
+
+ self.collisionSOSChk = QCheckBox(self.gestaltPageContent)
+ self.collisionSOSChk.setObjectName(u"collisionSOSChk")
+
+ self.verticalLayout_8.addWidget(self.collisionSOSChk)
+
+ self.sleepApneaChk = QCheckBox(self.gestaltPageContent)
+ self.sleepApneaChk.setObjectName(u"sleepApneaChk")
+
+ self.verticalLayout_8.addWidget(self.sleepApneaChk)
+
+ self.aodChk = QCheckBox(self.gestaltPageContent)
+ self.aodChk.setObjectName(u"aodChk")
+
+ self.verticalLayout_8.addWidget(self.aodChk)
+
+ self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_8.addItem(self.verticalSpacer_3)
+
+
+ self.verticalLayout_9.addWidget(self.gestaltPageContent)
+
+ self.scrollArea.setWidget(self.scrollAreaWidgetContents)
+
+ self.verticalLayout_4.addWidget(self.scrollArea)
+
+ self.pages.addWidget(self.gestaltPage)
+ self.customOperationsPage = QWidget()
+ self.customOperationsPage.setObjectName(u"customOperationsPage")
+ self.verticalLayout_20 = QVBoxLayout(self.customOperationsPage)
+ self.verticalLayout_20.setObjectName(u"verticalLayout_20")
+ self.verticalLayout_20.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_7 = QWidget(self.customOperationsPage)
+ self.horizontalWidget_7.setObjectName(u"horizontalWidget_7")
+ self.horizontalLayout_22 = QHBoxLayout(self.horizontalWidget_7)
+ self.horizontalLayout_22.setSpacing(10)
+ self.horizontalLayout_22.setObjectName(u"horizontalLayout_22")
+ self.horizontalLayout_22.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_12 = QToolButton(self.horizontalWidget_7)
+ self.toolButton_12.setObjectName(u"toolButton_12")
+ self.toolButton_12.setEnabled(False)
+ self.toolButton_12.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_12.setIcon(icon5)
+ self.toolButton_12.setIconSize(QSize(25, 25))
+
+ self.horizontalLayout_22.addWidget(self.toolButton_12)
+
+ self.verticalWidget_6 = QWidget(self.horizontalWidget_7)
+ self.verticalWidget_6.setObjectName(u"verticalWidget_6")
+ self.verticalLayout_18 = QVBoxLayout(self.verticalWidget_6)
+ self.verticalLayout_18.setSpacing(6)
+ self.verticalLayout_18.setObjectName(u"verticalLayout_18")
+ self.verticalLayout_18.setContentsMargins(0, 0, 0, 0)
+ self.customOperationsLbl = QLabel(self.verticalWidget_6)
+ self.customOperationsLbl.setObjectName(u"customOperationsLbl")
+ self.customOperationsLbl.setFont(font1)
+
+ self.verticalLayout_18.addWidget(self.customOperationsLbl)
+
+ self.label_14 = QLabel(self.verticalWidget_6)
+ self.label_14.setObjectName(u"label_14")
+
+ self.verticalLayout_18.addWidget(self.label_14)
+
+
+ self.horizontalLayout_22.addWidget(self.verticalWidget_6)
+
+ self.horizontalSpacer_9 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_22.addItem(self.horizontalSpacer_9)
+
+
+ self.verticalLayout_20.addWidget(self.horizontalWidget_7)
+
+ self.line_14 = QFrame(self.customOperationsPage)
+ self.line_14.setObjectName(u"line_14")
+ self.line_14.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_14.setFrameShadow(QFrame.Plain)
+ self.line_14.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_20.addWidget(self.line_14)
+
+ self.customOperationsPageContent = QWidget(self.customOperationsPage)
+ self.customOperationsPageContent.setObjectName(u"customOperationsPageContent")
+ self.customOperationsPageContent.setEnabled(True)
+ self.verticalLayout_19 = QVBoxLayout(self.customOperationsPageContent)
+ self.verticalLayout_19.setObjectName(u"verticalLayout_19")
+ self.verticalLayout_19.setContentsMargins(0, 0, 0, 0)
+ self.customOpsTopBtns = QHBoxLayout()
+#ifndef Q_OS_MAC
+ self.customOpsTopBtns.setSpacing(-1)
+#endif
+ self.customOpsTopBtns.setObjectName(u"customOpsTopBtns")
+ self.customOpsTopBtns.setContentsMargins(-1, -1, -1, 0)
+ self.horizontalSpacer_17 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.customOpsTopBtns.addItem(self.horizontalSpacer_17)
+
+ self.importOperationBtn = QToolButton(self.customOperationsPageContent)
+ self.importOperationBtn.setObjectName(u"importOperationBtn")
+ self.importOperationBtn.setEnabled(True)
+ icon18 = QIcon()
+ icon18.addFile(u":/icon/import.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.importOperationBtn.setIcon(icon18)
+ self.importOperationBtn.setIconSize(QSize(20, 20))
+ self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.customOpsTopBtns.addWidget(self.importOperationBtn, 0, Qt.AlignLeft)
+
+ self.newOperationBtn = QToolButton(self.customOperationsPageContent)
+ self.newOperationBtn.setObjectName(u"newOperationBtn")
+ self.newOperationBtn.setEnabled(True)
+ sizePolicy2.setHeightForWidth(self.newOperationBtn.sizePolicy().hasHeightForWidth())
+ self.newOperationBtn.setSizePolicy(sizePolicy2)
+ self.newOperationBtn.setMinimumSize(QSize(0, 35))
+ icon19 = QIcon()
+ icon19.addFile(u":/icon/plus.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.newOperationBtn.setIcon(icon19)
+ self.newOperationBtn.setIconSize(QSize(16, 16))
+ self.newOperationBtn.setCheckable(False)
+ self.newOperationBtn.setAutoExclusive(True)
+ self.newOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.customOpsTopBtns.addWidget(self.newOperationBtn, 0, Qt.AlignLeft)
+
+
+ self.verticalLayout_19.addLayout(self.customOpsTopBtns)
+
+ self.operationsCnt = QWidget(self.customOperationsPageContent)
+ self.operationsCnt.setObjectName(u"operationsCnt")
+ self.operationsCnt.setEnabled(True)
+ sizePolicy5.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
+ self.operationsCnt.setSizePolicy(sizePolicy5)
+
+ self.verticalLayout_19.addWidget(self.operationsCnt)
+
+
+ self.verticalLayout_20.addWidget(self.customOperationsPageContent)
+
+ self.pages.addWidget(self.customOperationsPage)
+ self.settingsPage = QWidget()
+ self.settingsPage.setObjectName(u"settingsPage")
+ self.verticalLayout_10 = QVBoxLayout(self.settingsPage)
+ self.verticalLayout_10.setObjectName(u"verticalLayout_10")
+ self.verticalLayout_10.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_4 = QWidget(self.settingsPage)
+ self.horizontalWidget_4.setObjectName(u"horizontalWidget_4")
+ self.horizontalLayout_13 = QHBoxLayout(self.horizontalWidget_4)
+ self.horizontalLayout_13.setSpacing(10)
+ self.horizontalLayout_13.setObjectName(u"horizontalLayout_13")
+ self.horizontalLayout_13.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_7 = QToolButton(self.horizontalWidget_4)
+ self.toolButton_7.setObjectName(u"toolButton_7")
+ self.toolButton_7.setEnabled(False)
+ self.toolButton_7.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_7.setIcon(icon10)
+
+ self.horizontalLayout_13.addWidget(self.toolButton_7)
+
+ self.verticalWidget_3 = QWidget(self.horizontalWidget_4)
+ self.verticalWidget_3.setObjectName(u"verticalWidget_3")
+ self.verticalLayout_7 = QVBoxLayout(self.verticalWidget_3)
+ self.verticalLayout_7.setSpacing(6)
+ self.verticalLayout_7.setObjectName(u"verticalLayout_7")
+ self.verticalLayout_7.setContentsMargins(0, 0, 0, 0)
+ self.springboardOptionsLbl = QLabel(self.verticalWidget_3)
+ self.springboardOptionsLbl.setObjectName(u"springboardOptionsLbl")
+ self.springboardOptionsLbl.setFont(font1)
+
+ self.verticalLayout_7.addWidget(self.springboardOptionsLbl)
+
+ self.verticalSpacer_17 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_7.addItem(self.verticalSpacer_17)
+
+
+ self.horizontalLayout_13.addWidget(self.verticalWidget_3)
+
+ self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_13.addItem(self.horizontalSpacer_6)
+
+
+ self.verticalLayout_10.addWidget(self.horizontalWidget_4)
+
+ self.line_11 = QFrame(self.settingsPage)
+ self.line_11.setObjectName(u"line_11")
+ self.line_11.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_11.setFrameShadow(QFrame.Plain)
+ self.line_11.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_10.addWidget(self.line_11)
+
+ self.settingsPageContent = QWidget(self.settingsPage)
+ self.settingsPageContent.setObjectName(u"settingsPageContent")
+ self.settingsPageContent.setEnabled(True)
+ self.settingsPageContent.setMaximumSize(QSize(650, 16777215))
+ self._2 = QVBoxLayout(self.settingsPageContent)
+ self._2.setObjectName(u"_2")
+ self._2.setContentsMargins(0, 0, 0, 0)
+ self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
+ self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
+ self.allowWifiApplyingChk.setChecked(True)
+
+ self._2.addWidget(self.allowWifiApplyingChk)
+
+ self.verticalSpacer_5 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self._2.addItem(self.verticalSpacer_5)
+
+
+ self.verticalLayout_10.addWidget(self.settingsPageContent)
+
+ self.pages.addWidget(self.settingsPage)
+ self.featureFlagsPage = QWidget()
+ self.featureFlagsPage.setObjectName(u"featureFlagsPage")
+ self.verticalLayout_14 = QVBoxLayout(self.featureFlagsPage)
+ self.verticalLayout_14.setObjectName(u"verticalLayout_14")
+ self.verticalLayout_14.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_5 = QWidget(self.featureFlagsPage)
+ self.horizontalWidget_5.setObjectName(u"horizontalWidget_5")
+ self.horizontalLayout_20 = QHBoxLayout(self.horizontalWidget_5)
+ self.horizontalLayout_20.setSpacing(10)
+ self.horizontalLayout_20.setObjectName(u"horizontalLayout_20")
+ self.horizontalLayout_20.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_10 = QToolButton(self.horizontalWidget_5)
+ self.toolButton_10.setObjectName(u"toolButton_10")
+ self.toolButton_10.setEnabled(False)
+ self.toolButton_10.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_10.setIcon(icon7)
+
+ self.horizontalLayout_20.addWidget(self.toolButton_10)
+
+ self.verticalWidget_4 = QWidget(self.horizontalWidget_5)
+ self.verticalWidget_4.setObjectName(u"verticalWidget_4")
+ self.verticalLayout_12 = QVBoxLayout(self.verticalWidget_4)
+ self.verticalLayout_12.setSpacing(6)
+ self.verticalLayout_12.setObjectName(u"verticalLayout_12")
+ self.verticalLayout_12.setContentsMargins(0, 0, 0, 0)
+ self.internalOptionsLbl = QLabel(self.verticalWidget_4)
+ self.internalOptionsLbl.setObjectName(u"internalOptionsLbl")
+ self.internalOptionsLbl.setFont(font1)
+
+ self.verticalLayout_12.addWidget(self.internalOptionsLbl)
+
+ self.verticalSpacer_15 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_12.addItem(self.verticalSpacer_15)
+
+
+ self.horizontalLayout_20.addWidget(self.verticalWidget_4)
+
+ self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_20.addItem(self.horizontalSpacer_7)
+
+
+ self.verticalLayout_14.addWidget(self.horizontalWidget_5)
+
+ self.line_12 = QFrame(self.featureFlagsPage)
+ self.line_12.setObjectName(u"line_12")
+ self.line_12.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_12.setFrameShadow(QFrame.Plain)
+ self.line_12.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_14.addWidget(self.line_12)
+
+ self.featureFlagsPageContent = QWidget(self.featureFlagsPage)
+ self.featureFlagsPageContent.setObjectName(u"featureFlagsPageContent")
+ self.featureFlagsPageContent.setEnabled(True)
+ self.verticalLayout_13 = QVBoxLayout(self.featureFlagsPageContent)
+ self.verticalLayout_13.setObjectName(u"verticalLayout_13")
+ self.verticalLayout_13.setContentsMargins(0, 0, 0, 0)
+ self.clockAnimChk = QCheckBox(self.featureFlagsPageContent)
+ self.clockAnimChk.setObjectName(u"clockAnimChk")
+
+ self.verticalLayout_13.addWidget(self.clockAnimChk)
+
+ self.lockscreenChk = QCheckBox(self.featureFlagsPageContent)
+ self.lockscreenChk.setObjectName(u"lockscreenChk")
+
+ self.verticalLayout_13.addWidget(self.lockscreenChk)
+
+ self.div = QFrame(self.featureFlagsPageContent)
+ self.div.setObjectName(u"div")
+ self.div.setEnabled(False)
+ self.div.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.div.setFrameShadow(QFrame.Plain)
+ self.div.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_13.addWidget(self.div)
+
+ self.photosChk = QCheckBox(self.featureFlagsPageContent)
+ self.photosChk.setObjectName(u"photosChk")
+
+ self.verticalLayout_13.addWidget(self.photosChk)
+
+ self.aiChk = QCheckBox(self.featureFlagsPageContent)
+ self.aiChk.setObjectName(u"aiChk")
+
+ self.verticalLayout_13.addWidget(self.aiChk)
+
+ self.verticalSpacer_6 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_13.addItem(self.verticalSpacer_6)
+
+
+ self.verticalLayout_14.addWidget(self.featureFlagsPageContent)
+
+ self.pages.addWidget(self.featureFlagsPage)
+ self.euEnablerPage = QWidget()
+ self.euEnablerPage.setObjectName(u"euEnablerPage")
+ self.verticalLayout_17 = QVBoxLayout(self.euEnablerPage)
+ self.verticalLayout_17.setObjectName(u"verticalLayout_17")
+ self.verticalLayout_17.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_6 = QWidget(self.euEnablerPage)
+ self.horizontalWidget_6.setObjectName(u"horizontalWidget_6")
+ self.horizontalLayout_21 = QHBoxLayout(self.horizontalWidget_6)
+ self.horizontalLayout_21.setSpacing(10)
+ self.horizontalLayout_21.setObjectName(u"horizontalLayout_21")
+ self.horizontalLayout_21.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_11 = QToolButton(self.horizontalWidget_6)
+ self.toolButton_11.setObjectName(u"toolButton_11")
+ self.toolButton_11.setEnabled(False)
+ self.toolButton_11.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_11.setIcon(icon4)
+
+ self.horizontalLayout_21.addWidget(self.toolButton_11)
+
+ self.verticalWidget_5 = QWidget(self.horizontalWidget_6)
+ self.verticalWidget_5.setObjectName(u"verticalWidget_5")
+ self.verticalLayout_15 = QVBoxLayout(self.verticalWidget_5)
+ self.verticalLayout_15.setSpacing(6)
+ self.verticalLayout_15.setObjectName(u"verticalLayout_15")
+ self.verticalLayout_15.setContentsMargins(0, 0, 0, 0)
+ self.setupOptionsLbl = QLabel(self.verticalWidget_5)
+ self.setupOptionsLbl.setObjectName(u"setupOptionsLbl")
+ self.setupOptionsLbl.setFont(font1)
+
+ self.verticalLayout_15.addWidget(self.setupOptionsLbl)
+
+ self.euEnablerEnabledChk = QCheckBox(self.verticalWidget_5)
+ self.euEnablerEnabledChk.setObjectName(u"euEnablerEnabledChk")
+
+ self.verticalLayout_15.addWidget(self.euEnablerEnabledChk)
+
+
+ self.horizontalLayout_21.addWidget(self.verticalWidget_5)
+
+ self.horizontalSpacer_8 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_21.addItem(self.horizontalSpacer_8)
+
+
+ self.verticalLayout_17.addWidget(self.horizontalWidget_6)
+
+ self.line_13 = QFrame(self.euEnablerPage)
+ self.line_13.setObjectName(u"line_13")
+ self.line_13.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_13.setFrameShadow(QFrame.Plain)
+ self.line_13.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_17.addWidget(self.line_13)
+
+ self.euEnablerPageContent = QWidget(self.euEnablerPage)
+ self.euEnablerPageContent.setObjectName(u"euEnablerPageContent")
+ self.euEnablerPageContent.setEnabled(False)
+ self.verticalLayout_16 = QVBoxLayout(self.euEnablerPageContent)
+ self.verticalLayout_16.setObjectName(u"verticalLayout_16")
+ self.verticalLayout_16.setContentsMargins(0, 0, 0, 0)
+ self.label_5 = QLabel(self.euEnablerPageContent)
+ self.label_5.setObjectName(u"label_5")
+
+ self.verticalLayout_16.addWidget(self.label_5)
+
+ self.methodChoiceDrp = QComboBox(self.euEnablerPageContent)
+ self.methodChoiceDrp.addItem("")
+ self.methodChoiceDrp.addItem("")
+ self.methodChoiceDrp.setObjectName(u"methodChoiceDrp")
+ self.methodChoiceDrp.setMaximumSize(QSize(150, 16777215))
+ self.methodChoiceDrp.setStyleSheet(u"QComboBox {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" padding-left: 8px;\n"
+" border-radius: 8px;\n"
+"}\n"
+"\n"
+"QComboBox::drop-down {\n"
+" image: url(:/icon/caret-down-fill.svg);\n"
+" icon-size: 16px;\n"
+" subcontrol-position: right center;\n"
+" margin-right: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView {\n"
+" background-color: #3b3b3b;\n"
+" outline: none;\n"
+" margin-top: 1px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item {\n"
+" background-color: #3b3b3b;\n"
+" color: #e8e8e8;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item:hover {\n"
+" background-color: #535353;\n"
+" color: #ffffff;\n"
+"}")
+
+ self.verticalLayout_16.addWidget(self.methodChoiceDrp)
+
+ self.label_6 = QLabel(self.euEnablerPageContent)
+ self.label_6.setObjectName(u"label_6")
+
+ self.verticalLayout_16.addWidget(self.label_6)
+
+ self.regionCodeTxt = QLineEdit(self.euEnablerPageContent)
+ self.regionCodeTxt.setObjectName(u"regionCodeTxt")
+
+ self.verticalLayout_16.addWidget(self.regionCodeTxt)
+
+ self.verticalSpacer_7 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_16.addItem(self.verticalSpacer_7)
+
+
+ self.verticalLayout_17.addWidget(self.euEnablerPageContent)
+
+ self.pages.addWidget(self.euEnablerPage)
+ self.applyPage = QWidget()
+ self.applyPage.setObjectName(u"applyPage")
+ self.verticalLayout_6 = QVBoxLayout(self.applyPage)
+ self.verticalLayout_6.setObjectName(u"verticalLayout_6")
+ self.verticalLayout_6.setContentsMargins(0, 0, 0, 0)
+ self.verticalWidget3 = QWidget(self.applyPage)
+ self.verticalWidget3.setObjectName(u"verticalWidget3")
+ self.verticalLayout_24 = QVBoxLayout(self.verticalWidget3)
+ self.verticalLayout_24.setObjectName(u"verticalLayout_24")
+ self.verticalLayout_24.setContentsMargins(0, 0, 0, 0)
+ self.locSimPageHeader_2 = QWidget(self.verticalWidget3)
+ self.locSimPageHeader_2.setObjectName(u"locSimPageHeader_2")
+ self.horizontalLayout_33 = QHBoxLayout(self.locSimPageHeader_2)
+ self.horizontalLayout_33.setSpacing(10)
+ self.horizontalLayout_33.setObjectName(u"horizontalLayout_33")
+ self.horizontalLayout_33.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_18 = QToolButton(self.locSimPageHeader_2)
+ self.toolButton_18.setObjectName(u"toolButton_18")
+ self.toolButton_18.setEnabled(False)
+ self.toolButton_18.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_18.setIcon(icon9)
+
+ self.horizontalLayout_33.addWidget(self.toolButton_18)
+
+ self.verticalWidget_11 = QWidget(self.locSimPageHeader_2)
+ self.verticalWidget_11.setObjectName(u"verticalWidget_11")
+ self.verticalLayout_33 = QVBoxLayout(self.verticalWidget_11)
+ self.verticalLayout_33.setSpacing(6)
+ self.verticalLayout_33.setObjectName(u"verticalLayout_33")
+ self.verticalLayout_33.setContentsMargins(0, 0, 0, 0)
+ self.statusBarLbl_5 = QLabel(self.verticalWidget_11)
+ self.statusBarLbl_5.setObjectName(u"statusBarLbl_5")
+ self.statusBarLbl_5.setFont(font1)
+
+ self.verticalLayout_33.addWidget(self.statusBarLbl_5)
+
+ self.label_16 = QLabel(self.verticalWidget_11)
+ self.label_16.setObjectName(u"label_16")
+
+ self.verticalLayout_33.addWidget(self.label_16)
+
+
+ self.horizontalLayout_33.addWidget(self.verticalWidget_11)
+
+ self.horizontalSpacer_15 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_33.addItem(self.horizontalSpacer_15)
+
+
+ self.verticalLayout_24.addWidget(self.locSimPageHeader_2)
+
+ self.line_5 = QFrame(self.verticalWidget3)
+ self.line_5.setObjectName(u"line_5")
+ self.line_5.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_5.setFrameShadow(QFrame.Plain)
+ self.line_5.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_24.addWidget(self.line_5)
+
+ self.verticalSpacer_10 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_24.addItem(self.verticalSpacer_10)
+
+ self.modifiedTweaksLbl = QLabel(self.verticalWidget3)
+ self.modifiedTweaksLbl.setObjectName(u"modifiedTweaksLbl")
+ self.modifiedTweaksLbl.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.modifiedTweaksLbl)
+
+ self.gestaltLocationLbl = QLabel(self.verticalWidget3)
+ self.gestaltLocationLbl.setObjectName(u"gestaltLocationLbl")
+ self.gestaltLocationLbl.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.gestaltLocationLbl)
+
+ self.horizontalLayout_7 = QHBoxLayout()
+ self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
+ self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
+ self.chooseGestaltBtn = QToolButton(self.verticalWidget3)
+ self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
+ self.chooseGestaltBtn.setIcon(icon16)
+ self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
+
+
+ self.verticalLayout_24.addLayout(self.horizontalLayout_7)
+
+ self.horizontalWidget8 = QWidget(self.verticalWidget3)
+ self.horizontalWidget8.setObjectName(u"horizontalWidget8")
+ self.horizontalLayout_17 = QHBoxLayout(self.horizontalWidget8)
+ self.horizontalLayout_17.setObjectName(u"horizontalLayout_17")
+ self.horizontalLayout_17.setContentsMargins(0, 0, 0, 0)
+ self.applyTweaksBtn = QToolButton(self.horizontalWidget8)
+ self.applyTweaksBtn.setObjectName(u"applyTweaksBtn")
+ self.applyTweaksBtn.setIcon(icon9)
+ self.applyTweaksBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_17.addWidget(self.applyTweaksBtn)
+
+
+ self.verticalLayout_24.addWidget(self.horizontalWidget8)
+
+ self.statusLbl = QLabel(self.verticalWidget3)
+ self.statusLbl.setObjectName(u"statusLbl")
+ self.statusLbl.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.statusLbl)
+
+ self.restoreProgressBar = QProgressBar(self.verticalWidget3)
+ self.restoreProgressBar.setObjectName(u"restoreProgressBar")
+ sizePolicy.setHeightForWidth(self.restoreProgressBar.sizePolicy().hasHeightForWidth())
+ self.restoreProgressBar.setSizePolicy(sizePolicy)
+ self.restoreProgressBar.setMinimumSize(QSize(150, 0))
+ self.restoreProgressBar.setValue(0)
+ self.restoreProgressBar.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.restoreProgressBar, 0, Qt.AlignHCenter)
+
+ self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_24.addItem(self.verticalSpacer_2)
+
+ self.horizontalWidget9 = QWidget(self.verticalWidget3)
+ self.horizontalWidget9.setObjectName(u"horizontalWidget9")
+ self.horizontalLayout_25 = QHBoxLayout(self.horizontalWidget9)
+ self.horizontalLayout_25.setObjectName(u"horizontalLayout_25")
+ self.horizontalLayout_25.setContentsMargins(0, 0, 0, 0)
+ self.horizontalSpacer_14 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_25.addItem(self.horizontalSpacer_14)
+
+ self.removeTweaksBtn = QToolButton(self.horizontalWidget9)
+ self.removeTweaksBtn.setObjectName(u"removeTweaksBtn")
+
+ self.horizontalLayout_25.addWidget(self.removeTweaksBtn)
+
+ self.resetGestaltBtn = QToolButton(self.horizontalWidget9)
+ self.resetGestaltBtn.setObjectName(u"resetGestaltBtn")
+
+ self.horizontalLayout_25.addWidget(self.resetGestaltBtn)
+
+ self.horizontalSpacer_16 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_25.addItem(self.horizontalSpacer_16)
+
+
+ self.verticalLayout_24.addWidget(self.horizontalWidget9)
+
+
+ self.verticalLayout_6.addWidget(self.verticalWidget3)
+
+ self.pages.addWidget(self.applyPage)
+
+ self._3.addWidget(self.pages)
+
+
+ self.horizontalLayout_18.addWidget(self.main)
+
+
+ self.verticalLayout_11.addWidget(self.body)
+
+ Nugget.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(Nugget)
+
+ self.devicePicker.setCurrentIndex(-1)
+ self.pages.setCurrentIndex(0)
+ self.dynamicIslandDrp.setCurrentIndex(0)
+
+
+ QMetaObject.connectSlotsByName(Nugget)
+ # setupUi
+
+ def retranslateUi(self, Nugget):
+ Nugget.setWindowTitle(QCoreApplication.translate("Nugget", u"Nugget", None))
+ self.centralwidget.setProperty("cls", QCoreApplication.translate("Nugget", u"central", None))
+ self.devicePicker.setPlaceholderText(QCoreApplication.translate("Nugget", u"None", None))
+ self.refreshBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"btn", None))
+ self.titleBar.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
+ self.homePageBtn.setText(QCoreApplication.translate("Nugget", u" Home", None))
+ self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
+ self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.locSimPageBtn.setText(QCoreApplication.translate("Nugget", u" Location Simulation", None))
+ self.locSimPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.customOperationsPageBtn.setText(QCoreApplication.translate("Nugget", u" Custom Operations", None))
+ self.customOperationsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
+ self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
+ self.featureFlagsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.euEnablerPageBtn.setText(QCoreApplication.translate("Nugget", u" EU Enabler", None))
+ self.euEnablerPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
+ self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
+ self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.settingsPageBtn.setText(QCoreApplication.translate("Nugget", u" Settings", None))
+ self.settingsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.phoneNameLbl.setText(QCoreApplication.translate("Nugget", u"Phone", None))
+ self.phoneVersionLbl.setText(QCoreApplication.translate("Nugget", u"Version", None))
+ self.bigNuggetBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.label_2.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
+ self.discordBtn.setText(QCoreApplication.translate("Nugget", u" Join the Discord", None))
+ self.leminBtn.setText(QCoreApplication.translate("Nugget", u" LeminLimez", None))
+ self.leminTwitterBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.leminKoFiBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.toolButton_14.setText(QCoreApplication.translate("Nugget", u"Main Developer", None))
+ self.helpFromBtn.setText(QCoreApplication.translate("Nugget", u"With Help From", None))
+ self.jjtechBtn.setText(QCoreApplication.translate("Nugget", u"JJTech\n"
+"Sparserestore", None))
+ self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
+"Clock Anim, Photos UI", None))
+ self.lrdsnowBtn.setText(QCoreApplication.translate("Nugget", u"lrdsnow\n"
+"EU Enabler", None))
+ self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
+ self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
+ self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
+ self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 2.2", None))
+ self.exploreLbl.setText(QCoreApplication.translate("Nugget", u"Explore", None))
+ self.exploreSubLbl.setText("")
+ self.statusBarLbl_2.setText(QCoreApplication.translate("Nugget", u"Location Simulation", None))
+ self.label_4.setText("")
+ self.loadLocSimBtn.setText(QCoreApplication.translate("Nugget", u"Start Location Simulation", None))
+ self.label_7.setText(QCoreApplication.translate("Nugget", u"Latitude", None))
+ self.latitudeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"XXX.XXXXX", None))
+ self.label_11.setText(QCoreApplication.translate("Nugget", u"Longitude", None))
+ self.longitudeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"XXX.XXXXX", None))
+ self.setLocationBtn.setText(QCoreApplication.translate("Nugget", u"Set Location", None))
+ self.resetLocationBtn.setText(QCoreApplication.translate("Nugget", u"Reset Location", None))
+ self.themesLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt Modifications", None))
+ self.importThemeBtn.setText(QCoreApplication.translate("Nugget", u"Import Theme:", None))
+ self.importThemeFolderBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.importThemeZipBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.label_3.setText(QCoreApplication.translate("Nugget", u"Customize Individual Apps", None))
+ self.hideNamesBtn.setText(QCoreApplication.translate("Nugget", u"Hide/Show All App Names", None))
+ self.borderAllBtn.setText(QCoreApplication.translate("Nugget", u"Toggle All \"Border\"", None))
+ self.addAllBtn.setText(QCoreApplication.translate("Nugget", u"Toggle All \"Add to Device\"", None))
+ self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
+ self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
+ self.dynamicIslandDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
+ self.dynamicIslandDrp.setItemText(1, QCoreApplication.translate("Nugget", u"2436 (iPhone X Gestures for SE phones)", None))
+ self.dynamicIslandDrp.setItemText(2, QCoreApplication.translate("Nugget", u"2556 (iPhone 14 Pro Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(3, QCoreApplication.translate("Nugget", u"2796 (iPhone 14 Pro Max Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(4, QCoreApplication.translate("Nugget", u"2976 (iPhone 15 Pro Max Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(5, QCoreApplication.translate("Nugget", u"2622 (iPhone 16 Pro Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(6, QCoreApplication.translate("Nugget", u"2868 (iPhone 16 Pro Max Dynamic Island)", None))
+
+ self.dynamicIslandDrp.setCurrentText(QCoreApplication.translate("Nugget", u"None", None))
+ self.modelNameChk.setText(QCoreApplication.translate("Nugget", u"Change Device Model Name", None))
+ self.modelNameTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Model Name", None))
+ self.bootChimeChk.setText(QCoreApplication.translate("Nugget", u"Enable Boot Chime", None))
+ self.chargeLimitChk.setText(QCoreApplication.translate("Nugget", u"Enable Charge Limit", None))
+ self.tapToWakeChk.setText(QCoreApplication.translate("Nugget", u"Enable Tap to Wake (for iPhone SEs)", None))
+ self.iphone16SettingsChk.setText(QCoreApplication.translate("Nugget", u"Enable iPhone 16 Settings", None))
+ self.parallaxChk.setText(QCoreApplication.translate("Nugget", u"Disable Wallpaper Parallax", None))
+ self.stageManagerChk.setText(QCoreApplication.translate("Nugget", u"Enable Stage Manager Supported (WARNING: risky on some devices, mainly phones)", None))
+ self.ipadAppsChk.setText(QCoreApplication.translate("Nugget", u"Allow iPad Apps on iPhone", None))
+ self.shutterChk.setText(QCoreApplication.translate("Nugget", u"Disable Region Restrictions (ie. Shutter Sound)", None))
+ self.pencilChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Pencil Settings Tab", None))
+ self.actionButtonChk.setText(QCoreApplication.translate("Nugget", u"Enable Action Button Settings Tab", None))
+ self.internalInstallChk.setText(QCoreApplication.translate("Nugget", u"Set as Apple Internal Install (ie Metal HUD in any app)", None))
+ self.internalStorageChk.setText(QCoreApplication.translate("Nugget", u"Enable Internal Storage (WARNING: risky for some devices, mainly iPads)", None))
+ self.collisionSOSChk.setText(QCoreApplication.translate("Nugget", u"Enable Collision SOS", None))
+ self.sleepApneaChk.setText(QCoreApplication.translate("Nugget", u"Enable Sleep Apnea (real) [for Apple Watches]", None))
+ self.aodChk.setText(QCoreApplication.translate("Nugget", u"Enable Always On Display", None))
+ self.customOperationsLbl.setText(QCoreApplication.translate("Nugget", u"Custom Operations", None))
+ self.label_14.setText("")
+ self.importOperationBtn.setText(QCoreApplication.translate("Nugget", u" Import .cowperation", None))
+ self.newOperationBtn.setText(QCoreApplication.translate("Nugget", u" New Operation", None))
+ self.springboardOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Nugget Settings", None))
+ self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
+ self.internalOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Feature Flags", None))
+ self.clockAnimChk.setText(QCoreApplication.translate("Nugget", u"Enable Lockscreen Clock Animation", None))
+ self.lockscreenChk.setText(QCoreApplication.translate("Nugget", u"Enable Duplicate Lockscreen Button and Lockscreen Quickswitch", None))
+ self.photosChk.setText(QCoreApplication.translate("Nugget", u"Enable Old Photo UI", None))
+ self.aiChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence", None))
+ self.setupOptionsLbl.setText(QCoreApplication.translate("Nugget", u"EU Enabler", None))
+ self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enabled", None))
+ self.label_5.setText(QCoreApplication.translate("Nugget", u"Method Type", None))
+ self.methodChoiceDrp.setItemText(0, QCoreApplication.translate("Nugget", u"Method 1", None))
+ self.methodChoiceDrp.setItemText(1, QCoreApplication.translate("Nugget", u"Method 2", None))
+
+ self.label_6.setText(QCoreApplication.translate("Nugget", u"Region Code (Should be 2 letters)", None))
+ self.regionCodeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Region Code (Default: US)", None))
+ self.statusBarLbl_5.setText(QCoreApplication.translate("Nugget", u"Apply", None))
+ self.label_16.setText("")
+ self.modifiedTweaksLbl.setText(QCoreApplication.translate("Nugget", u"Current gestalt file location:", None))
+ self.gestaltLocationLbl.setText(QCoreApplication.translate("Nugget", u"None", None))
+ self.chooseGestaltBtn.setText(QCoreApplication.translate("Nugget", u" Choose Gestalt File", None))
+ self.applyTweaksBtn.setText(QCoreApplication.translate("Nugget", u" Apply Changes", None))
+ self.statusLbl.setText(QCoreApplication.translate("Nugget", u"Ready!", None))
+ self.removeTweaksBtn.setText(QCoreApplication.translate("Nugget", u"Remove All Tweaks", None))
+ self.resetGestaltBtn.setText(QCoreApplication.translate("Nugget", u"Reset Mobile Gestalt", None))
+ # retranslateUi
+
diff --git a/qt/resources.qrc b/qt/resources.qrc
new file mode 100644
index 0000000..ad4dfc3
--- /dev/null
+++ b/qt/resources.qrc
@@ -0,0 +1,34 @@
+
+
+ credits/LeminLimez.png
+ icon/app-indicator.svg
+ icon/arrow-clockwise.svg
+ icon/brush.svg
+ icon/caret-down-fill.svg
+ icon/check-circle.svg
+ icon/compass.svg
+ icon/gear.svg
+ icon/hdd.svg
+ icon/house.svg
+ icon/phone.svg
+ icon/toggles.svg
+ icon/wifi.svg
+ icon/x-lg.svg
+ icon/discord.svg
+ icon/heart-fill.svg
+ icon/github.svg
+ icon/twitter.svg
+ icon/file-earmark-zip.svg
+ icon/folder.svg
+ icon/trash.svg
+ icon/currency-dollar.svg
+ icon/geo-alt.svg
+ icon/star.svg
+ icon/pencil.svg
+ icon/import.svg
+ icon/plus.svg
+ icon/iphone-island.svg
+ icon/flag.svg
+ credits/big_nugget.png
+
+
diff --git a/qt/ui_mainwindow.py b/qt/ui_mainwindow.py
new file mode 100644
index 0000000..46cc26f
--- /dev/null
+++ b/qt/ui_mainwindow.py
@@ -0,0 +1,2231 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.2
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QFrame,
+ QHBoxLayout, QLabel, QLineEdit, QMainWindow,
+ QProgressBar, QScrollArea, QSizePolicy, QSpacerItem,
+ QStackedWidget, QToolButton, QVBoxLayout, QWidget)
+import resources_rc
+
+class Ui_Nugget(object):
+ def setupUi(self, Nugget):
+ if not Nugget.objectName():
+ Nugget.setObjectName(u"Nugget")
+ Nugget.resize(1000, 600)
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(Nugget.sizePolicy().hasHeightForWidth())
+ Nugget.setSizePolicy(sizePolicy)
+ Nugget.setMinimumSize(QSize(1000, 600))
+ Nugget.setMaximumSize(QSize(1000, 600))
+ Nugget.setWindowOpacity(1.000000000000000)
+ Nugget.setStyleSheet(u"QWidget {\n"
+" color: #FFFFFF;\n"
+" background-color: transparent;\n"
+" spacing: 0px;\n"
+"}\n"
+"\n"
+"QWidget:focus {\n"
+" outline: none;\n"
+"}\n"
+"\n"
+"QWidget [cls=central] {\n"
+" background-color: #1e1e1e;\n"
+" border-radius: 0px;\n"
+" border: 1px solid #4B4B4B;\n"
+"}\n"
+"\n"
+"QLabel {\n"
+" font-size: 14px;\n"
+"}\n"
+"\n"
+"QToolButton {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" min-height: 35px;\n"
+" icon-size: 16px;\n"
+" padding-left: 10px;\n"
+" padding-right: 10px;\n"
+" border-radius: 8px;\n"
+"}\n"
+"\n"
+"QToolButton[cls=sidebarBtn] {\n"
+" background-color: transparent;\n"
+" icon-size: 24px;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}\n"
+"\n"
+"QToolButton:checked {\n"
+" background-color: #2860ca;\n"
+" color: #FFFFFF;\n"
+"}\n"
+"\n"
+"QCheckBox {\n"
+" spacing: 8px;\n"
+" font-size: 14px;\n"
+"}\n"
+"\n"
+"QRadioButton {\n"
+" spacing: 8px;\n"
+" font-size: 14px;\n"
+"}\n"
+""
+ "\n"
+"QLineEdit {\n"
+" border: none;\n"
+" background-color: transparent;\n"
+" color: #FFFFFF;\n"
+" font-size: 14px;\n"
+"}\n"
+"\n"
+"QScrollBar:vertical {\n"
+" background: transparent;\n"
+" width: 8px;\n"
+"}\n"
+"\n"
+"QScrollBar:horizontal {\n"
+" background: transparent;\n"
+" height: 8px;\n"
+"}\n"
+"\n"
+"QScrollBar::handle {\n"
+" background: #3b3b3b;\n"
+" border-radius: 4px;\n"
+"}\n"
+"\n"
+"QScrollBar::handle:pressed {\n"
+" background: #535353;\n"
+"}\n"
+"\n"
+"QScrollBar::add-line,\n"
+"QScrollBar::sub-line {\n"
+" background: none;\n"
+"}\n"
+"\n"
+"QScrollBar::add-page,\n"
+"QScrollBar::sub-page {\n"
+" background: none;\n"
+"}\n"
+"\n"
+"QSlider::groove:horizontal {\n"
+" background-color: #3b3b3b;\n"
+" height: 4px;\n"
+" border-radius: 2px;\n"
+"}\n"
+"\n"
+"QSlider::handle:horizontal {\n"
+" background-color: #535353;\n"
+" width: 8px;\n"
+" margin: -8px 0;\n"
+" border-radius: 4px;\n"
+"}\n"
+"\n"
+"QSlider::handle:horizontal:pressed {\n"
+" background-color: #3b82f7;\n"
+"}\n"
+"\n"
+"QSl"
+ "ider::tick:horizontal {\n"
+" background-color: #535353;\n"
+" width: 1px;\n"
+"}\n"
+"")
+ self.centralwidget = QWidget(Nugget)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.centralwidget.setEnabled(True)
+ self.centralwidget.setContextMenuPolicy(Qt.NoContextMenu)
+ self.centralwidget.setLocale(QLocale(QLocale.English, QLocale.UnitedStates))
+ self.verticalLayout_11 = QVBoxLayout(self.centralwidget)
+ self.verticalLayout_11.setObjectName(u"verticalLayout_11")
+ self.deviceBar = QWidget(self.centralwidget)
+ self.deviceBar.setObjectName(u"deviceBar")
+ self.horizontalLayout_4 = QHBoxLayout(self.deviceBar)
+ self.horizontalLayout_4.setSpacing(1)
+ self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
+ self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_2 = QWidget(self.deviceBar)
+ self.horizontalWidget_2.setObjectName(u"horizontalWidget_2")
+ self.horizontalWidget_2.setMinimumSize(QSize(300, 0))
+ self.horizontalLayout_19 = QHBoxLayout(self.horizontalWidget_2)
+ self.horizontalLayout_19.setSpacing(1)
+ self.horizontalLayout_19.setObjectName(u"horizontalLayout_19")
+ self.horizontalLayout_19.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_3 = QWidget(self.horizontalWidget_2)
+ self.horizontalWidget_3.setObjectName(u"horizontalWidget_3")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.horizontalWidget_3.sizePolicy().hasHeightForWidth())
+ self.horizontalWidget_3.setSizePolicy(sizePolicy1)
+ self.horizontalLayout_15 = QHBoxLayout(self.horizontalWidget_3)
+ self.horizontalLayout_15.setSpacing(0)
+ self.horizontalLayout_15.setObjectName(u"horizontalLayout_15")
+ self.horizontalLayout_15.setContentsMargins(0, 0, 0, 0)
+ self.toolButton_6 = QToolButton(self.horizontalWidget_3)
+ self.toolButton_6.setObjectName(u"toolButton_6")
+ self.toolButton_6.setEnabled(False)
+ self.toolButton_6.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+"}")
+ icon = QIcon()
+ icon.addFile(u":/icon/phone.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.toolButton_6.setIcon(icon)
+
+ self.horizontalLayout_15.addWidget(self.toolButton_6)
+
+ self.devicePicker = QComboBox(self.horizontalWidget_3)
+ self.devicePicker.setObjectName(u"devicePicker")
+ self.devicePicker.setStyleSheet(u"#devicePicker {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" min-height: 38px;\n"
+" min-width: 35px;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"#devicePicker::drop-down {\n"
+" image: url(:/icon/caret-down-fill.svg);\n"
+" icon-size: 16px;\n"
+" subcontrol-position: right center;\n"
+" margin-right: 8px;\n"
+"}\n"
+"\n"
+"#devicePicker QAbstractItemView {\n"
+" background-color: #3b3b3b;\n"
+" outline: none;\n"
+" margin-top: 1px;\n"
+"}\n"
+"\n"
+"#devicePicker QAbstractItemView::item {\n"
+" background-color: #3b3b3b;\n"
+" color: #e8e8e8;\n"
+" min-height: 38px;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"#devicePicker QAbstractItemView::item:hover {\n"
+" background-color: #535353;\n"
+" color: #ffffff;\n"
+"}")
+ self.devicePicker.setDuplicatesEnabled(True)
+
+ self.horizontalLayout_15.addWidget(self.devicePicker)
+
+
+ self.horizontalLayout_19.addWidget(self.horizontalWidget_3)
+
+ self.refreshBtn = QToolButton(self.horizontalWidget_2)
+ self.refreshBtn.setObjectName(u"refreshBtn")
+ self.refreshBtn.setStyleSheet(u"QToolButton {\n"
+" border-radius: 0px;\n"
+"}")
+ icon1 = QIcon()
+ icon1.addFile(u":/icon/arrow-clockwise.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.refreshBtn.setIcon(icon1)
+ self.refreshBtn.setCheckable(False)
+ self.refreshBtn.setToolButtonStyle(Qt.ToolButtonIconOnly)
+
+ self.horizontalLayout_19.addWidget(self.refreshBtn)
+
+
+ self.horizontalLayout_4.addWidget(self.horizontalWidget_2)
+
+ self.titleBar = QToolButton(self.deviceBar)
+ self.titleBar.setObjectName(u"titleBar")
+ self.titleBar.setEnabled(False)
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
+ sizePolicy2.setHorizontalStretch(0)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.titleBar.sizePolicy().hasHeightForWidth())
+ self.titleBar.setSizePolicy(sizePolicy2)
+ self.titleBar.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+"}")
+
+ self.horizontalLayout_4.addWidget(self.titleBar)
+
+
+ self.verticalLayout_11.addWidget(self.deviceBar)
+
+ self.body = QWidget(self.centralwidget)
+ self.body.setObjectName(u"body")
+ self.body.setMinimumSize(QSize(0, 20))
+ self.horizontalLayout_18 = QHBoxLayout(self.body)
+ self.horizontalLayout_18.setObjectName(u"horizontalLayout_18")
+ self.horizontalLayout_18.setContentsMargins(0, 0, 0, 0)
+ self.sidebar = QWidget(self.body)
+ self.sidebar.setObjectName(u"sidebar")
+ sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Preferred)
+ sizePolicy3.setHorizontalStretch(0)
+ sizePolicy3.setVerticalStretch(0)
+ sizePolicy3.setHeightForWidth(self.sidebar.sizePolicy().hasHeightForWidth())
+ self.sidebar.setSizePolicy(sizePolicy3)
+ self.sidebar.setMinimumSize(QSize(300, 0))
+ self.sidebar.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.verticalLayout = QVBoxLayout(self.sidebar)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.verticalLayout.setContentsMargins(0, 9, 9, 0)
+ self.homePageBtn = QToolButton(self.sidebar)
+ self.homePageBtn.setObjectName(u"homePageBtn")
+ sizePolicy2.setHeightForWidth(self.homePageBtn.sizePolicy().hasHeightForWidth())
+ self.homePageBtn.setSizePolicy(sizePolicy2)
+ icon2 = QIcon()
+ icon2.addFile(u":/icon/house.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.homePageBtn.setIcon(icon2)
+ self.homePageBtn.setCheckable(True)
+ self.homePageBtn.setChecked(True)
+ self.homePageBtn.setAutoExclusive(True)
+ self.homePageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.homePageBtn)
+
+ self.explorePageBtn = QToolButton(self.sidebar)
+ self.explorePageBtn.setObjectName(u"explorePageBtn")
+ self.explorePageBtn.setEnabled(True)
+ sizePolicy2.setHeightForWidth(self.explorePageBtn.sizePolicy().hasHeightForWidth())
+ self.explorePageBtn.setSizePolicy(sizePolicy2)
+ icon3 = QIcon()
+ icon3.addFile(u":/icon/compass.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.explorePageBtn.setIcon(icon3)
+ self.explorePageBtn.setCheckable(True)
+ self.explorePageBtn.setAutoExclusive(True)
+ self.explorePageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.explorePageBtn)
+
+ self.locSimPageBtn = QToolButton(self.sidebar)
+ self.locSimPageBtn.setObjectName(u"locSimPageBtn")
+ sizePolicy2.setHeightForWidth(self.locSimPageBtn.sizePolicy().hasHeightForWidth())
+ self.locSimPageBtn.setSizePolicy(sizePolicy2)
+ icon4 = QIcon()
+ icon4.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.locSimPageBtn.setIcon(icon4)
+ self.locSimPageBtn.setCheckable(True)
+ self.locSimPageBtn.setAutoExclusive(True)
+ self.locSimPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.locSimPageBtn)
+
+ self.sidebarDiv1 = QFrame(self.sidebar)
+ self.sidebarDiv1.setObjectName(u"sidebarDiv1")
+ self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.sidebarDiv1.setFrameShadow(QFrame.Plain)
+ self.sidebarDiv1.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout.addWidget(self.sidebarDiv1)
+
+ self.customOperationsPageBtn = QToolButton(self.sidebar)
+ self.customOperationsPageBtn.setObjectName(u"customOperationsPageBtn")
+ sizePolicy2.setHeightForWidth(self.customOperationsPageBtn.sizePolicy().hasHeightForWidth())
+ self.customOperationsPageBtn.setSizePolicy(sizePolicy2)
+ icon5 = QIcon()
+ icon5.addFile(u":/icon/pencil.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.customOperationsPageBtn.setIcon(icon5)
+ self.customOperationsPageBtn.setCheckable(True)
+ self.customOperationsPageBtn.setAutoExclusive(True)
+ self.customOperationsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.customOperationsPageBtn)
+
+ self.gestaltPageBtn = QToolButton(self.sidebar)
+ self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
+ sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
+ self.gestaltPageBtn.setSizePolicy(sizePolicy2)
+ icon6 = QIcon()
+ icon6.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.gestaltPageBtn.setIcon(icon6)
+ self.gestaltPageBtn.setIconSize(QSize(24, 28))
+ self.gestaltPageBtn.setCheckable(True)
+ self.gestaltPageBtn.setAutoExclusive(True)
+ self.gestaltPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+ self.gestaltPageBtn.setArrowType(Qt.NoArrow)
+
+ self.verticalLayout.addWidget(self.gestaltPageBtn)
+
+ self.featureFlagsPageBtn = QToolButton(self.sidebar)
+ self.featureFlagsPageBtn.setObjectName(u"featureFlagsPageBtn")
+ sizePolicy2.setHeightForWidth(self.featureFlagsPageBtn.sizePolicy().hasHeightForWidth())
+ self.featureFlagsPageBtn.setSizePolicy(sizePolicy2)
+ font = QFont()
+ font.setFamilies([u".AppleSystemUIFont"])
+ self.featureFlagsPageBtn.setFont(font)
+ icon7 = QIcon()
+ icon7.addFile(u":/icon/flag.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.featureFlagsPageBtn.setIcon(icon7)
+ self.featureFlagsPageBtn.setCheckable(True)
+ self.featureFlagsPageBtn.setAutoExclusive(True)
+ self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.featureFlagsPageBtn)
+
+ self.euEnablerPageBtn = QToolButton(self.sidebar)
+ self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
+ sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
+ self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
+ self.euEnablerPageBtn.setIcon(icon4)
+ self.euEnablerPageBtn.setCheckable(True)
+ self.euEnablerPageBtn.setAutoExclusive(True)
+ self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.euEnablerPageBtn)
+
+ self.internalOptionsPageBtn = QToolButton(self.sidebar)
+ self.internalOptionsPageBtn.setObjectName(u"internalOptionsPageBtn")
+ sizePolicy2.setHeightForWidth(self.internalOptionsPageBtn.sizePolicy().hasHeightForWidth())
+ self.internalOptionsPageBtn.setSizePolicy(sizePolicy2)
+ icon8 = QIcon()
+ icon8.addFile(u":/icon/hdd.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.internalOptionsPageBtn.setIcon(icon8)
+ self.internalOptionsPageBtn.setCheckable(True)
+ self.internalOptionsPageBtn.setAutoExclusive(True)
+ self.internalOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.internalOptionsPageBtn)
+
+ self.sidebarDiv2 = QFrame(self.sidebar)
+ self.sidebarDiv2.setObjectName(u"sidebarDiv2")
+ self.sidebarDiv2.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.sidebarDiv2.setFrameShadow(QFrame.Plain)
+ self.sidebarDiv2.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout.addWidget(self.sidebarDiv2)
+
+ self.applyPageBtn = QToolButton(self.sidebar)
+ self.applyPageBtn.setObjectName(u"applyPageBtn")
+ sizePolicy2.setHeightForWidth(self.applyPageBtn.sizePolicy().hasHeightForWidth())
+ self.applyPageBtn.setSizePolicy(sizePolicy2)
+ icon9 = QIcon()
+ icon9.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.applyPageBtn.setIcon(icon9)
+ self.applyPageBtn.setCheckable(True)
+ self.applyPageBtn.setAutoExclusive(True)
+ self.applyPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.applyPageBtn)
+
+ self.settingsPageBtn = QToolButton(self.sidebar)
+ self.settingsPageBtn.setObjectName(u"settingsPageBtn")
+ sizePolicy2.setHeightForWidth(self.settingsPageBtn.sizePolicy().hasHeightForWidth())
+ self.settingsPageBtn.setSizePolicy(sizePolicy2)
+ icon10 = QIcon()
+ icon10.addFile(u":/icon/gear.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.settingsPageBtn.setIcon(icon10)
+ self.settingsPageBtn.setCheckable(True)
+ self.settingsPageBtn.setAutoExclusive(True)
+ self.settingsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.settingsPageBtn)
+
+ self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout.addItem(self.verticalSpacer)
+
+
+ self.horizontalLayout_18.addWidget(self.sidebar)
+
+ self.main = QWidget(self.body)
+ self.main.setObjectName(u"main")
+ sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
+ sizePolicy4.setHorizontalStretch(0)
+ sizePolicy4.setVerticalStretch(0)
+ sizePolicy4.setHeightForWidth(self.main.sizePolicy().hasHeightForWidth())
+ self.main.setSizePolicy(sizePolicy4)
+ self._3 = QVBoxLayout(self.main)
+ self._3.setSpacing(0)
+ self._3.setObjectName(u"_3")
+ self._3.setContentsMargins(9, 0, 0, 0)
+ self.pages = QStackedWidget(self.main)
+ self.pages.setObjectName(u"pages")
+ self.homePage = QWidget()
+ self.homePage.setObjectName(u"homePage")
+ self.verticalLayout_2 = QVBoxLayout(self.homePage)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget = QWidget(self.homePage)
+ self.horizontalWidget.setObjectName(u"horizontalWidget")
+ self.horizontalLayout = QHBoxLayout(self.horizontalWidget)
+ self.horizontalLayout.setSpacing(10)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalLayout.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_9 = QToolButton(self.horizontalWidget)
+ self.toolButton_9.setObjectName(u"toolButton_9")
+ self.toolButton_9.setEnabled(False)
+ self.toolButton_9.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_9.setIcon(icon)
+
+ self.horizontalLayout.addWidget(self.toolButton_9)
+
+ self.verticalWidget = QWidget(self.horizontalWidget)
+ self.verticalWidget.setObjectName(u"verticalWidget")
+ self.verticalLayout_3 = QVBoxLayout(self.verticalWidget)
+ self.verticalLayout_3.setSpacing(6)
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.phoneNameLbl = QLabel(self.verticalWidget)
+ self.phoneNameLbl.setObjectName(u"phoneNameLbl")
+ font1 = QFont()
+ font1.setBold(False)
+ self.phoneNameLbl.setFont(font1)
+
+ self.verticalLayout_3.addWidget(self.phoneNameLbl)
+
+ self.phoneVersionLbl = QLabel(self.verticalWidget)
+ self.phoneVersionLbl.setObjectName(u"phoneVersionLbl")
+ self.phoneVersionLbl.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
+ self.phoneVersionLbl.setTextFormat(Qt.RichText)
+ self.phoneVersionLbl.setOpenExternalLinks(False)
+
+ self.verticalLayout_3.addWidget(self.phoneVersionLbl)
+
+
+ self.horizontalLayout.addWidget(self.verticalWidget)
+
+ self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout.addItem(self.horizontalSpacer_3)
+
+
+ self.verticalLayout_2.addWidget(self.horizontalWidget)
+
+ self.line_4 = QFrame(self.homePage)
+ self.line_4.setObjectName(u"line_4")
+ self.line_4.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_4.setFrameShadow(QFrame.Plain)
+ self.line_4.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_2.addWidget(self.line_4)
+
+ self.horizontalWidget1 = QWidget(self.homePage)
+ self.horizontalWidget1.setObjectName(u"horizontalWidget1")
+ self.horizontalLayout_27 = QHBoxLayout(self.horizontalWidget1)
+ self.horizontalLayout_27.setSpacing(50)
+ self.horizontalLayout_27.setObjectName(u"horizontalLayout_27")
+ self.horizontalLayout_27.setContentsMargins(0, 0, 0, 0)
+ self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_27.addItem(self.horizontalSpacer_2)
+
+ self.bigNuggetBtn = QToolButton(self.horizontalWidget1)
+ self.bigNuggetBtn.setObjectName(u"bigNuggetBtn")
+ self.bigNuggetBtn.setStyleSheet(u"QToolButton {\n"
+" background-color: transparent;\n"
+" padding: 0px;\n"
+"}")
+ icon11 = QIcon()
+ icon11.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.bigNuggetBtn.setIcon(icon11)
+ self.bigNuggetBtn.setIconSize(QSize(150, 200))
+
+ self.horizontalLayout_27.addWidget(self.bigNuggetBtn)
+
+ self.verticalWidget1 = QWidget(self.horizontalWidget1)
+ self.verticalWidget1.setObjectName(u"verticalWidget1")
+ self.verticalLayout_26 = QVBoxLayout(self.verticalWidget1)
+ self.verticalLayout_26.setObjectName(u"verticalLayout_26")
+ self.verticalLayout_26.setContentsMargins(0, 0, 0, 0)
+ self.verticalSpacer_11 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_26.addItem(self.verticalSpacer_11)
+
+ self.label_2 = QLabel(self.verticalWidget1)
+ self.label_2.setObjectName(u"label_2")
+ font2 = QFont()
+ font2.setBold(True)
+ self.label_2.setFont(font2)
+ self.label_2.setStyleSheet(u"QLabel {\n"
+" font-size: 35px;\n"
+"}")
+ self.label_2.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_26.addWidget(self.label_2)
+
+ self.verticalSpacer_12 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_26.addItem(self.verticalSpacer_12)
+
+ self.discordBtn = QToolButton(self.verticalWidget1)
+ self.discordBtn.setObjectName(u"discordBtn")
+ icon12 = QIcon()
+ icon12.addFile(u":/icon/discord.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.discordBtn.setIcon(icon12)
+ self.discordBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout_26.addWidget(self.discordBtn)
+
+ self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_26.addItem(self.verticalSpacer_4)
+
+
+ self.horizontalLayout_27.addWidget(self.verticalWidget1)
+
+ self.horizontalSpacer_12 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_27.addItem(self.horizontalSpacer_12)
+
+
+ self.verticalLayout_2.addWidget(self.horizontalWidget1)
+
+ self.verticalWidget_2 = QWidget(self.homePage)
+ self.verticalWidget_2.setObjectName(u"verticalWidget_2")
+ self.verticalLayout_25 = QVBoxLayout(self.verticalWidget_2)
+ self.verticalLayout_25.setSpacing(15)
+ self.verticalLayout_25.setObjectName(u"verticalLayout_25")
+ self.verticalLayout_25.setContentsMargins(0, 30, 0, 30)
+ self.horizontalWidget2 = QWidget(self.verticalWidget_2)
+ self.horizontalWidget2.setObjectName(u"horizontalWidget2")
+ self.horizontalWidget2.setEnabled(True)
+ self.horizontalLayout_6 = QHBoxLayout(self.horizontalWidget2)
+ self.horizontalLayout_6.setSpacing(0)
+ self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
+ self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
+ self.leminBtn = QToolButton(self.horizontalWidget2)
+ self.leminBtn.setObjectName(u"leminBtn")
+ self.leminBtn.setEnabled(True)
+ self.leminBtn.setMinimumSize(QSize(150, 35))
+ self.leminBtn.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+ icon13 = QIcon()
+ icon13.addFile(u":/credits/LeminLimez.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.leminBtn.setIcon(icon13)
+ self.leminBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_6.addWidget(self.leminBtn)
+
+ self.leminTwitterBtn = QToolButton(self.horizontalWidget2)
+ self.leminTwitterBtn.setObjectName(u"leminTwitterBtn")
+ self.leminTwitterBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+ icon14 = QIcon()
+ icon14.addFile(u":/icon/twitter.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.leminTwitterBtn.setIcon(icon14)
+
+ self.horizontalLayout_6.addWidget(self.leminTwitterBtn)
+
+ self.leminKoFiBtn = QToolButton(self.horizontalWidget2)
+ self.leminKoFiBtn.setObjectName(u"leminKoFiBtn")
+ self.leminKoFiBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+ icon15 = QIcon()
+ icon15.addFile(u":/icon/currency-dollar.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.leminKoFiBtn.setIcon(icon15)
+
+ self.horizontalLayout_6.addWidget(self.leminKoFiBtn)
+
+ self.horizontalSpacer = QSpacerItem(10, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_6.addItem(self.horizontalSpacer)
+
+ self.toolButton_14 = QToolButton(self.horizontalWidget2)
+ self.toolButton_14.setObjectName(u"toolButton_14")
+ self.toolButton_14.setEnabled(False)
+ sizePolicy2.setHeightForWidth(self.toolButton_14.sizePolicy().hasHeightForWidth())
+ self.toolButton_14.setSizePolicy(sizePolicy2)
+ self.toolButton_14.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+
+ self.horizontalLayout_6.addWidget(self.toolButton_14)
+
+ self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_6.addItem(self.horizontalSpacer_5)
+
+
+ self.verticalLayout_25.addWidget(self.horizontalWidget2)
+
+ self.verticalSpacer_16 = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_25.addItem(self.verticalSpacer_16)
+
+ self.horizontalWidget_21 = QWidget(self.verticalWidget_2)
+ self.horizontalWidget_21.setObjectName(u"horizontalWidget_21")
+ self.horizontalLayout_2 = QHBoxLayout(self.horizontalWidget_21)
+ self.horizontalLayout_2.setSpacing(0)
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.helpFromBtn = QToolButton(self.horizontalWidget_21)
+ self.helpFromBtn.setObjectName(u"helpFromBtn")
+ self.helpFromBtn.setEnabled(True)
+ self.helpFromBtn.setMinimumSize(QSize(150, 35))
+ self.helpFromBtn.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+ self.helpFromBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_2.addWidget(self.helpFromBtn)
+
+ self.jjtechBtn = QToolButton(self.horizontalWidget_21)
+ self.jjtechBtn.setObjectName(u"jjtechBtn")
+ sizePolicy2.setHeightForWidth(self.jjtechBtn.sizePolicy().hasHeightForWidth())
+ self.jjtechBtn.setSizePolicy(sizePolicy2)
+ self.jjtechBtn.setMinimumSize(QSize(0, 37))
+ self.jjtechBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_2.addWidget(self.jjtechBtn)
+
+ self.disfordottieBtn = QToolButton(self.horizontalWidget_21)
+ self.disfordottieBtn.setObjectName(u"disfordottieBtn")
+ sizePolicy2.setHeightForWidth(self.disfordottieBtn.sizePolicy().hasHeightForWidth())
+ self.disfordottieBtn.setSizePolicy(sizePolicy2)
+ self.disfordottieBtn.setMinimumSize(QSize(0, 37))
+ self.disfordottieBtn.setStyleSheet(u"QToolButton {\n"
+" border-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_2.addWidget(self.disfordottieBtn)
+
+ self.lrdsnowBtn = QToolButton(self.horizontalWidget_21)
+ self.lrdsnowBtn.setObjectName(u"lrdsnowBtn")
+ sizePolicy2.setHeightForWidth(self.lrdsnowBtn.sizePolicy().hasHeightForWidth())
+ self.lrdsnowBtn.setSizePolicy(sizePolicy2)
+ self.lrdsnowBtn.setMinimumSize(QSize(0, 37))
+ self.lrdsnowBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_2.addWidget(self.lrdsnowBtn)
+
+
+ self.verticalLayout_25.addWidget(self.horizontalWidget_21)
+
+ self.horizontalWidget3 = QWidget(self.verticalWidget_2)
+ self.horizontalWidget3.setObjectName(u"horizontalWidget3")
+ self.horizontalLayout_24 = QHBoxLayout(self.horizontalWidget3)
+ self.horizontalLayout_24.setSpacing(0)
+ self.horizontalLayout_24.setObjectName(u"horizontalLayout_24")
+ self.horizontalLayout_24.setContentsMargins(0, 0, 0, 0)
+ self.toolButton_15 = QToolButton(self.horizontalWidget3)
+ self.toolButton_15.setObjectName(u"toolButton_15")
+ self.toolButton_15.setEnabled(False)
+ self.toolButton_15.setMinimumSize(QSize(150, 35))
+ self.toolButton_15.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+
+ self.horizontalLayout_24.addWidget(self.toolButton_15)
+
+ self.libiBtn = QToolButton(self.horizontalWidget3)
+ self.libiBtn.setObjectName(u"libiBtn")
+ sizePolicy2.setHeightForWidth(self.libiBtn.sizePolicy().hasHeightForWidth())
+ self.libiBtn.setSizePolicy(sizePolicy2)
+ self.libiBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-right-radius: 0px;\n"
+" border-bottom-right-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_24.addWidget(self.libiBtn)
+
+ self.qtBtn = QToolButton(self.horizontalWidget3)
+ self.qtBtn.setObjectName(u"qtBtn")
+ sizePolicy2.setHeightForWidth(self.qtBtn.sizePolicy().hasHeightForWidth())
+ self.qtBtn.setSizePolicy(sizePolicy2)
+ self.qtBtn.setStyleSheet(u"QToolButton {\n"
+" border-top-left-radius: 0px;\n"
+" border-bottom-left-radius: 0px;\n"
+" background: none;\n"
+" border: 1px solid #3b3b3b;\n"
+" border-left: none;\n"
+"}\n"
+"\n"
+"QToolButton:pressed {\n"
+" background-color: #535353;\n"
+" color: #FFFFFF;\n"
+"}")
+
+ self.horizontalLayout_24.addWidget(self.qtBtn)
+
+
+ self.verticalLayout_25.addWidget(self.horizontalWidget3)
+
+
+ self.verticalLayout_2.addWidget(self.verticalWidget_2)
+
+ self.label = QLabel(self.homePage)
+ self.label.setObjectName(u"label")
+ self.label.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.verticalLayout_2.addWidget(self.label)
+
+ self.pages.addWidget(self.homePage)
+ self.explorePage = QWidget()
+ self.explorePage.setObjectName(u"explorePage")
+ self.verticalLayout_31 = QVBoxLayout(self.explorePage)
+ self.verticalLayout_31.setObjectName(u"verticalLayout_31")
+ self.verticalLayout_31.setContentsMargins(0, 0, 0, 0)
+ self.explorePageHeader = QWidget(self.explorePage)
+ self.explorePageHeader.setObjectName(u"explorePageHeader")
+ self.horizontalLayout_31 = QHBoxLayout(self.explorePageHeader)
+ self.horizontalLayout_31.setSpacing(10)
+ self.horizontalLayout_31.setObjectName(u"horizontalLayout_31")
+ self.horizontalLayout_31.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_16 = QToolButton(self.explorePageHeader)
+ self.toolButton_16.setObjectName(u"toolButton_16")
+ self.toolButton_16.setEnabled(False)
+ self.toolButton_16.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_16.setIcon(icon3)
+
+ self.horizontalLayout_31.addWidget(self.toolButton_16)
+
+ self.verticalWidget_9 = QWidget(self.explorePageHeader)
+ self.verticalWidget_9.setObjectName(u"verticalWidget_9")
+ self.verticalLayout_30 = QVBoxLayout(self.verticalWidget_9)
+ self.verticalLayout_30.setSpacing(6)
+ self.verticalLayout_30.setObjectName(u"verticalLayout_30")
+ self.verticalLayout_30.setContentsMargins(0, 0, 0, 0)
+ self.exploreLbl = QLabel(self.verticalWidget_9)
+ self.exploreLbl.setObjectName(u"exploreLbl")
+ self.exploreLbl.setFont(font1)
+
+ self.verticalLayout_30.addWidget(self.exploreLbl)
+
+ self.exploreSubLbl = QLabel(self.verticalWidget_9)
+ self.exploreSubLbl.setObjectName(u"exploreSubLbl")
+
+ self.verticalLayout_30.addWidget(self.exploreSubLbl)
+
+
+ self.horizontalLayout_31.addWidget(self.verticalWidget_9)
+
+ self.horizontalSpacer_13 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_31.addItem(self.horizontalSpacer_13)
+
+
+ self.verticalLayout_31.addWidget(self.explorePageHeader)
+
+ self.line_3 = QFrame(self.explorePage)
+ self.line_3.setObjectName(u"line_3")
+ self.line_3.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_3.setFrameShadow(QFrame.Plain)
+ self.line_3.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_31.addWidget(self.line_3)
+
+ self.exploreThemesCnt = QWidget(self.explorePage)
+ self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
+ sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy5.setHorizontalStretch(0)
+ sizePolicy5.setVerticalStretch(0)
+ sizePolicy5.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
+ self.exploreThemesCnt.setSizePolicy(sizePolicy5)
+
+ self.verticalLayout_31.addWidget(self.exploreThemesCnt)
+
+ self.pages.addWidget(self.explorePage)
+ self.locSimPage = QWidget()
+ self.locSimPage.setObjectName(u"locSimPage")
+ self.verticalLayout_28 = QVBoxLayout(self.locSimPage)
+ self.verticalLayout_28.setObjectName(u"verticalLayout_28")
+ self.verticalLayout_28.setContentsMargins(0, 0, 0, 0)
+ self.locSimPageHeader = QWidget(self.locSimPage)
+ self.locSimPageHeader.setObjectName(u"locSimPageHeader")
+ self.horizontalLayout_28 = QHBoxLayout(self.locSimPageHeader)
+ self.horizontalLayout_28.setSpacing(10)
+ self.horizontalLayout_28.setObjectName(u"horizontalLayout_28")
+ self.horizontalLayout_28.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_13 = QToolButton(self.locSimPageHeader)
+ self.toolButton_13.setObjectName(u"toolButton_13")
+ self.toolButton_13.setEnabled(False)
+ self.toolButton_13.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_13.setIcon(icon4)
+
+ self.horizontalLayout_28.addWidget(self.toolButton_13)
+
+ self.verticalWidget_8 = QWidget(self.locSimPageHeader)
+ self.verticalWidget_8.setObjectName(u"verticalWidget_8")
+ self.verticalLayout_27 = QVBoxLayout(self.verticalWidget_8)
+ self.verticalLayout_27.setSpacing(6)
+ self.verticalLayout_27.setObjectName(u"verticalLayout_27")
+ self.verticalLayout_27.setContentsMargins(0, 0, 0, 0)
+ self.statusBarLbl_2 = QLabel(self.verticalWidget_8)
+ self.statusBarLbl_2.setObjectName(u"statusBarLbl_2")
+ self.statusBarLbl_2.setFont(font1)
+
+ self.verticalLayout_27.addWidget(self.statusBarLbl_2)
+
+ self.label_4 = QLabel(self.verticalWidget_8)
+ self.label_4.setObjectName(u"label_4")
+
+ self.verticalLayout_27.addWidget(self.label_4)
+
+
+ self.horizontalLayout_28.addWidget(self.verticalWidget_8)
+
+ self.horizontalSpacer_11 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_28.addItem(self.horizontalSpacer_11)
+
+ self.loadLocSimBtn = QToolButton(self.locSimPageHeader)
+ self.loadLocSimBtn.setObjectName(u"loadLocSimBtn")
+
+ self.horizontalLayout_28.addWidget(self.loadLocSimBtn)
+
+
+ self.verticalLayout_28.addWidget(self.locSimPageHeader)
+
+ self.line_2 = QFrame(self.locSimPage)
+ self.line_2.setObjectName(u"line_2")
+ self.line_2.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_2.setFrameShadow(QFrame.Plain)
+ self.line_2.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_28.addWidget(self.line_2)
+
+ self.verticalSpacer_14 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_28.addItem(self.verticalSpacer_14)
+
+ self.locSimCnt = QWidget(self.locSimPage)
+ self.locSimCnt.setObjectName(u"locSimCnt")
+ self.locSimPageContent = QVBoxLayout(self.locSimCnt)
+ self.locSimPageContent.setObjectName(u"locSimPageContent")
+ self.locSimPageContent.setContentsMargins(0, 0, 0, 0)
+ self.verticalWidget2 = QWidget(self.locSimCnt)
+ self.verticalWidget2.setObjectName(u"verticalWidget2")
+ self.verticalLayout_29 = QVBoxLayout(self.verticalWidget2)
+ self.verticalLayout_29.setObjectName(u"verticalLayout_29")
+ self.verticalLayout_29.setContentsMargins(0, 0, 0, 0)
+ self.label_7 = QLabel(self.verticalWidget2)
+ self.label_7.setObjectName(u"label_7")
+ self.label_7.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.label_7)
+
+ self.latitudeTxt = QLineEdit(self.verticalWidget2)
+ self.latitudeTxt.setObjectName(u"latitudeTxt")
+ self.latitudeTxt.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.latitudeTxt)
+
+ self.label_11 = QLabel(self.verticalWidget2)
+ self.label_11.setObjectName(u"label_11")
+ self.label_11.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.label_11)
+
+ self.longitudeTxt = QLineEdit(self.verticalWidget2)
+ self.longitudeTxt.setObjectName(u"longitudeTxt")
+ self.longitudeTxt.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_29.addWidget(self.longitudeTxt)
+
+ self.horizontalWidget4 = QWidget(self.verticalWidget2)
+ self.horizontalWidget4.setObjectName(u"horizontalWidget4")
+ self.horizontalLayout_3 = QHBoxLayout(self.horizontalWidget4)
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
+ self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.setLocationBtn = QToolButton(self.horizontalWidget4)
+ self.setLocationBtn.setObjectName(u"setLocationBtn")
+
+ self.horizontalLayout_3.addWidget(self.setLocationBtn)
+
+
+ self.verticalLayout_29.addWidget(self.horizontalWidget4)
+
+ self.horizontalWidget_22 = QWidget(self.verticalWidget2)
+ self.horizontalWidget_22.setObjectName(u"horizontalWidget_22")
+ self.horizontalLayout_29 = QHBoxLayout(self.horizontalWidget_22)
+ self.horizontalLayout_29.setObjectName(u"horizontalLayout_29")
+ self.horizontalLayout_29.setContentsMargins(0, 0, 0, 0)
+ self.resetLocationBtn = QToolButton(self.horizontalWidget_22)
+ self.resetLocationBtn.setObjectName(u"resetLocationBtn")
+
+ self.horizontalLayout_29.addWidget(self.resetLocationBtn)
+
+
+ self.verticalLayout_29.addWidget(self.horizontalWidget_22)
+
+
+ self.locSimPageContent.addWidget(self.verticalWidget2)
+
+
+ self.verticalLayout_28.addWidget(self.locSimCnt)
+
+ self.verticalSpacer_13 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_28.addItem(self.verticalSpacer_13)
+
+ self.pages.addWidget(self.locSimPage)
+ self.themingPage = QWidget()
+ self.themingPage.setObjectName(u"themingPage")
+ self.verticalLayout_23 = QVBoxLayout(self.themingPage)
+ self.verticalLayout_23.setObjectName(u"verticalLayout_23")
+ self.verticalLayout_23.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_8 = QWidget(self.themingPage)
+ self.horizontalWidget_8.setObjectName(u"horizontalWidget_8")
+ self.horizontalLayout_23 = QHBoxLayout(self.horizontalWidget_8)
+ self.horizontalLayout_23.setSpacing(10)
+ self.horizontalLayout_23.setObjectName(u"horizontalLayout_23")
+ self.horizontalLayout_23.setContentsMargins(0, 9, 0, 9)
+ self.themesBtn = QToolButton(self.horizontalWidget_8)
+ self.themesBtn.setObjectName(u"themesBtn")
+ self.themesBtn.setEnabled(True)
+ self.themesBtn.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.themesBtn.setIcon(icon6)
+ self.themesBtn.setIconSize(QSize(30, 30))
+
+ self.horizontalLayout_23.addWidget(self.themesBtn)
+
+ self.verticalWidget_7 = QWidget(self.horizontalWidget_8)
+ self.verticalWidget_7.setObjectName(u"verticalWidget_7")
+ self.verticalLayout_21 = QVBoxLayout(self.verticalWidget_7)
+ self.verticalLayout_21.setSpacing(6)
+ self.verticalLayout_21.setObjectName(u"verticalLayout_21")
+ self.verticalLayout_21.setContentsMargins(0, 0, 0, 0)
+ self.themesLbl = QLabel(self.verticalWidget_7)
+ self.themesLbl.setObjectName(u"themesLbl")
+ self.themesLbl.setFont(font1)
+
+ self.verticalLayout_21.addWidget(self.themesLbl)
+
+
+ self.horizontalLayout_23.addWidget(self.verticalWidget_7)
+
+ self.horizontalSpacer_10 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_23.addItem(self.horizontalSpacer_10)
+
+ self.horizontalWidget5 = QWidget(self.horizontalWidget_8)
+ self.horizontalWidget5.setObjectName(u"horizontalWidget5")
+ self.horizontalLayout_26 = QHBoxLayout(self.horizontalWidget5)
+ self.horizontalLayout_26.setObjectName(u"horizontalLayout_26")
+ self.horizontalLayout_26.setContentsMargins(0, 0, 0, 0)
+ self.importThemeBtn = QToolButton(self.horizontalWidget5)
+ self.importThemeBtn.setObjectName(u"importThemeBtn")
+ self.importThemeBtn.setEnabled(False)
+ self.importThemeBtn.setStyleSheet(u"QToolButton {\n"
+" background: none;\n"
+"}")
+
+ self.horizontalLayout_26.addWidget(self.importThemeBtn)
+
+ self.importThemeFolderBtn = QToolButton(self.horizontalWidget5)
+ self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
+ icon16 = QIcon()
+ icon16.addFile(u":/icon/folder.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.importThemeFolderBtn.setIcon(icon16)
+
+ self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
+
+ self.importThemeZipBtn = QToolButton(self.horizontalWidget5)
+ self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
+ icon17 = QIcon()
+ icon17.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.importThemeZipBtn.setIcon(icon17)
+
+ self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
+
+
+ self.horizontalLayout_23.addWidget(self.horizontalWidget5)
+
+
+ self.verticalLayout_23.addWidget(self.horizontalWidget_8)
+
+ self.line_15 = QFrame(self.themingPage)
+ self.line_15.setObjectName(u"line_15")
+ self.line_15.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_15.setFrameShadow(QFrame.Plain)
+ self.line_15.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_23.addWidget(self.line_15)
+
+ self.themesPageContent = QWidget(self.themingPage)
+ self.themesPageContent.setObjectName(u"themesPageContent")
+ self.themesPageContent.setEnabled(False)
+ self.verticalLayout_22 = QVBoxLayout(self.themesPageContent)
+ self.verticalLayout_22.setObjectName(u"verticalLayout_22")
+ self.verticalLayout_22.setContentsMargins(0, 0, 0, 0)
+ self.themesCnt = QWidget(self.themesPageContent)
+ self.themesCnt.setObjectName(u"themesCnt")
+
+ self.verticalLayout_22.addWidget(self.themesCnt)
+
+ self.line = QFrame(self.themesPageContent)
+ self.line.setObjectName(u"line")
+ self.line.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line.setFrameShadow(QFrame.Plain)
+ self.line.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_22.addWidget(self.line)
+
+ self.label_3 = QLabel(self.themesPageContent)
+ self.label_3.setObjectName(u"label_3")
+
+ self.verticalLayout_22.addWidget(self.label_3)
+
+ self.iconsCnt = QWidget(self.themesPageContent)
+ self.iconsCnt.setObjectName(u"iconsCnt")
+
+ self.verticalLayout_22.addWidget(self.iconsCnt)
+
+ self.verticalSpacer_9 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_22.addItem(self.verticalSpacer_9)
+
+ self.horizontalWidget6 = QWidget(self.themesPageContent)
+ self.horizontalWidget6.setObjectName(u"horizontalWidget6")
+ self.horizontalLayout_16 = QHBoxLayout(self.horizontalWidget6)
+ self.horizontalLayout_16.setObjectName(u"horizontalLayout_16")
+ self.horizontalLayout_16.setContentsMargins(0, 0, 0, 0)
+ self.hideNamesBtn = QToolButton(self.horizontalWidget6)
+ self.hideNamesBtn.setObjectName(u"hideNamesBtn")
+ sizePolicy2.setHeightForWidth(self.hideNamesBtn.sizePolicy().hasHeightForWidth())
+ self.hideNamesBtn.setSizePolicy(sizePolicy2)
+
+ self.horizontalLayout_16.addWidget(self.hideNamesBtn)
+
+ self.borderAllBtn = QToolButton(self.horizontalWidget6)
+ self.borderAllBtn.setObjectName(u"borderAllBtn")
+ sizePolicy2.setHeightForWidth(self.borderAllBtn.sizePolicy().hasHeightForWidth())
+ self.borderAllBtn.setSizePolicy(sizePolicy2)
+
+ self.horizontalLayout_16.addWidget(self.borderAllBtn)
+
+ self.addAllBtn = QToolButton(self.horizontalWidget6)
+ self.addAllBtn.setObjectName(u"addAllBtn")
+ sizePolicy2.setHeightForWidth(self.addAllBtn.sizePolicy().hasHeightForWidth())
+ self.addAllBtn.setSizePolicy(sizePolicy2)
+
+ self.horizontalLayout_16.addWidget(self.addAllBtn)
+
+
+ self.verticalLayout_22.addWidget(self.horizontalWidget6)
+
+
+ self.verticalLayout_23.addWidget(self.themesPageContent)
+
+ self.pages.addWidget(self.themingPage)
+ self.gestaltPage = QWidget()
+ self.gestaltPage.setObjectName(u"gestaltPage")
+ self.verticalLayout_4 = QVBoxLayout(self.gestaltPage)
+ self.verticalLayout_4.setObjectName(u"verticalLayout_4")
+ self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
+ self.statusBarPageHeader = QWidget(self.gestaltPage)
+ self.statusBarPageHeader.setObjectName(u"statusBarPageHeader")
+ self.horizontalLayout_5 = QHBoxLayout(self.statusBarPageHeader)
+ self.horizontalLayout_5.setSpacing(10)
+ self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
+ self.horizontalLayout_5.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_8 = QToolButton(self.statusBarPageHeader)
+ self.toolButton_8.setObjectName(u"toolButton_8")
+ self.toolButton_8.setEnabled(False)
+ self.toolButton_8.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_8.setIcon(icon6)
+ self.toolButton_8.setIconSize(QSize(30, 30))
+
+ self.horizontalLayout_5.addWidget(self.toolButton_8)
+
+ self.verticalWidget_21 = QWidget(self.statusBarPageHeader)
+ self.verticalWidget_21.setObjectName(u"verticalWidget_21")
+ self.verticalLayout_5 = QVBoxLayout(self.verticalWidget_21)
+ self.verticalLayout_5.setSpacing(6)
+ self.verticalLayout_5.setObjectName(u"verticalLayout_5")
+ self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
+ self.statusBarLbl = QLabel(self.verticalWidget_21)
+ self.statusBarLbl.setObjectName(u"statusBarLbl")
+ self.statusBarLbl.setFont(font1)
+
+ self.verticalLayout_5.addWidget(self.statusBarLbl)
+
+ self.verticalSpacer_8 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_5.addItem(self.verticalSpacer_8)
+
+
+ self.horizontalLayout_5.addWidget(self.verticalWidget_21)
+
+ self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_5.addItem(self.horizontalSpacer_4)
+
+
+ self.verticalLayout_4.addWidget(self.statusBarPageHeader)
+
+ self.line_8 = QFrame(self.gestaltPage)
+ self.line_8.setObjectName(u"line_8")
+ self.line_8.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_8.setFrameShadow(QFrame.Plain)
+ self.line_8.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_4.addWidget(self.line_8)
+
+ self.scrollArea = QScrollArea(self.gestaltPage)
+ self.scrollArea.setObjectName(u"scrollArea")
+ self.scrollArea.setFrameShape(QFrame.NoFrame)
+ self.scrollArea.setFrameShadow(QFrame.Plain)
+ self.scrollArea.setLineWidth(0)
+ self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+ self.scrollAreaWidgetContents = QWidget()
+ self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
+ self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 650, 1200))
+ self.scrollAreaWidgetContents.setMinimumSize(QSize(650, 1200))
+ self.scrollAreaWidgetContents.setMaximumSize(QSize(650, 1200))
+ self.verticalLayout_9 = QVBoxLayout(self.scrollAreaWidgetContents)
+ self.verticalLayout_9.setObjectName(u"verticalLayout_9")
+ self.verticalLayout_9.setContentsMargins(0, 0, 0, 0)
+ self.gestaltPageContent = QWidget(self.scrollAreaWidgetContents)
+ self.gestaltPageContent.setObjectName(u"gestaltPageContent")
+ self.gestaltPageContent.setEnabled(False)
+ self.verticalLayout_8 = QVBoxLayout(self.gestaltPageContent)
+ self.verticalLayout_8.setObjectName(u"verticalLayout_8")
+ self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
+ self.label_9 = QLabel(self.gestaltPageContent)
+ self.label_9.setObjectName(u"label_9")
+
+ self.verticalLayout_8.addWidget(self.label_9)
+
+ self.dynamicIslandDrp = QComboBox(self.gestaltPageContent)
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.addItem("")
+ self.dynamicIslandDrp.setObjectName(u"dynamicIslandDrp")
+ self.dynamicIslandDrp.setMinimumSize(QSize(0, 0))
+ self.dynamicIslandDrp.setMaximumSize(QSize(325, 16777215))
+ self.dynamicIslandDrp.setStyleSheet(u"QComboBox {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" padding-left: 8px;\n"
+" border-radius: 8px;\n"
+"}\n"
+"\n"
+"QComboBox::drop-down {\n"
+" image: url(:/icon/caret-down-fill.svg);\n"
+" icon-size: 16px;\n"
+" subcontrol-position: right center;\n"
+" margin-right: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView {\n"
+" background-color: #3b3b3b;\n"
+" outline: none;\n"
+" margin-top: 1px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item {\n"
+" background-color: #3b3b3b;\n"
+" color: #e8e8e8;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item:hover {\n"
+" background-color: #535353;\n"
+" color: #ffffff;\n"
+"}")
+ self.dynamicIslandDrp.setMaxVisibleItems(15)
+
+ self.verticalLayout_8.addWidget(self.dynamicIslandDrp)
+
+ self.modelNameChk = QCheckBox(self.gestaltPageContent)
+ self.modelNameChk.setObjectName(u"modelNameChk")
+
+ self.verticalLayout_8.addWidget(self.modelNameChk)
+
+ self.modelNameTxt = QLineEdit(self.gestaltPageContent)
+ self.modelNameTxt.setObjectName(u"modelNameTxt")
+
+ self.verticalLayout_8.addWidget(self.modelNameTxt)
+
+ self.bootChimeChk = QCheckBox(self.gestaltPageContent)
+ self.bootChimeChk.setObjectName(u"bootChimeChk")
+
+ self.verticalLayout_8.addWidget(self.bootChimeChk)
+
+ self.chargeLimitChk = QCheckBox(self.gestaltPageContent)
+ self.chargeLimitChk.setObjectName(u"chargeLimitChk")
+
+ self.verticalLayout_8.addWidget(self.chargeLimitChk)
+
+ self.tapToWakeChk = QCheckBox(self.gestaltPageContent)
+ self.tapToWakeChk.setObjectName(u"tapToWakeChk")
+
+ self.verticalLayout_8.addWidget(self.tapToWakeChk)
+
+ self.iphone16SettingsChk = QCheckBox(self.gestaltPageContent)
+ self.iphone16SettingsChk.setObjectName(u"iphone16SettingsChk")
+
+ self.verticalLayout_8.addWidget(self.iphone16SettingsChk)
+
+ self.parallaxChk = QCheckBox(self.gestaltPageContent)
+ self.parallaxChk.setObjectName(u"parallaxChk")
+
+ self.verticalLayout_8.addWidget(self.parallaxChk)
+
+ self.horizontalWidget7 = QWidget(self.gestaltPageContent)
+ self.horizontalWidget7.setObjectName(u"horizontalWidget7")
+ self.horizontalLayout_10 = QHBoxLayout(self.horizontalWidget7)
+ self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
+ self.horizontalLayout_10.setContentsMargins(0, 0, 0, 0)
+
+ self.verticalLayout_8.addWidget(self.horizontalWidget7)
+
+ self.line_7 = QFrame(self.gestaltPageContent)
+ self.line_7.setObjectName(u"line_7")
+ self.line_7.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_7.setFrameShadow(QFrame.Plain)
+ self.line_7.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_8.addWidget(self.line_7)
+
+ self.stageManagerChk = QCheckBox(self.gestaltPageContent)
+ self.stageManagerChk.setObjectName(u"stageManagerChk")
+
+ self.verticalLayout_8.addWidget(self.stageManagerChk)
+
+ self.ipadAppsChk = QCheckBox(self.gestaltPageContent)
+ self.ipadAppsChk.setObjectName(u"ipadAppsChk")
+
+ self.verticalLayout_8.addWidget(self.ipadAppsChk)
+
+ self.shutterChk = QCheckBox(self.gestaltPageContent)
+ self.shutterChk.setObjectName(u"shutterChk")
+
+ self.verticalLayout_8.addWidget(self.shutterChk)
+
+ self.pencilChk = QCheckBox(self.gestaltPageContent)
+ self.pencilChk.setObjectName(u"pencilChk")
+
+ self.verticalLayout_8.addWidget(self.pencilChk)
+
+ self.actionButtonChk = QCheckBox(self.gestaltPageContent)
+ self.actionButtonChk.setObjectName(u"actionButtonChk")
+
+ self.verticalLayout_8.addWidget(self.actionButtonChk)
+
+ self.line_9 = QFrame(self.gestaltPageContent)
+ self.line_9.setObjectName(u"line_9")
+ self.line_9.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_9.setFrameShadow(QFrame.Plain)
+ self.line_9.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_8.addWidget(self.line_9)
+
+ self.internalInstallChk = QCheckBox(self.gestaltPageContent)
+ self.internalInstallChk.setObjectName(u"internalInstallChk")
+
+ self.verticalLayout_8.addWidget(self.internalInstallChk)
+
+ self.internalStorageChk = QCheckBox(self.gestaltPageContent)
+ self.internalStorageChk.setObjectName(u"internalStorageChk")
+
+ self.verticalLayout_8.addWidget(self.internalStorageChk)
+
+ self.line_10 = QFrame(self.gestaltPageContent)
+ self.line_10.setObjectName(u"line_10")
+ self.line_10.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_10.setFrameShadow(QFrame.Plain)
+ self.line_10.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_8.addWidget(self.line_10)
+
+ self.collisionSOSChk = QCheckBox(self.gestaltPageContent)
+ self.collisionSOSChk.setObjectName(u"collisionSOSChk")
+
+ self.verticalLayout_8.addWidget(self.collisionSOSChk)
+
+ self.sleepApneaChk = QCheckBox(self.gestaltPageContent)
+ self.sleepApneaChk.setObjectName(u"sleepApneaChk")
+
+ self.verticalLayout_8.addWidget(self.sleepApneaChk)
+
+ self.aodChk = QCheckBox(self.gestaltPageContent)
+ self.aodChk.setObjectName(u"aodChk")
+
+ self.verticalLayout_8.addWidget(self.aodChk)
+
+ self.verticalSpacer_3 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_8.addItem(self.verticalSpacer_3)
+
+
+ self.verticalLayout_9.addWidget(self.gestaltPageContent)
+
+ self.scrollArea.setWidget(self.scrollAreaWidgetContents)
+
+ self.verticalLayout_4.addWidget(self.scrollArea)
+
+ self.pages.addWidget(self.gestaltPage)
+ self.customOperationsPage = QWidget()
+ self.customOperationsPage.setObjectName(u"customOperationsPage")
+ self.verticalLayout_20 = QVBoxLayout(self.customOperationsPage)
+ self.verticalLayout_20.setObjectName(u"verticalLayout_20")
+ self.verticalLayout_20.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_7 = QWidget(self.customOperationsPage)
+ self.horizontalWidget_7.setObjectName(u"horizontalWidget_7")
+ self.horizontalLayout_22 = QHBoxLayout(self.horizontalWidget_7)
+ self.horizontalLayout_22.setSpacing(10)
+ self.horizontalLayout_22.setObjectName(u"horizontalLayout_22")
+ self.horizontalLayout_22.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_12 = QToolButton(self.horizontalWidget_7)
+ self.toolButton_12.setObjectName(u"toolButton_12")
+ self.toolButton_12.setEnabled(False)
+ self.toolButton_12.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_12.setIcon(icon5)
+ self.toolButton_12.setIconSize(QSize(25, 25))
+
+ self.horizontalLayout_22.addWidget(self.toolButton_12)
+
+ self.verticalWidget_6 = QWidget(self.horizontalWidget_7)
+ self.verticalWidget_6.setObjectName(u"verticalWidget_6")
+ self.verticalLayout_18 = QVBoxLayout(self.verticalWidget_6)
+ self.verticalLayout_18.setSpacing(6)
+ self.verticalLayout_18.setObjectName(u"verticalLayout_18")
+ self.verticalLayout_18.setContentsMargins(0, 0, 0, 0)
+ self.customOperationsLbl = QLabel(self.verticalWidget_6)
+ self.customOperationsLbl.setObjectName(u"customOperationsLbl")
+ self.customOperationsLbl.setFont(font1)
+
+ self.verticalLayout_18.addWidget(self.customOperationsLbl)
+
+ self.label_14 = QLabel(self.verticalWidget_6)
+ self.label_14.setObjectName(u"label_14")
+
+ self.verticalLayout_18.addWidget(self.label_14)
+
+
+ self.horizontalLayout_22.addWidget(self.verticalWidget_6)
+
+ self.horizontalSpacer_9 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_22.addItem(self.horizontalSpacer_9)
+
+
+ self.verticalLayout_20.addWidget(self.horizontalWidget_7)
+
+ self.line_14 = QFrame(self.customOperationsPage)
+ self.line_14.setObjectName(u"line_14")
+ self.line_14.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_14.setFrameShadow(QFrame.Plain)
+ self.line_14.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_20.addWidget(self.line_14)
+
+ self.customOperationsPageContent = QWidget(self.customOperationsPage)
+ self.customOperationsPageContent.setObjectName(u"customOperationsPageContent")
+ self.customOperationsPageContent.setEnabled(True)
+ self.verticalLayout_19 = QVBoxLayout(self.customOperationsPageContent)
+ self.verticalLayout_19.setObjectName(u"verticalLayout_19")
+ self.verticalLayout_19.setContentsMargins(0, 0, 0, 0)
+ self.customOpsTopBtns = QHBoxLayout()
+#ifndef Q_OS_MAC
+ self.customOpsTopBtns.setSpacing(-1)
+#endif
+ self.customOpsTopBtns.setObjectName(u"customOpsTopBtns")
+ self.customOpsTopBtns.setContentsMargins(-1, -1, -1, 0)
+ self.horizontalSpacer_17 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.customOpsTopBtns.addItem(self.horizontalSpacer_17)
+
+ self.importOperationBtn = QToolButton(self.customOperationsPageContent)
+ self.importOperationBtn.setObjectName(u"importOperationBtn")
+ self.importOperationBtn.setEnabled(True)
+ icon18 = QIcon()
+ icon18.addFile(u":/icon/import.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.importOperationBtn.setIcon(icon18)
+ self.importOperationBtn.setIconSize(QSize(20, 20))
+ self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.customOpsTopBtns.addWidget(self.importOperationBtn, 0, Qt.AlignLeft)
+
+ self.newOperationBtn = QToolButton(self.customOperationsPageContent)
+ self.newOperationBtn.setObjectName(u"newOperationBtn")
+ self.newOperationBtn.setEnabled(True)
+ sizePolicy2.setHeightForWidth(self.newOperationBtn.sizePolicy().hasHeightForWidth())
+ self.newOperationBtn.setSizePolicy(sizePolicy2)
+ self.newOperationBtn.setMinimumSize(QSize(0, 35))
+ icon19 = QIcon()
+ icon19.addFile(u":/icon/plus.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.newOperationBtn.setIcon(icon19)
+ self.newOperationBtn.setIconSize(QSize(16, 16))
+ self.newOperationBtn.setCheckable(False)
+ self.newOperationBtn.setAutoExclusive(True)
+ self.newOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.customOpsTopBtns.addWidget(self.newOperationBtn, 0, Qt.AlignLeft)
+
+
+ self.verticalLayout_19.addLayout(self.customOpsTopBtns)
+
+ self.operationsCnt = QWidget(self.customOperationsPageContent)
+ self.operationsCnt.setObjectName(u"operationsCnt")
+ self.operationsCnt.setEnabled(True)
+ sizePolicy5.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
+ self.operationsCnt.setSizePolicy(sizePolicy5)
+
+ self.verticalLayout_19.addWidget(self.operationsCnt)
+
+
+ self.verticalLayout_20.addWidget(self.customOperationsPageContent)
+
+ self.pages.addWidget(self.customOperationsPage)
+ self.settingsPage = QWidget()
+ self.settingsPage.setObjectName(u"settingsPage")
+ self.verticalLayout_10 = QVBoxLayout(self.settingsPage)
+ self.verticalLayout_10.setObjectName(u"verticalLayout_10")
+ self.verticalLayout_10.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_4 = QWidget(self.settingsPage)
+ self.horizontalWidget_4.setObjectName(u"horizontalWidget_4")
+ self.horizontalLayout_13 = QHBoxLayout(self.horizontalWidget_4)
+ self.horizontalLayout_13.setSpacing(10)
+ self.horizontalLayout_13.setObjectName(u"horizontalLayout_13")
+ self.horizontalLayout_13.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_7 = QToolButton(self.horizontalWidget_4)
+ self.toolButton_7.setObjectName(u"toolButton_7")
+ self.toolButton_7.setEnabled(False)
+ self.toolButton_7.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_7.setIcon(icon10)
+
+ self.horizontalLayout_13.addWidget(self.toolButton_7)
+
+ self.verticalWidget_3 = QWidget(self.horizontalWidget_4)
+ self.verticalWidget_3.setObjectName(u"verticalWidget_3")
+ self.verticalLayout_7 = QVBoxLayout(self.verticalWidget_3)
+ self.verticalLayout_7.setSpacing(6)
+ self.verticalLayout_7.setObjectName(u"verticalLayout_7")
+ self.verticalLayout_7.setContentsMargins(0, 0, 0, 0)
+ self.springboardOptionsLbl = QLabel(self.verticalWidget_3)
+ self.springboardOptionsLbl.setObjectName(u"springboardOptionsLbl")
+ self.springboardOptionsLbl.setFont(font1)
+
+ self.verticalLayout_7.addWidget(self.springboardOptionsLbl)
+
+ self.verticalSpacer_17 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_7.addItem(self.verticalSpacer_17)
+
+
+ self.horizontalLayout_13.addWidget(self.verticalWidget_3)
+
+ self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_13.addItem(self.horizontalSpacer_6)
+
+
+ self.verticalLayout_10.addWidget(self.horizontalWidget_4)
+
+ self.line_11 = QFrame(self.settingsPage)
+ self.line_11.setObjectName(u"line_11")
+ self.line_11.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_11.setFrameShadow(QFrame.Plain)
+ self.line_11.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_10.addWidget(self.line_11)
+
+ self.settingsPageContent = QWidget(self.settingsPage)
+ self.settingsPageContent.setObjectName(u"settingsPageContent")
+ self.settingsPageContent.setEnabled(True)
+ self.settingsPageContent.setMaximumSize(QSize(650, 16777215))
+ self._2 = QVBoxLayout(self.settingsPageContent)
+ self._2.setObjectName(u"_2")
+ self._2.setContentsMargins(0, 0, 0, 0)
+ self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
+ self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
+ self.allowWifiApplyingChk.setChecked(True)
+
+ self._2.addWidget(self.allowWifiApplyingChk)
+
+ self.verticalSpacer_5 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self._2.addItem(self.verticalSpacer_5)
+
+
+ self.verticalLayout_10.addWidget(self.settingsPageContent)
+
+ self.pages.addWidget(self.settingsPage)
+ self.featureFlagsPage = QWidget()
+ self.featureFlagsPage.setObjectName(u"featureFlagsPage")
+ self.verticalLayout_14 = QVBoxLayout(self.featureFlagsPage)
+ self.verticalLayout_14.setObjectName(u"verticalLayout_14")
+ self.verticalLayout_14.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_5 = QWidget(self.featureFlagsPage)
+ self.horizontalWidget_5.setObjectName(u"horizontalWidget_5")
+ self.horizontalLayout_20 = QHBoxLayout(self.horizontalWidget_5)
+ self.horizontalLayout_20.setSpacing(10)
+ self.horizontalLayout_20.setObjectName(u"horizontalLayout_20")
+ self.horizontalLayout_20.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_10 = QToolButton(self.horizontalWidget_5)
+ self.toolButton_10.setObjectName(u"toolButton_10")
+ self.toolButton_10.setEnabled(False)
+ self.toolButton_10.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_10.setIcon(icon7)
+
+ self.horizontalLayout_20.addWidget(self.toolButton_10)
+
+ self.verticalWidget_4 = QWidget(self.horizontalWidget_5)
+ self.verticalWidget_4.setObjectName(u"verticalWidget_4")
+ self.verticalLayout_12 = QVBoxLayout(self.verticalWidget_4)
+ self.verticalLayout_12.setSpacing(6)
+ self.verticalLayout_12.setObjectName(u"verticalLayout_12")
+ self.verticalLayout_12.setContentsMargins(0, 0, 0, 0)
+ self.internalOptionsLbl = QLabel(self.verticalWidget_4)
+ self.internalOptionsLbl.setObjectName(u"internalOptionsLbl")
+ self.internalOptionsLbl.setFont(font1)
+
+ self.verticalLayout_12.addWidget(self.internalOptionsLbl)
+
+ self.verticalSpacer_15 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_12.addItem(self.verticalSpacer_15)
+
+
+ self.horizontalLayout_20.addWidget(self.verticalWidget_4)
+
+ self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_20.addItem(self.horizontalSpacer_7)
+
+
+ self.verticalLayout_14.addWidget(self.horizontalWidget_5)
+
+ self.line_12 = QFrame(self.featureFlagsPage)
+ self.line_12.setObjectName(u"line_12")
+ self.line_12.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_12.setFrameShadow(QFrame.Plain)
+ self.line_12.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_14.addWidget(self.line_12)
+
+ self.featureFlagsPageContent = QWidget(self.featureFlagsPage)
+ self.featureFlagsPageContent.setObjectName(u"featureFlagsPageContent")
+ self.featureFlagsPageContent.setEnabled(True)
+ self.verticalLayout_13 = QVBoxLayout(self.featureFlagsPageContent)
+ self.verticalLayout_13.setObjectName(u"verticalLayout_13")
+ self.verticalLayout_13.setContentsMargins(0, 0, 0, 0)
+ self.clockAnimChk = QCheckBox(self.featureFlagsPageContent)
+ self.clockAnimChk.setObjectName(u"clockAnimChk")
+
+ self.verticalLayout_13.addWidget(self.clockAnimChk)
+
+ self.lockscreenChk = QCheckBox(self.featureFlagsPageContent)
+ self.lockscreenChk.setObjectName(u"lockscreenChk")
+
+ self.verticalLayout_13.addWidget(self.lockscreenChk)
+
+ self.div = QFrame(self.featureFlagsPageContent)
+ self.div.setObjectName(u"div")
+ self.div.setEnabled(False)
+ self.div.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.div.setFrameShadow(QFrame.Plain)
+ self.div.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_13.addWidget(self.div)
+
+ self.photosChk = QCheckBox(self.featureFlagsPageContent)
+ self.photosChk.setObjectName(u"photosChk")
+
+ self.verticalLayout_13.addWidget(self.photosChk)
+
+ self.aiChk = QCheckBox(self.featureFlagsPageContent)
+ self.aiChk.setObjectName(u"aiChk")
+
+ self.verticalLayout_13.addWidget(self.aiChk)
+
+ self.verticalSpacer_6 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_13.addItem(self.verticalSpacer_6)
+
+
+ self.verticalLayout_14.addWidget(self.featureFlagsPageContent)
+
+ self.pages.addWidget(self.featureFlagsPage)
+ self.euEnablerPage = QWidget()
+ self.euEnablerPage.setObjectName(u"euEnablerPage")
+ self.verticalLayout_17 = QVBoxLayout(self.euEnablerPage)
+ self.verticalLayout_17.setObjectName(u"verticalLayout_17")
+ self.verticalLayout_17.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_6 = QWidget(self.euEnablerPage)
+ self.horizontalWidget_6.setObjectName(u"horizontalWidget_6")
+ self.horizontalLayout_21 = QHBoxLayout(self.horizontalWidget_6)
+ self.horizontalLayout_21.setSpacing(10)
+ self.horizontalLayout_21.setObjectName(u"horizontalLayout_21")
+ self.horizontalLayout_21.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_11 = QToolButton(self.horizontalWidget_6)
+ self.toolButton_11.setObjectName(u"toolButton_11")
+ self.toolButton_11.setEnabled(False)
+ self.toolButton_11.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_11.setIcon(icon4)
+
+ self.horizontalLayout_21.addWidget(self.toolButton_11)
+
+ self.verticalWidget_5 = QWidget(self.horizontalWidget_6)
+ self.verticalWidget_5.setObjectName(u"verticalWidget_5")
+ self.verticalLayout_15 = QVBoxLayout(self.verticalWidget_5)
+ self.verticalLayout_15.setSpacing(6)
+ self.verticalLayout_15.setObjectName(u"verticalLayout_15")
+ self.verticalLayout_15.setContentsMargins(0, 0, 0, 0)
+ self.setupOptionsLbl = QLabel(self.verticalWidget_5)
+ self.setupOptionsLbl.setObjectName(u"setupOptionsLbl")
+ self.setupOptionsLbl.setFont(font1)
+
+ self.verticalLayout_15.addWidget(self.setupOptionsLbl)
+
+ self.euEnablerEnabledChk = QCheckBox(self.verticalWidget_5)
+ self.euEnablerEnabledChk.setObjectName(u"euEnablerEnabledChk")
+
+ self.verticalLayout_15.addWidget(self.euEnablerEnabledChk)
+
+
+ self.horizontalLayout_21.addWidget(self.verticalWidget_5)
+
+ self.horizontalSpacer_8 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_21.addItem(self.horizontalSpacer_8)
+
+
+ self.verticalLayout_17.addWidget(self.horizontalWidget_6)
+
+ self.line_13 = QFrame(self.euEnablerPage)
+ self.line_13.setObjectName(u"line_13")
+ self.line_13.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_13.setFrameShadow(QFrame.Plain)
+ self.line_13.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_17.addWidget(self.line_13)
+
+ self.euEnablerPageContent = QWidget(self.euEnablerPage)
+ self.euEnablerPageContent.setObjectName(u"euEnablerPageContent")
+ self.euEnablerPageContent.setEnabled(False)
+ self.verticalLayout_16 = QVBoxLayout(self.euEnablerPageContent)
+ self.verticalLayout_16.setObjectName(u"verticalLayout_16")
+ self.verticalLayout_16.setContentsMargins(0, 0, 0, 0)
+ self.label_5 = QLabel(self.euEnablerPageContent)
+ self.label_5.setObjectName(u"label_5")
+
+ self.verticalLayout_16.addWidget(self.label_5)
+
+ self.methodChoiceDrp = QComboBox(self.euEnablerPageContent)
+ self.methodChoiceDrp.addItem("")
+ self.methodChoiceDrp.addItem("")
+ self.methodChoiceDrp.setObjectName(u"methodChoiceDrp")
+ self.methodChoiceDrp.setMaximumSize(QSize(150, 16777215))
+ self.methodChoiceDrp.setStyleSheet(u"QComboBox {\n"
+" background-color: #3b3b3b;\n"
+" border: none;\n"
+" color: #e8e8e8;\n"
+" font-size: 14px;\n"
+" padding-left: 8px;\n"
+" border-radius: 8px;\n"
+"}\n"
+"\n"
+"QComboBox::drop-down {\n"
+" image: url(:/icon/caret-down-fill.svg);\n"
+" icon-size: 16px;\n"
+" subcontrol-position: right center;\n"
+" margin-right: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView {\n"
+" background-color: #3b3b3b;\n"
+" outline: none;\n"
+" margin-top: 1px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item {\n"
+" background-color: #3b3b3b;\n"
+" color: #e8e8e8;\n"
+" padding-left: 8px;\n"
+"}\n"
+"\n"
+"QComboBox QAbstractItemView::item:hover {\n"
+" background-color: #535353;\n"
+" color: #ffffff;\n"
+"}")
+
+ self.verticalLayout_16.addWidget(self.methodChoiceDrp)
+
+ self.label_6 = QLabel(self.euEnablerPageContent)
+ self.label_6.setObjectName(u"label_6")
+
+ self.verticalLayout_16.addWidget(self.label_6)
+
+ self.regionCodeTxt = QLineEdit(self.euEnablerPageContent)
+ self.regionCodeTxt.setObjectName(u"regionCodeTxt")
+
+ self.verticalLayout_16.addWidget(self.regionCodeTxt)
+
+ self.verticalSpacer_7 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_16.addItem(self.verticalSpacer_7)
+
+
+ self.verticalLayout_17.addWidget(self.euEnablerPageContent)
+
+ self.pages.addWidget(self.euEnablerPage)
+ self.applyPage = QWidget()
+ self.applyPage.setObjectName(u"applyPage")
+ self.verticalLayout_6 = QVBoxLayout(self.applyPage)
+ self.verticalLayout_6.setObjectName(u"verticalLayout_6")
+ self.verticalLayout_6.setContentsMargins(0, 0, 0, 0)
+ self.verticalWidget3 = QWidget(self.applyPage)
+ self.verticalWidget3.setObjectName(u"verticalWidget3")
+ self.verticalLayout_24 = QVBoxLayout(self.verticalWidget3)
+ self.verticalLayout_24.setObjectName(u"verticalLayout_24")
+ self.verticalLayout_24.setContentsMargins(0, 0, 0, 0)
+ self.locSimPageHeader_2 = QWidget(self.verticalWidget3)
+ self.locSimPageHeader_2.setObjectName(u"locSimPageHeader_2")
+ self.horizontalLayout_33 = QHBoxLayout(self.locSimPageHeader_2)
+ self.horizontalLayout_33.setSpacing(10)
+ self.horizontalLayout_33.setObjectName(u"horizontalLayout_33")
+ self.horizontalLayout_33.setContentsMargins(0, -1, 0, -1)
+ self.toolButton_18 = QToolButton(self.locSimPageHeader_2)
+ self.toolButton_18.setObjectName(u"toolButton_18")
+ self.toolButton_18.setEnabled(False)
+ self.toolButton_18.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_18.setIcon(icon9)
+
+ self.horizontalLayout_33.addWidget(self.toolButton_18)
+
+ self.verticalWidget_11 = QWidget(self.locSimPageHeader_2)
+ self.verticalWidget_11.setObjectName(u"verticalWidget_11")
+ self.verticalLayout_33 = QVBoxLayout(self.verticalWidget_11)
+ self.verticalLayout_33.setSpacing(6)
+ self.verticalLayout_33.setObjectName(u"verticalLayout_33")
+ self.verticalLayout_33.setContentsMargins(0, 0, 0, 0)
+ self.statusBarLbl_5 = QLabel(self.verticalWidget_11)
+ self.statusBarLbl_5.setObjectName(u"statusBarLbl_5")
+ self.statusBarLbl_5.setFont(font1)
+
+ self.verticalLayout_33.addWidget(self.statusBarLbl_5)
+
+ self.label_16 = QLabel(self.verticalWidget_11)
+ self.label_16.setObjectName(u"label_16")
+
+ self.verticalLayout_33.addWidget(self.label_16)
+
+
+ self.horizontalLayout_33.addWidget(self.verticalWidget_11)
+
+ self.horizontalSpacer_15 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_33.addItem(self.horizontalSpacer_15)
+
+
+ self.verticalLayout_24.addWidget(self.locSimPageHeader_2)
+
+ self.line_5 = QFrame(self.verticalWidget3)
+ self.line_5.setObjectName(u"line_5")
+ self.line_5.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_5.setFrameShadow(QFrame.Plain)
+ self.line_5.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_24.addWidget(self.line_5)
+
+ self.verticalSpacer_10 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_24.addItem(self.verticalSpacer_10)
+
+ self.modifiedTweaksLbl = QLabel(self.verticalWidget3)
+ self.modifiedTweaksLbl.setObjectName(u"modifiedTweaksLbl")
+ self.modifiedTweaksLbl.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.modifiedTweaksLbl)
+
+ self.gestaltLocationLbl = QLabel(self.verticalWidget3)
+ self.gestaltLocationLbl.setObjectName(u"gestaltLocationLbl")
+ self.gestaltLocationLbl.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.gestaltLocationLbl)
+
+ self.horizontalLayout_7 = QHBoxLayout()
+ self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
+ self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
+ self.chooseGestaltBtn = QToolButton(self.verticalWidget3)
+ self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
+ self.chooseGestaltBtn.setIcon(icon16)
+ self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
+
+
+ self.verticalLayout_24.addLayout(self.horizontalLayout_7)
+
+ self.horizontalWidget8 = QWidget(self.verticalWidget3)
+ self.horizontalWidget8.setObjectName(u"horizontalWidget8")
+ self.horizontalLayout_17 = QHBoxLayout(self.horizontalWidget8)
+ self.horizontalLayout_17.setObjectName(u"horizontalLayout_17")
+ self.horizontalLayout_17.setContentsMargins(0, 0, 0, 0)
+ self.applyTweaksBtn = QToolButton(self.horizontalWidget8)
+ self.applyTweaksBtn.setObjectName(u"applyTweaksBtn")
+ self.applyTweaksBtn.setIcon(icon9)
+ self.applyTweaksBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.horizontalLayout_17.addWidget(self.applyTweaksBtn)
+
+
+ self.verticalLayout_24.addWidget(self.horizontalWidget8)
+
+ self.statusLbl = QLabel(self.verticalWidget3)
+ self.statusLbl.setObjectName(u"statusLbl")
+ self.statusLbl.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.statusLbl)
+
+ self.restoreProgressBar = QProgressBar(self.verticalWidget3)
+ self.restoreProgressBar.setObjectName(u"restoreProgressBar")
+ sizePolicy.setHeightForWidth(self.restoreProgressBar.sizePolicy().hasHeightForWidth())
+ self.restoreProgressBar.setSizePolicy(sizePolicy)
+ self.restoreProgressBar.setMinimumSize(QSize(150, 0))
+ self.restoreProgressBar.setValue(0)
+ self.restoreProgressBar.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout_24.addWidget(self.restoreProgressBar, 0, Qt.AlignHCenter)
+
+ self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_24.addItem(self.verticalSpacer_2)
+
+ self.horizontalWidget9 = QWidget(self.verticalWidget3)
+ self.horizontalWidget9.setObjectName(u"horizontalWidget9")
+ self.horizontalLayout_25 = QHBoxLayout(self.horizontalWidget9)
+ self.horizontalLayout_25.setObjectName(u"horizontalLayout_25")
+ self.horizontalLayout_25.setContentsMargins(0, 0, 0, 0)
+ self.horizontalSpacer_14 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_25.addItem(self.horizontalSpacer_14)
+
+ self.removeTweaksBtn = QToolButton(self.horizontalWidget9)
+ self.removeTweaksBtn.setObjectName(u"removeTweaksBtn")
+
+ self.horizontalLayout_25.addWidget(self.removeTweaksBtn)
+
+ self.resetGestaltBtn = QToolButton(self.horizontalWidget9)
+ self.resetGestaltBtn.setObjectName(u"resetGestaltBtn")
+
+ self.horizontalLayout_25.addWidget(self.resetGestaltBtn)
+
+ self.horizontalSpacer_16 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_25.addItem(self.horizontalSpacer_16)
+
+
+ self.verticalLayout_24.addWidget(self.horizontalWidget9)
+
+
+ self.verticalLayout_6.addWidget(self.verticalWidget3)
+
+ self.pages.addWidget(self.applyPage)
+
+ self._3.addWidget(self.pages)
+
+
+ self.horizontalLayout_18.addWidget(self.main)
+
+
+ self.verticalLayout_11.addWidget(self.body)
+
+ Nugget.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(Nugget)
+
+ self.devicePicker.setCurrentIndex(-1)
+ self.pages.setCurrentIndex(0)
+ self.dynamicIslandDrp.setCurrentIndex(0)
+
+
+ QMetaObject.connectSlotsByName(Nugget)
+ # setupUi
+
+ def retranslateUi(self, Nugget):
+ Nugget.setWindowTitle(QCoreApplication.translate("Nugget", u"Nugget", None))
+ self.centralwidget.setProperty("cls", QCoreApplication.translate("Nugget", u"central", None))
+ self.devicePicker.setPlaceholderText(QCoreApplication.translate("Nugget", u"None", None))
+ self.refreshBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"btn", None))
+ self.titleBar.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
+ self.homePageBtn.setText(QCoreApplication.translate("Nugget", u" Home", None))
+ self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
+ self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.locSimPageBtn.setText(QCoreApplication.translate("Nugget", u" Location Simulation", None))
+ self.locSimPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.customOperationsPageBtn.setText(QCoreApplication.translate("Nugget", u" Custom Operations", None))
+ self.customOperationsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
+ self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
+ self.featureFlagsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.euEnablerPageBtn.setText(QCoreApplication.translate("Nugget", u" EU Enabler", None))
+ self.euEnablerPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
+ self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
+ self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.settingsPageBtn.setText(QCoreApplication.translate("Nugget", u" Settings", None))
+ self.settingsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.phoneNameLbl.setText(QCoreApplication.translate("Nugget", u"Phone", None))
+ self.phoneVersionLbl.setText(QCoreApplication.translate("Nugget", u"Version", None))
+ self.bigNuggetBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.label_2.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
+ self.discordBtn.setText(QCoreApplication.translate("Nugget", u" Join the Discord", None))
+ self.leminBtn.setText(QCoreApplication.translate("Nugget", u" LeminLimez", None))
+ self.leminTwitterBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.leminKoFiBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.toolButton_14.setText(QCoreApplication.translate("Nugget", u"Main Developer", None))
+ self.helpFromBtn.setText(QCoreApplication.translate("Nugget", u"With Help From", None))
+ self.jjtechBtn.setText(QCoreApplication.translate("Nugget", u"JJTech\n"
+"Sparserestore", None))
+ self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
+"Clock Anim, Photos UI", None))
+ self.lrdsnowBtn.setText(QCoreApplication.translate("Nugget", u"lrdsnow\n"
+"EU Enabler", None))
+ self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
+ self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
+ self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
+ self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 2.2", None))
+ self.exploreLbl.setText(QCoreApplication.translate("Nugget", u"Explore", None))
+ self.exploreSubLbl.setText("")
+ self.statusBarLbl_2.setText(QCoreApplication.translate("Nugget", u"Location Simulation", None))
+ self.label_4.setText("")
+ self.loadLocSimBtn.setText(QCoreApplication.translate("Nugget", u"Start Location Simulation", None))
+ self.label_7.setText(QCoreApplication.translate("Nugget", u"Latitude", None))
+ self.latitudeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"XXX.XXXXX", None))
+ self.label_11.setText(QCoreApplication.translate("Nugget", u"Longitude", None))
+ self.longitudeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"XXX.XXXXX", None))
+ self.setLocationBtn.setText(QCoreApplication.translate("Nugget", u"Set Location", None))
+ self.resetLocationBtn.setText(QCoreApplication.translate("Nugget", u"Reset Location", None))
+ self.themesLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt Modifications", None))
+ self.importThemeBtn.setText(QCoreApplication.translate("Nugget", u"Import Theme:", None))
+ self.importThemeFolderBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.importThemeZipBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
+ self.label_3.setText(QCoreApplication.translate("Nugget", u"Customize Individual Apps", None))
+ self.hideNamesBtn.setText(QCoreApplication.translate("Nugget", u"Hide/Show All App Names", None))
+ self.borderAllBtn.setText(QCoreApplication.translate("Nugget", u"Toggle All \"Border\"", None))
+ self.addAllBtn.setText(QCoreApplication.translate("Nugget", u"Toggle All \"Add to Device\"", None))
+ self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
+ self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
+ self.dynamicIslandDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
+ self.dynamicIslandDrp.setItemText(1, QCoreApplication.translate("Nugget", u"2436 (iPhone X Gestures for SE phones)", None))
+ self.dynamicIslandDrp.setItemText(2, QCoreApplication.translate("Nugget", u"2556 (iPhone 14 Pro Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(3, QCoreApplication.translate("Nugget", u"2796 (iPhone 14 Pro Max Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(4, QCoreApplication.translate("Nugget", u"2976 (iPhone 15 Pro Max Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(5, QCoreApplication.translate("Nugget", u"2622 (iPhone 16 Pro Dynamic Island)", None))
+ self.dynamicIslandDrp.setItemText(6, QCoreApplication.translate("Nugget", u"2868 (iPhone 16 Pro Max Dynamic Island)", None))
+
+ self.dynamicIslandDrp.setCurrentText(QCoreApplication.translate("Nugget", u"None", None))
+ self.modelNameChk.setText(QCoreApplication.translate("Nugget", u"Change Device Model Name", None))
+ self.modelNameTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Model Name", None))
+ self.bootChimeChk.setText(QCoreApplication.translate("Nugget", u"Enable Boot Chime", None))
+ self.chargeLimitChk.setText(QCoreApplication.translate("Nugget", u"Enable Charge Limit", None))
+ self.tapToWakeChk.setText(QCoreApplication.translate("Nugget", u"Enable Tap to Wake (for iPhone SEs)", None))
+ self.iphone16SettingsChk.setText(QCoreApplication.translate("Nugget", u"Enable iPhone 16 Settings", None))
+ self.parallaxChk.setText(QCoreApplication.translate("Nugget", u"Disable Wallpaper Parallax", None))
+ self.stageManagerChk.setText(QCoreApplication.translate("Nugget", u"Enable Stage Manager Supported (WARNING: risky on some devices, mainly phones)", None))
+ self.ipadAppsChk.setText(QCoreApplication.translate("Nugget", u"Allow iPad Apps on iPhone", None))
+ self.shutterChk.setText(QCoreApplication.translate("Nugget", u"Disable Region Restrictions (ie. Shutter Sound)", None))
+ self.pencilChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Pencil Settings Tab", None))
+ self.actionButtonChk.setText(QCoreApplication.translate("Nugget", u"Enable Action Button Settings Tab", None))
+ self.internalInstallChk.setText(QCoreApplication.translate("Nugget", u"Set as Apple Internal Install (ie Metal HUD in any app)", None))
+ self.internalStorageChk.setText(QCoreApplication.translate("Nugget", u"Enable Internal Storage (WARNING: risky for some devices, mainly iPads)", None))
+ self.collisionSOSChk.setText(QCoreApplication.translate("Nugget", u"Enable Collision SOS", None))
+ self.sleepApneaChk.setText(QCoreApplication.translate("Nugget", u"Enable Sleep Apnea (real) [for Apple Watches]", None))
+ self.aodChk.setText(QCoreApplication.translate("Nugget", u"Enable Always On Display", None))
+ self.customOperationsLbl.setText(QCoreApplication.translate("Nugget", u"Custom Operations", None))
+ self.label_14.setText("")
+ self.importOperationBtn.setText(QCoreApplication.translate("Nugget", u" Import .cowperation", None))
+ self.newOperationBtn.setText(QCoreApplication.translate("Nugget", u" New Operation", None))
+ self.springboardOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Nugget Settings", None))
+ self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
+ self.internalOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Feature Flags", None))
+ self.clockAnimChk.setText(QCoreApplication.translate("Nugget", u"Enable Lockscreen Clock Animation", None))
+ self.lockscreenChk.setText(QCoreApplication.translate("Nugget", u"Enable Duplicate Lockscreen Button and Lockscreen Quickswitch", None))
+ self.photosChk.setText(QCoreApplication.translate("Nugget", u"Enable Old Photo UI", None))
+ self.aiChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence", None))
+ self.setupOptionsLbl.setText(QCoreApplication.translate("Nugget", u"EU Enabler", None))
+ self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enabled", None))
+ self.label_5.setText(QCoreApplication.translate("Nugget", u"Method Type", None))
+ self.methodChoiceDrp.setItemText(0, QCoreApplication.translate("Nugget", u"Method 1", None))
+ self.methodChoiceDrp.setItemText(1, QCoreApplication.translate("Nugget", u"Method 2", None))
+
+ self.label_6.setText(QCoreApplication.translate("Nugget", u"Region Code (Should be 2 letters)", None))
+ self.regionCodeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Region Code (Default: US)", None))
+ self.statusBarLbl_5.setText(QCoreApplication.translate("Nugget", u"Apply", None))
+ self.label_16.setText("")
+ self.modifiedTweaksLbl.setText(QCoreApplication.translate("Nugget", u"Current gestalt file location:", None))
+ self.gestaltLocationLbl.setText(QCoreApplication.translate("Nugget", u"None", None))
+ self.chooseGestaltBtn.setText(QCoreApplication.translate("Nugget", u" Choose Gestalt File", None))
+ self.applyTweaksBtn.setText(QCoreApplication.translate("Nugget", u" Apply Changes", None))
+ self.statusLbl.setText(QCoreApplication.translate("Nugget", u"Ready!", None))
+ self.removeTweaksBtn.setText(QCoreApplication.translate("Nugget", u"Remove All Tweaks", None))
+ self.resetGestaltBtn.setText(QCoreApplication.translate("Nugget", u"Reset Mobile Gestalt", None))
+ # retranslateUi
+
diff --git a/requirements.txt b/requirements.txt
index 6f6e1e1..c90a8d3 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1,2 @@
-pymobiledevice3
\ No newline at end of file
+pymobiledevice3
+pyside6
\ No newline at end of file
diff --git a/resources_rc.py b/resources_rc.py
new file mode 100644
index 0000000..423803f
--- /dev/null
+++ b/resources_rc.py
@@ -0,0 +1,9830 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.6.3
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x05\xf3\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-gear\x22 vi\
+ewBox=\x220 0 16 16\
+\x22>\x0a \x0a
\x0a\
+\x00\x00\x04\xf4\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-discord\x22\
+ viewBox=\x220 0 16\
+ 16\x22>\x0a \x0a\
+\x00\x00\x00\xeb\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-heart-fi\
+ll\x22 viewBox=\x220 0\
+ 16 16\x22>\x0a \x0a\
+\x00\x00\x05M\
+<\
+?xml version=\x221.\
+0\x22 encoding=\x22UTF\
+-8\x22?>\x0a\
+\x0a\x0a\x0a\
+\x00\x00\x02\xc5\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-github\x22 \
+viewBox=\x220 0 16 \
+16\x22>\x0a \x0a\
+svg>\
+\x00\x00\x02U\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-hdd\x22 vie\
+wBox=\x220 0 16 16\x22\
+>\x0a \x0a <\
+path d=\x22M16 11a2\
+ 2 0 0 1-2 2H2a2\
+ 2 0 0 1-2-2V9.5\
+1c0-.418.105-.83\
+.305-1.197l2.472\
+-4.531A1.5 1.5 0\
+ 0 1 4.094 3h7.8\
+12a1.5 1.5 0 0 1\
+ 1.317.782l2.472\
+ 4.53c.2.368.305\
+.78.305 1.198V11\
+zM3.655 4.26 1.5\
+92 8.043C1.724 8\
+.014 1.86 8 2 8h\
+12c.14 0 .276.01\
+4.408.042L12.345\
+ 4.26a.5.5 0 0 0\
+-.439-.26H4.094a\
+.5.5 0 0 0-.44.2\
+6zM1 10v1a1 1 0 \
+0 0 1 1h12a1 1 0\
+ 0 0 1-1v-1a1 1 \
+0 0 0-1-1H2a1 1 \
+0 0 0-1 1z\x22/>\x0a\
+svg>\
+\x00\x00\x02%\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-folder\x22 \
+viewBox=\x220 0 16 \
+16\x22>\x0a \x0a\
+svg>\
+\x00\x00\x019\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-x-lg\x22 vi\
+ewBox=\x220 0 16 16\
+\x22>\x0a \x0a\
+\x00\x00\x03\xb0\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-wifi\x22 vi\
+ewBox=\x220 0 16 16\
+\x22>\x0a \x0a \x0a\
+\x00\x00\x02y\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-twitter\x22\
+ viewBox=\x220 0 16\
+ 16\x22>\x0a \x0a\
+\x00\x00\x02$\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22#eb5545\x22 cla\
+ss=\x22bi bi-trash\x22\
+ viewBox=\x220 0 16\
+ 16\x22>\x0a \x0a \x0a\
+\x00\x00\x02\x89\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-currency\
+-dollar\x22 viewBox\
+=\x220 0 16 16\x22>\x0a \
+\x0a\
+\x00\x00\x02H\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-file-ear\
+mark-zip\x22 viewBo\
+x=\x220 0 16 16\x22>\x0a \
+ \x0a \
+ \
+\x0a\
+\x00\x00\x01|\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-check-ci\
+rcle\x22 viewBox=\x220\
+ 0 16 16\x22>\x0a \x0a \
+ \x0a\
+\x00\x00\x01\x91\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-toggles\x22\
+ viewBox=\x220 0 16\
+ 16\x22>\x0a \x0a\
+\
+\x00\x00\x01\xa6\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-house\x22 v\
+iewBox=\x220 0 16 1\
+6\x22>\x0a \x0a<\
+/svg>\
+\x00\x00\x01Y\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-arrow-cl\
+ockwise\x22 viewBox\
+=\x220 0 16 16\x22>\x0a \
+\x0a\
+ \x0a\
+\x00\x00\x06\x0c\
+<\
+?xml version=\x221.\
+0\x22 encoding=\x22UTF\
+-8\x22?>\x0a\
+\x0a\x0a\x0a\
+\x00\x00\x02t\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-star\x22 vi\
+ewBox=\x220 0 16 16\
+\x22>\x0a \x0a\
+\x00\x00\x01\xdc\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-geo-alt\x22\
+ viewBox=\x220 0 16\
+ 16\x22>\x0a \x0a \x0a\
+\x00\x00\x01\x03\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-caret-do\
+wn-fill\x22 viewBox\
+=\x220 0 16 16\x22>\x0a \
+\x0a\x0a\
+\x00\x00\x01H\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22 fi\
+ll=\x22white\x22 class\
+=\x22bi bi-phone\x22 v\
+iewBox=\x220 0 16 1\
+6\x22>\x0a \x0a\
+ \
+\x0a\
+\x00\x00\x05\x87\
+<\
+?xml version=\x221.\
+0\x22 encoding=\x22UTF\
+-8\x22?>\x0a