This commit is contained in:
SergeySlice 2021-03-26 05:59:19 +03:00
commit 94340676ea
8 changed files with 109 additions and 123 deletions

View File

@ -46,7 +46,7 @@ then
fi
if ! [ -f "$SCRIPT_DIR"/disk_image_gpt.img ]
then
unzip -o "$SCRIPT_DIR"/disk_image_gpt.img.zip
unzip -o "$SCRIPT_DIR"/disk_image_gpt.img.zip -d "$SCRIPT_DIR"
rm -rf "$SCRIPT_DIR"/__MACOSX
fi

View File

@ -2881,47 +2881,47 @@ EFI_STATUS GetEarlyUserSettings (
if (Prop != NULL) {
gSettings.Language = Prop->getString()->stringValue();
if ( Prop->getString()->stringValue().contains("en") ) {
gSettings.GUI.gLanguage = english;
gSettings.GUI.Language = english;
// gSettings.GUI.Codepage = 0xC0;
// gSettings.GUI.CodepageSize = 0;
} else if ( Prop->getString()->stringValue().contains("ru")) {
gSettings.GUI.gLanguage = russian;
gSettings.GUI.Language = russian;
// gSettings.GUI.Codepage = 0x410;
// gSettings.GUI.CodepageSize = 0x40;
} else if ( Prop->getString()->stringValue().contains("ua")) {
gSettings.GUI.gLanguage = ukrainian;
gSettings.GUI.Language = ukrainian;
// gSettings.GUI.Codepage = 0x400;
// gSettings.GUI.CodepageSize = 0x60;
} else if ( Prop->getString()->stringValue().contains("fr")) {
gSettings.GUI.gLanguage = french; //default is extended latin
gSettings.GUI.Language = french; //default is extended latin
} else if ( Prop->getString()->stringValue().contains("it")) {
gSettings.GUI.gLanguage = italian;
gSettings.GUI.Language = italian;
} else if ( Prop->getString()->stringValue().contains("es")) {
gSettings.GUI.gLanguage = spanish;
gSettings.GUI.Language = spanish;
} else if ( Prop->getString()->stringValue().contains("pt")) {
gSettings.GUI.gLanguage = portuguese;
gSettings.GUI.Language = portuguese;
} else if ( Prop->getString()->stringValue().contains("br")) {
gSettings.GUI.gLanguage = brasil;
gSettings.GUI.Language = brasil;
} else if ( Prop->getString()->stringValue().contains("de")) {
gSettings.GUI.gLanguage = german;
gSettings.GUI.Language = german;
} else if ( Prop->getString()->stringValue().contains("nl")) {
gSettings.GUI.gLanguage = dutch;
gSettings.GUI.Language = dutch;
} else if ( Prop->getString()->stringValue().contains("pl")) {
gSettings.GUI.gLanguage = polish;
gSettings.GUI.Language = polish;
} else if ( Prop->getString()->stringValue().contains("cz")) {
gSettings.GUI.gLanguage = czech;
gSettings.GUI.Language = czech;
} else if ( Prop->getString()->stringValue().contains("hr")) {
gSettings.GUI.gLanguage = croatian;
gSettings.GUI.Language = croatian;
} else if ( Prop->getString()->stringValue().contains("id")) {
gSettings.GUI.gLanguage = indonesian;
gSettings.GUI.Language = indonesian;
} else if ( Prop->getString()->stringValue().contains("zh_CN")) {
gSettings.GUI.gLanguage = chinese;
gSettings.GUI.Language = chinese;
// gSettings.GUI.Codepage = 0x3400;
// gSettings.GUI.CodepageSize = 0x19C0;
} else if ( Prop->getString()->stringValue().contains("ro")) {
gSettings.GUI.gLanguage = romanian;
gSettings.GUI.Language = romanian;
} else if ( Prop->getString()->stringValue().contains("ko")) {
gSettings.GUI.gLanguage = korean;
gSettings.GUI.Language = korean;
// gSettings.GUI.Codepage = 0x1100;
// gSettings.GUI.CodepageSize = 0x100;
}
@ -4027,6 +4027,7 @@ static void getACPISettings(const TagDict *CfgDict, SETTINGS_DATA& gSettings)
DBG(" (%s)", dsdtPatch.PatchDsdtLabel.c_str());
Prop3 = Prop2->propertyForKey("Disabled");
dsdtPatch.Disabled = IsPropertyNotNullAndTrue(Prop3);
dsdtPatch.PatchDsdtMenuItem.BValue = !IsPropertyNotNullAndTrue(Prop3);
//DBG(" DSDT bin patch #%d ", i);

View File

@ -417,9 +417,10 @@ public:
class DSDT_Patch
{
public :
bool Disabled = bool();
XString8 PatchDsdtLabel = XString8();
XBuffer<UINT8> PatchDsdtFind = XBuffer<UINT8>();
XBuffer<UINT8> PatchDsdtReplace = XBuffer<UINT8>();
XString8 PatchDsdtLabel = XString8();
XBuffer<UINT8> PatchDsdtTgt = XBuffer<UINT8>();
INPUT_ITEM PatchDsdtMenuItem = INPUT_ITEM();
@ -502,13 +503,13 @@ public:
{
public:
XStringW DsdtName = XStringW();
bool DebugDSDT = 0;
bool Rtc8Allowed = 0;
bool DebugDSDT = 0;
bool Rtc8Allowed = 0;
UINT8 PNLF_UID = 0;
UINT32 FixDsdt = 0;
bool ReuseFFFF = 0;
bool SuspendOverride = 0;
XObjArray<DSDT_Patch> DSDTPatchArray = XObjArray<DSDT_Patch>();
bool ReuseFFFF = 0;
bool SuspendOverride = 0;
} DSDT = DSDTClass();
class SSDTClass
@ -548,9 +549,9 @@ public:
bool NoASPM = 0;
bool smartUPS = 0;
bool PatchNMI = 0;
XString8Array SortedACPI = XString8Array();
bool AutoMerge = 0;
XStringWArray DisabledAML = XStringWArray();
XString8Array SortedACPI = XString8Array();
XObjArray<ACPI_NAME_LIST> DeviceRename = XObjArray<ACPI_NAME_LIST>();
} ACPI = ACPIClass();
@ -568,7 +569,7 @@ public:
XStringW ScreenResolution = XStringW();
bool ProvideConsoleGop = 0;
INTN ConsoleMode = 0;
LANGUAGES gLanguage = english;
LANGUAGES Language = english;
bool KbdPrevLang = 0;
class MouseClass {
public:

View File

@ -846,34 +846,26 @@ void LOADER_ENTRY::AddDefaultMenu()
if (OSFLAG_ISSET(Flags, OSFLAG_HIBERNATED)) {
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.takeValueFrom("Cancel hibernate wake");
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_HIBERNATED);
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.takeValueFrom("Cancel hibernate wake");
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_HIBERNATED);
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.SWPrintf("Boot %s with selected options", macOS);
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.SWPrintf("Boot %s with selected options", macOS);
SubScreen->AddMenuEntry(SubEntry, true);
#if 0
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.SWPrintf("Boot %s with injected kexts", macOS);
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC);
SubEntry->Flags = OSFLAG_SET(SubEntry->Flags, OSFLAG_WITHKEXTS);
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.SWPrintf("Boot %s with injected kexts", macOS);
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC);
SubEntry->Flags = OSFLAG_SET(SubEntry->Flags, OSFLAG_WITHKEXTS);
SubScreen->AddMenuEntry(SubEntry, true);
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.SWPrintf("Boot %s without injected kexts", macOS);
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC);
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_WITHKEXTS);
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.SWPrintf("Boot %s without injected kexts", macOS);
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_CHECKFAKESMC);
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_WITHKEXTS);
SubScreen->AddMenuEntry(SubEntry, true);
#endif
SubScreen->AddMenuEntry(SubMenuKextInjectMgmt(), true);
SubScreen->AddMenuInfo_f("=== boot-args ===");
@ -916,58 +908,50 @@ void LOADER_ENTRY::AddDefaultMenu()
// default entry
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str());
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str());
SubScreen->AddMenuEntry(SubEntry, true);
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
if (Quiet) {
SubEntry->Title.SWPrintf("%ls verbose", Title.s());
SubEntry->LoadOptions.removeIC(quietLitteral);
} else {
SubEntry->Title.SWPrintf("%ls quiet", Title.s());
SubEntry->LoadOptions.AddID(quietLitteral);
}
SubScreen->AddMenuEntry(SubEntry, true);
SubEntry = getPartiallyDuplicatedEntry();
if (WithSplash) {
SubEntry->Title.SWPrintf("%ls without splash", Title.s());
SubEntry->LoadOptions.removeIC(splashLitteral);
} else {
SubEntry->Title.SWPrintf("%ls with splash", Title.s());
SubEntry->LoadOptions.AddID(splashLitteral);
}
SubScreen->AddMenuEntry(SubEntry, true);
SubEntry = getPartiallyDuplicatedEntry();
if (WithSplash) {
if (Quiet) {
SubEntry->Title.SWPrintf("%ls verbose", Title.s());
SubEntry->Title.SWPrintf("%ls verbose without splash", Title.s());
SubEntry->LoadOptions.removeIC(splashLitteral);
SubEntry->LoadOptions.removeIC(quietLitteral);
} else {
SubEntry->Title.SWPrintf("%ls quiet", Title.s());
SubEntry->LoadOptions.AddID(quietLitteral);
}
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
if (WithSplash) {
SubEntry->Title.SWPrintf("%ls without splash", Title.s());
SubEntry->Title.SWPrintf("%ls quiet without splash",Title.s());
SubEntry->LoadOptions.removeIC(splashLitteral);
} else {
SubEntry->Title.SWPrintf("%ls with splash", Title.s());
SubEntry->LoadOptions.AddID(splashLitteral);
SubEntry->LoadOptions.Add(quietLitteral);
}
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
if (WithSplash) {
if (Quiet) {
SubEntry->Title.SWPrintf("%ls verbose without splash", Title.s());
SubEntry->LoadOptions.removeIC(splashLitteral);
SubEntry->LoadOptions.removeIC(quietLitteral);
} else {
SubEntry->Title.SWPrintf("%ls quiet without splash",Title.s());
SubEntry->LoadOptions.removeIC(splashLitteral);
SubEntry->LoadOptions.Add(quietLitteral);
}
} else if (Quiet) {
SubEntry->Title.SWPrintf("%ls verbose with splash",Title.s());
SubEntry->LoadOptions.removeIC(quietLitteral); //
SubEntry->LoadOptions.AddID(splashLitteral);
} else {
SubEntry->Title.SWPrintf("%ls quiet with splash",Title.s());
SubEntry->LoadOptions.AddID(quietLitteral);
SubEntry->LoadOptions.AddID(splashLitteral);
}
SubScreen->AddMenuEntry(SubEntry, true);
} else if (Quiet) {
SubEntry->Title.SWPrintf("%ls verbose with splash",Title.s());
SubEntry->LoadOptions.removeIC(quietLitteral); //
SubEntry->LoadOptions.AddID(splashLitteral);
} else {
SubEntry->Title.SWPrintf("%ls quiet with splash",Title.s());
SubEntry->LoadOptions.AddID(quietLitteral);
SubEntry->LoadOptions.AddID(splashLitteral);
}
SubScreen->AddMenuEntry(SubEntry, true);
} else if ((LoaderType == OSTYPE_WIN) || (LoaderType == OSTYPE_WINEFI)) {
// by default, skip the built-in selection and boot from hard disk only
@ -977,36 +961,33 @@ void LOADER_ENTRY::AddDefaultMenu()
// default entry
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str());
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str());
SubScreen->AddMenuEntry(SubEntry, true);
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.takeValueFrom("Boot Windows from Hard Disk");
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.takeValueFrom("Boot Windows from Hard Disk");
SubScreen->AddMenuEntry(SubEntry, true);
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.takeValueFrom("Boot Windows from CD-ROM");
LoadOptions.setEmpty();
LoadOptions.Add("-s"_XS8);
LoadOptions.Add("-c"_XS8);
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.takeValueFrom("Boot Windows from CD-ROM");
LoadOptions.setEmpty();
LoadOptions.Add("-s"_XS8);
LoadOptions.Add("-c"_XS8);
SubScreen->AddMenuEntry(SubEntry, true);
SubEntry = getPartiallyDuplicatedEntry();
if (SubEntry) {
SubEntry->Title.SWPrintf("Run %ls in text mode", FileName.wc_str());
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_USEGRAPHICS);
LoadOptions.setEmpty();
LoadOptions.Add("-v"_XS8);
SubEntry->LoaderType = OSTYPE_OTHER; // Sothor - Why are we using OSTYPE_OTHER here?
SubScreen->AddMenuEntry(SubEntry, true);
}
SubEntry->Title.SWPrintf("Run %ls in text mode", FileName.wc_str());
SubEntry->Flags = OSFLAG_UNSET(SubEntry->Flags, OSFLAG_USEGRAPHICS);
LoadOptions.setEmpty();
LoadOptions.Add("-v"_XS8);
SubEntry->LoaderType = OSTYPE_OTHER; // Sothor - Why are we using OSTYPE_OTHER here?
SubScreen->AddMenuEntry(SubEntry, true);
}else{
// default entry
SubEntry = getPartiallyDuplicatedEntry();
SubEntry->Title.SWPrintf("Run %ls", FileName.wc_str());
SubScreen->AddMenuEntry(SubEntry, true);
}
// SubScreen->AddMenuEntry(&MenuEntryReturn, false); //one-way ticket to avoid confusion

