mirror of
https://github.com/dimoniche/changer.git
synced 2026-01-30 01:03:30 +03:00
99 lines
2.2 KiB
C
99 lines
2.2 KiB
C
#ifndef _MENU_H_
|
|
#define _MENU_H_
|
|
|
|
#include "cpu.h"
|
|
|
|
#define MENU_LINES_NUMBER 4
|
|
#define MENU_SYMB_NUMBER 20
|
|
|
|
|
|
// ñëóæåáíûå ñèìâîëû
|
|
#define SYMB_GO_UP 0x87
|
|
#define SYMB_GO_DOWN 0x86
|
|
|
|
#define SYMB_RIGHT_ARROW 0x3E
|
|
#define SYMB_DESC_MARK 0x3E
|
|
#define SYMB_IND_MARK 0x3C
|
|
#define SYMB_POINT_MARK 0x3E
|
|
|
|
|
|
// ñòðóêòóðà îïèñàíèÿ ïóíêòà ìåíþ
|
|
typedef struct{
|
|
|
|
// òèï ïóíêòà ìåíþ
|
|
CPU_INT08U LineType;
|
|
#define MENU_LINE_STRING 0 // ïðîñòî ñòðîêà
|
|
#define MENU_LINE_GOTO_MENU 1 // ïåðåõîä íà äðóãîå ìåíþ
|
|
#define MENU_LINE_SHOW_DESC 2 // îòîáðàæåíèå ïàðàìåòðà
|
|
#define MENU_LINE_INDEX 3 // èíäåêñ ìàññèâà
|
|
|
|
// äîï. ôëàãè
|
|
CPU_INT08U Flags;
|
|
#define MENU_FIXED_LINE 0x01 // ôèêñèðîâàííàÿ ñòðîêà
|
|
#define MENU_INDEX_LINE 0x02 // ñòðîêà ñ èíäåêñîì ìàññèâà
|
|
|
|
// óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
|
void* Ptr;
|
|
|
|
// ïàíåëü äëÿ ïåðåõîäà
|
|
void* GoToPtr;
|
|
|
|
}TMenuLine;
|
|
|
|
|
|
// äëÿ ìàññèâà ñòðîê
|
|
typedef struct{
|
|
const TMenuLine* pMenuLine;
|
|
}TMenuLineArray;
|
|
|
|
|
|
// ñòðóêòóðà îïèñàíèÿ ïàíåëè ìåíþ
|
|
typedef struct{
|
|
|
|
// óêàçàòåëü íà ìàññèâ ñòðîê
|
|
const TMenuLineArray* LineArray;
|
|
|
|
// óêàçàòåëü íà ôóíêöèþ, âûïîëíÿåìóþ ïåðåä âõîäîì â ïàíåëü
|
|
void (*InitFunc)(void);
|
|
|
|
// ÷èñëî ñòðîê â äàííîì ìåíþ
|
|
CPU_INT08U LineNum;
|
|
|
|
// òèï ïàíåëè
|
|
CPU_INT08U PanelType;
|
|
#define MENU_PANEL_STANDARD 0 // îáû÷íàÿ ïàíåëü, ñ ïåðåìåùåíèåì ïî ìåíþ
|
|
#define MENU_PANEL_STATIC 1 // ñòàòè÷åñêàÿ ïàíåëü
|
|
|
|
}TMenuPanel;
|
|
|
|
|
|
// ýëåìåíò ñòåêà âîçâðàòîâ ìåíþ
|
|
typedef struct{
|
|
|
|
// óêàçàòåëü íà ïðåäûäóùåå ìåíþ
|
|
const TMenuPanel* PrevMenu;
|
|
// àêòèâíàÿ ëèíèÿ â ïðåäûäóùåì ìåíþ
|
|
CPU_INT08U PrevActiveLine;
|
|
|
|
}TMenuStack;
|
|
|
|
|
|
///////////////////////////////////
|
|
// ôóíêöèè äëÿ ðàáîòû ñ ìåíþ
|
|
///////////////////////////////////
|
|
// èíèöèàëèçàöèÿ ìåíþ
|
|
extern void InitMenu(void);
|
|
// ïåðåõîä íà çàäàííóþ ïàíåëü ìåíþ
|
|
extern void GoToMenu(const TMenuPanel* Menu);
|
|
extern void SetMenu(const TMenuPanel* Menu);
|
|
// âîçâðàò â ïðåäûäóùåå ìåíþ
|
|
extern void GoToPreviousMenu(void);
|
|
// ïåðåçàïóñê ìåíþ
|
|
extern void ReInitMenu(void);
|
|
|
|
extern void MenuSprintf(CPU_INT08U* str, CPU_INT08U len, CPU_INT32U Val);
|
|
extern TMenuPanel* GetCurrentMenu(void);
|
|
extern void RefreshMenu(void);
|
|
|
|
#endif //#ifndef _MENU_H_
|