hebraic option windows
This commit is contained in:
parent
fc61921ab6
commit
e73cba81a5
5 changed files with 250 additions and 33 deletions
2
debug
2
debug
|
@ -1,2 +1,2 @@
|
||||||
gcc src/*.c src/server/*.c src/client/*.c -g -iquotesrc/ -lpthread -lncursesw -o bin/mahou
|
gcc src/*.c src/server/*.c src/client/*.c -g -iquotesrc/ -lpthread -lncursesw -lm -o bin/mahou
|
||||||
chmod +x bin/mahou
|
chmod +x bin/mahou
|
||||||
|
|
2
release
2
release
|
@ -1,2 +1,2 @@
|
||||||
gcc src/*.c src/server/*.c src/client/*.c -iquotesrc/ -lpthread -lncurses -o bin/mahou
|
gcc src/*.c src/server/*.c src/client/*.c -iquotesrc/ -lpthread -lncursesw -lm -o bin/mahou
|
||||||
chmod +x bin/mahou
|
chmod +x bin/mahou
|
||||||
|
|
|
@ -52,6 +52,7 @@ void client() {
|
||||||
initscr();
|
initscr();
|
||||||
|
|
||||||
start_color();
|
start_color();
|
||||||
|
scr_ctx_init();
|
||||||
keypad(stdscr, TRUE);
|
keypad(stdscr, TRUE);
|
||||||
|
|
||||||
while(running == TRUE) {
|
while(running == TRUE) {
|
||||||
|
@ -89,32 +90,35 @@ static int main_menu() {
|
||||||
BOOL polling = TRUE;
|
BOOL polling = TRUE;
|
||||||
int i, j, selected = 0, color, ch;
|
int i, j, selected = 0, color, ch;
|
||||||
|
|
||||||
clear();
|
erase();
|
||||||
noecho();
|
noecho();
|
||||||
cbreak();
|
cbreak();
|
||||||
|
|
||||||
#ifdef WORK
|
#ifdef WORK
|
||||||
init_pair(1, COLOR_WHITE, COLOR_BLACK);
|
attron(SCR_PAIR(SCR_WHITE, SCR_BLACK) | A_BOLD);
|
||||||
#else
|
#else
|
||||||
init_pair(1, COLOR_WHITE, COLOR_BLUE);
|
attron(SCR_PAIR(SCR_WHITE, SCR_BLUE) | A_BOLD);
|
||||||
#endif
|
#endif
|
||||||
init_pair(2, COLOR_BLACK, COLOR_CYAN);
|
|
||||||
|
|
||||||
attron(COLOR_PAIR(1) | A_BOLD);
|
|
||||||
|
|
||||||
scr_fill();
|
scr_fill();
|
||||||
draw_banner();
|
draw_banner();
|
||||||
|
|
||||||
attroff(COLOR_PAIR(1) | A_BOLD);
|
attroff(SCR_PAIR(SCR_WHITE, SCR_BLACK) | A_BOLD);
|
||||||
|
|
||||||
while(polling == TRUE) {
|
while(polling == TRUE) {
|
||||||
for(i = 0; i < MM_OPT_COUNT; ++i) {
|
for(i = 0; i < MM_OPT_COUNT; ++i) {
|
||||||
color = selected == i ? 2 : 1;
|
color = selected == i
|
||||||
|
? SCR_PAIR(SCR_BLACK, SCR_CYAN)
|
||||||
|
#ifdef WORK
|
||||||
|
: SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
#else
|
||||||
|
: SCR_PAIR(SCR_WHITE, SCR_BLUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
attron(COLOR_PAIR(color));
|
attron(color);
|
||||||
mvprintw(AFTER_BANNER + 3 + i*2, (COLS - (MM_MAX_OPT_LEN + 2)) / 2,
|
mvprintw(AFTER_BANNER + 3 + i*2, (COLS - (MM_MAX_OPT_LEN + 2)) / 2,
|
||||||
"* %s", MM_OPTIONS[i]);
|
"* %s", MM_OPTIONS[i]);
|
||||||
attroff(COLOR_PAIR(color));
|
attroff(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
|
@ -153,9 +157,9 @@ void create_account() {
|
||||||
|
|
||||||
scr_alert(20, "this prompt box is a test of prompt box is a test of prompt box is a test of prompt box is a test of prompt box is a test of");
|
scr_alert(20, "this prompt box is a test of prompt box is a test of prompt box is a test of prompt box is a test of prompt box is a test of");
|
||||||
|
|
||||||
int a = 0;
|
/*int a = 0;
|
||||||
while(a != KEY_LF)
|
while(a != KEY_LF)
|
||||||
printw("%i ", (a = getch()));
|
printw("%i ", (a = getch()));*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void client_loop() {
|
void client_loop() {
|
||||||
|
|
|
@ -1,5 +1,19 @@
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
|
||||||
|
void scr_ctx_init() {
|
||||||
|
short i, j, val;
|
||||||
|
short colors[] = {COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN,
|
||||||
|
COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE};
|
||||||
|
|
||||||
|
for(i = 0; i < 8; ++i) {
|
||||||
|
for(j = 0; j < 8; ++j) {
|
||||||
|
val = i * 8 + j;
|
||||||
|
__SCR_PAIRS[i][j] = val;
|
||||||
|
init_pair(val, colors[i], colors[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void scr_char_fill(char c) {
|
void scr_char_fill(char c) {
|
||||||
int i, j;
|
int i, j;
|
||||||
for(i = 0; i < LINES; ++i)
|
for(i = 0; i < LINES; ++i)
|
||||||
|
@ -44,32 +58,216 @@ void scr_box(int top, int left, int width, int height) {
|
||||||
addstr("\u2551");
|
addstr("\u2551");
|
||||||
}
|
}
|
||||||
|
|
||||||
mvaddstr(top, left, "\u255A");
|
mvaddstr(top + height - 1, left, "\u255A");
|
||||||
for(i = 0; i < width - 2; ++i)
|
for(i = 0; i < width - 2; ++i)
|
||||||
addstr("\u2550");
|
addstr("\u2550");
|
||||||
addstr("\u255D");
|
addstr("\u255D");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int calculate_height(int width, int length) {
|
WINDOW* scr_win_box(int top, int left, int width, int height) {
|
||||||
return (int)ciel((float)length / (float)width);
|
WINDOW *win = newwin(height - 2, width - 2, top + 1, left + 1);
|
||||||
|
scr_box(top, left, width, height);
|
||||||
|
refresh();
|
||||||
|
|
||||||
|
return win;
|
||||||
}
|
}
|
||||||
|
|
||||||
void scr_alert(int width, char *text) {
|
static int calculate_height(int width, int length) {
|
||||||
clear();
|
return (int)ceil((float)length / (float)width);
|
||||||
noecho();
|
}
|
||||||
cbreak();
|
|
||||||
|
|
||||||
int text_height = calculate_height(width, strlen(text));
|
|
||||||
|
|
||||||
|
/*static void init_prompt_pairs() {
|
||||||
|
#ifdef WORK
|
||||||
|
init_pair(1, COLOR_WHITE, COLOR_BLACK);
|
||||||
|
init_pair(2, COLOR_BLACK, COLOR_CYAN);
|
||||||
|
init_pair(3, COLOR_WHITE, COLOR_BLACK);
|
||||||
|
#else
|
||||||
init_pair(1, COLOR_WHITE, COLOR_BLUE);
|
init_pair(1, COLOR_WHITE, COLOR_BLUE);
|
||||||
init_pair(2, COLOR_BLACK, COLOR_CYAN);
|
init_pair(2, COLOR_BLACK, COLOR_CYAN);
|
||||||
init_pair(3, COLOR_WHITE, COLOR_BLACK);
|
init_pair(3, COLOR_WHITE, COLOR_BLACK);
|
||||||
|
#endif
|
||||||
|
}*/
|
||||||
|
|
||||||
attron(COLOR_PAIR(3));
|
void scr_alert(int width, char *text) {
|
||||||
|
erase();
|
||||||
|
noecho();
|
||||||
|
cbreak();
|
||||||
|
|
||||||
|
short pair;
|
||||||
|
WINDOW *win;
|
||||||
|
int text_height = calculate_height(width, strlen(text));
|
||||||
|
|
||||||
|
#ifdef WORK
|
||||||
|
pair = SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
#else
|
||||||
|
pair = SCR_PAIR(SCR_WHITE, SCR_BLUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
attron(pair);
|
||||||
scr_fill();
|
scr_fill();
|
||||||
attroff(COLOR_PAIR(3));
|
attron(pair);
|
||||||
|
|
||||||
attron(COLOR_PAIR(1));
|
attron(SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
scr_box(1, 1, 10, 10);
|
win = scr_win_box(1, (COLS - (width + 2)) / 2, width + 2, text_height + 4);
|
||||||
attroff(COLOR_PAIR(1));
|
attron(SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
|
||||||
|
wattron(win, SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
wprintw(win, text);
|
||||||
|
wattroff(win, SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
|
||||||
|
wattron(win, SCR_PAIR(SCR_BLACK, SCR_CYAN));
|
||||||
|
mvwprintw(win, text_height + 1, (width - 6) / 2, "[ OK ]");
|
||||||
|
wrefresh(win);
|
||||||
|
wattroff(win, SCR_PAIR(SCR_BLACK, SCR_CYAN));
|
||||||
|
|
||||||
|
scr_hide_cursor();
|
||||||
|
getch();
|
||||||
|
delwin(win);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL scr_prompt(int width, char *text) {
|
||||||
|
erase();
|
||||||
|
noecho();
|
||||||
|
cbreak();
|
||||||
|
|
||||||
|
int ch;
|
||||||
|
short pair;
|
||||||
|
BOOL retval = TRUE, loop = TRUE;
|
||||||
|
char check[] = "[ \u2714 ]";
|
||||||
|
char cross[] = "[ \u2718 ]";
|
||||||
|
WINDOW *win;
|
||||||
|
int text_height = calculate_height(width, strlen(text));
|
||||||
|
|
||||||
|
#ifdef WORK
|
||||||
|
pair = SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
#else
|
||||||
|
pair = SCR_PAIR(SCR_WHITE, SCR_BLUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
attron(pair);
|
||||||
|
scr_fill();
|
||||||
|
attron(pair);
|
||||||
|
|
||||||
|
attron(SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
win = scr_win_box(1, (COLS - (width + 2)) / 2, width + 2, text_height + 4);
|
||||||
|
attron(SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
|
||||||
|
wattron(win, SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
wprintw(win, text);
|
||||||
|
wrefresh(win);
|
||||||
|
wattroff(win, SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
|
||||||
|
while(loop) {
|
||||||
|
wmove(win, text_height + 1, (width - 12) / 2);
|
||||||
|
|
||||||
|
pair = retval == TRUE
|
||||||
|
? SCR_PAIR(SCR_BLACK, SCR_CYAN)
|
||||||
|
: SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
|
||||||
|
wattron(win, pair);
|
||||||
|
wprintw(win, check);
|
||||||
|
wattroff(win, pair);
|
||||||
|
|
||||||
|
wprintw(win, " ");
|
||||||
|
|
||||||
|
pair = retval == FALSE
|
||||||
|
? SCR_PAIR(SCR_BLACK, SCR_CYAN)
|
||||||
|
: SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
|
||||||
|
wattron(win, pair);
|
||||||
|
wprintw(win, cross);
|
||||||
|
wattroff(win, pair);
|
||||||
|
|
||||||
|
wrefresh(win);
|
||||||
|
|
||||||
|
scr_hide_cursor();
|
||||||
|
ch = getch();
|
||||||
|
switch(ch) {
|
||||||
|
case KEY_LEFT:
|
||||||
|
retval = TRUE;
|
||||||
|
break;
|
||||||
|
case KEY_RIGHT:
|
||||||
|
retval = FALSE;
|
||||||
|
break;
|
||||||
|
case KEY_LF:
|
||||||
|
case KEY_ENTER:
|
||||||
|
loop = FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delwin(win);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL scr_prompt_string(int width, char *text, char *out, int outlen) {
|
||||||
|
erase();
|
||||||
|
noecho();
|
||||||
|
cbreak();
|
||||||
|
|
||||||
|
int ch, curlen = 0;
|
||||||
|
short pair;
|
||||||
|
BOOL retval = TRUE, loop = TRUE;
|
||||||
|
WINDOW *win;
|
||||||
|
int text_height = calculate_height(width, strlen(text));
|
||||||
|
|
||||||
|
#ifdef WORK
|
||||||
|
pair = SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
#else
|
||||||
|
pair = SCR_PAIR(SCR_WHITE, SCR_BLUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
attron(pair);
|
||||||
|
scr_fill();
|
||||||
|
attron(pair);
|
||||||
|
|
||||||
|
attron(SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
win = scr_win_box(1, (COLS - (width + 2)) / 2, width + 2, text_height + 4);
|
||||||
|
attroff(SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
|
||||||
|
wattron(win, SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
wprintw(win, text);
|
||||||
|
wrefresh(win);
|
||||||
|
wattroff(win, SCR_PAIR(SCR_WHITE, SCR_BLACK));
|
||||||
|
|
||||||
|
out[0] = '\0';
|
||||||
|
while(loop) {
|
||||||
|
wmove(win, text_height + 1, (width - (outlen + 3)) / 2);
|
||||||
|
|
||||||
|
pair = retval == TRUE
|
||||||
|
? SCR_PAIR(SCR_BLACK, SCR_CYAN)
|
||||||
|
: SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
|
||||||
|
wattron(win, pair);
|
||||||
|
wprintw(win, check);
|
||||||
|
wattroff(win, pair);
|
||||||
|
|
||||||
|
wprintw(win, " ");
|
||||||
|
|
||||||
|
pair = retval == FALSE
|
||||||
|
? SCR_PAIR(SCR_BLACK, SCR_CYAN)
|
||||||
|
: SCR_PAIR(SCR_WHITE, SCR_BLACK);
|
||||||
|
|
||||||
|
wattron(win, pair);
|
||||||
|
wprintw(win, cross);
|
||||||
|
wattroff(win, pair);
|
||||||
|
|
||||||
|
wrefresh(win);
|
||||||
|
|
||||||
|
scr_hide_cursor();
|
||||||
|
ch = getch();
|
||||||
|
switch(ch) {
|
||||||
|
case KEY_LEFT:
|
||||||
|
retval = TRUE;
|
||||||
|
break;
|
||||||
|
case KEY_RIGHT:
|
||||||
|
retval = FALSE;
|
||||||
|
break;
|
||||||
|
case KEY_LF:
|
||||||
|
case KEY_ENTER:
|
||||||
|
loop = FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delwin(win);
|
||||||
}
|
}
|
|
@ -7,16 +7,31 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
#define SCR_BLACK 0
|
||||||
|
#define SCR_BLUE 1
|
||||||
|
#define SCR_GREEN 2
|
||||||
|
#define SCR_CYAN 3
|
||||||
|
#define SCR_RED 4
|
||||||
|
#define SCR_MAGENTA 5
|
||||||
|
#define SCR_YELLOW 6
|
||||||
|
#define SCR_WHITE 7
|
||||||
|
|
||||||
|
#define SCR_PAIR(X, Y) COLOR_PAIR(__SCR_PAIRS[X][Y])
|
||||||
|
|
||||||
|
short __SCR_PAIRS[8][8];
|
||||||
|
void scr_ctx_init();
|
||||||
|
|
||||||
void scr_fill();
|
void scr_fill();
|
||||||
void scr_char_fill(char);
|
void scr_char_fill(char);
|
||||||
void scr_wchar_fill(wchar_t);
|
void scr_wchar_fill(wchar_t);
|
||||||
void scr_hide_cursor();
|
void scr_hide_cursor();
|
||||||
|
|
||||||
void scr_center_write(char*, int, int);
|
void scr_center_write(char*, int, int);
|
||||||
|
|
||||||
void scr_box(int, int, int, int);
|
void scr_box(int, int, int, int);
|
||||||
|
WINDOW* scr_win_box(int, int, int, int);
|
||||||
|
|
||||||
void scr_alert(int, char*);
|
void scr_alert(int, char*);
|
||||||
|
BOOL scr_prompt(int, char*);
|
||||||
BOOL scr_prompt_string(int, char*, char*, int);
|
BOOL scr_prompt_string(int, char*, char*, int);
|
||||||
BOOL scr_prompt_int(int, char*, int*);
|
BOOL scr_prompt_int(int, char*, int*);
|
||||||
BOOL scr_prompt_options(int, char*, char**, int, int*);
|
BOOL scr_prompt_options(int, char*, char**, int, int*);
|
||||||
|
|
Loading…
Reference in a new issue