mirror of
https://github.com/leminlimez/Nugget.git
synced 2025-04-08 04:23:05 +08:00
69
README.md
69
README.md
@@ -1,7 +1,9 @@
|
|||||||
|

|
||||||
|
|
||||||
# Nugget
|
# Nugget
|
||||||
Unlock your device's full potential!
|
Unlock your device's full potential!
|
||||||
|
|
||||||
Sparserestore works on all versions iOS 17.0-18.2 developer beta 2. There is partial support for iOS 18.2 developer beta 3 and newer.
|
Sparserestore works on all versions iOS 17.0-18.1.1. There is partial support for iOS 18.2 developer beta 3 and newer not using any exploits.
|
||||||
|
|
||||||
**Mobilegestalt and AI Enabler tweaks are not supported on iOS 18.2+.** It will never be supported, do not make issues asking for when it is supported.
|
**Mobilegestalt and AI Enabler tweaks are not supported on iOS 18.2+.** It will never be supported, do not make issues asking for when it is supported.
|
||||||
|
|
||||||
@@ -9,25 +11,12 @@ Make sure you have installed the [requirements](#requirements) if you are on Win
|
|||||||
|
|
||||||
This uses the sparserestore exploit to write to files outside of the intended restore location, like mobilegestalt. Read the [Getting the File](#getting-the-file) section to learn how to get your mobilegestalt file.
|
This uses the sparserestore exploit to write to files outside of the intended restore location, like mobilegestalt. Read the [Getting the File](#getting-the-file) section to learn how to get your mobilegestalt file.
|
||||||
|
|
||||||
Note: I am not responsible if your device bootloops. Please back up your data before using!
|
**Note:** I am not responsible if your device bootloops. Please back up your data before using!
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
### iOS 17.0+
|
<details>
|
||||||
- Enable Dynamic Island on any device
|
<summary>iOS 17.0+</summary>
|
||||||
- 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 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.
|
|
||||||
- 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)
|
|
||||||
- EU Enabler (iOS 17.6-)
|
|
||||||
- Springboard Options (from [Cowabunga Lite](https://github.com/leminlimez/CowabungaLite))
|
- Springboard Options (from [Cowabunga Lite](https://github.com/leminlimez/CowabungaLite))
|
||||||
- Set Lock Screen Footnote
|
- Set Lock Screen Footnote
|
||||||
- Disable Lock After Respring
|
- Disable Lock After Respring
|
||||||
@@ -67,14 +56,44 @@ Note: I am not responsible if your device bootloops. Please back up your data be
|
|||||||
- Disable thermalmonitord
|
- Disable thermalmonitord
|
||||||
- OTA Killer
|
- OTA Killer
|
||||||
- Custom Resolution
|
- Custom Resolution
|
||||||
### iOS 18.0+
|
</details>
|
||||||
- Enable iPhone 16 camera button page in the Settings app
|
<details>
|
||||||
- Enable AOD & AOD Vibrancy on any device
|
<summary>iOS 17.0 - 18.1.1</summary>
|
||||||
|
|
||||||
|
- Enable Dynamic Island on any device
|
||||||
|
- 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 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.
|
||||||
|
- 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)
|
||||||
|
- EU Enabler (iOS 17.6-)
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>iOS 18.0 - iOS 18.0.1</summary>
|
||||||
|
|
||||||
- Feature Flags (iOS 18.1b4-):
|
- Feature Flags (iOS 18.1b4-):
|
||||||
- Enabling lock screen clock animation, lock screen page duplication button, and more!
|
- Enabling lock screen clock animation, lock screen page duplication button, and more!
|
||||||
- Disabling the new iOS 18 Photos UI (iOS 18.0 betas only, unknown which patched it)
|
- Disabling the new iOS 18 Photos UI (iOS 18.0 betas only, unknown which patched it)
|
||||||
### iOS 18.1+
|
</details>
|
||||||
- AI Enabler + Device Spoofing (fixed in iOS 18.2db3)
|
<details>
|
||||||
|
<summary>iOS 18.0 - iOS 18.1.1</summary>
|
||||||
|
|
||||||
|
- Enable iPhone 16 camera button page in the Settings app
|
||||||
|
- Enable AOD & AOD Vibrancy on any device
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>iOS 18.1 - 18.1.1</summary>
|
||||||
|
|
||||||
|
- AI Enabler + Device Spoofing
|
||||||
|
</details>
|
||||||
|
|
||||||
## Requirements:
|
## Requirements:
|
||||||
- **Windows:**
|
- **Windows:**
|
||||||
@@ -101,7 +120,7 @@ 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`.
|
The CLI version can be ran with `python3 cli_app.py`.
|
||||||
|
|
||||||
## Getting the File
|
## Getting the File
|
||||||
You need to get the mobilegestalt file that is specific to your device. To do that, follow these steps:
|
On iOS 18.1.1 and below, you may need to get the mobilegestalt file that is specific to your device. To do that, follow these steps:
|
||||||
1. Install the `Shortcuts` app from the iOS app store.
|
1. Install the `Shortcuts` app from the iOS app store.
|
||||||
2. Download this shortcut: https://www.icloud.com/shortcuts/d6f0a136ddda4714a80750512911c53b
|
2. Download this shortcut: https://www.icloud.com/shortcuts/d6f0a136ddda4714a80750512911c53b
|
||||||
3. Save the file and share it to your computer.
|
3. Save the file and share it to your computer.
|
||||||
@@ -118,11 +137,13 @@ The application itself can be compiled by running `compile.py`.
|
|||||||
|
|
||||||
## Read More
|
## Read More
|
||||||
If you would like to read more about the inner workings of the exploit and iOS restore system, I made a write up which you can read [here](https://gist.github.com/leminlimez/c602c067349140fe979410ef69d39c28).
|
If you would like to read more about the inner workings of the exploit and iOS restore system, I made a write up which you can read [here](https://gist.github.com/leminlimez/c602c067349140fe979410ef69d39c28).
|
||||||
|
For clarity, up to iOS 18.2 developer beta 2 (public beta 1) is fully supported by Nugget. I said iOS 18.1.1 because mentioning the betas confused people.
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
- [JJTech](https://github.com/JJTech0130) for Sparserestore/[TrollRestore](https://github.com/JJTech0130/TrollRestore)
|
- [JJTech](https://github.com/JJTech0130) for Sparserestore/[TrollRestore](https://github.com/JJTech0130/TrollRestore)
|
||||||
- [PosterRestore](https://discord.gg/gWtzTVhMvh) for their help with PosterBoard
|
- [PosterRestore](https://discord.gg/gWtzTVhMvh) for their help with PosterBoard
|
||||||
- Special thanks to dootskyre, [Middo](https://twitter.com/MWRevamped), [dulark](https://github.com/dularkian), forcequitOS, and pingubow for their work on this. It would not have been possible without them!
|
- Special thanks to dootskyre, [Middo](https://twitter.com/MWRevamped), [dulark](https://github.com/dularkian), forcequitOS, and pingubow for their work on this. It would not have been possible without them!
|
||||||
|
- Also thanks to [Snoolie for aar handling](https://github.com/0xilis/python-aar-stuff)
|
||||||
- [disfordottie](https://x.com/disfordottie) for some global flag features
|
- [disfordottie](https://x.com/disfordottie) for some global flag features
|
||||||
- [Mikasa-san](https://github.com/Mikasa-san) for [Quiet Daemon](https://github.com/Mikasa-san/QuietDaemon)
|
- [Mikasa-san](https://github.com/Mikasa-san) for [Quiet Daemon](https://github.com/Mikasa-san/QuietDaemon)
|
||||||
- [sneakyf1shy](https://github.com/f1shy-dev) for [AI Eligibility](https://gist.github.com/f1shy-dev/23b4a78dc283edd30ae2b2e6429129b5) (iOS 18.1 beta 4 and below)
|
- [sneakyf1shy](https://github.com/f1shy-dev) for [AI Eligibility](https://gist.github.com/f1shy-dev/23b4a78dc283edd30ae2b2e6429129b5) (iOS 18.1 beta 4 and below)
|
||||||
|
|||||||
0
controllers/__init__.py
Normal file
0
controllers/__init__.py
Normal file
21
controllers/aar/LICENSE
Normal file
21
controllers/aar/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 0xilis
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
0
controllers/aar/__init__.py
Normal file
0
controllers/aar/__init__.py
Normal file
62
controllers/aar/aar.py
Normal file
62
controllers/aar/aar.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
'''
|
||||||
|
Created by Snoolie K (0xilis) on 2025 March 18.
|
||||||
|
Licensed under MIT. Please credit if using.
|
||||||
|
'''
|
||||||
|
|
||||||
|
import struct
|
||||||
|
|
||||||
|
# make a .aar of one contexts.plist file
|
||||||
|
def wrap_in_aar(input_file, input_mov, output_file):
|
||||||
|
# Since I only need to care about a contents.plist (and in the future the mov file), I am hardcoding the header...
|
||||||
|
header = bytearray.fromhex("4141303125005459503146504154500E00636F6E74656E74732E706C697374444154418E13")
|
||||||
|
|
||||||
|
with open(input_file, 'rb') as f:
|
||||||
|
file_data = f.read()
|
||||||
|
|
||||||
|
file_size = len(file_data)
|
||||||
|
|
||||||
|
if file_size <= 0xFFFF:
|
||||||
|
# Our size can fit in a 2 byte AA_FIELD_TYPE_BLOB, yay
|
||||||
|
header[-2:] = struct.pack('<H', file_size)
|
||||||
|
else:
|
||||||
|
'''
|
||||||
|
Our contents.plist is over 64KB. This means it won't fit in a uint16_t.
|
||||||
|
Instead, we update the A subtype for our DAT (2 byte AA_FIELD_TYPE_BLOB)
|
||||||
|
To be a B subtype (4 byte AA_FIELD_TYPE_BLOB). This also means we will
|
||||||
|
need to change the header size to 0x27 since we are adding 2 bytes by doing this.
|
||||||
|
'''
|
||||||
|
header[-3] = 0x42
|
||||||
|
header[-2:] = struct.pack('<I', file_size)
|
||||||
|
header[4] = 0x27
|
||||||
|
# Hardcoded settlingEffect.mov header
|
||||||
|
header2 = bytearray.fromhex("4141303129005459503146504154501200736574746C696E674566666563742E6D6F7644415441F4B8")
|
||||||
|
|
||||||
|
if isinstance(input_mov, bytes):
|
||||||
|
file_data2 = input_mov
|
||||||
|
else:
|
||||||
|
with open(input_mov, 'rb') as f:
|
||||||
|
file_data2 = f.read()
|
||||||
|
|
||||||
|
file_size2 = len(file_data2)
|
||||||
|
|
||||||
|
if file_size2 <= 0xFFFF:
|
||||||
|
# Our size can fit in a 2 byte AA_FIELD_TYPE_BLOB, yay
|
||||||
|
header2[-2:] = struct.pack('<H', file_size2)
|
||||||
|
else:
|
||||||
|
'''
|
||||||
|
Our settlingEffect.mov is over 64KB. This means it won't fit in a uint16_t.
|
||||||
|
Instead, we update the A subtype for our DAT (2 byte AA_FIELD_TYPE_BLOB)
|
||||||
|
To be a B subtype (4 byte AA_FIELD_TYPE_BLOB). This also means we will
|
||||||
|
need to change the header size to 0x27 since we are adding 2 bytes by doing this.
|
||||||
|
'''
|
||||||
|
header2[-3] = 0x42
|
||||||
|
header2[-2:] = struct.pack('<I', file_size2)
|
||||||
|
header2[4] = 0x2B
|
||||||
|
|
||||||
|
# Write the header and file data to the output file
|
||||||
|
with open(output_file, 'wb') as f:
|
||||||
|
f.write(header)
|
||||||
|
f.write(file_data)
|
||||||
|
f.write(header2)
|
||||||
|
f.write(file_data2)
|
||||||
|
|
||||||
8
controllers/files_handler.py
Normal file
8
controllers/files_handler.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import sys
|
||||||
|
from os import path, getcwd
|
||||||
|
|
||||||
|
def get_bundle_files(name: str):
|
||||||
|
try:
|
||||||
|
return path.join(sys._MEIPASS, name)
|
||||||
|
except:
|
||||||
|
return path.join(getcwd(), name)
|
||||||
208
controllers/video_handler.py
Normal file
208
controllers/video_handler.py
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
import cv2
|
||||||
|
import os
|
||||||
|
import ffmpeg
|
||||||
|
from tempfile import mkdtemp, NamedTemporaryFile
|
||||||
|
from shutil import rmtree
|
||||||
|
|
||||||
|
def convert_to_mov(input_file: str, output_file: str = None):
|
||||||
|
# if there is no output file specified, create a temp file then return contents
|
||||||
|
if output_file == None:
|
||||||
|
tmpdir = mkdtemp()
|
||||||
|
tmp = os.path.join(tmpdir, "vid.mov")
|
||||||
|
convert_to_mov(input_file, tmp)
|
||||||
|
with open(tmp, "rb") as tmpfile:
|
||||||
|
contents = tmpfile.read()
|
||||||
|
rmtree(tmpdir)
|
||||||
|
return contents
|
||||||
|
inp = ffmpeg.input(input_file)
|
||||||
|
out = ffmpeg.output(inp, output_file, f='mov', vcodec='copy', acodec='copy')
|
||||||
|
ffmpeg.run(out)
|
||||||
|
|
||||||
|
def get_thumbnail_from_mov(input_file: str, output_file: str = None):
|
||||||
|
# if there is no output file specified, create a temp file and then return contents
|
||||||
|
if output_file == None:
|
||||||
|
tmpdir = mkdtemp()
|
||||||
|
tmp = os.path.join(tmpdir, "thumb.png")
|
||||||
|
get_thumbnail_from_mov(input_file, tmp)
|
||||||
|
with open(tmp, "rb") as tmpfile:
|
||||||
|
contents = tmpfile.read()
|
||||||
|
rmtree(tmpdir)
|
||||||
|
return contents
|
||||||
|
|
||||||
|
inp = ffmpeg.input(input_file, ss=0)
|
||||||
|
out = ffmpeg.output(inp, output_file, vframes=1)
|
||||||
|
ffmpeg.run(out)
|
||||||
|
|
||||||
|
def get_thumbnail_from_contents(contents: bytes, output_file: str = None):
|
||||||
|
with NamedTemporaryFile("rb+", suffix=".mov") as inp_file:
|
||||||
|
inp_file.write(contents)
|
||||||
|
contents = get_thumbnail_from_mov(inp_file.name, output_file)
|
||||||
|
return contents
|
||||||
|
|
||||||
|
def create_caml(video_path: str, output_file: str, auto_reverses: bool, update_label=lambda x: None):
|
||||||
|
cam = cv2.VideoCapture(video_path)
|
||||||
|
assets_path = os.path.join(output_file, "assets")
|
||||||
|
frame_count = int(cam.get(cv2.CAP_PROP_FRAME_COUNT))
|
||||||
|
FRAME_LIMIT = 300
|
||||||
|
reverse = 0
|
||||||
|
if auto_reverses:
|
||||||
|
reverse = 1
|
||||||
|
if frame_count > FRAME_LIMIT:
|
||||||
|
raise Exception(f"Videos must be under {FRAME_LIMIT} fps to loop. Either reduce the frame rate or make it shorter.")
|
||||||
|
try:
|
||||||
|
# creating a folder named data
|
||||||
|
if not os.path.exists(assets_path):
|
||||||
|
os.makedirs(assets_path, exist_ok=True)
|
||||||
|
# if not created then raise error
|
||||||
|
except OSError:
|
||||||
|
print ('Error: Creating directory of data')
|
||||||
|
|
||||||
|
# frame
|
||||||
|
currentframe = 0
|
||||||
|
width = int(cam.get(cv2.CAP_PROP_FRAME_WIDTH))
|
||||||
|
height = int(cam.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
||||||
|
|
||||||
|
with open(os.path.join(output_file, "main.caml"), "w") as caml:
|
||||||
|
# write caml header
|
||||||
|
fps = cam.get(cv2.CAP_PROP_FPS)
|
||||||
|
duration = frame_count / fps
|
||||||
|
caml.write(f"""<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<caml xmlns="http://www.apple.com/CoreAnimation/1.0">
|
||||||
|
<CALayer allowsEdgeAntialiasing="1" allowsGroupOpacity="1" bounds="0 0 {width} {height}" contentsFormat="RGBA8" cornerCurve="circular" hidden="0" name="_FLOATING" position="{int(width/2)} {int(height/2)}">
|
||||||
|
<sublayers>
|
||||||
|
<CATransformLayer allowsEdgeAntialiasing="1" allowsGroupOpacity="1" allowsHitTesting="1" bounds="0 0 {width} {height}" contentsFormat="RGBA8" cornerCurve="circular" name="Chip" position="{int(width/2)} {int(height/2)}">
|
||||||
|
<sublayers>
|
||||||
|
<CALayer allowsEdgeAntialiasing="1" allowsGroupOpacity="1" bounds="0 0 {width} {height}" contentsFormat="RGBA8" cornerCurve="circular" name="CALayer1" position="{int(width/2)} {int(height/2)}">
|
||||||
|
<contents type="CGImage" src="assets/0.jpg"/>
|
||||||
|
<animations>
|
||||||
|
<animation type="CAKeyframeAnimation" calculationMode="linear" keyPath="contents" beginTime="1e-100" duration="{duration}" removedOnCompletion="0" repeatCount="inf" repeatDuration="0" speed="1" timeOffset="0" autoreverses="{reverse}">
|
||||||
|
<values>\n""")
|
||||||
|
while(True):
|
||||||
|
# reading from frame
|
||||||
|
ret,frame = cam.read()
|
||||||
|
|
||||||
|
if ret:
|
||||||
|
# if video is still left continue creating images
|
||||||
|
name = 'assets/' + str(currentframe) + '.jpg'
|
||||||
|
if update_label:
|
||||||
|
update_label('Creating...' + name)
|
||||||
|
else:
|
||||||
|
print ('Creating...' + name)
|
||||||
|
|
||||||
|
# writing the extracted images
|
||||||
|
cv2.imwrite(os.path.join(output_file, name), frame)
|
||||||
|
caml.write(f"\t\t\t<CGImage src=\"{name}\"/>\n")
|
||||||
|
|
||||||
|
# increasing counter so that it will
|
||||||
|
# show how many frames are created
|
||||||
|
currentframe += 1
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
caml.write(""" </values>
|
||||||
|
</animation>
|
||||||
|
</animations>
|
||||||
|
</CALayer>
|
||||||
|
</sublayers>
|
||||||
|
</CATransformLayer>
|
||||||
|
</sublayers>
|
||||||
|
<states>
|
||||||
|
<LKState name="Locked">
|
||||||
|
<elements/>
|
||||||
|
</LKState>
|
||||||
|
<LKState name="Unlock">
|
||||||
|
<elements/>
|
||||||
|
</LKState>
|
||||||
|
<LKState name="Sleep">
|
||||||
|
<elements/>
|
||||||
|
</LKState>
|
||||||
|
</states>
|
||||||
|
<stateTransitions>
|
||||||
|
<LKStateTransition fromState="*" toState="Unlock">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="Unlock" toState="*">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="*" toState="Locked">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="Locked" toState="*">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="*" toState="Sleep">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="Sleep" toState="*">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
</stateTransitions>
|
||||||
|
</CALayer>
|
||||||
|
</caml>
|
||||||
|
""")
|
||||||
|
|
||||||
|
# Release all space and windows once done
|
||||||
|
cam.release()
|
||||||
|
cv2.destroyAllWindows()
|
||||||
|
|
||||||
|
# Write the other caml
|
||||||
|
with open(os.path.join(output_file, "index.xml"), "w") as index:
|
||||||
|
index.write(f"""<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>assetManifest</key>
|
||||||
|
<string>assetManifest.caml</string>
|
||||||
|
<key>documentHeight</key>
|
||||||
|
<real>{height}</real>
|
||||||
|
<key>documentResizesToView</key>
|
||||||
|
<true/>
|
||||||
|
<key>documentWidth</key>
|
||||||
|
<real>{width}</real>
|
||||||
|
<key>dynamicGuidesEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>geometryFlipped</key>
|
||||||
|
<false/>
|
||||||
|
<key>guidesEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>interactiveMouseEventsEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>interactiveShowsCursor</key>
|
||||||
|
<true/>
|
||||||
|
<key>interactiveTouchEventsEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>loopEnd</key>
|
||||||
|
<real>0.0</real>
|
||||||
|
<key>loopStart</key>
|
||||||
|
<real>0.0</real>
|
||||||
|
<key>loopingEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>multitouchDisablesMouse</key>
|
||||||
|
<false/>
|
||||||
|
<key>multitouchEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>presentationMouseEventsEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>presentationShowsCursor</key>
|
||||||
|
<true/>
|
||||||
|
<key>presentationTouchEventsEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>rootDocument</key>
|
||||||
|
<string>main.caml</string>
|
||||||
|
<key>savesWindowFrame</key>
|
||||||
|
<false/>
|
||||||
|
<key>scalesToFitInPlayer</key>
|
||||||
|
<true/>
|
||||||
|
<key>showsTouches</key>
|
||||||
|
<true/>
|
||||||
|
<key>snappingEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>timelineMarkers</key>
|
||||||
|
<string>[(null)]</string>
|
||||||
|
<key>touchesColor</key>
|
||||||
|
<string>1 1 0 0.8</string>
|
||||||
|
<key>unitsInPixelsInPlayer</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
""")
|
||||||
@@ -3,7 +3,7 @@ import plistlib
|
|||||||
from tempfile import TemporaryDirectory
|
from tempfile import TemporaryDirectory
|
||||||
|
|
||||||
from PySide6.QtWidgets import QMessageBox
|
from PySide6.QtWidgets import QMessageBox
|
||||||
from PySide6.QtCore import QSettings
|
from PySide6.QtCore import QSettings, QThread
|
||||||
|
|
||||||
from pymobiledevice3 import usbmux
|
from pymobiledevice3 import usbmux
|
||||||
from pymobiledevice3.lockdown import create_using_usbmux
|
from pymobiledevice3.lockdown import create_using_usbmux
|
||||||
@@ -12,6 +12,7 @@ from pymobiledevice3.exceptions import MuxException, PasswordRequiredError
|
|||||||
from devicemanagement.constants import Device, Version
|
from devicemanagement.constants import Device, Version
|
||||||
from devicemanagement.data_singleton import DataSingleton
|
from devicemanagement.data_singleton import DataSingleton
|
||||||
|
|
||||||
|
from gui.apply_worker import ApplyAlertMessage
|
||||||
from controllers.path_handler import fix_windows_path
|
from controllers.path_handler import fix_windows_path
|
||||||
|
|
||||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak, NullifyFileTweak
|
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak, NullifyFileTweak
|
||||||
@@ -20,31 +21,31 @@ from tweaks.posterboard_tweak import PosterboardTweak
|
|||||||
from tweaks.basic_plist_locations import FileLocationsList, RiskyFileLocationsList
|
from tweaks.basic_plist_locations import FileLocationsList, RiskyFileLocationsList
|
||||||
from Sparserestore.restore import restore_files, FileToRestore
|
from Sparserestore.restore import restore_files, FileToRestore
|
||||||
|
|
||||||
def show_error_msg(txt: str, detailed_txt: str = None):
|
def show_error_msg(txt: str, title: str = "Error!", icon = QMessageBox.Critical, detailed_txt: str = None):
|
||||||
detailsBox = QMessageBox()
|
detailsBox = QMessageBox()
|
||||||
detailsBox.setIcon(QMessageBox.Critical)
|
detailsBox.setIcon(icon)
|
||||||
detailsBox.setWindowTitle("Error!")
|
detailsBox.setWindowTitle(title)
|
||||||
detailsBox.setText(txt)
|
detailsBox.setText(txt)
|
||||||
if detailed_txt != None:
|
if detailed_txt != None:
|
||||||
detailsBox.setDetailedText(detailed_txt)
|
detailsBox.setDetailedText(detailed_txt)
|
||||||
detailsBox.exec()
|
detailsBox.exec()
|
||||||
|
|
||||||
def show_apply_error(e: Exception, update_label=lambda x: None):
|
def show_apply_error(e: Exception, update_label=lambda x: None):
|
||||||
if "Find My" in str(e):
|
|
||||||
show_error_msg("Find My must be disabled in order to use this tool.",
|
|
||||||
detailed_txt="Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
|
|
||||||
elif "Encrypted Backup MDM" in str(e):
|
|
||||||
show_error_msg("Nugget cannot be used on this device. Click Show Details for more info.",
|
|
||||||
detailed_txt="Your device is managed and MDM backup encryption is on. This must be turned off in order for Nugget to work. Please do not use Nugget on your school/work device!")
|
|
||||||
elif "SessionInactive" in str(e):
|
|
||||||
show_error_msg("The session was terminated. Refresh the device list and try again.")
|
|
||||||
elif "PasswordRequiredError" in str(e):
|
|
||||||
show_error_msg("Device is password protected! You must trust the computer on your device.",
|
|
||||||
detailed_txt="Unlock your device. On the popup, click \"Trust\", enter your password, then try again.")
|
|
||||||
else:
|
|
||||||
show_error_msg(type(e).__name__ + ": " + repr(e), detailed_txt=str(traceback.format_exc()))
|
|
||||||
print(traceback.format_exc())
|
print(traceback.format_exc())
|
||||||
update_label("Failed to restore")
|
update_label("Failed to restore")
|
||||||
|
if "Find My" in str(e):
|
||||||
|
return ApplyAlertMessage("Find My must be disabled in order to use this tool.",
|
||||||
|
detailed_txt="Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
|
||||||
|
elif "Encrypted Backup MDM" in str(e):
|
||||||
|
return ApplyAlertMessage("Nugget cannot be used on this device. Click Show Details for more info.",
|
||||||
|
detailed_txt="Your device is managed and MDM backup encryption is on. This must be turned off in order for Nugget to work. Please do not use Nugget on your school/work device!")
|
||||||
|
elif "SessionInactive" in str(e):
|
||||||
|
return ApplyAlertMessage("The session was terminated. Refresh the device list and try again.")
|
||||||
|
elif "PasswordRequiredError" in str(e):
|
||||||
|
return ApplyAlertMessage("Device is password protected! You must trust the computer on your device.",
|
||||||
|
detailed_txt="Unlock your device. On the popup, click \"Trust\", enter your password, then try again.")
|
||||||
|
else:
|
||||||
|
return ApplyAlertMessage(type(e).__name__ + ": " + repr(e), detailed_txt=str(traceback.format_exc()))
|
||||||
|
|
||||||
class DeviceManager:
|
class DeviceManager:
|
||||||
## Class Functions
|
## Class Functions
|
||||||
@@ -58,7 +59,6 @@ class DeviceManager:
|
|||||||
self.apply_over_wifi = False
|
self.apply_over_wifi = False
|
||||||
self.auto_reboot = True
|
self.auto_reboot = True
|
||||||
self.allow_risky_tweaks = False
|
self.allow_risky_tweaks = False
|
||||||
self.windows_path_fix = True
|
|
||||||
self.show_all_spoofable_models = False
|
self.show_all_spoofable_models = False
|
||||||
self.skip_setup = True
|
self.skip_setup = True
|
||||||
self.supervised = False
|
self.supervised = False
|
||||||
@@ -244,9 +244,9 @@ class DeviceManager:
|
|||||||
domain="ManagedPreferencesDomain"
|
domain="ManagedPreferencesDomain"
|
||||||
))
|
))
|
||||||
|
|
||||||
def get_domain_for_path(self, path: str, owner: int = 501) -> str:
|
def get_domain_for_path(self, path: str, owner: int = 501, uses_domains: bool = False) -> str:
|
||||||
# returns Domain: str?, Path: str
|
# returns Domain: str?, Path: str
|
||||||
if self.get_current_device_supported() and not path.startswith("/var/mobile/") and not owner == 0:
|
if self.get_current_device_supported() and not path.startswith("/var/mobile/") and not owner == 0 and not uses_domains:
|
||||||
# don't do anything on sparserestore versions
|
# don't do anything on sparserestore versions
|
||||||
return path, ""
|
return path, ""
|
||||||
fully_patched = self.get_current_device_patched()
|
fully_patched = self.get_current_device_patched()
|
||||||
@@ -278,9 +278,9 @@ class DeviceManager:
|
|||||||
return new_path, new_domain
|
return new_path, new_domain
|
||||||
return path, ""
|
return path, ""
|
||||||
|
|
||||||
def concat_file(self, contents: str, path: str, files_to_restore: list[FileToRestore], owner: int = 501, group: int = 501):
|
def concat_file(self, contents: str, path: str, files_to_restore: list[FileToRestore], owner: int = 501, group: int = 501, uses_domains: bool = False):
|
||||||
# TODO: try using inodes here instead
|
# TODO: try using inodes here instead
|
||||||
file_path, domain = self.get_domain_for_path(path, owner=owner)
|
file_path, domain = self.get_domain_for_path(path, owner=owner, uses_domains=uses_domains)
|
||||||
files_to_restore.append(FileToRestore(
|
files_to_restore.append(FileToRestore(
|
||||||
contents=contents,
|
contents=contents,
|
||||||
restore_path=file_path,
|
restore_path=file_path,
|
||||||
@@ -289,7 +289,7 @@ class DeviceManager:
|
|||||||
))
|
))
|
||||||
|
|
||||||
## APPLYING OR REMOVING TWEAKS AND RESTORING
|
## APPLYING OR REMOVING TWEAKS AND RESTORING
|
||||||
def apply_changes(self, resetting: bool = False, update_label=lambda x: None):
|
def apply_changes(self, resetting: bool = False, update_label=lambda x: None, show_alert=lambda x: None):
|
||||||
try:
|
try:
|
||||||
# set the tweaks and apply
|
# set the tweaks and apply
|
||||||
# first open the file in read mode
|
# first open the file in read mode
|
||||||
@@ -333,8 +333,8 @@ class DeviceManager:
|
|||||||
elif isinstance(tweak, PosterboardTweak):
|
elif isinstance(tweak, PosterboardTweak):
|
||||||
tmp_pb_dir = TemporaryDirectory()
|
tmp_pb_dir = TemporaryDirectory()
|
||||||
tweak.apply_tweak(
|
tweak.apply_tweak(
|
||||||
files_to_restore=files_to_restore, output_dir=fix_windows_path(tmp_pb_dir.name),
|
files_to_restore=files_to_restore, output_dir=tmp_pb_dir.name,
|
||||||
version=self.get_current_device_version()
|
version=self.get_current_device_version(), update_label=update_label
|
||||||
)
|
)
|
||||||
if tweak.enabled:
|
if tweak.enabled:
|
||||||
uses_domains = True
|
uses_domains = True
|
||||||
@@ -343,7 +343,7 @@ class DeviceManager:
|
|||||||
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
||||||
elif tweak.enabled:
|
elif tweak.enabled:
|
||||||
# no mobilegestalt file provided but applying mga tweaks, give warning
|
# no mobilegestalt file provided but applying mga tweaks, give warning
|
||||||
show_error_msg("No mobilegestalt file provided! Please select your file to apply mobilegestalt tweaks.")
|
show_alert(show_error_msg("No mobilegestalt file provided! Please select your file to apply mobilegestalt tweaks.", exec=False))
|
||||||
update_label("Failed.")
|
update_label("Failed.")
|
||||||
return
|
return
|
||||||
# set the custom gestalt keys
|
# set the custom gestalt keys
|
||||||
@@ -368,7 +368,7 @@ class DeviceManager:
|
|||||||
self.concat_file(
|
self.concat_file(
|
||||||
contents=gestalt_data,
|
contents=gestalt_data,
|
||||||
path="/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/com.apple.MobileGestalt.plist",
|
path="/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/com.apple.MobileGestalt.plist",
|
||||||
files_to_restore=files_to_restore
|
files_to_restore=files_to_restore, uses_domains=uses_domains
|
||||||
)
|
)
|
||||||
if eligibility_files:
|
if eligibility_files:
|
||||||
new_eligibility_files: dict[FileToRestore] = []
|
new_eligibility_files: dict[FileToRestore] = []
|
||||||
@@ -422,7 +422,7 @@ class DeviceManager:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# restore to the device
|
# restore to the device
|
||||||
update_label("Restoring to device...")
|
update_label("Restoring to device...\nDo NOT Unplug")
|
||||||
restore_files(files=files_to_restore, reboot=self.auto_reboot, lockdown_client=self.data_singleton.current_device.ld)
|
restore_files(files=files_to_restore, reboot=self.auto_reboot, lockdown_client=self.data_singleton.current_device.ld)
|
||||||
if tmp_pb_dir != None:
|
if tmp_pb_dir != None:
|
||||||
try:
|
try:
|
||||||
@@ -430,10 +430,10 @@ class DeviceManager:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
# ignore clean up errors
|
# ignore clean up errors
|
||||||
print(str(e))
|
print(str(e))
|
||||||
msg = "Your device will now restart."
|
msg = "Your device will now restart.\n\nRemember to turn Find My back on!"
|
||||||
if not self.auto_reboot:
|
if not self.auto_reboot:
|
||||||
msg = "Please restart your device to see changes."
|
msg = "Please restart your device to see changes."
|
||||||
QMessageBox.information(None, "Success!", "All done! " + msg)
|
show_alert(ApplyAlertMessage(txt="All done! " + msg, title="Success!", icon=QMessageBox.Information))
|
||||||
update_label("Success!")
|
update_label("Success!")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if tmp_pb_dir != None:
|
if tmp_pb_dir != None:
|
||||||
@@ -442,7 +442,7 @@ class DeviceManager:
|
|||||||
except Exception as e2:
|
except Exception as e2:
|
||||||
# ignore clean up errors
|
# ignore clean up errors
|
||||||
print(str(e2))
|
print(str(e2))
|
||||||
show_apply_error(e, update_label)
|
show_alert(show_apply_error(e, update_label))
|
||||||
|
|
||||||
## RESETTING MOBILE GESTALT
|
## RESETTING MOBILE GESTALT
|
||||||
def reset_mobilegestalt(self, settings: QSettings, update_label=lambda x: None):
|
def reset_mobilegestalt(self, settings: QSettings, update_label=lambda x: None):
|
||||||
@@ -467,4 +467,4 @@ class DeviceManager:
|
|||||||
QMessageBox.information(None, "Success!", "All done! " + msg)
|
QMessageBox.information(None, "Success!", "All done! " + msg)
|
||||||
update_label("Success!")
|
update_label("Success!")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
show_apply_error(e)
|
show_error_msg(str(e))
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
88D1F444-E2B3-43C4-BB15-790C67EDEA56
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"version" : 10,
|
||||||
|
"layers" : [
|
||||||
|
{
|
||||||
|
"frame" : {
|
||||||
|
"Width" : 1042.4546142208774,
|
||||||
|
"Height" : 2868.5230711043873,
|
||||||
|
"Y" : -0.52307110438732707,
|
||||||
|
"X" : 174.92435703479578
|
||||||
|
},
|
||||||
|
"filename" : "portrait-layer_background.HEIC",
|
||||||
|
"zPosition" : 5,
|
||||||
|
"identifier" : "background"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame" : {
|
||||||
|
"Width" : 1182.5,
|
||||||
|
"Height" : 2569.25,
|
||||||
|
"Y" : 149.37503513892489,
|
||||||
|
"X" : 68.749995738267913
|
||||||
|
},
|
||||||
|
"filename" : "portrait-layer_settling-video.MOV",
|
||||||
|
"zPosition" : 5,
|
||||||
|
"identifier" : "settling-video"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties" : {
|
||||||
|
"portraitLayout" : {
|
||||||
|
"clockIntersection" : 2,
|
||||||
|
"deviceResolution" : {
|
||||||
|
"Width" : 750,
|
||||||
|
"Height" : 1334
|
||||||
|
},
|
||||||
|
"visibleFrame" : {
|
||||||
|
"Width" : 886.43178410794587,
|
||||||
|
"Height" : 2569.25,
|
||||||
|
"Y" : 149.37496486107506,
|
||||||
|
"X" : 252.31008241168968
|
||||||
|
},
|
||||||
|
"timeFrame" : {
|
||||||
|
"Width" : 763.51324337831068,
|
||||||
|
"Height" : 227.26499250374812,
|
||||||
|
"Y" : 2135.0546874997553,
|
||||||
|
"X" : 313.76935277650728
|
||||||
|
},
|
||||||
|
"clockLayerOrder" : "ClockAboveForeground",
|
||||||
|
"hasTopEdgeContact" : false,
|
||||||
|
"inactiveFrame" : {
|
||||||
|
"Width" : 913.02473763118462,
|
||||||
|
"Height" : 2646.3274999999999,
|
||||||
|
"Y" : 149.39630414678933,
|
||||||
|
"X" : 239.01360565007042
|
||||||
|
},
|
||||||
|
"imageSize" : {
|
||||||
|
"Width" : 1320,
|
||||||
|
"Height" : 2868
|
||||||
|
},
|
||||||
|
"parallaxPadding" : {
|
||||||
|
"Width" : 61.45927036481757,
|
||||||
|
"Height" : 151.28435782108946
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settlingEffectEnabled" : true,
|
||||||
|
"depthEnabled" : false,
|
||||||
|
"clockAreaLuminance" : 0.64877637987012982,
|
||||||
|
"parallaxDisabled" : false
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>colorSuggestions</key>
|
||||||
|
<array/>
|
||||||
|
<key>kind</key>
|
||||||
|
<string>Original</string>
|
||||||
|
<key>parameters</key>
|
||||||
|
<dict>
|
||||||
|
<key>clockColor</key>
|
||||||
|
<array>
|
||||||
|
<real>1</real>
|
||||||
|
<real>1</real>
|
||||||
|
<real>1</real>
|
||||||
|
</array>
|
||||||
|
<key>clockVibrancy</key>
|
||||||
|
<real>0.0</real>
|
||||||
|
<key>headroomLook</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
9183
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
PRPosterRoleLockScreen
|
||||||
BIN
files/posterboard/VideoCAML/providerInfo.plist
Normal file
BIN
files/posterboard/VideoCAML/providerInfo.plist
Normal file
Binary file not shown.
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>assetManifest</key>
|
||||||
|
<string>assetManifest.caml</string>
|
||||||
|
<key>documentHeight</key>
|
||||||
|
<real>3176</real>
|
||||||
|
<key>documentResizesToView</key>
|
||||||
|
<false/>
|
||||||
|
<key>documentWidth</key>
|
||||||
|
<real>3176</real>
|
||||||
|
<key>dynamicGuidesEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>geometryFlipped</key>
|
||||||
|
<false/>
|
||||||
|
<key>guidesEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>interactiveMouseEventsEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>interactiveShowsCursor</key>
|
||||||
|
<true/>
|
||||||
|
<key>interactiveTouchEventsEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>loopEnd</key>
|
||||||
|
<real>0.0</real>
|
||||||
|
<key>loopStart</key>
|
||||||
|
<real>0.0</real>
|
||||||
|
<key>loopingEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>multitouchDisablesMouse</key>
|
||||||
|
<false/>
|
||||||
|
<key>multitouchEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>presentationMouseEventsEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>presentationShowsCursor</key>
|
||||||
|
<true/>
|
||||||
|
<key>presentationTouchEventsEnabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>rootDocument</key>
|
||||||
|
<string>main.caml</string>
|
||||||
|
<key>savesWindowFrame</key>
|
||||||
|
<false/>
|
||||||
|
<key>scalesToFitInPlayer</key>
|
||||||
|
<false/>
|
||||||
|
<key>showsTouches</key>
|
||||||
|
<true/>
|
||||||
|
<key>snappingEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>timelineMarkers</key>
|
||||||
|
<string>[(null)]</string>
|
||||||
|
<key>touchesColor</key>
|
||||||
|
<string>1 1 0 0.8</string>
|
||||||
|
<key>unitsInPixelsInPlayer</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<caml xmlns="http://www.apple.com/CoreAnimation/1.0">
|
||||||
|
<CALayer allowsEdgeAntialiasing="1" allowsGroupOpacity="1" bounds="0 0 3176 3176" contentsFormat="RGBA8" cornerCurve="circular" hidden="0" name="_BACKGROUND" position="1588 1588">
|
||||||
|
<sublayers>
|
||||||
|
<CALayer allowsEdgeAntialiasing="1" allowsGroupOpacity="1" anchorPoint="0 0" bounds="0 0 0 0" contentsFormat="RGBA8" cornerCurve="circular" name="_CENTER_BACKGROUND" position="1588 1588"/>
|
||||||
|
</sublayers>
|
||||||
|
<states>
|
||||||
|
<LKState name="Locked">
|
||||||
|
<elements/>
|
||||||
|
</LKState>
|
||||||
|
<LKState name="Unlock">
|
||||||
|
<elements/>
|
||||||
|
</LKState>
|
||||||
|
<LKState name="Sleep">
|
||||||
|
<elements/>
|
||||||
|
</LKState>
|
||||||
|
</states>
|
||||||
|
<stateTransitions>
|
||||||
|
<LKStateTransition fromState="*" toState="Unlock">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="Unlock" toState="*">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="*" toState="Locked">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="Locked" toState="*">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="*" toState="Sleep">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
<LKStateTransition fromState="Sleep" toState="*">
|
||||||
|
<elements/>
|
||||||
|
</LKStateTransition>
|
||||||
|
</stateTransitions>
|
||||||
|
</CALayer>
|
||||||
|
</caml>
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>appearanceAware</key>
|
||||||
|
<true/>
|
||||||
|
<key>assets</key>
|
||||||
|
<dict>
|
||||||
|
<key>lockAndHome</key>
|
||||||
|
<dict>
|
||||||
|
<key>default</key>
|
||||||
|
<dict>
|
||||||
|
<key>backgroundAnimationFileName</key>
|
||||||
|
<string>9183.Custom_Background-810w-1080h@2x~ipad.ca</string>
|
||||||
|
<key>floatingAnimationFileNameKey</key>
|
||||||
|
<string>9183.Custom_Floating-810w-1080h@2x~ipad.ca</string>
|
||||||
|
<key>identifier</key>
|
||||||
|
<integer>9183</integer>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Chip</string>
|
||||||
|
<key>type</key>
|
||||||
|
<string>LayeredAnimation</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>contentVersion</key>
|
||||||
|
<real>2.01</real>
|
||||||
|
<key>family</key>
|
||||||
|
<string>Chip</string>
|
||||||
|
<key>identifier</key>
|
||||||
|
<integer>9183</integer>
|
||||||
|
<key>logicalScreenClass</key>
|
||||||
|
<string>810w-1080h@2x~ipad</string>
|
||||||
|
<key>name</key>
|
||||||
|
<string>Chip</string>
|
||||||
|
<key>preferredProminentColor</key>
|
||||||
|
<dict>
|
||||||
|
<key>dark</key>
|
||||||
|
<string>#00000</string>
|
||||||
|
<key>default</key>
|
||||||
|
<string>#FFFFFF</string>
|
||||||
|
</dict>
|
||||||
|
<key>version</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>posterEnvironmentOverrides</key>
|
||||||
|
<data>
|
||||||
|
e30=
|
||||||
|
</data>
|
||||||
|
<key>wallpaperRepresentingFileName</key>
|
||||||
|
<string>9183.Custom-810w-1080h@2x~ipad.wallpaper</string>
|
||||||
|
<key>wallpaperRepresentingIdentifier</key>
|
||||||
|
<string>9999</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
files/posterboard/contents.plist
Normal file
BIN
files/posterboard/contents.plist
Normal file
Binary file not shown.
29
gui/apply_worker.py
Normal file
29
gui/apply_worker.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
from PySide6.QtCore import Signal, QThread
|
||||||
|
from PySide6.QtWidgets import QMessageBox
|
||||||
|
|
||||||
|
class ApplyAlertMessage:
|
||||||
|
def __init__(self, txt: str, title: str = "Error!", icon = QMessageBox.Critical, detailed_txt: str = None):
|
||||||
|
self.txt = txt
|
||||||
|
self.title = title
|
||||||
|
self.icon = icon
|
||||||
|
self.detailed_txt = detailed_txt
|
||||||
|
|
||||||
|
class ApplyThread(QThread):
|
||||||
|
progress = Signal(str)
|
||||||
|
alert = Signal(ApplyAlertMessage)
|
||||||
|
|
||||||
|
def update_label(self, txt: str):
|
||||||
|
self.progress.emit(txt)
|
||||||
|
def alert_window(self, msg: ApplyAlertMessage):
|
||||||
|
self.alert.emit(msg)
|
||||||
|
|
||||||
|
def __init__(self, manager, resetting: bool = False):
|
||||||
|
super().__init__()
|
||||||
|
self.manager = manager
|
||||||
|
self.resetting = resetting
|
||||||
|
|
||||||
|
def do_work(self):
|
||||||
|
self.manager.apply_changes(self.resetting, self.update_label, self.alert_window)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.do_work()
|
||||||
@@ -14,12 +14,13 @@ from devicemanagement.constants import Version
|
|||||||
from devicemanagement.device_manager import DeviceManager
|
from devicemanagement.device_manager import DeviceManager
|
||||||
|
|
||||||
from gui.dialogs import GestaltDialog, UpdateAppDialog, PBHelpDialog
|
from gui.dialogs import GestaltDialog, UpdateAppDialog, PBHelpDialog
|
||||||
|
from gui.apply_worker import ApplyThread, ApplyAlertMessage
|
||||||
|
|
||||||
from tweaks.tweaks import tweaks
|
from tweaks.tweaks import tweaks
|
||||||
from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks, ValueTypeStrings
|
from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks, ValueTypeStrings
|
||||||
from tweaks.daemons_tweak import Daemon
|
from tweaks.daemons_tweak import Daemon
|
||||||
|
|
||||||
App_Version = "5.0.3"
|
App_Version = "5.1"
|
||||||
App_Build = 0
|
App_Build = 0
|
||||||
|
|
||||||
class Page(Enum):
|
class Page(Enum):
|
||||||
@@ -43,6 +44,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.ui.setupUi(self)
|
self.ui.setupUi(self)
|
||||||
self.show_uuid = False
|
self.show_uuid = False
|
||||||
self.pb_mainLayout = None
|
self.pb_mainLayout = None
|
||||||
|
self.applying_in_progress = False
|
||||||
|
self.threadpool = QtCore.QThreadPool()
|
||||||
self.loadSettings()
|
self.loadSettings()
|
||||||
|
|
||||||
# Check for an update
|
# Check for an update
|
||||||
@@ -83,6 +86,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.ui.leminKoFiBtn.clicked.connect(self.on_leminKoFiBtn_clicked)
|
self.ui.leminKoFiBtn.clicked.connect(self.on_leminKoFiBtn_clicked)
|
||||||
|
|
||||||
self.ui.posterRestoreBtn.clicked.connect(self.on_posterRestoreBtn_clicked)
|
self.ui.posterRestoreBtn.clicked.connect(self.on_posterRestoreBtn_clicked)
|
||||||
|
self.ui.snoolieBtn.clicked.connect(self.on_snoolieBtn_clicked)
|
||||||
self.ui.disfordottieBtn.clicked.connect(self.on_disfordottieBtn_clicked)
|
self.ui.disfordottieBtn.clicked.connect(self.on_disfordottieBtn_clicked)
|
||||||
self.ui.mikasaBtn.clicked.connect(self.on_mikasaBtn_clicked)
|
self.ui.mikasaBtn.clicked.connect(self.on_mikasaBtn_clicked)
|
||||||
|
|
||||||
@@ -162,9 +166,21 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
|
|
||||||
## POSTERBOARD PAGE ACTIONS
|
## POSTERBOARD PAGE ACTIONS
|
||||||
self.ui.modifyPosterboardsChk.toggled.connect(self.on_modifyPosterboardsChk_clicked)
|
self.ui.modifyPosterboardsChk.toggled.connect(self.on_modifyPosterboardsChk_clicked)
|
||||||
|
self.ui.tendiesPageBtn.clicked.connect(self.on_tendiesPageBtn_clicked)
|
||||||
|
self.ui.videoPageBtn.clicked.connect(self.on_videoPageBtn_clicked)
|
||||||
|
|
||||||
self.ui.importTendiesBtn.clicked.connect(self.on_importTendiesBtn_clicked)
|
self.ui.importTendiesBtn.clicked.connect(self.on_importTendiesBtn_clicked)
|
||||||
self.ui.resetPRBExtBtn.clicked.connect(self.on_resetPRBExtBtn_clicked)
|
self.ui.resetPRBExtBtn.clicked.connect(self.on_resetPRBExtBtn_clicked)
|
||||||
self.ui.deleteAllDescriptorsBtn.clicked.connect(self.on_deleteAllDescriptorsBtn_clicked)
|
self.ui.deleteAllDescriptorsBtn.clicked.connect(self.on_deleteAllDescriptorsBtn_clicked)
|
||||||
|
|
||||||
|
self.ui.chooseVideoBtn.clicked.connect(self.on_chooseVideoBtn_clicked)
|
||||||
|
self.ui.reverseLoopChk.toggled.connect(self.on_reverseLoopChk_toggled)
|
||||||
|
self.ui.useForegroundChk.toggled.connect(self.on_useForegroundChk_toggled)
|
||||||
|
self.ui.caVideoChk.hide()
|
||||||
|
self.ui.clearSuggestedBtn.hide()
|
||||||
|
self.ui.chooseThumbBtn.hide()
|
||||||
|
self.ui.pbVideoThumbLbl.hide()
|
||||||
|
|
||||||
self.ui.findPBBtn.clicked.connect(self.on_findPBBtn_clicked)
|
self.ui.findPBBtn.clicked.connect(self.on_findPBBtn_clicked)
|
||||||
self.ui.pbHelpBtn.clicked.connect(self.on_pbHelpBtn_clicked)
|
self.ui.pbHelpBtn.clicked.connect(self.on_pbHelpBtn_clicked)
|
||||||
|
|
||||||
@@ -184,9 +200,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
|
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
|
||||||
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
|
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
|
||||||
self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
|
self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
|
||||||
# windows path fix toggle (depreciated)
|
|
||||||
# TODO: Remove this from the UI and everything
|
|
||||||
self.ui.windowsPathFixChk.hide()
|
|
||||||
self.ui.showAllSpoofableChk.toggled.connect(self.on_showAllSpoofableChk_toggled)
|
self.ui.showAllSpoofableChk.toggled.connect(self.on_showAllSpoofableChk_toggled)
|
||||||
|
|
||||||
self.ui.revertRdarChk.toggled.connect(self.on_revertRdarChk_toggled)
|
self.ui.revertRdarChk.toggled.connect(self.on_revertRdarChk_toggled)
|
||||||
@@ -545,6 +558,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
|
|
||||||
def on_posterRestoreBtn_clicked(self):
|
def on_posterRestoreBtn_clicked(self):
|
||||||
webbrowser.open_new_tab("https://discord.gg/gWtzTVhMvh")
|
webbrowser.open_new_tab("https://discord.gg/gWtzTVhMvh")
|
||||||
|
def on_snoolieBtn_clicked(self):
|
||||||
|
webbrowser.open_new_tab("https://github.com/0xilis/python-aar-stuff")
|
||||||
def on_disfordottieBtn_clicked(self):
|
def on_disfordottieBtn_clicked(self):
|
||||||
webbrowser.open_new_tab("https://twitter.com/disfordottie")
|
webbrowser.open_new_tab("https://twitter.com/disfordottie")
|
||||||
def on_mikasaBtn_clicked(self):
|
def on_mikasaBtn_clicked(self):
|
||||||
@@ -909,7 +924,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
spacer = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
spacer = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
# main layout
|
# main layout
|
||||||
layout = QtWidgets.QHBoxLayout(widget)
|
layout = QtWidgets.QHBoxLayout(widget)
|
||||||
layout.setContentsMargins(0, 0, 0, 9)
|
layout.setContentsMargins(0, 0, 0, 3)
|
||||||
layout.addWidget(titleBtn)
|
layout.addWidget(titleBtn)
|
||||||
layout.addItem(spacer)
|
layout.addItem(spacer)
|
||||||
layout.addWidget(delBtn)
|
layout.addWidget(delBtn)
|
||||||
@@ -920,7 +935,19 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
|
|
||||||
def on_modifyPosterboardsChk_clicked(self, checked: bool):
|
def on_modifyPosterboardsChk_clicked(self, checked: bool):
|
||||||
tweaks["PosterBoard"].set_enabled(checked)
|
tweaks["PosterBoard"].set_enabled(checked)
|
||||||
self.ui.posterboardPageContent.setDisabled(not checked)
|
self.ui.pbPages.setDisabled(not checked)
|
||||||
|
|
||||||
|
# PB Pages Selectors
|
||||||
|
def on_tendiesPageBtn_clicked(self):
|
||||||
|
self.ui.tendiesPageBtn.setChecked(True)
|
||||||
|
self.ui.videoPageBtn.setChecked(False)
|
||||||
|
self.ui.pbPages.setCurrentIndex(0)
|
||||||
|
def on_videoPageBtn_clicked(self):
|
||||||
|
self.ui.tendiesPageBtn.setChecked(False)
|
||||||
|
self.ui.videoPageBtn.setChecked(True)
|
||||||
|
self.ui.pbPages.setCurrentIndex(1)
|
||||||
|
|
||||||
|
# Tendies Page
|
||||||
def on_importTendiesBtn_clicked(self):
|
def on_importTendiesBtn_clicked(self):
|
||||||
selected_files, _ = QtWidgets.QFileDialog.getOpenFileNames(self, "Select PosterBoard Files", "", "Zip Files (*.tendies)", options=QtWidgets.QFileDialog.ReadOnly)
|
selected_files, _ = QtWidgets.QFileDialog.getOpenFileNames(self, "Select PosterBoard Files", "", "Zip Files (*.tendies)", options=QtWidgets.QFileDialog.ReadOnly)
|
||||||
tweaks["PosterBoard"].resetting = False
|
tweaks["PosterBoard"].resetting = False
|
||||||
@@ -935,8 +962,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
detailsBox.setWindowTitle("Error!")
|
detailsBox.setWindowTitle("Error!")
|
||||||
detailsBox.setText("You selected too many descriptors! The limit is 10.")
|
detailsBox.setText("You selected too many descriptors! The limit is 10.")
|
||||||
detailsBox.exec()
|
detailsBox.exec()
|
||||||
|
break
|
||||||
self.load_posterboard()
|
self.load_posterboard()
|
||||||
|
|
||||||
def on_deleteAllDescriptorsBtn_clicked(self):
|
def on_deleteAllDescriptorsBtn_clicked(self):
|
||||||
if tweaks["PosterBoard"].resetting and tweaks["PosterBoard"].resetType == 0:
|
if tweaks["PosterBoard"].resetting and tweaks["PosterBoard"].resetType == 0:
|
||||||
tweaks["PosterBoard"].resetting = False
|
tweaks["PosterBoard"].resetting = False
|
||||||
@@ -944,7 +971,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
else:
|
else:
|
||||||
tweaks["PosterBoard"].resetting = True
|
tweaks["PosterBoard"].resetting = True
|
||||||
tweaks["PosterBoard"].resetType = 0
|
tweaks["PosterBoard"].resetType = 0
|
||||||
self.ui.pbActionLbl.setText("! Clearing Collections Wallpapers")
|
self.ui.pbActionLbl.setText("! Set to Clear Collections Wallpapers")
|
||||||
self.ui.pbActionLbl.show()
|
self.ui.pbActionLbl.show()
|
||||||
def on_resetPRBExtBtn_clicked(self):
|
def on_resetPRBExtBtn_clicked(self):
|
||||||
if tweaks["PosterBoard"].resetting and tweaks["PosterBoard"].resetType == 1:
|
if tweaks["PosterBoard"].resetting and tweaks["PosterBoard"].resetType == 1:
|
||||||
@@ -953,8 +980,56 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
else:
|
else:
|
||||||
tweaks["PosterBoard"].resetting = True
|
tweaks["PosterBoard"].resetting = True
|
||||||
tweaks["PosterBoard"].resetType = 1
|
tweaks["PosterBoard"].resetType = 1
|
||||||
self.ui.pbActionLbl.setText("! Resetting PRB Extension")
|
self.ui.pbActionLbl.setText("! Set to Reset PRB Extension")
|
||||||
self.ui.pbActionLbl.show()
|
self.ui.pbActionLbl.show()
|
||||||
|
|
||||||
|
# Video Page
|
||||||
|
def on_chooseThumbBtn_clicked(self):
|
||||||
|
selected_file, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select Image File", "", "Image Files (*.heic)", options=QtWidgets.QFileDialog.ReadOnly)
|
||||||
|
tweaks["PosterBoard"].resetting = False
|
||||||
|
if selected_file != None and selected_file != "":
|
||||||
|
tweaks["PosterBoard"].videoThumbnail = selected_file
|
||||||
|
self.ui.pbVideoThumbLbl.setText(f"Current Thumbnail: {selected_file}")
|
||||||
|
else:
|
||||||
|
tweaks["PosterBoard"].videoThumbnail = None
|
||||||
|
self.ui.pbVideoThumbLbl.setText("Current Thumbnail: None")
|
||||||
|
def on_chooseVideoBtn_clicked(self):
|
||||||
|
selected_file, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select Video File", "", "Video Files (*.mov *.mp4)", options=QtWidgets.QFileDialog.ReadOnly)
|
||||||
|
tweaks["PosterBoard"].resetting = False
|
||||||
|
if selected_file != None and selected_file != "":
|
||||||
|
tweaks["PosterBoard"].videoFile = selected_file
|
||||||
|
self.ui.pbVideoLbl.setText(f"Current Video: {selected_file}")
|
||||||
|
else:
|
||||||
|
tweaks["PosterBoard"].videoFile = None
|
||||||
|
self.ui.pbVideoLbl.setText("Current Video: None")
|
||||||
|
def on_clearSuggestedBtn_clicked(self):
|
||||||
|
if tweaks["PosterBoard"].resetting and tweaks["PosterBoard"].resetType == 2:
|
||||||
|
tweaks["PosterBoard"].resetting = False
|
||||||
|
self.ui.pbActionLbl.hide()
|
||||||
|
else:
|
||||||
|
tweaks["PosterBoard"].resetting = True
|
||||||
|
tweaks["PosterBoard"].resetType = 2
|
||||||
|
self.ui.pbActionLbl.setText("! Set to Clear Suggested Photos")
|
||||||
|
self.ui.pbActionLbl.show()
|
||||||
|
def on_caVideoChk_toggled(self, checked: bool):
|
||||||
|
tweaks["PosterBoard"].loop_video = checked
|
||||||
|
# hide thumbnail button and label
|
||||||
|
if checked:
|
||||||
|
self.ui.chooseThumbBtn.hide()
|
||||||
|
self.ui.pbVideoThumbLbl.hide()
|
||||||
|
self.ui.clearSuggestedBtn.hide()
|
||||||
|
self.ui.reverseLoopChk.show()
|
||||||
|
self.ui.useForegroundChk.show()
|
||||||
|
else:
|
||||||
|
self.ui.chooseThumbBtn.show()
|
||||||
|
self.ui.pbVideoThumbLbl.show()
|
||||||
|
self.ui.clearSuggestedBtn.show()
|
||||||
|
self.ui.reverseLoopChk.hide()
|
||||||
|
self.ui.useForegroundChk.hide()
|
||||||
|
def on_reverseLoopChk_toggled(self, checked: bool):
|
||||||
|
tweaks["PosterBoard"].reverse_video = checked
|
||||||
|
def on_useForegroundChk_toggled(self, checked: bool):
|
||||||
|
tweaks["PosterBoard"].use_foreground = checked
|
||||||
|
|
||||||
def on_findPBBtn_clicked(self):
|
def on_findPBBtn_clicked(self):
|
||||||
webbrowser.open_new_tab("https://cowabun.ga/wallpapers")
|
webbrowser.open_new_tab("https://cowabun.ga/wallpapers")
|
||||||
@@ -1017,10 +1092,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
else:
|
else:
|
||||||
self.ui.advancedPageBtn.hide()
|
self.ui.advancedPageBtn.hide()
|
||||||
self.ui.resetPRBExtBtn.hide()
|
self.ui.resetPRBExtBtn.hide()
|
||||||
def on_windowsPathFixChk_toggled(self, checked: bool):
|
|
||||||
self.device_manager.windows_path_fix = checked
|
|
||||||
# save the setting
|
|
||||||
self.settings.setValue("windows_path_fix", checked)
|
|
||||||
def on_showAllSpoofableChk_toggled(self, checked: bool):
|
def on_showAllSpoofableChk_toggled(self, checked: bool):
|
||||||
self.device_manager.show_all_spoofable_models = checked
|
self.device_manager.show_all_spoofable_models = checked
|
||||||
# save the setting
|
# save the setting
|
||||||
@@ -1101,12 +1172,31 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
def update_bar(self, percent):
|
def update_bar(self, percent):
|
||||||
self.ui.restoreProgressBar.setValue(int(percent))
|
self.ui.restoreProgressBar.setValue(int(percent))
|
||||||
def on_removeTweaksBtn_clicked(self):
|
def on_removeTweaksBtn_clicked(self):
|
||||||
# TODO: Add threading here
|
self.apply_changes(resetting=True)
|
||||||
self.device_manager.apply_changes(resetting=True, update_label=self.update_label)
|
|
||||||
def on_resetGestaltBtn_clicked(self):
|
def on_resetGestaltBtn_clicked(self):
|
||||||
self.device_manager.reset_mobilegestalt(self.settings, update_label=self.update_label)
|
self.device_manager.reset_mobilegestalt(self.settings, update_label=self.update_label)
|
||||||
|
|
||||||
@QtCore.Slot()
|
@QtCore.Slot()
|
||||||
def on_applyTweaksBtn_clicked(self):
|
def on_applyTweaksBtn_clicked(self):
|
||||||
# TODO: Add threading here
|
self.apply_changes()
|
||||||
self.device_manager.apply_changes(update_label=self.update_label)
|
|
||||||
|
def apply_changes(self, resetting: bool = False):
|
||||||
|
if not self.applying_in_progress:
|
||||||
|
self.applying_in_progress = True
|
||||||
|
self.worker_thread = ApplyThread(manager=self.device_manager, resetting=resetting)
|
||||||
|
self.worker_thread.progress.connect(self.ui.statusLbl.setText)
|
||||||
|
self.worker_thread.alert.connect(self.alert_message)
|
||||||
|
self.worker_thread.finished.connect(self.finish_apply_thread)
|
||||||
|
self.worker_thread.finished.connect(self.worker_thread.deleteLater)
|
||||||
|
self.worker_thread.start()
|
||||||
|
def alert_message(self, alert: ApplyAlertMessage):
|
||||||
|
print(alert.txt)
|
||||||
|
detailsBox = QtWidgets.QMessageBox()
|
||||||
|
detailsBox.setIcon(alert.icon)
|
||||||
|
detailsBox.setWindowTitle(alert.title)
|
||||||
|
detailsBox.setText(alert.txt)
|
||||||
|
if alert.detailed_txt != None:
|
||||||
|
detailsBox.setDetailedText(alert.detailed_txt)
|
||||||
|
detailsBox.exec()
|
||||||
|
def finish_apply_thread(self):
|
||||||
|
self.applying_in_progress = False
|
||||||
|
|||||||
238
mainwindow_ui.py
238
mainwindow_ui.py
@@ -2243,12 +2243,63 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.line_123)
|
self.verticalLayout_143.addWidget(self.line_123)
|
||||||
|
|
||||||
self.posterboardPageContent = QWidget(self.posterboardPage)
|
self.pbPagePicker = QWidget(self.posterboardPage)
|
||||||
self.posterboardPageContent.setObjectName(u"posterboardPageContent")
|
self.pbPagePicker.setObjectName(u"pbPagePicker")
|
||||||
self.posterboardPageContent.setEnabled(False)
|
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
|
||||||
self.verticalLayout_133 = QVBoxLayout(self.posterboardPageContent)
|
sizePolicy5.setHorizontalStretch(0)
|
||||||
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
|
sizePolicy5.setVerticalStretch(0)
|
||||||
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
|
sizePolicy5.setHeightForWidth(self.pbPagePicker.sizePolicy().hasHeightForWidth())
|
||||||
|
self.pbPagePicker.setSizePolicy(sizePolicy5)
|
||||||
|
self.pbPagePicker.setMinimumSize(QSize(0, 30))
|
||||||
|
self.horizontalLayout_14 = QHBoxLayout(self.pbPagePicker)
|
||||||
|
self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
|
||||||
|
self.horizontalLayout_14.setContentsMargins(-1, 0, -1, 0)
|
||||||
|
self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addItem(self.horizontalSpacer_20)
|
||||||
|
|
||||||
|
self.tendiesPageBtn = QToolButton(self.pbPagePicker)
|
||||||
|
self.tendiesPageBtn.setObjectName(u"tendiesPageBtn")
|
||||||
|
sizePolicy6 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding)
|
||||||
|
sizePolicy6.setHorizontalStretch(0)
|
||||||
|
sizePolicy6.setVerticalStretch(0)
|
||||||
|
sizePolicy6.setHeightForWidth(self.tendiesPageBtn.sizePolicy().hasHeightForWidth())
|
||||||
|
self.tendiesPageBtn.setSizePolicy(sizePolicy6)
|
||||||
|
self.tendiesPageBtn.setMinimumSize(QSize(0, 35))
|
||||||
|
icon22 = QIcon()
|
||||||
|
icon22.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.tendiesPageBtn.setIcon(icon22)
|
||||||
|
self.tendiesPageBtn.setCheckable(True)
|
||||||
|
self.tendiesPageBtn.setChecked(True)
|
||||||
|
self.tendiesPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addWidget(self.tendiesPageBtn)
|
||||||
|
|
||||||
|
self.videoPageBtn = QToolButton(self.pbPagePicker)
|
||||||
|
self.videoPageBtn.setObjectName(u"videoPageBtn")
|
||||||
|
icon23 = QIcon()
|
||||||
|
icon23.addFile(u":/icon/photo.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.videoPageBtn.setIcon(icon23)
|
||||||
|
self.videoPageBtn.setCheckable(True)
|
||||||
|
self.videoPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addWidget(self.videoPageBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_21 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addItem(self.horizontalSpacer_21)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_143.addWidget(self.pbPagePicker)
|
||||||
|
|
||||||
|
self.pbPages = QStackedWidget(self.posterboardPage)
|
||||||
|
self.pbPages.setObjectName(u"pbPages")
|
||||||
|
self.pbPages.setEnabled(False)
|
||||||
|
self.pbTendiesPage = QWidget()
|
||||||
|
self.pbTendiesPage.setObjectName(u"pbTendiesPage")
|
||||||
|
self.verticalLayout_38 = QVBoxLayout(self.pbTendiesPage)
|
||||||
|
self.verticalLayout_38.setObjectName(u"verticalLayout_38")
|
||||||
|
self.verticalLayout_38.setContentsMargins(-1, 0, -1, 0)
|
||||||
self.horizontalLayout_12 = QHBoxLayout()
|
self.horizontalLayout_12 = QHBoxLayout()
|
||||||
self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
|
self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
|
||||||
self.horizontalLayout_12.setContentsMargins(-1, -1, -1, 0)
|
self.horizontalLayout_12.setContentsMargins(-1, -1, -1, 0)
|
||||||
@@ -2256,26 +2307,26 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.horizontalLayout_12.addItem(self.horizontalSpacer_18)
|
self.horizontalLayout_12.addItem(self.horizontalSpacer_18)
|
||||||
|
|
||||||
self.importTendiesBtn = QToolButton(self.posterboardPageContent)
|
self.importTendiesBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.importTendiesBtn.setObjectName(u"importTendiesBtn")
|
self.importTendiesBtn.setObjectName(u"importTendiesBtn")
|
||||||
self.importTendiesBtn.setLayoutDirection(Qt.RightToLeft)
|
self.importTendiesBtn.setLayoutDirection(Qt.RightToLeft)
|
||||||
icon22 = QIcon()
|
icon24 = QIcon()
|
||||||
icon22.addFile(u":/icon/import.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon24.addFile(u":/icon/import.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.importTendiesBtn.setIcon(icon22)
|
self.importTendiesBtn.setIcon(icon24)
|
||||||
self.importTendiesBtn.setIconSize(QSize(20, 20))
|
self.importTendiesBtn.setIconSize(QSize(20, 20))
|
||||||
self.importTendiesBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.importTendiesBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_12.addWidget(self.importTendiesBtn)
|
self.horizontalLayout_12.addWidget(self.importTendiesBtn)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_133.addLayout(self.horizontalLayout_12)
|
self.verticalLayout_38.addLayout(self.horizontalLayout_12)
|
||||||
|
|
||||||
self.pbActionLbl = QLabel(self.posterboardPageContent)
|
self.pbActionLbl = QLabel(self.pbTendiesPage)
|
||||||
self.pbActionLbl.setObjectName(u"pbActionLbl")
|
self.pbActionLbl.setObjectName(u"pbActionLbl")
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.pbActionLbl)
|
self.verticalLayout_38.addWidget(self.pbActionLbl)
|
||||||
|
|
||||||
self.line_27 = QFrame(self.posterboardPageContent)
|
self.line_27 = QFrame(self.pbTendiesPage)
|
||||||
self.line_27.setObjectName(u"line_27")
|
self.line_27.setObjectName(u"line_27")
|
||||||
self.line_27.setStyleSheet(u"QFrame {\n"
|
self.line_27.setStyleSheet(u"QFrame {\n"
|
||||||
" color: #414141;\n"
|
" color: #414141;\n"
|
||||||
@@ -2283,51 +2334,97 @@ class Ui_Nugget(object):
|
|||||||
self.line_27.setFrameShadow(QFrame.Plain)
|
self.line_27.setFrameShadow(QFrame.Plain)
|
||||||
self.line_27.setFrameShape(QFrame.Shape.HLine)
|
self.line_27.setFrameShape(QFrame.Shape.HLine)
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.line_27)
|
self.verticalLayout_38.addWidget(self.line_27)
|
||||||
|
|
||||||
self.pbFilesList = QWidget(self.posterboardPageContent)
|
self.pbFilesList = QWidget(self.pbTendiesPage)
|
||||||
self.pbFilesList.setObjectName(u"pbFilesList")
|
self.pbFilesList.setObjectName(u"pbFilesList")
|
||||||
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
sizePolicy7 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||||
sizePolicy5.setHorizontalStretch(0)
|
sizePolicy7.setHorizontalStretch(0)
|
||||||
sizePolicy5.setVerticalStretch(0)
|
sizePolicy7.setVerticalStretch(0)
|
||||||
sizePolicy5.setHeightForWidth(self.pbFilesList.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.pbFilesList.sizePolicy().hasHeightForWidth())
|
||||||
self.pbFilesList.setSizePolicy(sizePolicy5)
|
self.pbFilesList.setSizePolicy(sizePolicy7)
|
||||||
self.pbFilesList.setMinimumSize(QSize(200, 35))
|
self.pbFilesList.setMinimumSize(QSize(200, 35))
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.pbFilesList)
|
self.verticalLayout_38.addWidget(self.pbFilesList)
|
||||||
|
|
||||||
self.horizontalLayout_14 = QHBoxLayout()
|
self.horizontalLayout_32 = QHBoxLayout()
|
||||||
self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
|
self.horizontalLayout_32.setObjectName(u"horizontalLayout_32")
|
||||||
self.horizontalLayout_14.setContentsMargins(-1, -1, -1, 0)
|
self.horizontalLayout_32.setContentsMargins(-1, -1, -1, 10)
|
||||||
self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
self.horizontalSpacer_22 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
self.horizontalLayout_14.addItem(self.horizontalSpacer_19)
|
self.horizontalLayout_32.addItem(self.horizontalSpacer_22)
|
||||||
|
|
||||||
self.deleteAllDescriptorsBtn = QToolButton(self.posterboardPageContent)
|
self.deleteAllDescriptorsBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.deleteAllDescriptorsBtn.setObjectName(u"deleteAllDescriptorsBtn")
|
self.deleteAllDescriptorsBtn.setObjectName(u"deleteAllDescriptorsBtn")
|
||||||
icon23 = QIcon()
|
icon25 = QIcon()
|
||||||
icon23.addFile(u":/icon/arrow.clockwise.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon25.addFile(u":/icon/arrow.clockwise.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.deleteAllDescriptorsBtn.setIcon(icon23)
|
self.deleteAllDescriptorsBtn.setIcon(icon25)
|
||||||
self.deleteAllDescriptorsBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.deleteAllDescriptorsBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_14.addWidget(self.deleteAllDescriptorsBtn)
|
self.horizontalLayout_32.addWidget(self.deleteAllDescriptorsBtn)
|
||||||
|
|
||||||
self.resetPRBExtBtn = QToolButton(self.posterboardPageContent)
|
self.resetPRBExtBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.resetPRBExtBtn.setObjectName(u"resetPRBExtBtn")
|
self.resetPRBExtBtn.setObjectName(u"resetPRBExtBtn")
|
||||||
self.resetPRBExtBtn.setIcon(icon23)
|
self.resetPRBExtBtn.setIcon(icon25)
|
||||||
self.resetPRBExtBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.resetPRBExtBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_14.addWidget(self.resetPRBExtBtn)
|
self.horizontalLayout_32.addWidget(self.resetPRBExtBtn)
|
||||||
|
|
||||||
self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
self.horizontalSpacer_23 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
self.horizontalLayout_14.addItem(self.horizontalSpacer_20)
|
self.horizontalLayout_32.addItem(self.horizontalSpacer_23)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_133.addLayout(self.horizontalLayout_14)
|
self.verticalLayout_38.addLayout(self.horizontalLayout_32)
|
||||||
|
|
||||||
|
self.pbPages.addWidget(self.pbTendiesPage)
|
||||||
|
self.pbVideoPage = QWidget()
|
||||||
|
self.pbVideoPage.setObjectName(u"pbVideoPage")
|
||||||
|
self.verticalLayout_39 = QVBoxLayout(self.pbVideoPage)
|
||||||
|
self.verticalLayout_39.setObjectName(u"verticalLayout_39")
|
||||||
|
self.pbVideoThumbLbl = QLabel(self.pbVideoPage)
|
||||||
|
self.pbVideoThumbLbl.setObjectName(u"pbVideoThumbLbl")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.pbVideoThumbLbl)
|
||||||
|
|
||||||
|
self.pbVideoLbl = QLabel(self.pbVideoPage)
|
||||||
|
self.pbVideoLbl.setObjectName(u"pbVideoLbl")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.pbVideoLbl)
|
||||||
|
|
||||||
|
self.horizontalLayout_30 = QHBoxLayout()
|
||||||
|
self.horizontalLayout_30.setObjectName(u"horizontalLayout_30")
|
||||||
|
self.chooseThumbBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.chooseThumbBtn.setObjectName(u"chooseThumbBtn")
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addWidget(self.chooseThumbBtn)
|
||||||
|
|
||||||
|
self.chooseVideoBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.chooseVideoBtn.setObjectName(u"chooseVideoBtn")
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addWidget(self.chooseVideoBtn)
|
||||||
|
|
||||||
|
self.clearSuggestedBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.clearSuggestedBtn.setObjectName(u"clearSuggestedBtn")
|
||||||
|
self.clearSuggestedBtn.setIcon(icon25)
|
||||||
|
self.clearSuggestedBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addWidget(self.clearSuggestedBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addItem(self.horizontalSpacer_19)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.posterboardPageContent)
|
self.verticalLayout_39.addLayout(self.horizontalLayout_30)
|
||||||
|
|
||||||
|
self.verticalSpacer_22 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||||
|
|
||||||
|
self.verticalLayout_39.addItem(self.verticalSpacer_22)
|
||||||
|
|
||||||
|
self.pbPages.addWidget(self.pbVideoPage)
|
||||||
|
|
||||||
|
self.verticalLayout_143.addWidget(self.pbPages)
|
||||||
|
|
||||||
self.pages.addWidget(self.posterboardPage)
|
self.pages.addWidget(self.posterboardPage)
|
||||||
self.advancedOptionsPage = QWidget()
|
self.advancedOptionsPage = QWidget()
|
||||||
@@ -2394,13 +2491,13 @@ class Ui_Nugget(object):
|
|||||||
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
|
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
|
||||||
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
|
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
|
||||||
self.advancedOptionsPageContent.setEnabled(True)
|
self.advancedOptionsPageContent.setEnabled(True)
|
||||||
self.verticalLayout_134 = QVBoxLayout(self.advancedOptionsPageContent)
|
self.verticalLayout_133 = QVBoxLayout(self.advancedOptionsPageContent)
|
||||||
self.verticalLayout_134.setObjectName(u"verticalLayout_134")
|
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
|
||||||
self.verticalLayout_134.setContentsMargins(0, 0, 0, 0)
|
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
|
||||||
self.label_17 = QLabel(self.advancedOptionsPageContent)
|
self.label_17 = QLabel(self.advancedOptionsPageContent)
|
||||||
self.label_17.setObjectName(u"label_17")
|
self.label_17.setObjectName(u"label_17")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.label_17)
|
self.verticalLayout_133.addWidget(self.label_17)
|
||||||
|
|
||||||
self.line_191 = QFrame(self.advancedOptionsPageContent)
|
self.line_191 = QFrame(self.advancedOptionsPageContent)
|
||||||
self.line_191.setObjectName(u"line_191")
|
self.line_191.setObjectName(u"line_191")
|
||||||
@@ -2410,17 +2507,17 @@ class Ui_Nugget(object):
|
|||||||
self.line_191.setFrameShadow(QFrame.Plain)
|
self.line_191.setFrameShadow(QFrame.Plain)
|
||||||
self.line_191.setFrameShape(QFrame.Shape.HLine)
|
self.line_191.setFrameShape(QFrame.Shape.HLine)
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.line_191)
|
self.verticalLayout_133.addWidget(self.line_191)
|
||||||
|
|
||||||
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
|
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.disableOTAChk.setObjectName(u"disableOTAChk")
|
self.disableOTAChk.setObjectName(u"disableOTAChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.disableOTAChk)
|
self.verticalLayout_133.addWidget(self.disableOTAChk)
|
||||||
|
|
||||||
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
|
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
|
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.thermalmonitordChk)
|
self.verticalLayout_133.addWidget(self.thermalmonitordChk)
|
||||||
|
|
||||||
self.line_181 = QFrame(self.advancedOptionsPageContent)
|
self.line_181 = QFrame(self.advancedOptionsPageContent)
|
||||||
self.line_181.setObjectName(u"line_181")
|
self.line_181.setObjectName(u"line_181")
|
||||||
@@ -2430,12 +2527,12 @@ class Ui_Nugget(object):
|
|||||||
self.line_181.setFrameShadow(QFrame.Plain)
|
self.line_181.setFrameShadow(QFrame.Plain)
|
||||||
self.line_181.setFrameShape(QFrame.Shape.HLine)
|
self.line_181.setFrameShape(QFrame.Shape.HLine)
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.line_181)
|
self.verticalLayout_133.addWidget(self.line_181)
|
||||||
|
|
||||||
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
|
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
|
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.enableResolutionChk)
|
self.verticalLayout_133.addWidget(self.enableResolutionChk)
|
||||||
|
|
||||||
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
|
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
|
||||||
self.resChangerContent.setObjectName(u"resChangerContent")
|
self.resChangerContent.setObjectName(u"resChangerContent")
|
||||||
@@ -2511,11 +2608,11 @@ class Ui_Nugget(object):
|
|||||||
self.verticalLayout_35.addLayout(self.resolutionContent)
|
self.verticalLayout_35.addLayout(self.resolutionContent)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.resChangerContent)
|
self.verticalLayout_133.addWidget(self.resChangerContent)
|
||||||
|
|
||||||
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||||
|
|
||||||
self.verticalLayout_134.addItem(self.verticalSpacer_63)
|
self.verticalLayout_133.addItem(self.verticalSpacer_63)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_144.addWidget(self.advancedOptionsPageContent)
|
self.verticalLayout_144.addWidget(self.advancedOptionsPageContent)
|
||||||
@@ -2609,9 +2706,9 @@ class Ui_Nugget(object):
|
|||||||
self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
|
self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
|
||||||
self.chooseGestaltBtn = QToolButton(self.verticalWidget2)
|
self.chooseGestaltBtn = QToolButton(self.verticalWidget2)
|
||||||
self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
|
self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
|
||||||
icon24 = QIcon()
|
icon26 = QIcon()
|
||||||
icon24.addFile(u":/icon/folder.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon26.addFile(u":/icon/folder.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.chooseGestaltBtn.setIcon(icon24)
|
self.chooseGestaltBtn.setIcon(icon26)
|
||||||
self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
|
self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
|
||||||
@@ -3025,9 +3122,9 @@ class Ui_Nugget(object):
|
|||||||
" padding-right: 5px;\n"
|
" padding-right: 5px;\n"
|
||||||
" border-radius: 0px;\n"
|
" border-radius: 0px;\n"
|
||||||
"}")
|
"}")
|
||||||
icon25 = QIcon()
|
icon27 = QIcon()
|
||||||
icon25.addFile(u":/icon/pencil.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon27.addFile(u":/icon/pencil.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.toolButton_12.setIcon(icon25)
|
self.toolButton_12.setIcon(icon27)
|
||||||
self.toolButton_12.setIconSize(QSize(25, 25))
|
self.toolButton_12.setIconSize(QSize(25, 25))
|
||||||
|
|
||||||
self.horizontalLayout_22.addWidget(self.toolButton_12)
|
self.horizontalLayout_22.addWidget(self.toolButton_12)
|
||||||
@@ -3088,7 +3185,7 @@ class Ui_Nugget(object):
|
|||||||
self.importOperationBtn = QToolButton(self.customOperationsPageContent)
|
self.importOperationBtn = QToolButton(self.customOperationsPageContent)
|
||||||
self.importOperationBtn.setObjectName(u"importOperationBtn")
|
self.importOperationBtn.setObjectName(u"importOperationBtn")
|
||||||
self.importOperationBtn.setEnabled(True)
|
self.importOperationBtn.setEnabled(True)
|
||||||
self.importOperationBtn.setIcon(icon22)
|
self.importOperationBtn.setIcon(icon24)
|
||||||
self.importOperationBtn.setIconSize(QSize(20, 20))
|
self.importOperationBtn.setIconSize(QSize(20, 20))
|
||||||
self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
@@ -3114,8 +3211,8 @@ class Ui_Nugget(object):
|
|||||||
self.operationsCnt = QWidget(self.customOperationsPageContent)
|
self.operationsCnt = QWidget(self.customOperationsPageContent)
|
||||||
self.operationsCnt.setObjectName(u"operationsCnt")
|
self.operationsCnt.setObjectName(u"operationsCnt")
|
||||||
self.operationsCnt.setEnabled(True)
|
self.operationsCnt.setEnabled(True)
|
||||||
sizePolicy5.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
|
||||||
self.operationsCnt.setSizePolicy(sizePolicy5)
|
self.operationsCnt.setSizePolicy(sizePolicy7)
|
||||||
|
|
||||||
self.verticalLayout_19.addWidget(self.operationsCnt)
|
self.verticalLayout_19.addWidget(self.operationsCnt)
|
||||||
|
|
||||||
@@ -3144,9 +3241,9 @@ class Ui_Nugget(object):
|
|||||||
" padding-right: 5px;\n"
|
" padding-right: 5px;\n"
|
||||||
" border-radius: 0px;\n"
|
" border-radius: 0px;\n"
|
||||||
"}")
|
"}")
|
||||||
icon26 = QIcon()
|
icon28 = QIcon()
|
||||||
icon26.addFile(u":/icon/compass.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon28.addFile(u":/icon/compass.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.toolButton_16.setIcon(icon26)
|
self.toolButton_16.setIcon(icon28)
|
||||||
|
|
||||||
self.horizontalLayout_31.addWidget(self.toolButton_16)
|
self.horizontalLayout_31.addWidget(self.toolButton_16)
|
||||||
|
|
||||||
@@ -3189,8 +3286,8 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.exploreThemesCnt = QWidget(self.explorePage)
|
self.exploreThemesCnt = QWidget(self.explorePage)
|
||||||
self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
|
self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
|
||||||
sizePolicy5.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
|
||||||
self.exploreThemesCnt.setSizePolicy(sizePolicy5)
|
self.exploreThemesCnt.setSizePolicy(sizePolicy7)
|
||||||
|
|
||||||
self.verticalLayout_31.addWidget(self.exploreThemesCnt)
|
self.verticalLayout_31.addWidget(self.exploreThemesCnt)
|
||||||
|
|
||||||
@@ -3256,15 +3353,13 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.importThemeFolderBtn = QToolButton(self.horizontalWidget7)
|
self.importThemeFolderBtn = QToolButton(self.horizontalWidget7)
|
||||||
self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
|
self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
|
||||||
self.importThemeFolderBtn.setIcon(icon24)
|
self.importThemeFolderBtn.setIcon(icon26)
|
||||||
|
|
||||||
self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
|
self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
|
||||||
|
|
||||||
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
|
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
|
||||||
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
|
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
|
||||||
icon27 = QIcon()
|
self.importThemeZipBtn.setIcon(icon22)
|
||||||
icon27.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
|
||||||
self.importThemeZipBtn.setIcon(icon27)
|
|
||||||
|
|
||||||
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
|
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
|
||||||
|
|
||||||
@@ -3679,6 +3774,8 @@ class Ui_Nugget(object):
|
|||||||
self.modifyPosterboardsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
|
self.modifyPosterboardsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
|
||||||
self.findPBBtn.setText(QCoreApplication.translate("Nugget", u" Find Wallpapers", None))
|
self.findPBBtn.setText(QCoreApplication.translate("Nugget", u" Find Wallpapers", None))
|
||||||
self.pbHelpBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
|
self.pbHelpBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
|
||||||
|
self.tendiesPageBtn.setText(QCoreApplication.translate("Nugget", u" Tendies", None))
|
||||||
|
self.videoPageBtn.setText(QCoreApplication.translate("Nugget", u" Live", None))
|
||||||
#if QT_CONFIG(tooltip)
|
#if QT_CONFIG(tooltip)
|
||||||
self.importTendiesBtn.setToolTip(QCoreApplication.translate("Nugget", u"Select a wallpaper file with the .tendies extension.", None))
|
self.importTendiesBtn.setToolTip(QCoreApplication.translate("Nugget", u"Select a wallpaper file with the .tendies extension.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
@@ -3694,6 +3791,11 @@ class Ui_Nugget(object):
|
|||||||
"Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.", None))
|
"Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.resetPRBExtBtn.setText(QCoreApplication.translate("Nugget", u" Remove All Wallpapers", None))
|
self.resetPRBExtBtn.setText(QCoreApplication.translate("Nugget", u" Remove All Wallpapers", None))
|
||||||
|
self.pbVideoThumbLbl.setText(QCoreApplication.translate("Nugget", u"Current Thumbnail: None", None))
|
||||||
|
self.pbVideoLbl.setText(QCoreApplication.translate("Nugget", u"Current Video: None", None))
|
||||||
|
self.chooseThumbBtn.setText(QCoreApplication.translate("Nugget", u"Choose Thumbnail (.HEIC)", None))
|
||||||
|
self.chooseVideoBtn.setText(QCoreApplication.translate("Nugget", u"Choose Video (.MOV)", None))
|
||||||
|
self.clearSuggestedBtn.setText(QCoreApplication.translate("Nugget", u" Clear Suggested Photos", None))
|
||||||
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
|
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
|
||||||
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
|
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|||||||
607
qt/mainwindow.ui
607
qt/mainwindow.ui
@@ -1385,7 +1385,7 @@ QToolButton:pressed {
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>150</width>
|
<width>145</width>
|
||||||
<height>35</height>
|
<height>35</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@@ -1435,6 +1435,27 @@ Posterboard</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="snoolieBtn">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QToolButton {
|
||||||
|
border-radius: 0px;
|
||||||
|
background: none;
|
||||||
|
border: 1px solid #3b3b3b;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QToolButton:pressed {
|
||||||
|
background-color: #535353;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Snoolie
|
||||||
|
.aar Handling</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="disfordottieBtn">
|
<widget class="QToolButton" name="disfordottieBtn">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@@ -1464,7 +1485,7 @@ QToolButton:pressed {
|
|||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>disfordottie
|
<string>disfordottie
|
||||||
Clock Anim, Photos UI</string>
|
Feature Flags</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -1530,7 +1551,7 @@ Quiet Daemon</string>
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>150</width>
|
<width>145</width>
|
||||||
<height>35</height>
|
<height>35</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@@ -4127,7 +4148,7 @@ To work properly, also disable the daemon using the toggle above.</string>
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>9</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="toolButton_10">
|
<widget class="QToolButton" name="toolButton_10">
|
||||||
@@ -4249,6 +4270,123 @@ To work properly, also disable the daemon using the toggle above.</string>
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="pbPagePicker" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>25</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QToolButton {
|
||||||
|
min-height: 25px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_20">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="tendiesPageBtn">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>25</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string> Tendies</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/icon/file-earmark-zip.svg</normaloff>:/icon/file-earmark-zip.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="videoPageBtn">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>25</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string> Live</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/icon/photo.svg</normaloff>:/icon/photo.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_21">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="Line" name="line_12">
|
<widget class="Line" name="line_12">
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
@@ -4265,177 +4403,300 @@ To work properly, also disable the daemon using the toggle above.</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="posterboardPageContent" native="true">
|
<widget class="QLabel" name="pbActionLbl">
|
||||||
|
<property name="text">
|
||||||
|
<string>None</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QStackedWidget" name="pbPages">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_13">
|
<widget class="QWidget" name="pbTendiesPage">
|
||||||
<property name="leftMargin">
|
<layout class="QVBoxLayout" name="verticalLayout_38">
|
||||||
<number>0</number>
|
<property name="topMargin">
|
||||||
</property>
|
<number>0</number>
|
||||||
<property name="topMargin">
|
</property>
|
||||||
<number>0</number>
|
<property name="bottomMargin">
|
||||||
</property>
|
<number>0</number>
|
||||||
<property name="rightMargin">
|
</property>
|
||||||
<number>0</number>
|
<item>
|
||||||
</property>
|
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
<spacer name="horizontalSpacer_18">
|
||||||
<property name="bottomMargin">
|
<property name="orientation">
|
||||||
<number>0</number>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<property name="sizeHint" stdset="0">
|
||||||
<spacer name="horizontalSpacer_18">
|
<size>
|
||||||
<property name="orientation">
|
<width>40</width>
|
||||||
<enum>Qt::Horizontal</enum>
|
<height>20</height>
|
||||||
</property>
|
</size>
|
||||||
<property name="sizeHint" stdset="0">
|
</property>
|
||||||
<size>
|
</spacer>
|
||||||
<width>40</width>
|
</item>
|
||||||
<height>20</height>
|
<item>
|
||||||
</size>
|
<widget class="QToolButton" name="importTendiesBtn">
|
||||||
</property>
|
<property name="toolTip">
|
||||||
</spacer>
|
<string>Select a wallpaper file with the .tendies extension.</string>
|
||||||
</item>
|
</property>
|
||||||
<item>
|
<property name="layoutDirection">
|
||||||
<widget class="QToolButton" name="importTendiesBtn">
|
<enum>Qt::RightToLeft</enum>
|
||||||
<property name="toolTip">
|
</property>
|
||||||
<string>Select a wallpaper file with the .tendies extension.</string>
|
<property name="text">
|
||||||
</property>
|
<string> Import Files (.tendies)</string>
|
||||||
<property name="layoutDirection">
|
</property>
|
||||||
<enum>Qt::RightToLeft</enum>
|
<property name="icon">
|
||||||
</property>
|
<iconset>
|
||||||
<property name="text">
|
<normaloff>:/icon/import.svg</normaloff>:/icon/import.svg</iconset>
|
||||||
<string> Import Files (.tendies)</string>
|
</property>
|
||||||
</property>
|
<property name="iconSize">
|
||||||
<property name="icon">
|
<size>
|
||||||
<iconset>
|
<width>20</width>
|
||||||
<normaloff>:/icon/import.svg</normaloff>:/icon/import.svg</iconset>
|
<height>20</height>
|
||||||
</property>
|
</size>
|
||||||
<property name="iconSize">
|
</property>
|
||||||
<size>
|
<property name="toolButtonStyle">
|
||||||
<width>20</width>
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
<height>20</height>
|
</property>
|
||||||
</size>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
<property name="toolButtonStyle">
|
</layout>
|
||||||
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
</item>
|
||||||
</property>
|
<item>
|
||||||
</widget>
|
<widget class="Line" name="line_27">
|
||||||
</item>
|
<property name="styleSheet">
|
||||||
</layout>
|
<string notr="true">QFrame {
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="pbActionLbl">
|
|
||||||
<property name="text">
|
|
||||||
<string>None</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="Line" name="line_27">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QFrame {
|
|
||||||
color: #414141;
|
color: #414141;
|
||||||
}</string>
|
}</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Plain</enum>
|
<enum>QFrame::Plain</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="pbFilesList" native="true">
|
<widget class="QWidget" name="pbFilesList" native="true">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>200</width>
|
<width>200</width>
|
||||||
<height>35</height>
|
<height>35</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
<layout class="QHBoxLayout" name="horizontalLayout_32">
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>10</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_19">
|
<spacer name="horizontalSpacer_22">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="deleteAllDescriptorsBtn">
|
<widget class="QToolButton" name="deleteAllDescriptorsBtn">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Clears all the wallpapers in the Collections section so that you can import more.</string>
|
<string>Clears all the wallpapers in the Collections section so that you can import more.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string> Clear Collections Wallpapers</string>
|
<string> Clear Collections Wallpapers</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset>
|
<iconset>
|
||||||
<normaloff>:/icon/arrow.clockwise.svg</normaloff>:/icon/arrow.clockwise.svg</iconset>
|
<normaloff>:/icon/arrow.clockwise.svg</normaloff>:/icon/arrow.clockwise.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolButtonStyle">
|
<property name="toolButtonStyle">
|
||||||
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="resetPRBExtBtn">
|
<widget class="QToolButton" name="resetPRBExtBtn">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Wipes the PRB Extension folder.
|
<string>Wipes the PRB Extension folder.
|
||||||
|
|
||||||
Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.</string>
|
Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string> Remove All Wallpapers</string>
|
<string> Remove All Wallpapers</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset>
|
<iconset>
|
||||||
<normaloff>:/icon/arrow.clockwise.svg</normaloff>:/icon/arrow.clockwise.svg</iconset>
|
<normaloff>:/icon/arrow.clockwise.svg</normaloff>:/icon/arrow.clockwise.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolButtonStyle">
|
<property name="toolButtonStyle">
|
||||||
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_20">
|
<spacer name="horizontalSpacer_23">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="pbVideoPage">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_39">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="caVideoChk">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Uses the CoreAnimation file to play the video (300 fps limit)
|
||||||
|
Will show up in Collections</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Loop (use CoreAnimation method)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="reverseLoopChk">
|
||||||
|
<property name="text">
|
||||||
|
<string>Reverse on Loop</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="useForegroundChk">
|
||||||
|
<property name="text">
|
||||||
|
<string>Make Foreground (hides clock)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_30">
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="chooseThumbBtn">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Choose a photo for the wallpaper to freeze on when finished (.heic files only)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Choose Freeze Frame (.HEIC)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="chooseVideoBtn">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Choose a video file for the wallpaper (.mov or .mp4)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Choose Video</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_19">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="pbVideoThumbLbl">
|
||||||
|
<property name="text">
|
||||||
|
<string>Current Thumbnail: None</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="pbVideoLbl">
|
||||||
|
<property name="text">
|
||||||
|
<string>Current Video: None</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_22">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_34">
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="clearSuggestedBtn">
|
||||||
|
<property name="text">
|
||||||
|
<string> Clear Suggested Photos</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/icon/arrow.clockwise.svg</normaloff>:/icon/arrow.clockwise.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_24">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@@ -5344,16 +5605,6 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="windowsPathFixChk">
|
|
||||||
<property name="text">
|
|
||||||
<string>Use Windows Path Fix (for Posterboard)</string>
|
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="showAllSpoofableChk">
|
<widget class="QCheckBox" name="showAllSpoofableChk">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
|||||||
@@ -756,7 +756,7 @@ class Ui_Nugget(object):
|
|||||||
self.helpFromBtn = QToolButton(self.horizontalWidget_21)
|
self.helpFromBtn = QToolButton(self.horizontalWidget_21)
|
||||||
self.helpFromBtn.setObjectName(u"helpFromBtn")
|
self.helpFromBtn.setObjectName(u"helpFromBtn")
|
||||||
self.helpFromBtn.setEnabled(True)
|
self.helpFromBtn.setEnabled(True)
|
||||||
self.helpFromBtn.setMinimumSize(QSize(150, 35))
|
self.helpFromBtn.setMinimumSize(QSize(145, 35))
|
||||||
self.helpFromBtn.setStyleSheet(u"QToolButton {\n"
|
self.helpFromBtn.setStyleSheet(u"QToolButton {\n"
|
||||||
" background: none;\n"
|
" background: none;\n"
|
||||||
"}")
|
"}")
|
||||||
@@ -783,6 +783,22 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.horizontalLayout_2.addWidget(self.posterRestoreBtn)
|
self.horizontalLayout_2.addWidget(self.posterRestoreBtn)
|
||||||
|
|
||||||
|
self.snoolieBtn = QToolButton(self.horizontalWidget_21)
|
||||||
|
self.snoolieBtn.setObjectName(u"snoolieBtn")
|
||||||
|
self.snoolieBtn.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.snoolieBtn)
|
||||||
|
|
||||||
self.disfordottieBtn = QToolButton(self.horizontalWidget_21)
|
self.disfordottieBtn = QToolButton(self.horizontalWidget_21)
|
||||||
self.disfordottieBtn.setObjectName(u"disfordottieBtn")
|
self.disfordottieBtn.setObjectName(u"disfordottieBtn")
|
||||||
sizePolicy2.setHeightForWidth(self.disfordottieBtn.sizePolicy().hasHeightForWidth())
|
sizePolicy2.setHeightForWidth(self.disfordottieBtn.sizePolicy().hasHeightForWidth())
|
||||||
@@ -834,7 +850,7 @@ class Ui_Nugget(object):
|
|||||||
self.toolButton_15 = QToolButton(self.horizontalWidget3)
|
self.toolButton_15 = QToolButton(self.horizontalWidget3)
|
||||||
self.toolButton_15.setObjectName(u"toolButton_15")
|
self.toolButton_15.setObjectName(u"toolButton_15")
|
||||||
self.toolButton_15.setEnabled(False)
|
self.toolButton_15.setEnabled(False)
|
||||||
self.toolButton_15.setMinimumSize(QSize(150, 35))
|
self.toolButton_15.setMinimumSize(QSize(145, 35))
|
||||||
self.toolButton_15.setStyleSheet(u"QToolButton {\n"
|
self.toolButton_15.setStyleSheet(u"QToolButton {\n"
|
||||||
" background: none;\n"
|
" background: none;\n"
|
||||||
"}")
|
"}")
|
||||||
@@ -2171,7 +2187,7 @@ class Ui_Nugget(object):
|
|||||||
self.horizontalLayout_203 = QHBoxLayout(self.horizontalWidget_53)
|
self.horizontalLayout_203 = QHBoxLayout(self.horizontalWidget_53)
|
||||||
self.horizontalLayout_203.setSpacing(10)
|
self.horizontalLayout_203.setSpacing(10)
|
||||||
self.horizontalLayout_203.setObjectName(u"horizontalLayout_203")
|
self.horizontalLayout_203.setObjectName(u"horizontalLayout_203")
|
||||||
self.horizontalLayout_203.setContentsMargins(0, 9, 0, 9)
|
self.horizontalLayout_203.setContentsMargins(0, 9, 0, 0)
|
||||||
self.toolButton_103 = QToolButton(self.horizontalWidget_53)
|
self.toolButton_103 = QToolButton(self.horizontalWidget_53)
|
||||||
self.toolButton_103.setObjectName(u"toolButton_103")
|
self.toolButton_103.setObjectName(u"toolButton_103")
|
||||||
self.toolButton_103.setEnabled(True)
|
self.toolButton_103.setEnabled(True)
|
||||||
@@ -2233,6 +2249,61 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.horizontalWidget_53)
|
self.verticalLayout_143.addWidget(self.horizontalWidget_53)
|
||||||
|
|
||||||
|
self.pbPagePicker = QWidget(self.posterboardPage)
|
||||||
|
self.pbPagePicker.setObjectName(u"pbPagePicker")
|
||||||
|
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
|
||||||
|
sizePolicy5.setHorizontalStretch(0)
|
||||||
|
sizePolicy5.setVerticalStretch(0)
|
||||||
|
sizePolicy5.setHeightForWidth(self.pbPagePicker.sizePolicy().hasHeightForWidth())
|
||||||
|
self.pbPagePicker.setSizePolicy(sizePolicy5)
|
||||||
|
self.pbPagePicker.setMinimumSize(QSize(0, 20))
|
||||||
|
self.pbPagePicker.setMaximumSize(QSize(16777215, 25))
|
||||||
|
self.pbPagePicker.setStyleSheet(u"QToolButton {\n"
|
||||||
|
" min-height: 25px;\n"
|
||||||
|
" border-radius: 5px;\n"
|
||||||
|
"}")
|
||||||
|
self.horizontalLayout_14 = QHBoxLayout(self.pbPagePicker)
|
||||||
|
self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
|
||||||
|
self.horizontalLayout_14.setContentsMargins(-1, 0, -1, 0)
|
||||||
|
self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addItem(self.horizontalSpacer_20)
|
||||||
|
|
||||||
|
self.tendiesPageBtn = QToolButton(self.pbPagePicker)
|
||||||
|
self.tendiesPageBtn.setObjectName(u"tendiesPageBtn")
|
||||||
|
sizePolicy6 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding)
|
||||||
|
sizePolicy6.setHorizontalStretch(0)
|
||||||
|
sizePolicy6.setVerticalStretch(0)
|
||||||
|
sizePolicy6.setHeightForWidth(self.tendiesPageBtn.sizePolicy().hasHeightForWidth())
|
||||||
|
self.tendiesPageBtn.setSizePolicy(sizePolicy6)
|
||||||
|
self.tendiesPageBtn.setMinimumSize(QSize(0, 25))
|
||||||
|
icon22 = QIcon()
|
||||||
|
icon22.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.tendiesPageBtn.setIcon(icon22)
|
||||||
|
self.tendiesPageBtn.setCheckable(True)
|
||||||
|
self.tendiesPageBtn.setChecked(True)
|
||||||
|
self.tendiesPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addWidget(self.tendiesPageBtn)
|
||||||
|
|
||||||
|
self.videoPageBtn = QToolButton(self.pbPagePicker)
|
||||||
|
self.videoPageBtn.setObjectName(u"videoPageBtn")
|
||||||
|
self.videoPageBtn.setMinimumSize(QSize(0, 25))
|
||||||
|
icon23 = QIcon()
|
||||||
|
icon23.addFile(u":/icon/photo.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.videoPageBtn.setIcon(icon23)
|
||||||
|
self.videoPageBtn.setCheckable(True)
|
||||||
|
self.videoPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addWidget(self.videoPageBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_21 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addItem(self.horizontalSpacer_21)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_143.addWidget(self.pbPagePicker)
|
||||||
|
|
||||||
self.line_123 = QFrame(self.posterboardPage)
|
self.line_123 = QFrame(self.posterboardPage)
|
||||||
self.line_123.setObjectName(u"line_123")
|
self.line_123.setObjectName(u"line_123")
|
||||||
self.line_123.setStyleSheet(u"QFrame {\n"
|
self.line_123.setStyleSheet(u"QFrame {\n"
|
||||||
@@ -2243,12 +2314,19 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.line_123)
|
self.verticalLayout_143.addWidget(self.line_123)
|
||||||
|
|
||||||
self.posterboardPageContent = QWidget(self.posterboardPage)
|
self.pbActionLbl = QLabel(self.posterboardPage)
|
||||||
self.posterboardPageContent.setObjectName(u"posterboardPageContent")
|
self.pbActionLbl.setObjectName(u"pbActionLbl")
|
||||||
self.posterboardPageContent.setEnabled(False)
|
|
||||||
self.verticalLayout_133 = QVBoxLayout(self.posterboardPageContent)
|
self.verticalLayout_143.addWidget(self.pbActionLbl)
|
||||||
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
|
|
||||||
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
|
self.pbPages = QStackedWidget(self.posterboardPage)
|
||||||
|
self.pbPages.setObjectName(u"pbPages")
|
||||||
|
self.pbPages.setEnabled(False)
|
||||||
|
self.pbTendiesPage = QWidget()
|
||||||
|
self.pbTendiesPage.setObjectName(u"pbTendiesPage")
|
||||||
|
self.verticalLayout_38 = QVBoxLayout(self.pbTendiesPage)
|
||||||
|
self.verticalLayout_38.setObjectName(u"verticalLayout_38")
|
||||||
|
self.verticalLayout_38.setContentsMargins(-1, 0, -1, 0)
|
||||||
self.horizontalLayout_12 = QHBoxLayout()
|
self.horizontalLayout_12 = QHBoxLayout()
|
||||||
self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
|
self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
|
||||||
self.horizontalLayout_12.setContentsMargins(-1, -1, -1, 0)
|
self.horizontalLayout_12.setContentsMargins(-1, -1, -1, 0)
|
||||||
@@ -2256,26 +2334,21 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.horizontalLayout_12.addItem(self.horizontalSpacer_18)
|
self.horizontalLayout_12.addItem(self.horizontalSpacer_18)
|
||||||
|
|
||||||
self.importTendiesBtn = QToolButton(self.posterboardPageContent)
|
self.importTendiesBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.importTendiesBtn.setObjectName(u"importTendiesBtn")
|
self.importTendiesBtn.setObjectName(u"importTendiesBtn")
|
||||||
self.importTendiesBtn.setLayoutDirection(Qt.RightToLeft)
|
self.importTendiesBtn.setLayoutDirection(Qt.RightToLeft)
|
||||||
icon22 = QIcon()
|
icon24 = QIcon()
|
||||||
icon22.addFile(u":/icon/import.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon24.addFile(u":/icon/import.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.importTendiesBtn.setIcon(icon22)
|
self.importTendiesBtn.setIcon(icon24)
|
||||||
self.importTendiesBtn.setIconSize(QSize(20, 20))
|
self.importTendiesBtn.setIconSize(QSize(20, 20))
|
||||||
self.importTendiesBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.importTendiesBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_12.addWidget(self.importTendiesBtn)
|
self.horizontalLayout_12.addWidget(self.importTendiesBtn)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_133.addLayout(self.horizontalLayout_12)
|
self.verticalLayout_38.addLayout(self.horizontalLayout_12)
|
||||||
|
|
||||||
self.pbActionLbl = QLabel(self.posterboardPageContent)
|
self.line_27 = QFrame(self.pbTendiesPage)
|
||||||
self.pbActionLbl.setObjectName(u"pbActionLbl")
|
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.pbActionLbl)
|
|
||||||
|
|
||||||
self.line_27 = QFrame(self.posterboardPageContent)
|
|
||||||
self.line_27.setObjectName(u"line_27")
|
self.line_27.setObjectName(u"line_27")
|
||||||
self.line_27.setStyleSheet(u"QFrame {\n"
|
self.line_27.setStyleSheet(u"QFrame {\n"
|
||||||
" color: #414141;\n"
|
" color: #414141;\n"
|
||||||
@@ -2283,51 +2356,122 @@ class Ui_Nugget(object):
|
|||||||
self.line_27.setFrameShadow(QFrame.Plain)
|
self.line_27.setFrameShadow(QFrame.Plain)
|
||||||
self.line_27.setFrameShape(QFrame.Shape.HLine)
|
self.line_27.setFrameShape(QFrame.Shape.HLine)
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.line_27)
|
self.verticalLayout_38.addWidget(self.line_27)
|
||||||
|
|
||||||
self.pbFilesList = QWidget(self.posterboardPageContent)
|
self.pbFilesList = QWidget(self.pbTendiesPage)
|
||||||
self.pbFilesList.setObjectName(u"pbFilesList")
|
self.pbFilesList.setObjectName(u"pbFilesList")
|
||||||
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
sizePolicy7 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||||
sizePolicy5.setHorizontalStretch(0)
|
sizePolicy7.setHorizontalStretch(0)
|
||||||
sizePolicy5.setVerticalStretch(0)
|
sizePolicy7.setVerticalStretch(0)
|
||||||
sizePolicy5.setHeightForWidth(self.pbFilesList.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.pbFilesList.sizePolicy().hasHeightForWidth())
|
||||||
self.pbFilesList.setSizePolicy(sizePolicy5)
|
self.pbFilesList.setSizePolicy(sizePolicy7)
|
||||||
self.pbFilesList.setMinimumSize(QSize(200, 35))
|
self.pbFilesList.setMinimumSize(QSize(200, 35))
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.pbFilesList)
|
self.verticalLayout_38.addWidget(self.pbFilesList)
|
||||||
|
|
||||||
self.horizontalLayout_14 = QHBoxLayout()
|
self.horizontalLayout_32 = QHBoxLayout()
|
||||||
self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
|
self.horizontalLayout_32.setObjectName(u"horizontalLayout_32")
|
||||||
self.horizontalLayout_14.setContentsMargins(-1, -1, -1, 0)
|
self.horizontalLayout_32.setContentsMargins(-1, -1, -1, 10)
|
||||||
self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
self.horizontalSpacer_22 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
self.horizontalLayout_14.addItem(self.horizontalSpacer_19)
|
self.horizontalLayout_32.addItem(self.horizontalSpacer_22)
|
||||||
|
|
||||||
self.deleteAllDescriptorsBtn = QToolButton(self.posterboardPageContent)
|
self.deleteAllDescriptorsBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.deleteAllDescriptorsBtn.setObjectName(u"deleteAllDescriptorsBtn")
|
self.deleteAllDescriptorsBtn.setObjectName(u"deleteAllDescriptorsBtn")
|
||||||
icon23 = QIcon()
|
icon25 = QIcon()
|
||||||
icon23.addFile(u":/icon/arrow.clockwise.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon25.addFile(u":/icon/arrow.clockwise.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.deleteAllDescriptorsBtn.setIcon(icon23)
|
self.deleteAllDescriptorsBtn.setIcon(icon25)
|
||||||
self.deleteAllDescriptorsBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.deleteAllDescriptorsBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_14.addWidget(self.deleteAllDescriptorsBtn)
|
self.horizontalLayout_32.addWidget(self.deleteAllDescriptorsBtn)
|
||||||
|
|
||||||
self.resetPRBExtBtn = QToolButton(self.posterboardPageContent)
|
self.resetPRBExtBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.resetPRBExtBtn.setObjectName(u"resetPRBExtBtn")
|
self.resetPRBExtBtn.setObjectName(u"resetPRBExtBtn")
|
||||||
self.resetPRBExtBtn.setIcon(icon23)
|
self.resetPRBExtBtn.setIcon(icon25)
|
||||||
self.resetPRBExtBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.resetPRBExtBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_14.addWidget(self.resetPRBExtBtn)
|
self.horizontalLayout_32.addWidget(self.resetPRBExtBtn)
|
||||||
|
|
||||||
self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
self.horizontalSpacer_23 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
self.horizontalLayout_14.addItem(self.horizontalSpacer_20)
|
self.horizontalLayout_32.addItem(self.horizontalSpacer_23)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_133.addLayout(self.horizontalLayout_14)
|
self.verticalLayout_38.addLayout(self.horizontalLayout_32)
|
||||||
|
|
||||||
|
self.pbPages.addWidget(self.pbTendiesPage)
|
||||||
|
self.pbVideoPage = QWidget()
|
||||||
|
self.pbVideoPage.setObjectName(u"pbVideoPage")
|
||||||
|
self.verticalLayout_39 = QVBoxLayout(self.pbVideoPage)
|
||||||
|
self.verticalLayout_39.setObjectName(u"verticalLayout_39")
|
||||||
|
self.caVideoChk = QCheckBox(self.pbVideoPage)
|
||||||
|
self.caVideoChk.setObjectName(u"caVideoChk")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.caVideoChk)
|
||||||
|
|
||||||
|
self.reverseLoopChk = QCheckBox(self.pbVideoPage)
|
||||||
|
self.reverseLoopChk.setObjectName(u"reverseLoopChk")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.reverseLoopChk)
|
||||||
|
|
||||||
|
self.useForegroundChk = QCheckBox(self.pbVideoPage)
|
||||||
|
self.useForegroundChk.setObjectName(u"useForegroundChk")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.useForegroundChk)
|
||||||
|
|
||||||
|
self.horizontalLayout_30 = QHBoxLayout()
|
||||||
|
self.horizontalLayout_30.setObjectName(u"horizontalLayout_30")
|
||||||
|
self.chooseThumbBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.chooseThumbBtn.setObjectName(u"chooseThumbBtn")
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addWidget(self.chooseThumbBtn)
|
||||||
|
|
||||||
|
self.chooseVideoBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.chooseVideoBtn.setObjectName(u"chooseVideoBtn")
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addWidget(self.chooseVideoBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addItem(self.horizontalSpacer_19)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.posterboardPageContent)
|
self.verticalLayout_39.addLayout(self.horizontalLayout_30)
|
||||||
|
|
||||||
|
self.pbVideoThumbLbl = QLabel(self.pbVideoPage)
|
||||||
|
self.pbVideoThumbLbl.setObjectName(u"pbVideoThumbLbl")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.pbVideoThumbLbl)
|
||||||
|
|
||||||
|
self.pbVideoLbl = QLabel(self.pbVideoPage)
|
||||||
|
self.pbVideoLbl.setObjectName(u"pbVideoLbl")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.pbVideoLbl)
|
||||||
|
|
||||||
|
self.verticalSpacer_22 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||||
|
|
||||||
|
self.verticalLayout_39.addItem(self.verticalSpacer_22)
|
||||||
|
|
||||||
|
self.horizontalLayout_34 = QHBoxLayout()
|
||||||
|
self.horizontalLayout_34.setObjectName(u"horizontalLayout_34")
|
||||||
|
self.horizontalLayout_34.setContentsMargins(-1, 0, -1, -1)
|
||||||
|
self.clearSuggestedBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.clearSuggestedBtn.setObjectName(u"clearSuggestedBtn")
|
||||||
|
self.clearSuggestedBtn.setIcon(icon25)
|
||||||
|
self.clearSuggestedBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_34.addWidget(self.clearSuggestedBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_24 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_34.addItem(self.horizontalSpacer_24)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_39.addLayout(self.horizontalLayout_34)
|
||||||
|
|
||||||
|
self.pbPages.addWidget(self.pbVideoPage)
|
||||||
|
|
||||||
|
self.verticalLayout_143.addWidget(self.pbPages)
|
||||||
|
|
||||||
self.pages.addWidget(self.posterboardPage)
|
self.pages.addWidget(self.posterboardPage)
|
||||||
self.advancedOptionsPage = QWidget()
|
self.advancedOptionsPage = QWidget()
|
||||||
@@ -2394,13 +2538,13 @@ class Ui_Nugget(object):
|
|||||||
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
|
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
|
||||||
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
|
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
|
||||||
self.advancedOptionsPageContent.setEnabled(True)
|
self.advancedOptionsPageContent.setEnabled(True)
|
||||||
self.verticalLayout_134 = QVBoxLayout(self.advancedOptionsPageContent)
|
self.verticalLayout_133 = QVBoxLayout(self.advancedOptionsPageContent)
|
||||||
self.verticalLayout_134.setObjectName(u"verticalLayout_134")
|
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
|
||||||
self.verticalLayout_134.setContentsMargins(0, 0, 0, 0)
|
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
|
||||||
self.label_17 = QLabel(self.advancedOptionsPageContent)
|
self.label_17 = QLabel(self.advancedOptionsPageContent)
|
||||||
self.label_17.setObjectName(u"label_17")
|
self.label_17.setObjectName(u"label_17")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.label_17)
|
self.verticalLayout_133.addWidget(self.label_17)
|
||||||
|
|
||||||
self.line_191 = QFrame(self.advancedOptionsPageContent)
|
self.line_191 = QFrame(self.advancedOptionsPageContent)
|
||||||
self.line_191.setObjectName(u"line_191")
|
self.line_191.setObjectName(u"line_191")
|
||||||
@@ -2410,17 +2554,17 @@ class Ui_Nugget(object):
|
|||||||
self.line_191.setFrameShadow(QFrame.Plain)
|
self.line_191.setFrameShadow(QFrame.Plain)
|
||||||
self.line_191.setFrameShape(QFrame.Shape.HLine)
|
self.line_191.setFrameShape(QFrame.Shape.HLine)
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.line_191)
|
self.verticalLayout_133.addWidget(self.line_191)
|
||||||
|
|
||||||
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
|
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.disableOTAChk.setObjectName(u"disableOTAChk")
|
self.disableOTAChk.setObjectName(u"disableOTAChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.disableOTAChk)
|
self.verticalLayout_133.addWidget(self.disableOTAChk)
|
||||||
|
|
||||||
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
|
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
|
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.thermalmonitordChk)
|
self.verticalLayout_133.addWidget(self.thermalmonitordChk)
|
||||||
|
|
||||||
self.line_181 = QFrame(self.advancedOptionsPageContent)
|
self.line_181 = QFrame(self.advancedOptionsPageContent)
|
||||||
self.line_181.setObjectName(u"line_181")
|
self.line_181.setObjectName(u"line_181")
|
||||||
@@ -2430,12 +2574,12 @@ class Ui_Nugget(object):
|
|||||||
self.line_181.setFrameShadow(QFrame.Plain)
|
self.line_181.setFrameShadow(QFrame.Plain)
|
||||||
self.line_181.setFrameShape(QFrame.Shape.HLine)
|
self.line_181.setFrameShape(QFrame.Shape.HLine)
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.line_181)
|
self.verticalLayout_133.addWidget(self.line_181)
|
||||||
|
|
||||||
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
|
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
|
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.enableResolutionChk)
|
self.verticalLayout_133.addWidget(self.enableResolutionChk)
|
||||||
|
|
||||||
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
|
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
|
||||||
self.resChangerContent.setObjectName(u"resChangerContent")
|
self.resChangerContent.setObjectName(u"resChangerContent")
|
||||||
@@ -2511,11 +2655,11 @@ class Ui_Nugget(object):
|
|||||||
self.verticalLayout_35.addLayout(self.resolutionContent)
|
self.verticalLayout_35.addLayout(self.resolutionContent)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.resChangerContent)
|
self.verticalLayout_133.addWidget(self.resChangerContent)
|
||||||
|
|
||||||
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||||
|
|
||||||
self.verticalLayout_134.addItem(self.verticalSpacer_63)
|
self.verticalLayout_133.addItem(self.verticalSpacer_63)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_144.addWidget(self.advancedOptionsPageContent)
|
self.verticalLayout_144.addWidget(self.advancedOptionsPageContent)
|
||||||
@@ -2609,9 +2753,9 @@ class Ui_Nugget(object):
|
|||||||
self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
|
self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
|
||||||
self.chooseGestaltBtn = QToolButton(self.verticalWidget2)
|
self.chooseGestaltBtn = QToolButton(self.verticalWidget2)
|
||||||
self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
|
self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
|
||||||
icon24 = QIcon()
|
icon26 = QIcon()
|
||||||
icon24.addFile(u":/icon/folder.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon26.addFile(u":/icon/folder.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.chooseGestaltBtn.setIcon(icon24)
|
self.chooseGestaltBtn.setIcon(icon26)
|
||||||
self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
|
self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
|
||||||
@@ -2776,12 +2920,6 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self._21.addWidget(self.showRiskyChk)
|
self._21.addWidget(self.showRiskyChk)
|
||||||
|
|
||||||
self.windowsPathFixChk = QCheckBox(self.settingsPageContent)
|
|
||||||
self.windowsPathFixChk.setObjectName(u"windowsPathFixChk")
|
|
||||||
self.windowsPathFixChk.setChecked(True)
|
|
||||||
|
|
||||||
self._21.addWidget(self.windowsPathFixChk)
|
|
||||||
|
|
||||||
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
|
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
|
||||||
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
|
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
|
||||||
|
|
||||||
@@ -3031,9 +3169,9 @@ class Ui_Nugget(object):
|
|||||||
" padding-right: 5px;\n"
|
" padding-right: 5px;\n"
|
||||||
" border-radius: 0px;\n"
|
" border-radius: 0px;\n"
|
||||||
"}")
|
"}")
|
||||||
icon25 = QIcon()
|
icon27 = QIcon()
|
||||||
icon25.addFile(u":/icon/pencil.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon27.addFile(u":/icon/pencil.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.toolButton_12.setIcon(icon25)
|
self.toolButton_12.setIcon(icon27)
|
||||||
self.toolButton_12.setIconSize(QSize(25, 25))
|
self.toolButton_12.setIconSize(QSize(25, 25))
|
||||||
|
|
||||||
self.horizontalLayout_22.addWidget(self.toolButton_12)
|
self.horizontalLayout_22.addWidget(self.toolButton_12)
|
||||||
@@ -3094,7 +3232,7 @@ class Ui_Nugget(object):
|
|||||||
self.importOperationBtn = QToolButton(self.customOperationsPageContent)
|
self.importOperationBtn = QToolButton(self.customOperationsPageContent)
|
||||||
self.importOperationBtn.setObjectName(u"importOperationBtn")
|
self.importOperationBtn.setObjectName(u"importOperationBtn")
|
||||||
self.importOperationBtn.setEnabled(True)
|
self.importOperationBtn.setEnabled(True)
|
||||||
self.importOperationBtn.setIcon(icon22)
|
self.importOperationBtn.setIcon(icon24)
|
||||||
self.importOperationBtn.setIconSize(QSize(20, 20))
|
self.importOperationBtn.setIconSize(QSize(20, 20))
|
||||||
self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
@@ -3120,8 +3258,8 @@ class Ui_Nugget(object):
|
|||||||
self.operationsCnt = QWidget(self.customOperationsPageContent)
|
self.operationsCnt = QWidget(self.customOperationsPageContent)
|
||||||
self.operationsCnt.setObjectName(u"operationsCnt")
|
self.operationsCnt.setObjectName(u"operationsCnt")
|
||||||
self.operationsCnt.setEnabled(True)
|
self.operationsCnt.setEnabled(True)
|
||||||
sizePolicy5.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
|
||||||
self.operationsCnt.setSizePolicy(sizePolicy5)
|
self.operationsCnt.setSizePolicy(sizePolicy7)
|
||||||
|
|
||||||
self.verticalLayout_19.addWidget(self.operationsCnt)
|
self.verticalLayout_19.addWidget(self.operationsCnt)
|
||||||
|
|
||||||
@@ -3150,9 +3288,9 @@ class Ui_Nugget(object):
|
|||||||
" padding-right: 5px;\n"
|
" padding-right: 5px;\n"
|
||||||
" border-radius: 0px;\n"
|
" border-radius: 0px;\n"
|
||||||
"}")
|
"}")
|
||||||
icon26 = QIcon()
|
icon28 = QIcon()
|
||||||
icon26.addFile(u":/icon/compass.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
icon28.addFile(u":/icon/compass.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
self.toolButton_16.setIcon(icon26)
|
self.toolButton_16.setIcon(icon28)
|
||||||
|
|
||||||
self.horizontalLayout_31.addWidget(self.toolButton_16)
|
self.horizontalLayout_31.addWidget(self.toolButton_16)
|
||||||
|
|
||||||
@@ -3195,8 +3333,8 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.exploreThemesCnt = QWidget(self.explorePage)
|
self.exploreThemesCnt = QWidget(self.explorePage)
|
||||||
self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
|
self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
|
||||||
sizePolicy5.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
|
||||||
self.exploreThemesCnt.setSizePolicy(sizePolicy5)
|
self.exploreThemesCnt.setSizePolicy(sizePolicy7)
|
||||||
|
|
||||||
self.verticalLayout_31.addWidget(self.exploreThemesCnt)
|
self.verticalLayout_31.addWidget(self.exploreThemesCnt)
|
||||||
|
|
||||||
@@ -3262,15 +3400,13 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.importThemeFolderBtn = QToolButton(self.horizontalWidget7)
|
self.importThemeFolderBtn = QToolButton(self.horizontalWidget7)
|
||||||
self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
|
self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
|
||||||
self.importThemeFolderBtn.setIcon(icon24)
|
self.importThemeFolderBtn.setIcon(icon26)
|
||||||
|
|
||||||
self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
|
self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
|
||||||
|
|
||||||
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
|
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
|
||||||
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
|
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
|
||||||
icon27 = QIcon()
|
self.importThemeZipBtn.setIcon(icon22)
|
||||||
icon27.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
|
||||||
self.importThemeZipBtn.setIcon(icon27)
|
|
||||||
|
|
||||||
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
|
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
|
||||||
|
|
||||||
@@ -3425,8 +3561,10 @@ class Ui_Nugget(object):
|
|||||||
self.helpFromBtn.setText(QCoreApplication.translate("Nugget", u"With Help From", None))
|
self.helpFromBtn.setText(QCoreApplication.translate("Nugget", u"With Help From", None))
|
||||||
self.posterRestoreBtn.setText(QCoreApplication.translate("Nugget", u"PosterRestore Team\n"
|
self.posterRestoreBtn.setText(QCoreApplication.translate("Nugget", u"PosterRestore Team\n"
|
||||||
"Posterboard", None))
|
"Posterboard", None))
|
||||||
|
self.snoolieBtn.setText(QCoreApplication.translate("Nugget", u"Snoolie\n"
|
||||||
|
".aar Handling", None))
|
||||||
self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
|
self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
|
||||||
"Clock Anim, Photos UI", None))
|
"Feature Flags", None))
|
||||||
self.mikasaBtn.setText(QCoreApplication.translate("Nugget", u"Mikasa\n"
|
self.mikasaBtn.setText(QCoreApplication.translate("Nugget", u"Mikasa\n"
|
||||||
"Quiet Daemon", None))
|
"Quiet Daemon", None))
|
||||||
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
|
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
|
||||||
@@ -3685,11 +3823,13 @@ class Ui_Nugget(object):
|
|||||||
self.modifyPosterboardsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
|
self.modifyPosterboardsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
|
||||||
self.findPBBtn.setText(QCoreApplication.translate("Nugget", u" Find Wallpapers", None))
|
self.findPBBtn.setText(QCoreApplication.translate("Nugget", u" Find Wallpapers", None))
|
||||||
self.pbHelpBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
|
self.pbHelpBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
|
||||||
|
self.tendiesPageBtn.setText(QCoreApplication.translate("Nugget", u" Tendies", None))
|
||||||
|
self.videoPageBtn.setText(QCoreApplication.translate("Nugget", u" Live", None))
|
||||||
|
self.pbActionLbl.setText(QCoreApplication.translate("Nugget", u"None", None))
|
||||||
#if QT_CONFIG(tooltip)
|
#if QT_CONFIG(tooltip)
|
||||||
self.importTendiesBtn.setToolTip(QCoreApplication.translate("Nugget", u"Select a wallpaper file with the .tendies extension.", None))
|
self.importTendiesBtn.setToolTip(QCoreApplication.translate("Nugget", u"Select a wallpaper file with the .tendies extension.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.importTendiesBtn.setText(QCoreApplication.translate("Nugget", u" Import Files (.tendies)", None))
|
self.importTendiesBtn.setText(QCoreApplication.translate("Nugget", u" Import Files (.tendies)", None))
|
||||||
self.pbActionLbl.setText(QCoreApplication.translate("Nugget", u"None", None))
|
|
||||||
#if QT_CONFIG(tooltip)
|
#if QT_CONFIG(tooltip)
|
||||||
self.deleteAllDescriptorsBtn.setToolTip(QCoreApplication.translate("Nugget", u"Clears all the wallpapers in the Collections section so that you can import more.", None))
|
self.deleteAllDescriptorsBtn.setToolTip(QCoreApplication.translate("Nugget", u"Clears all the wallpapers in the Collections section so that you can import more.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
@@ -3700,6 +3840,24 @@ class Ui_Nugget(object):
|
|||||||
"Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.", None))
|
"Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.resetPRBExtBtn.setText(QCoreApplication.translate("Nugget", u" Remove All Wallpapers", None))
|
self.resetPRBExtBtn.setText(QCoreApplication.translate("Nugget", u" Remove All Wallpapers", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.caVideoChk.setToolTip(QCoreApplication.translate("Nugget", u"Uses the CoreAnimation file to play the video (300 fps limit)\n"
|
||||||
|
"Will show up in Collections", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.caVideoChk.setText(QCoreApplication.translate("Nugget", u"Loop (use CoreAnimation method)", None))
|
||||||
|
self.reverseLoopChk.setText(QCoreApplication.translate("Nugget", u"Reverse on Loop", None))
|
||||||
|
self.useForegroundChk.setText(QCoreApplication.translate("Nugget", u"Make Foreground (hides clock)", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.chooseThumbBtn.setToolTip(QCoreApplication.translate("Nugget", u"Choose a photo for the wallpaper to freeze on when finished (.heic files only)", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.chooseThumbBtn.setText(QCoreApplication.translate("Nugget", u"Choose Freeze Frame (.HEIC)", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.chooseVideoBtn.setToolTip(QCoreApplication.translate("Nugget", u"Choose a video file for the wallpaper (.mov or .mp4)", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.chooseVideoBtn.setText(QCoreApplication.translate("Nugget", u"Choose Video", None))
|
||||||
|
self.pbVideoThumbLbl.setText(QCoreApplication.translate("Nugget", u"Current Thumbnail: None", None))
|
||||||
|
self.pbVideoLbl.setText(QCoreApplication.translate("Nugget", u"Current Video: None", None))
|
||||||
|
self.clearSuggestedBtn.setText(QCoreApplication.translate("Nugget", u" Clear Suggested Photos", None))
|
||||||
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
|
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
|
||||||
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
|
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -3741,7 +3899,6 @@ class Ui_Nugget(object):
|
|||||||
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
||||||
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
||||||
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
||||||
self.windowsPathFixChk.setText(QCoreApplication.translate("Nugget", u"Use Windows Path Fix (for Posterboard)", None))
|
|
||||||
#if QT_CONFIG(tooltip)
|
#if QT_CONFIG(tooltip)
|
||||||
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
|
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
|||||||
@@ -756,7 +756,7 @@ class Ui_Nugget(object):
|
|||||||
self.helpFromBtn = QToolButton(self.horizontalWidget_21)
|
self.helpFromBtn = QToolButton(self.horizontalWidget_21)
|
||||||
self.helpFromBtn.setObjectName(u"helpFromBtn")
|
self.helpFromBtn.setObjectName(u"helpFromBtn")
|
||||||
self.helpFromBtn.setEnabled(True)
|
self.helpFromBtn.setEnabled(True)
|
||||||
self.helpFromBtn.setMinimumSize(QSize(150, 35))
|
self.helpFromBtn.setMinimumSize(QSize(145, 35))
|
||||||
self.helpFromBtn.setStyleSheet(u"QToolButton {\n"
|
self.helpFromBtn.setStyleSheet(u"QToolButton {\n"
|
||||||
" background: none;\n"
|
" background: none;\n"
|
||||||
"}")
|
"}")
|
||||||
@@ -783,6 +783,22 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.horizontalLayout_2.addWidget(self.posterRestoreBtn)
|
self.horizontalLayout_2.addWidget(self.posterRestoreBtn)
|
||||||
|
|
||||||
|
self.snoolieBtn = QToolButton(self.horizontalWidget_21)
|
||||||
|
self.snoolieBtn.setObjectName(u"snoolieBtn")
|
||||||
|
self.snoolieBtn.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.snoolieBtn)
|
||||||
|
|
||||||
self.disfordottieBtn = QToolButton(self.horizontalWidget_21)
|
self.disfordottieBtn = QToolButton(self.horizontalWidget_21)
|
||||||
self.disfordottieBtn.setObjectName(u"disfordottieBtn")
|
self.disfordottieBtn.setObjectName(u"disfordottieBtn")
|
||||||
sizePolicy2.setHeightForWidth(self.disfordottieBtn.sizePolicy().hasHeightForWidth())
|
sizePolicy2.setHeightForWidth(self.disfordottieBtn.sizePolicy().hasHeightForWidth())
|
||||||
@@ -834,7 +850,7 @@ class Ui_Nugget(object):
|
|||||||
self.toolButton_15 = QToolButton(self.horizontalWidget3)
|
self.toolButton_15 = QToolButton(self.horizontalWidget3)
|
||||||
self.toolButton_15.setObjectName(u"toolButton_15")
|
self.toolButton_15.setObjectName(u"toolButton_15")
|
||||||
self.toolButton_15.setEnabled(False)
|
self.toolButton_15.setEnabled(False)
|
||||||
self.toolButton_15.setMinimumSize(QSize(150, 35))
|
self.toolButton_15.setMinimumSize(QSize(145, 35))
|
||||||
self.toolButton_15.setStyleSheet(u"QToolButton {\n"
|
self.toolButton_15.setStyleSheet(u"QToolButton {\n"
|
||||||
" background: none;\n"
|
" background: none;\n"
|
||||||
"}")
|
"}")
|
||||||
@@ -2171,7 +2187,7 @@ class Ui_Nugget(object):
|
|||||||
self.horizontalLayout_203 = QHBoxLayout(self.horizontalWidget_53)
|
self.horizontalLayout_203 = QHBoxLayout(self.horizontalWidget_53)
|
||||||
self.horizontalLayout_203.setSpacing(10)
|
self.horizontalLayout_203.setSpacing(10)
|
||||||
self.horizontalLayout_203.setObjectName(u"horizontalLayout_203")
|
self.horizontalLayout_203.setObjectName(u"horizontalLayout_203")
|
||||||
self.horizontalLayout_203.setContentsMargins(0, 9, 0, 9)
|
self.horizontalLayout_203.setContentsMargins(0, 9, 0, 0)
|
||||||
self.toolButton_103 = QToolButton(self.horizontalWidget_53)
|
self.toolButton_103 = QToolButton(self.horizontalWidget_53)
|
||||||
self.toolButton_103.setObjectName(u"toolButton_103")
|
self.toolButton_103.setObjectName(u"toolButton_103")
|
||||||
self.toolButton_103.setEnabled(True)
|
self.toolButton_103.setEnabled(True)
|
||||||
@@ -2233,6 +2249,61 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.horizontalWidget_53)
|
self.verticalLayout_143.addWidget(self.horizontalWidget_53)
|
||||||
|
|
||||||
|
self.pbPagePicker = QWidget(self.posterboardPage)
|
||||||
|
self.pbPagePicker.setObjectName(u"pbPagePicker")
|
||||||
|
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
|
||||||
|
sizePolicy5.setHorizontalStretch(0)
|
||||||
|
sizePolicy5.setVerticalStretch(0)
|
||||||
|
sizePolicy5.setHeightForWidth(self.pbPagePicker.sizePolicy().hasHeightForWidth())
|
||||||
|
self.pbPagePicker.setSizePolicy(sizePolicy5)
|
||||||
|
self.pbPagePicker.setMinimumSize(QSize(0, 20))
|
||||||
|
self.pbPagePicker.setMaximumSize(QSize(16777215, 25))
|
||||||
|
self.pbPagePicker.setStyleSheet(u"QToolButton {\n"
|
||||||
|
" min-height: 25px;\n"
|
||||||
|
" border-radius: 5px;\n"
|
||||||
|
"}")
|
||||||
|
self.horizontalLayout_14 = QHBoxLayout(self.pbPagePicker)
|
||||||
|
self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
|
||||||
|
self.horizontalLayout_14.setContentsMargins(-1, 0, -1, 0)
|
||||||
|
self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addItem(self.horizontalSpacer_20)
|
||||||
|
|
||||||
|
self.tendiesPageBtn = QToolButton(self.pbPagePicker)
|
||||||
|
self.tendiesPageBtn.setObjectName(u"tendiesPageBtn")
|
||||||
|
sizePolicy6 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding)
|
||||||
|
sizePolicy6.setHorizontalStretch(0)
|
||||||
|
sizePolicy6.setVerticalStretch(0)
|
||||||
|
sizePolicy6.setHeightForWidth(self.tendiesPageBtn.sizePolicy().hasHeightForWidth())
|
||||||
|
self.tendiesPageBtn.setSizePolicy(sizePolicy6)
|
||||||
|
self.tendiesPageBtn.setMinimumSize(QSize(0, 25))
|
||||||
|
icon22 = QIcon()
|
||||||
|
icon22.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
|
self.tendiesPageBtn.setIcon(icon22)
|
||||||
|
self.tendiesPageBtn.setCheckable(True)
|
||||||
|
self.tendiesPageBtn.setChecked(True)
|
||||||
|
self.tendiesPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addWidget(self.tendiesPageBtn)
|
||||||
|
|
||||||
|
self.videoPageBtn = QToolButton(self.pbPagePicker)
|
||||||
|
self.videoPageBtn.setObjectName(u"videoPageBtn")
|
||||||
|
self.videoPageBtn.setMinimumSize(QSize(0, 25))
|
||||||
|
icon23 = QIcon()
|
||||||
|
icon23.addFile(u":/icon/photo.svg", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
|
self.videoPageBtn.setIcon(icon23)
|
||||||
|
self.videoPageBtn.setCheckable(True)
|
||||||
|
self.videoPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addWidget(self.videoPageBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_21 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_14.addItem(self.horizontalSpacer_21)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_143.addWidget(self.pbPagePicker)
|
||||||
|
|
||||||
self.line_123 = QFrame(self.posterboardPage)
|
self.line_123 = QFrame(self.posterboardPage)
|
||||||
self.line_123.setObjectName(u"line_123")
|
self.line_123.setObjectName(u"line_123")
|
||||||
self.line_123.setStyleSheet(u"QFrame {\n"
|
self.line_123.setStyleSheet(u"QFrame {\n"
|
||||||
@@ -2243,12 +2314,19 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.line_123)
|
self.verticalLayout_143.addWidget(self.line_123)
|
||||||
|
|
||||||
self.posterboardPageContent = QWidget(self.posterboardPage)
|
self.pbActionLbl = QLabel(self.posterboardPage)
|
||||||
self.posterboardPageContent.setObjectName(u"posterboardPageContent")
|
self.pbActionLbl.setObjectName(u"pbActionLbl")
|
||||||
self.posterboardPageContent.setEnabled(False)
|
|
||||||
self.verticalLayout_133 = QVBoxLayout(self.posterboardPageContent)
|
self.verticalLayout_143.addWidget(self.pbActionLbl)
|
||||||
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
|
|
||||||
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
|
self.pbPages = QStackedWidget(self.posterboardPage)
|
||||||
|
self.pbPages.setObjectName(u"pbPages")
|
||||||
|
self.pbPages.setEnabled(False)
|
||||||
|
self.pbTendiesPage = QWidget()
|
||||||
|
self.pbTendiesPage.setObjectName(u"pbTendiesPage")
|
||||||
|
self.verticalLayout_38 = QVBoxLayout(self.pbTendiesPage)
|
||||||
|
self.verticalLayout_38.setObjectName(u"verticalLayout_38")
|
||||||
|
self.verticalLayout_38.setContentsMargins(-1, 0, -1, 0)
|
||||||
self.horizontalLayout_12 = QHBoxLayout()
|
self.horizontalLayout_12 = QHBoxLayout()
|
||||||
self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
|
self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
|
||||||
self.horizontalLayout_12.setContentsMargins(-1, -1, -1, 0)
|
self.horizontalLayout_12.setContentsMargins(-1, -1, -1, 0)
|
||||||
@@ -2256,26 +2334,21 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.horizontalLayout_12.addItem(self.horizontalSpacer_18)
|
self.horizontalLayout_12.addItem(self.horizontalSpacer_18)
|
||||||
|
|
||||||
self.importTendiesBtn = QToolButton(self.posterboardPageContent)
|
self.importTendiesBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.importTendiesBtn.setObjectName(u"importTendiesBtn")
|
self.importTendiesBtn.setObjectName(u"importTendiesBtn")
|
||||||
self.importTendiesBtn.setLayoutDirection(Qt.RightToLeft)
|
self.importTendiesBtn.setLayoutDirection(Qt.RightToLeft)
|
||||||
icon22 = QIcon()
|
icon24 = QIcon()
|
||||||
icon22.addFile(u":/icon/import.svg", QSize(), QIcon.Normal, QIcon.Off)
|
icon24.addFile(u":/icon/import.svg", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.importTendiesBtn.setIcon(icon22)
|
self.importTendiesBtn.setIcon(icon24)
|
||||||
self.importTendiesBtn.setIconSize(QSize(20, 20))
|
self.importTendiesBtn.setIconSize(QSize(20, 20))
|
||||||
self.importTendiesBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.importTendiesBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_12.addWidget(self.importTendiesBtn)
|
self.horizontalLayout_12.addWidget(self.importTendiesBtn)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_133.addLayout(self.horizontalLayout_12)
|
self.verticalLayout_38.addLayout(self.horizontalLayout_12)
|
||||||
|
|
||||||
self.pbActionLbl = QLabel(self.posterboardPageContent)
|
self.line_27 = QFrame(self.pbTendiesPage)
|
||||||
self.pbActionLbl.setObjectName(u"pbActionLbl")
|
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.pbActionLbl)
|
|
||||||
|
|
||||||
self.line_27 = QFrame(self.posterboardPageContent)
|
|
||||||
self.line_27.setObjectName(u"line_27")
|
self.line_27.setObjectName(u"line_27")
|
||||||
self.line_27.setStyleSheet(u"QFrame {\n"
|
self.line_27.setStyleSheet(u"QFrame {\n"
|
||||||
" color: #414141;\n"
|
" color: #414141;\n"
|
||||||
@@ -2283,51 +2356,122 @@ class Ui_Nugget(object):
|
|||||||
self.line_27.setFrameShadow(QFrame.Plain)
|
self.line_27.setFrameShadow(QFrame.Plain)
|
||||||
self.line_27.setFrameShape(QFrame.HLine)
|
self.line_27.setFrameShape(QFrame.HLine)
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.line_27)
|
self.verticalLayout_38.addWidget(self.line_27)
|
||||||
|
|
||||||
self.pbFilesList = QWidget(self.posterboardPageContent)
|
self.pbFilesList = QWidget(self.pbTendiesPage)
|
||||||
self.pbFilesList.setObjectName(u"pbFilesList")
|
self.pbFilesList.setObjectName(u"pbFilesList")
|
||||||
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
sizePolicy7 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||||
sizePolicy5.setHorizontalStretch(0)
|
sizePolicy7.setHorizontalStretch(0)
|
||||||
sizePolicy5.setVerticalStretch(0)
|
sizePolicy7.setVerticalStretch(0)
|
||||||
sizePolicy5.setHeightForWidth(self.pbFilesList.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.pbFilesList.sizePolicy().hasHeightForWidth())
|
||||||
self.pbFilesList.setSizePolicy(sizePolicy5)
|
self.pbFilesList.setSizePolicy(sizePolicy7)
|
||||||
self.pbFilesList.setMinimumSize(QSize(200, 35))
|
self.pbFilesList.setMinimumSize(QSize(200, 35))
|
||||||
|
|
||||||
self.verticalLayout_133.addWidget(self.pbFilesList)
|
self.verticalLayout_38.addWidget(self.pbFilesList)
|
||||||
|
|
||||||
self.horizontalLayout_14 = QHBoxLayout()
|
self.horizontalLayout_32 = QHBoxLayout()
|
||||||
self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
|
self.horizontalLayout_32.setObjectName(u"horizontalLayout_32")
|
||||||
self.horizontalLayout_14.setContentsMargins(-1, -1, -1, 0)
|
self.horizontalLayout_32.setContentsMargins(-1, -1, -1, 10)
|
||||||
self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
self.horizontalSpacer_22 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
self.horizontalLayout_14.addItem(self.horizontalSpacer_19)
|
self.horizontalLayout_32.addItem(self.horizontalSpacer_22)
|
||||||
|
|
||||||
self.deleteAllDescriptorsBtn = QToolButton(self.posterboardPageContent)
|
self.deleteAllDescriptorsBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.deleteAllDescriptorsBtn.setObjectName(u"deleteAllDescriptorsBtn")
|
self.deleteAllDescriptorsBtn.setObjectName(u"deleteAllDescriptorsBtn")
|
||||||
icon23 = QIcon()
|
icon25 = QIcon()
|
||||||
icon23.addFile(u":/icon/arrow.clockwise.svg", QSize(), QIcon.Normal, QIcon.Off)
|
icon25.addFile(u":/icon/arrow.clockwise.svg", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.deleteAllDescriptorsBtn.setIcon(icon23)
|
self.deleteAllDescriptorsBtn.setIcon(icon25)
|
||||||
self.deleteAllDescriptorsBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.deleteAllDescriptorsBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_14.addWidget(self.deleteAllDescriptorsBtn)
|
self.horizontalLayout_32.addWidget(self.deleteAllDescriptorsBtn)
|
||||||
|
|
||||||
self.resetPRBExtBtn = QToolButton(self.posterboardPageContent)
|
self.resetPRBExtBtn = QToolButton(self.pbTendiesPage)
|
||||||
self.resetPRBExtBtn.setObjectName(u"resetPRBExtBtn")
|
self.resetPRBExtBtn.setObjectName(u"resetPRBExtBtn")
|
||||||
self.resetPRBExtBtn.setIcon(icon23)
|
self.resetPRBExtBtn.setIcon(icon25)
|
||||||
self.resetPRBExtBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.resetPRBExtBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_14.addWidget(self.resetPRBExtBtn)
|
self.horizontalLayout_32.addWidget(self.resetPRBExtBtn)
|
||||||
|
|
||||||
self.horizontalSpacer_20 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
self.horizontalSpacer_23 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
self.horizontalLayout_14.addItem(self.horizontalSpacer_20)
|
self.horizontalLayout_32.addItem(self.horizontalSpacer_23)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_133.addLayout(self.horizontalLayout_14)
|
self.verticalLayout_38.addLayout(self.horizontalLayout_32)
|
||||||
|
|
||||||
|
self.pbPages.addWidget(self.pbTendiesPage)
|
||||||
|
self.pbVideoPage = QWidget()
|
||||||
|
self.pbVideoPage.setObjectName(u"pbVideoPage")
|
||||||
|
self.verticalLayout_39 = QVBoxLayout(self.pbVideoPage)
|
||||||
|
self.verticalLayout_39.setObjectName(u"verticalLayout_39")
|
||||||
|
self.caVideoChk = QCheckBox(self.pbVideoPage)
|
||||||
|
self.caVideoChk.setObjectName(u"caVideoChk")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.caVideoChk)
|
||||||
|
|
||||||
|
self.reverseLoopChk = QCheckBox(self.pbVideoPage)
|
||||||
|
self.reverseLoopChk.setObjectName(u"reverseLoopChk")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.reverseLoopChk)
|
||||||
|
|
||||||
|
self.useForegroundChk = QCheckBox(self.pbVideoPage)
|
||||||
|
self.useForegroundChk.setObjectName(u"useForegroundChk")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.useForegroundChk)
|
||||||
|
|
||||||
|
self.horizontalLayout_30 = QHBoxLayout()
|
||||||
|
self.horizontalLayout_30.setObjectName(u"horizontalLayout_30")
|
||||||
|
self.chooseThumbBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.chooseThumbBtn.setObjectName(u"chooseThumbBtn")
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addWidget(self.chooseThumbBtn)
|
||||||
|
|
||||||
|
self.chooseVideoBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.chooseVideoBtn.setObjectName(u"chooseVideoBtn")
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addWidget(self.chooseVideoBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_19 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_30.addItem(self.horizontalSpacer_19)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_143.addWidget(self.posterboardPageContent)
|
self.verticalLayout_39.addLayout(self.horizontalLayout_30)
|
||||||
|
|
||||||
|
self.pbVideoThumbLbl = QLabel(self.pbVideoPage)
|
||||||
|
self.pbVideoThumbLbl.setObjectName(u"pbVideoThumbLbl")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.pbVideoThumbLbl)
|
||||||
|
|
||||||
|
self.pbVideoLbl = QLabel(self.pbVideoPage)
|
||||||
|
self.pbVideoLbl.setObjectName(u"pbVideoLbl")
|
||||||
|
|
||||||
|
self.verticalLayout_39.addWidget(self.pbVideoLbl)
|
||||||
|
|
||||||
|
self.verticalSpacer_22 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||||
|
|
||||||
|
self.verticalLayout_39.addItem(self.verticalSpacer_22)
|
||||||
|
|
||||||
|
self.horizontalLayout_34 = QHBoxLayout()
|
||||||
|
self.horizontalLayout_34.setObjectName(u"horizontalLayout_34")
|
||||||
|
self.horizontalLayout_34.setContentsMargins(-1, 0, -1, -1)
|
||||||
|
self.clearSuggestedBtn = QToolButton(self.pbVideoPage)
|
||||||
|
self.clearSuggestedBtn.setObjectName(u"clearSuggestedBtn")
|
||||||
|
self.clearSuggestedBtn.setIcon(icon25)
|
||||||
|
self.clearSuggestedBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
|
self.horizontalLayout_34.addWidget(self.clearSuggestedBtn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_24 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_34.addItem(self.horizontalSpacer_24)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_39.addLayout(self.horizontalLayout_34)
|
||||||
|
|
||||||
|
self.pbPages.addWidget(self.pbVideoPage)
|
||||||
|
|
||||||
|
self.verticalLayout_143.addWidget(self.pbPages)
|
||||||
|
|
||||||
self.pages.addWidget(self.posterboardPage)
|
self.pages.addWidget(self.posterboardPage)
|
||||||
self.advancedOptionsPage = QWidget()
|
self.advancedOptionsPage = QWidget()
|
||||||
@@ -2394,13 +2538,13 @@ class Ui_Nugget(object):
|
|||||||
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
|
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
|
||||||
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
|
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
|
||||||
self.advancedOptionsPageContent.setEnabled(True)
|
self.advancedOptionsPageContent.setEnabled(True)
|
||||||
self.verticalLayout_134 = QVBoxLayout(self.advancedOptionsPageContent)
|
self.verticalLayout_133 = QVBoxLayout(self.advancedOptionsPageContent)
|
||||||
self.verticalLayout_134.setObjectName(u"verticalLayout_134")
|
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
|
||||||
self.verticalLayout_134.setContentsMargins(0, 0, 0, 0)
|
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
|
||||||
self.label_17 = QLabel(self.advancedOptionsPageContent)
|
self.label_17 = QLabel(self.advancedOptionsPageContent)
|
||||||
self.label_17.setObjectName(u"label_17")
|
self.label_17.setObjectName(u"label_17")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.label_17)
|
self.verticalLayout_133.addWidget(self.label_17)
|
||||||
|
|
||||||
self.line_191 = QFrame(self.advancedOptionsPageContent)
|
self.line_191 = QFrame(self.advancedOptionsPageContent)
|
||||||
self.line_191.setObjectName(u"line_191")
|
self.line_191.setObjectName(u"line_191")
|
||||||
@@ -2410,17 +2554,17 @@ class Ui_Nugget(object):
|
|||||||
self.line_191.setFrameShadow(QFrame.Plain)
|
self.line_191.setFrameShadow(QFrame.Plain)
|
||||||
self.line_191.setFrameShape(QFrame.HLine)
|
self.line_191.setFrameShape(QFrame.HLine)
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.line_191)
|
self.verticalLayout_133.addWidget(self.line_191)
|
||||||
|
|
||||||
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
|
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.disableOTAChk.setObjectName(u"disableOTAChk")
|
self.disableOTAChk.setObjectName(u"disableOTAChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.disableOTAChk)
|
self.verticalLayout_133.addWidget(self.disableOTAChk)
|
||||||
|
|
||||||
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
|
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
|
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.thermalmonitordChk)
|
self.verticalLayout_133.addWidget(self.thermalmonitordChk)
|
||||||
|
|
||||||
self.line_181 = QFrame(self.advancedOptionsPageContent)
|
self.line_181 = QFrame(self.advancedOptionsPageContent)
|
||||||
self.line_181.setObjectName(u"line_181")
|
self.line_181.setObjectName(u"line_181")
|
||||||
@@ -2430,12 +2574,12 @@ class Ui_Nugget(object):
|
|||||||
self.line_181.setFrameShadow(QFrame.Plain)
|
self.line_181.setFrameShadow(QFrame.Plain)
|
||||||
self.line_181.setFrameShape(QFrame.HLine)
|
self.line_181.setFrameShape(QFrame.HLine)
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.line_181)
|
self.verticalLayout_133.addWidget(self.line_181)
|
||||||
|
|
||||||
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
|
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
|
||||||
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
|
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.enableResolutionChk)
|
self.verticalLayout_133.addWidget(self.enableResolutionChk)
|
||||||
|
|
||||||
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
|
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
|
||||||
self.resChangerContent.setObjectName(u"resChangerContent")
|
self.resChangerContent.setObjectName(u"resChangerContent")
|
||||||
@@ -2511,11 +2655,11 @@ class Ui_Nugget(object):
|
|||||||
self.verticalLayout_35.addLayout(self.resolutionContent)
|
self.verticalLayout_35.addLayout(self.resolutionContent)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_134.addWidget(self.resChangerContent)
|
self.verticalLayout_133.addWidget(self.resChangerContent)
|
||||||
|
|
||||||
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||||
|
|
||||||
self.verticalLayout_134.addItem(self.verticalSpacer_63)
|
self.verticalLayout_133.addItem(self.verticalSpacer_63)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout_144.addWidget(self.advancedOptionsPageContent)
|
self.verticalLayout_144.addWidget(self.advancedOptionsPageContent)
|
||||||
@@ -2609,9 +2753,9 @@ class Ui_Nugget(object):
|
|||||||
self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
|
self.horizontalLayout_7.setContentsMargins(-1, 10, -1, 0)
|
||||||
self.chooseGestaltBtn = QToolButton(self.verticalWidget2)
|
self.chooseGestaltBtn = QToolButton(self.verticalWidget2)
|
||||||
self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
|
self.chooseGestaltBtn.setObjectName(u"chooseGestaltBtn")
|
||||||
icon24 = QIcon()
|
icon26 = QIcon()
|
||||||
icon24.addFile(u":/icon/folder.svg", QSize(), QIcon.Normal, QIcon.Off)
|
icon26.addFile(u":/icon/folder.svg", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.chooseGestaltBtn.setIcon(icon24)
|
self.chooseGestaltBtn.setIcon(icon26)
|
||||||
self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.chooseGestaltBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
|
self.horizontalLayout_7.addWidget(self.chooseGestaltBtn)
|
||||||
@@ -2776,12 +2920,6 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self._21.addWidget(self.showRiskyChk)
|
self._21.addWidget(self.showRiskyChk)
|
||||||
|
|
||||||
self.windowsPathFixChk = QCheckBox(self.settingsPageContent)
|
|
||||||
self.windowsPathFixChk.setObjectName(u"windowsPathFixChk")
|
|
||||||
self.windowsPathFixChk.setChecked(True)
|
|
||||||
|
|
||||||
self._21.addWidget(self.windowsPathFixChk)
|
|
||||||
|
|
||||||
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
|
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
|
||||||
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
|
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
|
||||||
|
|
||||||
@@ -3031,9 +3169,9 @@ class Ui_Nugget(object):
|
|||||||
" padding-right: 5px;\n"
|
" padding-right: 5px;\n"
|
||||||
" border-radius: 0px;\n"
|
" border-radius: 0px;\n"
|
||||||
"}")
|
"}")
|
||||||
icon25 = QIcon()
|
icon27 = QIcon()
|
||||||
icon25.addFile(u":/icon/pencil.svg", QSize(), QIcon.Normal, QIcon.Off)
|
icon27.addFile(u":/icon/pencil.svg", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.toolButton_12.setIcon(icon25)
|
self.toolButton_12.setIcon(icon27)
|
||||||
self.toolButton_12.setIconSize(QSize(25, 25))
|
self.toolButton_12.setIconSize(QSize(25, 25))
|
||||||
|
|
||||||
self.horizontalLayout_22.addWidget(self.toolButton_12)
|
self.horizontalLayout_22.addWidget(self.toolButton_12)
|
||||||
@@ -3094,7 +3232,7 @@ class Ui_Nugget(object):
|
|||||||
self.importOperationBtn = QToolButton(self.customOperationsPageContent)
|
self.importOperationBtn = QToolButton(self.customOperationsPageContent)
|
||||||
self.importOperationBtn.setObjectName(u"importOperationBtn")
|
self.importOperationBtn.setObjectName(u"importOperationBtn")
|
||||||
self.importOperationBtn.setEnabled(True)
|
self.importOperationBtn.setEnabled(True)
|
||||||
self.importOperationBtn.setIcon(icon22)
|
self.importOperationBtn.setIcon(icon24)
|
||||||
self.importOperationBtn.setIconSize(QSize(20, 20))
|
self.importOperationBtn.setIconSize(QSize(20, 20))
|
||||||
self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
self.importOperationBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
|
||||||
|
|
||||||
@@ -3120,8 +3258,8 @@ class Ui_Nugget(object):
|
|||||||
self.operationsCnt = QWidget(self.customOperationsPageContent)
|
self.operationsCnt = QWidget(self.customOperationsPageContent)
|
||||||
self.operationsCnt.setObjectName(u"operationsCnt")
|
self.operationsCnt.setObjectName(u"operationsCnt")
|
||||||
self.operationsCnt.setEnabled(True)
|
self.operationsCnt.setEnabled(True)
|
||||||
sizePolicy5.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.operationsCnt.sizePolicy().hasHeightForWidth())
|
||||||
self.operationsCnt.setSizePolicy(sizePolicy5)
|
self.operationsCnt.setSizePolicy(sizePolicy7)
|
||||||
|
|
||||||
self.verticalLayout_19.addWidget(self.operationsCnt)
|
self.verticalLayout_19.addWidget(self.operationsCnt)
|
||||||
|
|
||||||
@@ -3150,9 +3288,9 @@ class Ui_Nugget(object):
|
|||||||
" padding-right: 5px;\n"
|
" padding-right: 5px;\n"
|
||||||
" border-radius: 0px;\n"
|
" border-radius: 0px;\n"
|
||||||
"}")
|
"}")
|
||||||
icon26 = QIcon()
|
icon28 = QIcon()
|
||||||
icon26.addFile(u":/icon/compass.svg", QSize(), QIcon.Normal, QIcon.Off)
|
icon28.addFile(u":/icon/compass.svg", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.toolButton_16.setIcon(icon26)
|
self.toolButton_16.setIcon(icon28)
|
||||||
|
|
||||||
self.horizontalLayout_31.addWidget(self.toolButton_16)
|
self.horizontalLayout_31.addWidget(self.toolButton_16)
|
||||||
|
|
||||||
@@ -3195,8 +3333,8 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.exploreThemesCnt = QWidget(self.explorePage)
|
self.exploreThemesCnt = QWidget(self.explorePage)
|
||||||
self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
|
self.exploreThemesCnt.setObjectName(u"exploreThemesCnt")
|
||||||
sizePolicy5.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
|
sizePolicy7.setHeightForWidth(self.exploreThemesCnt.sizePolicy().hasHeightForWidth())
|
||||||
self.exploreThemesCnt.setSizePolicy(sizePolicy5)
|
self.exploreThemesCnt.setSizePolicy(sizePolicy7)
|
||||||
|
|
||||||
self.verticalLayout_31.addWidget(self.exploreThemesCnt)
|
self.verticalLayout_31.addWidget(self.exploreThemesCnt)
|
||||||
|
|
||||||
@@ -3262,15 +3400,13 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self.importThemeFolderBtn = QToolButton(self.horizontalWidget7)
|
self.importThemeFolderBtn = QToolButton(self.horizontalWidget7)
|
||||||
self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
|
self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
|
||||||
self.importThemeFolderBtn.setIcon(icon24)
|
self.importThemeFolderBtn.setIcon(icon26)
|
||||||
|
|
||||||
self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
|
self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
|
||||||
|
|
||||||
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
|
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
|
||||||
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
|
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
|
||||||
icon27 = QIcon()
|
self.importThemeZipBtn.setIcon(icon22)
|
||||||
icon27.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
|
|
||||||
self.importThemeZipBtn.setIcon(icon27)
|
|
||||||
|
|
||||||
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
|
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
|
||||||
|
|
||||||
@@ -3425,8 +3561,10 @@ class Ui_Nugget(object):
|
|||||||
self.helpFromBtn.setText(QCoreApplication.translate("Nugget", u"With Help From", None))
|
self.helpFromBtn.setText(QCoreApplication.translate("Nugget", u"With Help From", None))
|
||||||
self.posterRestoreBtn.setText(QCoreApplication.translate("Nugget", u"PosterRestore Team\n"
|
self.posterRestoreBtn.setText(QCoreApplication.translate("Nugget", u"PosterRestore Team\n"
|
||||||
"Posterboard", None))
|
"Posterboard", None))
|
||||||
|
self.snoolieBtn.setText(QCoreApplication.translate("Nugget", u"Snoolie\n"
|
||||||
|
".aar Handling", None))
|
||||||
self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
|
self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
|
||||||
"Clock Anim, Photos UI", None))
|
"Feature Flags", None))
|
||||||
self.mikasaBtn.setText(QCoreApplication.translate("Nugget", u"Mikasa\n"
|
self.mikasaBtn.setText(QCoreApplication.translate("Nugget", u"Mikasa\n"
|
||||||
"Quiet Daemon", None))
|
"Quiet Daemon", None))
|
||||||
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
|
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
|
||||||
@@ -3685,11 +3823,13 @@ class Ui_Nugget(object):
|
|||||||
self.modifyPosterboardsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
|
self.modifyPosterboardsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
|
||||||
self.findPBBtn.setText(QCoreApplication.translate("Nugget", u" Find Wallpapers", None))
|
self.findPBBtn.setText(QCoreApplication.translate("Nugget", u" Find Wallpapers", None))
|
||||||
self.pbHelpBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
|
self.pbHelpBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
|
||||||
|
self.tendiesPageBtn.setText(QCoreApplication.translate("Nugget", u" Tendies", None))
|
||||||
|
self.videoPageBtn.setText(QCoreApplication.translate("Nugget", u" Live", None))
|
||||||
|
self.pbActionLbl.setText(QCoreApplication.translate("Nugget", u"None", None))
|
||||||
#if QT_CONFIG(tooltip)
|
#if QT_CONFIG(tooltip)
|
||||||
self.importTendiesBtn.setToolTip(QCoreApplication.translate("Nugget", u"Select a wallpaper file with the .tendies extension.", None))
|
self.importTendiesBtn.setToolTip(QCoreApplication.translate("Nugget", u"Select a wallpaper file with the .tendies extension.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.importTendiesBtn.setText(QCoreApplication.translate("Nugget", u" Import Files (.tendies)", None))
|
self.importTendiesBtn.setText(QCoreApplication.translate("Nugget", u" Import Files (.tendies)", None))
|
||||||
self.pbActionLbl.setText(QCoreApplication.translate("Nugget", u"None", None))
|
|
||||||
#if QT_CONFIG(tooltip)
|
#if QT_CONFIG(tooltip)
|
||||||
self.deleteAllDescriptorsBtn.setToolTip(QCoreApplication.translate("Nugget", u"Clears all the wallpapers in the Collections section so that you can import more.", None))
|
self.deleteAllDescriptorsBtn.setToolTip(QCoreApplication.translate("Nugget", u"Clears all the wallpapers in the Collections section so that you can import more.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
@@ -3700,6 +3840,24 @@ class Ui_Nugget(object):
|
|||||||
"Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.", None))
|
"Warning: This will remove all of your wallpapers and will restrict you from adding new ones until you restore again.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.resetPRBExtBtn.setText(QCoreApplication.translate("Nugget", u" Remove All Wallpapers", None))
|
self.resetPRBExtBtn.setText(QCoreApplication.translate("Nugget", u" Remove All Wallpapers", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.caVideoChk.setToolTip(QCoreApplication.translate("Nugget", u"Uses the CoreAnimation file to play the video (300 fps limit)\n"
|
||||||
|
"Will show up in Collections", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.caVideoChk.setText(QCoreApplication.translate("Nugget", u"Loop (use CoreAnimation method)", None))
|
||||||
|
self.reverseLoopChk.setText(QCoreApplication.translate("Nugget", u"Reverse on Loop", None))
|
||||||
|
self.useForegroundChk.setText(QCoreApplication.translate("Nugget", u"Make Foreground (hides clock)", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.chooseThumbBtn.setToolTip(QCoreApplication.translate("Nugget", u"Choose a photo for the wallpaper to freeze on when finished (.heic files only)", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.chooseThumbBtn.setText(QCoreApplication.translate("Nugget", u"Choose Freeze Frame (.HEIC)", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.chooseVideoBtn.setToolTip(QCoreApplication.translate("Nugget", u"Choose a video file for the wallpaper (.mov or .mp4)", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.chooseVideoBtn.setText(QCoreApplication.translate("Nugget", u"Choose Video", None))
|
||||||
|
self.pbVideoThumbLbl.setText(QCoreApplication.translate("Nugget", u"Current Thumbnail: None", None))
|
||||||
|
self.pbVideoLbl.setText(QCoreApplication.translate("Nugget", u"Current Video: None", None))
|
||||||
|
self.clearSuggestedBtn.setText(QCoreApplication.translate("Nugget", u" Clear Suggested Photos", None))
|
||||||
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
|
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
|
||||||
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
|
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -3741,7 +3899,6 @@ class Ui_Nugget(object):
|
|||||||
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
||||||
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
||||||
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
||||||
self.windowsPathFixChk.setText(QCoreApplication.translate("Nugget", u"Use Windows Path Fix (for Posterboard)", None))
|
|
||||||
#if QT_CONFIG(tooltip)
|
#if QT_CONFIG(tooltip)
|
||||||
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
|
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
|
||||||
#endif // QT_CONFIG(tooltip)
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
pymobiledevice3
|
pymobiledevice3
|
||||||
PySide6-Essentials
|
PySide6-Essentials
|
||||||
PyInstaller
|
PyInstaller
|
||||||
|
ffmpeg
|
||||||
|
ffmpeg-python
|
||||||
|
opencv-python
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Resource object code (Python 3)
|
# Resource object code (Python 3)
|
||||||
# Created by: object code
|
# Created by: object code
|
||||||
# Created by: The Resource Compiler for Qt version 6.6.3
|
# Created by: The Resource Compiler for Qt version 6.8.2
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
|
||||||
from PySide6 import QtCore
|
from PySide6 import QtCore
|
||||||
@@ -235598,7 +235598,7 @@ qt_resource_struct = b"\
|
|||||||
\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x007d\x95\
|
\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x007d\x95\
|
||||||
\x00\x00\x01\x95\x82z\xa7E\
|
\x00\x00\x01\x95\x82z\xa7E\
|
||||||
\x00\x00\x03|\x00\x00\x00\x00\x00\x01\x007H\xbf\
|
\x00\x00\x03|\x00\x00\x00\x00\x00\x01\x007H\xbf\
|
||||||
\x00\x00\x01\x95\xc8T\x85\x10\
|
\x00\x00\x01\x95\xc8\x82\x5c\xbb\
|
||||||
\x00\x00\x02\x84\x00\x00\x00\x00\x00\x01\x007*\xc4\
|
\x00\x00\x02\x84\x00\x00\x00\x00\x00\x01\x007*\xc4\
|
||||||
\x00\x00\x01\x95\x82z\xa7D\
|
\x00\x00\x01\x95\x82z\xa7D\
|
||||||
\x00\x00\x03\xc4\x00\x00\x00\x00\x00\x01\x007O\x1a\
|
\x00\x00\x03\xc4\x00\x00\x00\x00\x00\x01\x007O\x1a\
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from .tweak_classes import Tweak
|
from .tweak_classes import Tweak
|
||||||
|
from controllers.files_handler import get_bundle_files
|
||||||
from Sparserestore.restore import FileToRestore
|
from Sparserestore.restore import FileToRestore
|
||||||
from devicemanagement.constants import Version
|
from devicemanagement.constants import Version
|
||||||
|
|
||||||
@@ -47,10 +48,7 @@ class EligibilityTweak(Tweak):
|
|||||||
return None
|
return None
|
||||||
print(f"Applying EU Enabler for region \'{self.code}\'...")
|
print(f"Applying EU Enabler for region \'{self.code}\'...")
|
||||||
# get the plists directory
|
# get the plists directory
|
||||||
try:
|
source_dir = get_bundle_files("files/eligibility")
|
||||||
source_dir = path.join(sys._MEIPASS, "files/eligibility")
|
|
||||||
except:
|
|
||||||
source_dir = path.join(getcwd(), "files/eligibility")
|
|
||||||
|
|
||||||
# start with eligibility.plist
|
# start with eligibility.plist
|
||||||
file_path = path.join(source_dir, 'eligibility.plist')
|
file_path = path.join(source_dir, 'eligibility.plist')
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
import os
|
import os
|
||||||
import zipfile
|
import zipfile
|
||||||
import uuid
|
import uuid
|
||||||
import re
|
|
||||||
from random import randint
|
from random import randint
|
||||||
from PySide6 import QtWidgets, QtCore, QtGui
|
from shutil import copytree
|
||||||
|
from PySide6 import QtWidgets
|
||||||
|
|
||||||
from .tweak_classes import Tweak
|
from .tweak_classes import Tweak
|
||||||
from Sparserestore.restore import FileToRestore
|
from Sparserestore.restore import FileToRestore
|
||||||
from controllers.plist_handler import set_plist_value
|
from controllers.plist_handler import set_plist_value
|
||||||
from controllers.path_handler import fix_windows_path
|
from controllers.files_handler import get_bundle_files
|
||||||
from qt.ui_mainwindow import Ui_Nugget
|
from controllers import video_handler
|
||||||
|
from controllers.aar.aar import wrap_in_aar
|
||||||
|
|
||||||
class TendieFile:
|
class TendieFile:
|
||||||
path: str
|
path: str
|
||||||
@@ -61,9 +62,14 @@ class PosterboardTweak(Tweak):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(key=None)
|
super().__init__(key=None)
|
||||||
self.tendies: list[TendieFile] = []
|
self.tendies: list[TendieFile] = []
|
||||||
|
self.videoThumbnail = None
|
||||||
|
self.videoFile = None
|
||||||
|
self.loop_video = True
|
||||||
|
self.reverse_video = False
|
||||||
|
self.use_foreground = False
|
||||||
self.bundle_id = "com.apple.PosterBoard"
|
self.bundle_id = "com.apple.PosterBoard"
|
||||||
self.resetting = False
|
self.resetting = False
|
||||||
self.resetType = 0 # 0 for descriptor 1 for prb
|
self.resetType = 0 # 0 for descriptor, 1 for prb, 2 for suggested photos
|
||||||
self.structure_version = 61
|
self.structure_version = 61
|
||||||
|
|
||||||
def add_tendie(self, file: str):
|
def add_tendie(self, file: str):
|
||||||
@@ -106,6 +112,8 @@ class PosterboardTweak(Tweak):
|
|||||||
isAdding: bool = False,
|
isAdding: bool = False,
|
||||||
randomizeUUID: bool = False, randomizedID: int = None
|
randomizeUUID: bool = False, randomizedID: int = None
|
||||||
):
|
):
|
||||||
|
if not os.path.isdir(curr_path):
|
||||||
|
return
|
||||||
for folder in sorted(os.listdir(curr_path)):
|
for folder in sorted(os.listdir(curr_path)):
|
||||||
if folder.startswith('.') or folder == "__MACOSX":
|
if folder.startswith('.') or folder == "__MACOSX":
|
||||||
continue
|
continue
|
||||||
@@ -150,10 +158,75 @@ class PosterboardTweak(Tweak):
|
|||||||
isAdding=True,
|
isAdding=True,
|
||||||
randomizeUUID=True
|
randomizeUUID=True
|
||||||
)
|
)
|
||||||
|
elif name == "video-descriptor" or name == "video-descriptors":
|
||||||
|
self.recursive_add(
|
||||||
|
files_to_restore,
|
||||||
|
os.path.join(curr_path, folder),
|
||||||
|
restore_path="/Library/Application Support/PRBPosterExtensionDataStore/61/Extensions/com.apple.PhotosUIPrivate.PhotosPosterProvider/descriptors",
|
||||||
|
isAdding=True,
|
||||||
|
randomizeUUID=True
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
self.recursive_add(files_to_restore, os.path.join(curr_path, folder), isAdding=False)
|
self.recursive_add(files_to_restore, os.path.join(curr_path, folder), isAdding=False)
|
||||||
|
|
||||||
def apply_tweak(self, files_to_restore: list[FileToRestore], output_dir: str, version: str):
|
def create_live_photo_files(self, output_dir: str):
|
||||||
|
if self.videoFile != None and not self.loop_video:
|
||||||
|
source_dir = get_bundle_files("files/posterboard/1F20C883-EA98-4CCE-9923-0C9A01359721")
|
||||||
|
video_output_dir = os.path.join(output_dir, "video-descriptor/1F20C883-EA98-4CCE-9923-0C9A01359721")
|
||||||
|
copytree(source_dir, video_output_dir, dirs_exist_ok=True)
|
||||||
|
contents_path = os.path.join(video_output_dir, "versions/0/contents/0EFB6A0F-7052-4D24-8859-AB22BADF2E93")
|
||||||
|
|
||||||
|
# convert the video first
|
||||||
|
video_contents = None
|
||||||
|
if self.videoFile.endswith('.mov'):
|
||||||
|
# no need to convert
|
||||||
|
with open(self.videoFile, "rb") as vid:
|
||||||
|
video_contents = vid.read()
|
||||||
|
else:
|
||||||
|
# convert to mov
|
||||||
|
video_contents = video_handler.convert_to_mov(input_file=self.videoFile)
|
||||||
|
# now replace video
|
||||||
|
with open(os.path.join(contents_path, "output.layerStack/portrait-layer_settling-video.MOV"), "wb") as overriding:
|
||||||
|
overriding.write(video_contents)
|
||||||
|
aar_path = os.path.join(contents_path, "input.segmentation/segmentation.data.aar")
|
||||||
|
wrap_in_aar(get_bundle_files("files/posterboard/contents.plist"), video_contents, aar_path)
|
||||||
|
|
||||||
|
# replace the heic files
|
||||||
|
if self.videoThumbnail != None:
|
||||||
|
del video_contents
|
||||||
|
with open(self.videoThumbnail, "rb") as thumb:
|
||||||
|
thumb_contents = thumb.read()
|
||||||
|
else:
|
||||||
|
raise Exception("No thumbnail heic selected!")
|
||||||
|
# get the thumbnail from the video
|
||||||
|
thumb_contents = video_handler.get_thumbnail_from_contents(contents=video_contents)
|
||||||
|
del video_contents
|
||||||
|
to_override = ["input.segmentation/asset.resource/Adjusted.HEIC", "input.segmentation/asset.resource/proxy.heic", "output.layerStack/portrait-layer_background.HEIC"]
|
||||||
|
for file in to_override:
|
||||||
|
with open(os.path.join(contents_path, file), "wb") as overriding:
|
||||||
|
overriding.write(thumb_contents)
|
||||||
|
del thumb_contents
|
||||||
|
|
||||||
|
def create_video_loop_files(self, output_dir: str, update_label=lambda x: None):
|
||||||
|
print(f"file: {self.videoFile}, looping: {self.loop_video}")
|
||||||
|
if self.videoFile and self.loop_video:
|
||||||
|
source_dir = get_bundle_files("files/posterboard/VideoCAML")
|
||||||
|
video_output_dir = os.path.join(output_dir, "descriptor/VideoCAML")
|
||||||
|
copytree(source_dir, video_output_dir, dirs_exist_ok=True)
|
||||||
|
contents_path = os.path.join(video_output_dir, "versions/1/contents/9183.Custom-810w-1080h@2x~ipad.wallpaper")
|
||||||
|
if self.use_foreground:
|
||||||
|
# rename the foreground layer to background
|
||||||
|
bg_path = os.path.join(contents_path, "9183.Custom_Background-810w-1080h@2x~ipad.ca")
|
||||||
|
contents_path = os.path.join(contents_path, "9183.Custom_Floating-810w-1080h@2x~ipad.ca")
|
||||||
|
os.rename(contents_path, bg_path)
|
||||||
|
else:
|
||||||
|
contents_path = os.path.join(contents_path, "9183.Custom_Background-810w-1080h@2x~ipad.ca")
|
||||||
|
print(f"path at {contents_path}, creating caml")
|
||||||
|
video_handler.create_caml(video_path=self.videoFile, output_file=contents_path, auto_reverses=self.reverse_video, update_label=update_label)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def apply_tweak(self, files_to_restore: list[FileToRestore], output_dir: str, version: str, update_label=lambda x: None):
|
||||||
# unzip the file
|
# unzip the file
|
||||||
if not self.enabled:
|
if not self.enabled:
|
||||||
return
|
return
|
||||||
@@ -169,6 +242,9 @@ class PosterboardTweak(Tweak):
|
|||||||
# resetting descriptors
|
# resetting descriptors
|
||||||
file_paths.append(f"/{self.structure_version}/Extensions/com.apple.WallpaperKit.CollectionsPoster/descriptors")
|
file_paths.append(f"/{self.structure_version}/Extensions/com.apple.WallpaperKit.CollectionsPoster/descriptors")
|
||||||
file_paths.append(f"/{self.structure_version}/Extensions/com.apple.MercuryPoster/descriptors")
|
file_paths.append(f"/{self.structure_version}/Extensions/com.apple.MercuryPoster/descriptors")
|
||||||
|
elif self.resetType == 2:
|
||||||
|
# resetting suggested photos
|
||||||
|
file_paths.append(f"/{self.structure_version}/Extensions/com.apple.PhotosUIPrivate.PhotosPosterProvider/descriptors")
|
||||||
else:
|
else:
|
||||||
file_paths.append("")
|
file_paths.append("")
|
||||||
for file_path in file_paths:
|
for file_path in file_paths:
|
||||||
@@ -178,12 +254,17 @@ class PosterboardTweak(Tweak):
|
|||||||
domain=f"AppDomain-{self.bundle_id}"
|
domain=f"AppDomain-{self.bundle_id}"
|
||||||
))
|
))
|
||||||
return
|
return
|
||||||
elif self.tendies == None or len(self.tendies) == 0:
|
elif (self.tendies == None or len(self.tendies) == 0) and (self.videoFile == None):
|
||||||
return
|
return
|
||||||
|
update_label("Generating PosterBoard Video...")
|
||||||
|
self.create_video_loop_files(output_dir, update_label=update_label)
|
||||||
for tendie in self.tendies:
|
for tendie in self.tendies:
|
||||||
|
update_label(f"Extracting {tendie.name}...")
|
||||||
zip_output = os.path.join(output_dir, str(uuid.uuid4()))
|
zip_output = os.path.join(output_dir, str(uuid.uuid4()))
|
||||||
os.makedirs(zip_output)
|
os.makedirs(zip_output)
|
||||||
with zipfile.ZipFile(tendie.path, 'r') as zip_ref:
|
with zipfile.ZipFile(tendie.path, 'r') as zip_ref:
|
||||||
zip_ref.extractall(zip_output)
|
zip_ref.extractall(zip_output)
|
||||||
# add the files
|
# add the files
|
||||||
|
update_label("Adding tendies...")
|
||||||
self.recursive_add(files_to_restore, curr_path=output_dir)
|
self.recursive_add(files_to_restore, curr_path=output_dir)
|
||||||
|
update_label("Adding other tweaks...")
|
||||||
|
|||||||
Reference in New Issue
Block a user