2023-01-29 13:08:48 +08:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <inttypes.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <locale.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <assert.h>
|
|
|
|
|
2023-02-06 01:03:29 +08:00
|
|
|
#include <palerain.h>
|
2023-01-29 13:08:48 +08:00
|
|
|
#include <tui.h>
|
|
|
|
|
|
|
|
int redraw_screen() {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int destroy_window() {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int init_window() {
|
|
|
|
setlocale(LC_ALL, NULL);
|
2023-02-07 16:53:44 +08:00
|
|
|
setenv(
|
|
|
|
"NEWT_COLORS",
|
|
|
|
"root=,black\n"
|
|
|
|
"border=lightgray,black\n"
|
|
|
|
"title=lightgray,black\n"
|
|
|
|
"roottext=red,black\n"
|
|
|
|
"label=lightgray,black\n"
|
|
|
|
"entry=lightgray,black\n"
|
|
|
|
"window=red,black\n"
|
|
|
|
"textbox=lightgray,black\n"
|
|
|
|
"button=black,lightgray\n"
|
|
|
|
"compactbutton=lightgray,black\n"
|
|
|
|
"listbox=lightgray,black\n"
|
|
|
|
"actlistbox=black,lightgray\n"
|
|
|
|
"actsellistbox=black,lightgray\n"
|
|
|
|
"checkbox=lightgray,black\n"
|
|
|
|
"actcheckbox=black,lightgray\n",
|
|
|
|
0);
|
2023-02-05 02:42:12 +08:00
|
|
|
|
2023-02-05 16:16:19 +08:00
|
|
|
tui_started = true;
|
2023-02-04 21:29:49 +08:00
|
|
|
newtInit();
|
2023-02-05 17:27:58 +08:00
|
|
|
int cols, rows;
|
|
|
|
newtGetScreenSize(&cols, &rows);
|
|
|
|
if (cols < 80 || rows < 24) {
|
|
|
|
newtFinished();
|
|
|
|
tui_started = false;
|
|
|
|
LOG(LOG_FATAL, "Terminal size must be at least 80x24");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
LOG(LOG_VERBOSE3, "cols: %d, rows: %d\n", cols, rows);
|
2023-02-04 21:29:49 +08:00
|
|
|
newtCls();
|
2023-02-05 14:37:01 +08:00
|
|
|
newtSetColor(PI_LOG_COLOR, "yellow", "black");
|
|
|
|
newtSetColor(PI_STEP_CURRENT, "lightgray", "black");
|
|
|
|
newtSetColor(PI_STEP_OTHER, "gray", "black");
|
2023-02-05 03:00:29 +08:00
|
|
|
newtDrawRootText(0, 0, "palera1n version 2.0.0");
|
2023-02-04 21:29:49 +08:00
|
|
|
newtPushHelpLine(NULL);
|
2023-01-29 13:08:48 +08:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int tui() {
|
2023-02-05 17:27:58 +08:00
|
|
|
int ret = 0;
|
|
|
|
if ((ret = init_window())) return ret;
|
|
|
|
ret = MAIN_SCREEN;
|
2023-01-29 13:08:48 +08:00
|
|
|
while (1) {
|
|
|
|
switch (ret) {
|
2023-02-04 21:29:49 +08:00
|
|
|
case ERROR_SCREEN:
|
|
|
|
goto out;
|
|
|
|
break;
|
|
|
|
case EXIT_SCREEN:
|
|
|
|
goto out;
|
|
|
|
break;
|
|
|
|
case MAIN_SCREEN:
|
|
|
|
ret = tui_screen_main();
|
|
|
|
break;
|
|
|
|
case OPTIONS_SCREEN:
|
|
|
|
ret = tui_screen_options();
|
|
|
|
break;
|
|
|
|
case ENTER_RECOVERY_SCREEN:
|
|
|
|
ret = tui_screen_enter_recovery();
|
|
|
|
break;
|
|
|
|
case ENTER_DFU_SCREEN:
|
|
|
|
ret = tui_screen_enter_dfu();
|
|
|
|
break;
|
|
|
|
case JAILBREAKING_SCREEN:
|
|
|
|
ret = tui_screen_jailbreak();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
assert(0);
|
|
|
|
goto out;
|
2023-01-29 13:08:48 +08:00
|
|
|
}
|
2023-02-04 21:29:49 +08:00
|
|
|
newtPopWindow();
|
2023-01-29 13:08:48 +08:00
|
|
|
}
|
|
|
|
out:
|
2023-02-04 21:29:49 +08:00
|
|
|
newtFinished();
|
2023-02-05 16:19:54 +08:00
|
|
|
tui_started = false;
|
2023-02-04 21:29:49 +08:00
|
|
|
return 0;
|
2023-01-29 13:08:48 +08:00
|
|
|
}
|