palera1n/src/tui_main.c

102 lines
2.4 KiB
C
Raw Normal View History

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
}