/* sc_app.h — состояние и главный цикл Sprinter Commander. */ #ifndef SC_APP_H #define SC_APP_H #include #include "sc_command.h" #include "sc_copy.h" #include "sc_panel.h" #define SC_PANEL_COUNT 2u #define SC_PANEL_VISIBLE 27u #define SC_EMM_PAGE_COUNT 4u typedef struct ScApp { ScPanel panels[SC_PANEL_COUNT]; uint8_t active_panel; uint8_t running; uint8_t emm_block; uint8_t screen_page; uint8_t copy_page; uint16_t emm_total_before; uint16_t emm_free_before; ScCopyJob copy_job; const char *status; } ScApp; int sc_app_init(ScApp *app); void sc_app_run(ScApp *app); int sc_app_cleanup(ScApp *app); void sc_draw_all(const ScApp *app) __banked; void sc_draw_panel_rows(const ScApp *app, uint8_t panel_index) __banked; void sc_draw_panel_row(const ScApp *app, uint8_t panel_index, uint8_t row) __banked; void sc_draw_info(const ScApp *app) __banked; void sc_draw_status(const ScApp *app) __banked; uint8_t sc_dialog_confirm_quit(void) __banked; uint8_t sc_dialog_confirm(const char *title, const char *message) __banked; void sc_dialog_message(const char *title, const char *message) __banked; uint8_t sc_dialog_choice(const char *title, const char *message, const char *keys, const char *buttons) __banked; uint8_t sc_dialog_input(const char *title, const char *prompt, char *buffer, uint8_t capacity) __banked; /* Возвращает выбранную ASCII-клавишу из keys в верхнем регистре; Esc = 0. */ uint8_t sc_dialog_choice(const char *title, const char *message, const char *keys, const char *buttons) __banked; #endif