View File

@ -752,7 +752,7 @@ UINTN REFIT_MAINMENU_SCREEN::RunMainMenu(IN INTN DefaultSelection, OUT REFIT_ABS
MenuExit = RunGenericMenu(&DefaultEntryIndex, &MainChosenEntry);
TimeoutSeconds = 0;
if (MenuExit == MENU_EXIT_DETAILS && MainChosenEntry->SubScreen != NULL) {
if (MenuExit == MENU_EXIT_DETAILS && MainChosenEntry->SubScreen != NULL && MainChosenEntry->SubScreen->Entries.size() > 0) { // if MainChosenEntry->SubScreen->Entries.size() == 0, we got a crash in GraphicsMenuStyle
XString8Array TmpArgs;
if ( gSettings.Boot.BootArgs.length() > 0) {
TmpArgs = Split<XString8Array>(gSettings.Boot.BootArgs, " ");
@ -865,6 +865,8 @@ UINTN REFIT_MAINMENU_SCREEN::RunMainMenu(IN INTN DefaultSelection, OUT REFIT_ABS
}
//---------
}
}else{
MenuExit = 0; // loop on main menu
}
}

View File

@ -94,7 +94,7 @@ void XTheme::LoadFontImage(IN BOOLEAN UseEmbedded, IN INTN Rows, IN INTN Cols)
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *PixelPtr;
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FontPtr;
EFI_GRAPHICS_OUTPUT_BLT_PIXEL FirstPixel;
BOOLEAN isKorean = (gSettings.GUI.gLanguage == korean);
BOOLEAN isKorean = (gSettings.GUI.Language == korean);
XStringW fontFilePath;
const XStringW& commonFontDir = L"font"_XSW;
@ -108,7 +108,7 @@ void XTheme::LoadFontImage(IN BOOLEAN UseEmbedded, IN INTN Rows, IN INTN Cols)
CharWidth = 22; //standard for korean
} else {
MsgLog("...using english\n");
gSettings.GUI.gLanguage = english;
gSettings.GUI.Language = english;
}
}
@ -308,7 +308,7 @@ INTN XTheme::RenderText(IN const XStringW& Text, OUT XImage* CompImage_ptr,
for (UINTN i = 0; i < TextLength && c0 != 0; i++) {
UINT16 c = Text.wc_str()[i]; //including UTF8 -> UTF16 conversion
DBG("initial char to render 0x%hx\n", c); //good
if (gSettings.GUI.gLanguage != korean) { //russian Codepage = 0x410
if (gSettings.GUI.Language != korean) { //russian Codepage = 0x410
if (c >= 0x410 && c < 0x450) {
//we have russian raster fonts with chars at 0xC0
c -= 0x350;

View File

@ -2669,19 +2669,19 @@ void afterGetUserSettings(const SETTINGS_DATA& gSettings)
ThemeX.DarkEmbedded = gSettings.GUI.getDarkEmbedded(ThemeX.Daylight);
if ( gSettings.GUI.gLanguage == english ) {
if ( gSettings.GUI.Language == english ) {
GlobalConfig.Codepage = 0xC0;
GlobalConfig.CodepageSize = 0;
} else if ( gSettings.GUI.gLanguage == russian ) {
} else if ( gSettings.GUI.Language == russian ) {
GlobalConfig.Codepage = 0x410;
GlobalConfig.CodepageSize = 0x40;
} else if ( gSettings.GUI.gLanguage == ukrainian ) {
} else if ( gSettings.GUI.Language == ukrainian ) {
GlobalConfig.Codepage = 0x400;
GlobalConfig.CodepageSize = 0x60;
} else if ( gSettings.GUI.gLanguage == chinese ) {
} else if ( gSettings.GUI.Language == chinese ) {
GlobalConfig.Codepage = 0x3400;
GlobalConfig.CodepageSize = 0x19C0;
} else if ( gSettings.GUI.gLanguage == korean ) {
} else if ( gSettings.GUI.Language == korean ) {
GlobalConfig.Codepage = 0x1100;
GlobalConfig.CodepageSize = 0x100;
}
@ -2771,6 +2771,7 @@ RefitMain (IN EFI_HANDLE ImageHandle,
// PauseForKey(L"press\n");
#endif
}
gBS->Stall(2500000); // to give time to gdb to connect
#ifdef CLOVER_BUILD
construct_globals_objects(gImageHandle); // do this after self.getSelfLoadedImage() is initialized

View File

@ -1138,7 +1138,7 @@ void HelpRefit(void)
//else {
// HelpMenu.TitleImage.setEmpty();
//}
switch (gSettings.GUI.gLanguage)
switch (gSettings.GUI.Language)
{
case russian:
HelpMenu.AddMenuInfo_f("ESC - Выход из подменю, обновление главного меню");