mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-21 06:30:52 +10:00
GUI: Add MXM model and FU configuration
This commit is contained in:
@@ -259,7 +259,7 @@ class BuildGraphicsAudio:
|
|||||||
"CAIL,CAIL_DisableUVDPowerGating": 1,
|
"CAIL,CAIL_DisableUVDPowerGating": 1,
|
||||||
"CAIL,CAIL_DisableVCEPowerGating": 1,
|
"CAIL,CAIL_DisableVCEPowerGating": 1,
|
||||||
})
|
})
|
||||||
if self.constants.imac_model == "Legacy GCN":
|
if self.constants.imac_model == "GCN":
|
||||||
logging.info("- Adding Legacy GCN Power Gate Patches")
|
logging.info("- Adding Legacy GCN Power Gate Patches")
|
||||||
self.config["DeviceProperties"]["Add"][backlight_path].update({
|
self.config["DeviceProperties"]["Add"][backlight_path].update({
|
||||||
"CAIL,CAIL_DisableDrmdmaPowerGating": 1,
|
"CAIL,CAIL_DisableDrmdmaPowerGating": 1,
|
||||||
@@ -274,7 +274,7 @@ class BuildGraphicsAudio:
|
|||||||
"CAIL,CAIL_DisableUVDPowerGating": 1,
|
"CAIL,CAIL_DisableUVDPowerGating": 1,
|
||||||
"CAIL,CAIL_DisableVCEPowerGating": 1,
|
"CAIL,CAIL_DisableVCEPowerGating": 1,
|
||||||
})
|
})
|
||||||
elif self.constants.imac_model == "AMD Lexa":
|
elif self.constants.imac_model == "Lexa":
|
||||||
logging.info("- Adding Lexa Spoofing Patches")
|
logging.info("- Adding Lexa Spoofing Patches")
|
||||||
self.config["DeviceProperties"]["Add"][backlight_path].update({
|
self.config["DeviceProperties"]["Add"][backlight_path].update({
|
||||||
"model": "AMD Radeon Pro WX 3200",
|
"model": "AMD Radeon Pro WX 3200",
|
||||||
@@ -285,7 +285,7 @@ class BuildGraphicsAudio:
|
|||||||
"model": "AMD Radeon Pro WX 3200",
|
"model": "AMD Radeon Pro WX 3200",
|
||||||
"device-id": binascii.unhexlify("FF67"),
|
"device-id": binascii.unhexlify("FF67"),
|
||||||
})
|
})
|
||||||
elif self.constants.imac_model == "AMD Navi":
|
elif self.constants.imac_model == "Navi":
|
||||||
logging.info("- Adding Navi Spoofing Patches")
|
logging.info("- Adding Navi Spoofing Patches")
|
||||||
navi_backlight_path = backlight_path+"/Pci(0x0,0x0)/Pci(0x0,0x0)"
|
navi_backlight_path = backlight_path+"/Pci(0x0,0x0)/Pci(0x0,0x0)"
|
||||||
self.config["DeviceProperties"]["Add"][navi_backlight_path] = {
|
self.config["DeviceProperties"]["Add"][navi_backlight_path] = {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import subprocess
|
|||||||
|
|
||||||
from resources.wx_gui import gui_support
|
from resources.wx_gui import gui_support
|
||||||
|
|
||||||
from resources import constants, global_settings, defaults
|
from resources import constants, global_settings, defaults, generate_smbios
|
||||||
from data import model_array, sip_data, smbios_data
|
from data import model_array, sip_data, smbios_data
|
||||||
|
|
||||||
class SettingsFrame(wx.Frame):
|
class SettingsFrame(wx.Frame):
|
||||||
@@ -126,6 +126,9 @@ class SettingsFrame(wx.Frame):
|
|||||||
checkbox.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
checkbox.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
||||||
event = lambda event, warning=setting_info["warning"] if "warning" in setting_info else "", override=bool(setting_info["override_function"]) if "override_function" in setting_info else False: self.on_checkbox(event, warning, override)
|
event = lambda event, warning=setting_info["warning"] if "warning" in setting_info else "", override=bool(setting_info["override_function"]) if "override_function" in setting_info else False: self.on_checkbox(event, warning, override)
|
||||||
checkbox.Bind(wx.EVT_CHECKBOX, event)
|
checkbox.Bind(wx.EVT_CHECKBOX, event)
|
||||||
|
if "condition" in setting_info:
|
||||||
|
checkbox.Enable(setting_info["condition"])
|
||||||
|
checkbox.SetValue(setting_info["condition"])
|
||||||
|
|
||||||
elif setting_info["type"] == "spinctrl":
|
elif setting_info["type"] == "spinctrl":
|
||||||
# Add spinctrl, and description underneath
|
# Add spinctrl, and description underneath
|
||||||
@@ -137,9 +140,11 @@ class SettingsFrame(wx.Frame):
|
|||||||
label.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
label.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
||||||
elif setting_info["type"] == "combobox":
|
elif setting_info["type"] == "combobox":
|
||||||
# Add combobox, and description underneath
|
# Add combobox, and description underneath
|
||||||
combobox = wx.ComboBox(panel, value=setting_info["value"], pos=(width + 20, 10 + height), choices=setting_info["choices"], size = (100,-1))
|
combobox = wx.ComboBox(panel, value=setting_info["value"], pos=(width + 20, 10 + height), choices=setting_info["choices"], size = (130,-1))
|
||||||
combobox.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
combobox.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont"))
|
||||||
combobox.Bind(wx.EVT_COMBOBOX, lambda event, variable=setting: self.on_combobox(event, variable))
|
# combobox.Bind(wx.EVT_COMBOBOX, lambda event, variable=setting: self.on_combobox(event, variable))
|
||||||
|
if "override_function" in setting_info:
|
||||||
|
combobox.Bind(wx.EVT_COMBOBOX, lambda event, variable=setting: self.settings[tab][variable]["override_function"](event))
|
||||||
height += 10
|
height += 10
|
||||||
else:
|
else:
|
||||||
raise Exception("Invalid setting type")
|
raise Exception("Invalid setting type")
|
||||||
@@ -149,8 +154,6 @@ class SettingsFrame(wx.Frame):
|
|||||||
description.SetFont(wx.Font(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
description.SetFont(wx.Font(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||||
height += 40 if setting_info["type"] != "combobox" else 60
|
height += 40 if setting_info["type"] != "combobox" else 60
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Check number of lines in description, and adjust spacer accordingly
|
# Check number of lines in description, and adjust spacer accordingly
|
||||||
description_lines = len(lines.split('\n'))
|
description_lines = len(lines.split('\n'))
|
||||||
if description_lines > 1:
|
if description_lines > 1:
|
||||||
@@ -178,6 +181,7 @@ class SettingsFrame(wx.Frame):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
models = [model for model in smbios_data.smbios_dictionary if "_" not in model and " " not in model and smbios_data.smbios_dictionary[model]["Board ID"] is not None]
|
models = [model for model in smbios_data.smbios_dictionary if "_" not in model and " " not in model and smbios_data.smbios_dictionary[model]["Board ID"] is not None]
|
||||||
|
socketed_gpu_models = ["iMac9,1", "iMac10,1", "iMac11,1", "iMac11,2", "iMac11,3", "iMac12,1", "iMac12,2", "MacPro3,1", "MacPro4,1", "MacPro5,1", "Xserve2,1", "Xserve3,1"]
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"Build": {
|
"Build": {
|
||||||
@@ -192,6 +196,7 @@ class SettingsFrame(wx.Frame):
|
|||||||
"Enable booting macOS from",
|
"Enable booting macOS from",
|
||||||
"FireWire drives.",
|
"FireWire drives.",
|
||||||
],
|
],
|
||||||
|
"condition": not bool(generate_smbios.check_firewire(self.constants.computer.real_model) is False and not self.constants.custom_model)
|
||||||
},
|
},
|
||||||
"XHCI Booting": {
|
"XHCI Booting": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
@@ -199,7 +204,8 @@ class SettingsFrame(wx.Frame):
|
|||||||
"variable": "xhci_boot",
|
"variable": "xhci_boot",
|
||||||
"description": [
|
"description": [
|
||||||
"Enable booting macOS from add-in",
|
"Enable booting macOS from add-in",
|
||||||
"USB 3.0 expansion cards.",
|
"USB 3.0 expansion cards on systems",
|
||||||
|
"without native support.",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
"NVMe Booting": {
|
"NVMe Booting": {
|
||||||
@@ -208,21 +214,12 @@ class SettingsFrame(wx.Frame):
|
|||||||
"variable": "nvme_boot",
|
"variable": "nvme_boot",
|
||||||
"description": [
|
"description": [
|
||||||
"Enable booting macOS from NVMe",
|
"Enable booting macOS from NVMe",
|
||||||
"drives.",
|
"drives on systems without native",
|
||||||
|
"support.",
|
||||||
"Note: Requires Firmware support",
|
"Note: Requires Firmware support",
|
||||||
"for OpenCore to load from NVMe.",
|
"for OpenCore to load from NVMe.",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
"Wake on WLAN": {
|
|
||||||
"type": "checkbox",
|
|
||||||
"value": self.constants.enable_wake_on_wlan,
|
|
||||||
"variable": "enable_wake_on_wlan",
|
|
||||||
"description": [
|
|
||||||
"Disabled by default due to",
|
|
||||||
"performance degradation",
|
|
||||||
"on some systems from wake.",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"wrap_around 2": {
|
"wrap_around 2": {
|
||||||
"type": "wrap_around",
|
"type": "wrap_around",
|
||||||
},
|
},
|
||||||
@@ -231,7 +228,7 @@ class SettingsFrame(wx.Frame):
|
|||||||
"value": self.constants.set_content_caching,
|
"value": self.constants.set_content_caching,
|
||||||
"variable": "set_content_caching",
|
"variable": "set_content_caching",
|
||||||
"description": [
|
"description": [
|
||||||
"Enable Content Caching.",
|
# "Enable Content Caching.",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
"APFS Trim": {
|
"APFS Trim": {
|
||||||
@@ -244,12 +241,11 @@ class SettingsFrame(wx.Frame):
|
|||||||
],
|
],
|
||||||
|
|
||||||
},
|
},
|
||||||
"Show Boot Picker": {
|
"Show OpenCore Boot Picker": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"value": self.constants.showpicker,
|
"value": self.constants.showpicker,
|
||||||
"variable": "showpicker",
|
"variable": "showpicker",
|
||||||
"description": [
|
"description": [
|
||||||
"Show OpenCore boot picker",
|
|
||||||
"When disabled, users can hold ESC to",
|
"When disabled, users can hold ESC to",
|
||||||
"show picker in the firmware.",
|
"show picker in the firmware.",
|
||||||
],
|
],
|
||||||
@@ -259,8 +255,8 @@ class SettingsFrame(wx.Frame):
|
|||||||
"value": self.constants.oc_timeout,
|
"value": self.constants.oc_timeout,
|
||||||
"variable": "oc_timeout",
|
"variable": "oc_timeout",
|
||||||
"description": [
|
"description": [
|
||||||
"Timeout for OpenCore boot picker",
|
"Timeout before boot picker selects default",
|
||||||
"in seconds.",
|
"entry in seconds.",
|
||||||
"Set to 0 for no timeout.",
|
"Set to 0 for no timeout.",
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -306,24 +302,6 @@ class SettingsFrame(wx.Frame):
|
|||||||
"Miscellaneous": {
|
"Miscellaneous": {
|
||||||
"type": "title",
|
"type": "title",
|
||||||
},
|
},
|
||||||
"AMD GOP Injection": {
|
|
||||||
"type": "checkbox",
|
|
||||||
"value": self.constants.amd_gop_injection,
|
|
||||||
"variable": "amd_gop_injection",
|
|
||||||
"description": [
|
|
||||||
"Inject AMD GOP for boot screen",
|
|
||||||
"support on PC GPUs.",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"Nvidia GOP Injection": {
|
|
||||||
"type": "checkbox",
|
|
||||||
"value": self.constants.nvidia_kepler_gop_injection,
|
|
||||||
"variable": "nvidia_kepler_gop_injection",
|
|
||||||
"description": [
|
|
||||||
"Inject Nvidia Kepler GOP for boot",
|
|
||||||
"screen support on PC GPUs.",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"Disable Firmware Throttling": {
|
"Disable Firmware Throttling": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"value": self.constants.disable_fw_throttle,
|
"value": self.constants.disable_fw_throttle,
|
||||||
@@ -334,9 +312,18 @@ class SettingsFrame(wx.Frame):
|
|||||||
"Ex. Missing Display, Battery, etc.",
|
"Ex. Missing Display, Battery, etc.",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
"wrap_around 1": {
|
|
||||||
"type": "wrap_around",
|
"Wake on WLAN": {
|
||||||
|
"type": "checkbox",
|
||||||
|
"value": self.constants.enable_wake_on_wlan,
|
||||||
|
"variable": "enable_wake_on_wlan",
|
||||||
|
"description": [
|
||||||
|
"Disabled by default due to",
|
||||||
|
"performance degradation",
|
||||||
|
"on some systems from wake.",
|
||||||
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
"Software DeMUX": {
|
"Software DeMUX": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"value": self.constants.software_demux,
|
"value": self.constants.software_demux,
|
||||||
@@ -348,13 +335,17 @@ class SettingsFrame(wx.Frame):
|
|||||||
"Note: Requires associated NVRAM arg:",
|
"Note: Requires associated NVRAM arg:",
|
||||||
"'gpu-power-prefs'.",
|
"'gpu-power-prefs'.",
|
||||||
],
|
],
|
||||||
|
"condition": not bool(not self.constants.custom_model and self.constants.computer.real_model not in ["MacBookPro8,2", "MacBookPro8,3"])
|
||||||
|
},
|
||||||
|
"wrap_around 1": {
|
||||||
|
"type": "wrap_around",
|
||||||
},
|
},
|
||||||
"3rd Party NVMe PM": {
|
"3rd Party NVMe PM": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"value": self.constants.allow_nvme_fixing,
|
"value": self.constants.allow_nvme_fixing,
|
||||||
"variable": "allow_nvme_fixing",
|
"variable": "allow_nvme_fixing",
|
||||||
"description": [
|
"description": [
|
||||||
"Enable 3rd party NVMe power",
|
"Enable non-stock NVMe power",
|
||||||
"management in macOS.",
|
"management in macOS.",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -363,10 +354,80 @@ class SettingsFrame(wx.Frame):
|
|||||||
"value": self.constants.allow_3rd_party_drives,
|
"value": self.constants.allow_3rd_party_drives,
|
||||||
"variable": "allow_3rd_party_drives",
|
"variable": "allow_3rd_party_drives",
|
||||||
"description": [
|
"description": [
|
||||||
"Enable 3rd party SATA power",
|
"Enable non-stock SATA power",
|
||||||
"management in macOS.",
|
"management in macOS.",
|
||||||
],
|
],
|
||||||
|
"condition": not bool(self.constants.computer.third_party_sata_ssd is False and not self.constants.custom_model)
|
||||||
},
|
},
|
||||||
|
"FeatureUnlock": {
|
||||||
|
"type": "combobox",
|
||||||
|
"choices": [
|
||||||
|
"Enabled",
|
||||||
|
"Partial",
|
||||||
|
"Disabled",
|
||||||
|
],
|
||||||
|
"value": "Enabled",
|
||||||
|
"variable": "",
|
||||||
|
"description": [
|
||||||
|
"Configure FeatureUnlock level.",
|
||||||
|
"Recommend lowering if your system",
|
||||||
|
"experiences memory instability.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"Populate FeatureUnlock Override": {
|
||||||
|
"type": "populate",
|
||||||
|
"function": self._populate_fu_override,
|
||||||
|
"args": wx.Frame,
|
||||||
|
},
|
||||||
|
"Graphics": {
|
||||||
|
"type": "title",
|
||||||
|
},
|
||||||
|
"AMD GOP Injection": {
|
||||||
|
"type": "checkbox",
|
||||||
|
"value": self.constants.amd_gop_injection,
|
||||||
|
"variable": "amd_gop_injection",
|
||||||
|
"description": [
|
||||||
|
"Inject AMD GOP for boot screen",
|
||||||
|
"support on PC GPUs.",
|
||||||
|
],
|
||||||
|
"condition": not bool((not self.constants.custom_model and self.constants.computer.real_model not in socketed_gpu_models) or (self.constants.custom_model and self.constants.custom_model not in socketed_gpu_models))
|
||||||
|
},
|
||||||
|
"Nvidia GOP Injection": {
|
||||||
|
"type": "checkbox",
|
||||||
|
"value": self.constants.nvidia_kepler_gop_injection,
|
||||||
|
"variable": "nvidia_kepler_gop_injection",
|
||||||
|
"description": [
|
||||||
|
"Inject Nvidia Kepler GOP for boot",
|
||||||
|
"screen support on PC GPUs.",
|
||||||
|
],
|
||||||
|
"condition": not bool((not self.constants.custom_model and self.constants.computer.real_model not in socketed_gpu_models) or (self.constants.custom_model and self.constants.custom_model not in socketed_gpu_models))
|
||||||
|
},
|
||||||
|
"wrap_around 2": {
|
||||||
|
"type": "wrap_around",
|
||||||
|
},
|
||||||
|
"Graphics Override": {
|
||||||
|
"type": "combobox",
|
||||||
|
"choices": [
|
||||||
|
"None",
|
||||||
|
"Nvidia Kepler",
|
||||||
|
"AMD GCN",
|
||||||
|
"AMD Polaris",
|
||||||
|
"AMD Lexa",
|
||||||
|
"AMD Navi",
|
||||||
|
],
|
||||||
|
"value": "None",
|
||||||
|
"variable": "",
|
||||||
|
"description": [
|
||||||
|
"Override detected/assumed GPU on",
|
||||||
|
"socketed MXM-based iMacs.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"Populate Graphics Override": {
|
||||||
|
"type": "populate",
|
||||||
|
"function": self._populate_graphics_override,
|
||||||
|
"args": wx.Frame,
|
||||||
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
"Security": {
|
"Security": {
|
||||||
"Kernel Security": {
|
"Kernel Security": {
|
||||||
@@ -430,6 +491,7 @@ class SettingsFrame(wx.Frame):
|
|||||||
"By default this is disabled due to",
|
"By default this is disabled due to",
|
||||||
"common GPU failures on these models.",
|
"common GPU failures on these models.",
|
||||||
],
|
],
|
||||||
|
"condition": not bool(self.constants.computer.real_model not in ["MacBookPro8,2", "MacBookPro8,3"])
|
||||||
},
|
},
|
||||||
"wrap_around 1": {
|
"wrap_around 1": {
|
||||||
"type": "wrap_around",
|
"type": "wrap_around",
|
||||||
@@ -444,6 +506,7 @@ class SettingsFrame(wx.Frame):
|
|||||||
"on HD3000 GPUs in Ventura and newer.",
|
"on HD3000 GPUs in Ventura and newer.",
|
||||||
"Note: Disabling can cause UI corruption.",
|
"Note: Disabling can cause UI corruption.",
|
||||||
],
|
],
|
||||||
|
"condition": not bool(self.constants.computer.real_model not in ["MacBookAir4,1","MacBookAir4,2","MacBookPro8,1","MacBookPro8,2","MacBookPro8,3","Macmini5,1"])
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"SMBIOS": {
|
"SMBIOS": {
|
||||||
@@ -483,12 +546,12 @@ class SettingsFrame(wx.Frame):
|
|||||||
"wrap_around 1": {
|
"wrap_around 1": {
|
||||||
"type": "wrap_around",
|
"type": "wrap_around",
|
||||||
},
|
},
|
||||||
"Allow native spoofing": {
|
"Allow spoofing native Macs": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"value": self.constants.allow_native_spoofs,
|
"value": self.constants.allow_native_spoofs,
|
||||||
"variable": "allow_native_spoofs",
|
"variable": "allow_native_spoofs",
|
||||||
"description": [
|
"description": [
|
||||||
"Allow OpenCore to spoof to",
|
"Allow OpenCore to spoof",
|
||||||
"natively supported Macs.",
|
"natively supported Macs.",
|
||||||
"Primarily used for enabling",
|
"Primarily used for enabling",
|
||||||
"Universal Control.",
|
"Universal Control.",
|
||||||
@@ -563,7 +626,7 @@ class SettingsFrame(wx.Frame):
|
|||||||
"variable": "IgnoreAppUpdates",
|
"variable": "IgnoreAppUpdates",
|
||||||
"constants_variable": "ignore_updates",
|
"constants_variable": "ignore_updates",
|
||||||
"description": [
|
"description": [
|
||||||
"Ignore app updates",
|
# "Ignore app updates",
|
||||||
],
|
],
|
||||||
"override_function": self._update_global_settings,
|
"override_function": self._update_global_settings,
|
||||||
},
|
},
|
||||||
@@ -580,15 +643,15 @@ class SettingsFrame(wx.Frame):
|
|||||||
],
|
],
|
||||||
"override_function": self._update_global_settings,
|
"override_function": self._update_global_settings,
|
||||||
},
|
},
|
||||||
"Disable Unused KDKs": {
|
"Remove Unused KDKs": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"value": global_settings.GlobalEnviromentSettings().read_property("ShouldNukeKDKs") or self.constants.should_nuke_kdks,
|
"value": global_settings.GlobalEnviromentSettings().read_property("ShouldNukeKDKs") or self.constants.should_nuke_kdks,
|
||||||
"variable": "ShouldNukeKDKs",
|
"variable": "ShouldNukeKDKs",
|
||||||
"constants_variable": "should_nuke_kdks",
|
"constants_variable": "should_nuke_kdks",
|
||||||
"description": [
|
"description": [
|
||||||
"When enabled, the app will remove",
|
"When enabled, the app will remove",
|
||||||
"unused KDKs from the system during",
|
"unused Kernel Debug Kits from the system",
|
||||||
"root patching.",
|
"during root patching.",
|
||||||
],
|
],
|
||||||
"override_function": self._update_global_settings,
|
"override_function": self._update_global_settings,
|
||||||
},
|
},
|
||||||
@@ -651,8 +714,7 @@ class SettingsFrame(wx.Frame):
|
|||||||
|
|
||||||
# Label: Flip individual bits corresponding to XNU's csr.h
|
# Label: Flip individual bits corresponding to XNU's csr.h
|
||||||
# If you're unfamiliar with how SIP works, do not touch this menu
|
# If you're unfamiliar with how SIP works, do not touch this menu
|
||||||
sip_label = wx.StaticText(panel, label="Flip individual bits corresponding to", pos=(sip_title.GetPosition()[0] - 20
|
sip_label = wx.StaticText(panel, label="Flip individual bits corresponding to", pos=(sip_title.GetPosition()[0] - 20, sip_title.GetPosition()[1] + 30))
|
||||||
, sip_title.GetPosition()[1] + 30))
|
|
||||||
sip_label.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
sip_label.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont"))
|
||||||
|
|
||||||
# Hyperlink: csr.h
|
# Hyperlink: csr.h
|
||||||
@@ -886,6 +948,91 @@ Hardware Information:
|
|||||||
self.constants.custom_board_serial_number = event.GetEventObject().GetValue()
|
self.constants.custom_board_serial_number = event.GetEventObject().GetValue()
|
||||||
|
|
||||||
|
|
||||||
|
def _populate_fu_override(self, panel: wx.Panel) -> None:
|
||||||
|
gpu_combo_box: wx.ComboBox = None
|
||||||
|
index = 0
|
||||||
|
for child in panel.GetChildren():
|
||||||
|
if isinstance(child, wx.ComboBox):
|
||||||
|
gpu_combo_box = child
|
||||||
|
break
|
||||||
|
|
||||||
|
gpu_combo_box.Bind(wx.EVT_COMBOBOX, self.fu_selection_click)
|
||||||
|
if self.constants.fu_status is False:
|
||||||
|
gpu_combo_box.SetStringSelection("Disabled")
|
||||||
|
elif self.constants.fu_arguments is None:
|
||||||
|
gpu_combo_box.SetStringSelection("Enabled")
|
||||||
|
else:
|
||||||
|
gpu_combo_box.SetStringSelection("Partial")
|
||||||
|
|
||||||
|
|
||||||
|
def fu_selection_click(self, event: wx.Event) -> None:
|
||||||
|
value = event.GetEventObject().GetStringSelection()
|
||||||
|
if value == "Enabled":
|
||||||
|
self.constants.fu_status = True
|
||||||
|
self.constants.fu_arguments = None
|
||||||
|
return
|
||||||
|
|
||||||
|
if value == "Partial":
|
||||||
|
self.constants.fu_status = True
|
||||||
|
self.constants.fu_arguments = " -disable_sidecar_mac"
|
||||||
|
return
|
||||||
|
|
||||||
|
self.constants.fu_status = False
|
||||||
|
self.constants.fu_arguments = None
|
||||||
|
|
||||||
|
|
||||||
|
def _populate_graphics_override(self, panel: wx.Panel) -> None:
|
||||||
|
gpu_combo_box: wx.ComboBox = None
|
||||||
|
index = 0
|
||||||
|
for child in panel.GetChildren():
|
||||||
|
if isinstance(child, wx.ComboBox):
|
||||||
|
if index == 0:
|
||||||
|
index = index + 1
|
||||||
|
continue
|
||||||
|
gpu_combo_box = child
|
||||||
|
break
|
||||||
|
|
||||||
|
gpu_combo_box.Bind(wx.EVT_COMBOBOX, self.gpu_selection_click)
|
||||||
|
gpu_combo_box.SetStringSelection(f"{self.constants.imac_vendor} {self.constants.imac_model}")
|
||||||
|
|
||||||
|
socketed_gpu_models = ["iMac9,1", "iMac10,1", "iMac11,1", "iMac11,2", "iMac11,3", "iMac12,1", "iMac12,2"]
|
||||||
|
if ((not self.constants.custom_model and self.constants.computer.real_model not in socketed_gpu_models) or (self.constants.custom_model and self.constants.custom_model not in socketed_gpu_models)):
|
||||||
|
gpu_combo_box.Disable()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def gpu_selection_click(self, event: wx.Event) -> None:
|
||||||
|
gpu_choice = event.GetEventObject().GetStringSelection()
|
||||||
|
|
||||||
|
logging.info(f"Updating GPU Selection: {gpu_choice}")
|
||||||
|
if "AMD" in gpu_choice:
|
||||||
|
self.constants.imac_vendor = "AMD"
|
||||||
|
self.constants.metal_build = True
|
||||||
|
if "Polaris" in gpu_choice:
|
||||||
|
self.constants.imac_model = "Polaris"
|
||||||
|
elif "GCN" in gpu_choice:
|
||||||
|
self.constants.imac_model = "GCN"
|
||||||
|
elif "Lexa" in gpu_choice:
|
||||||
|
self.constants.imac_model = "Lexa"
|
||||||
|
elif "Navi" in gpu_choice:
|
||||||
|
self.constants.imac_model = "Navi"
|
||||||
|
else:
|
||||||
|
raise Exception("Unknown GPU Model")
|
||||||
|
elif "Nvidia" in gpu_choice:
|
||||||
|
self.constants.imac_vendor = "Nvidia"
|
||||||
|
self.constants.metal_build = True
|
||||||
|
if "Kepler" in gpu_choice:
|
||||||
|
self.constants.imac_model = "Kepler"
|
||||||
|
elif "GT" in gpu_choice:
|
||||||
|
self.constants.imac_model = "GT"
|
||||||
|
else:
|
||||||
|
raise Exception("Unknown GPU Model")
|
||||||
|
else:
|
||||||
|
self.constants.imac_vendor = "None"
|
||||||
|
self.constants.metal_build = False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _get_system_settings(self, variable) -> bool:
|
def _get_system_settings(self, variable) -> bool:
|
||||||
result = subprocess.run(["defaults", "read", "-g", variable], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
result = subprocess.run(["defaults", "read", "-g", variable], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
if result.returncode == 0:
|
if result.returncode == 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user