Add comment blocks
/**brief**************************************************************/ | ||
/* */ | ||
/* MEMBER: PANE TYPE: C11SCE */ | ||
/* PROGRAMMER: COFFEE <[email protected]> */ | ||
/* */ | ||
/* PURPOSE: */ | ||
/* */ | ||
/*********************************************************************/ | ||
/**OUTLINE************************************************************/ | ||
/* */ | ||
/*********************************************************************/ | ||
/*********************************************************************/ | ||
/* INCLUDES */ | ||
/*********************************************************************/ | ||
#include "pane.h" | ||
#define INPT A_UNDERLINE | COLOR_PAIR(6) | ||
#define TEXT(c) A_PROTECT | COLOR_PAIR(c) | ||
/*********************************************************************/ | ||
/* CONSTANT LITERALS */ | ||
/*********************************************************************/ | ||
#define HGT 23 | ||
struct { | ||
/*********************************************************************/ | ||
/* FUNCTION DECLARATIONS */ | ||
/*********************************************************************/ | ||
void draw(Screen *scr); | ||
/*********************************************************************/ | ||
/* LOCAL DECLARATIONS */ | ||
/*********************************************************************/ | ||
struct STATUS{ | ||
bool isInsert; | ||
char inhibit[9]; | ||
char *inhibit; | ||
}status = { | ||
false, | ||
"", | ||
}; | ||
/*********************************************************************/ | ||
/* PANE_A100_DRAW */ | ||
/*********************************************************************/ | ||
void draw(Screen *scr) { | ||
size_t oldy, oldx; | ||
getyx(stdscr, oldy, oldx); | ||
... | ... | @@ -70,42 +98,23 @@ void init() { |
} | ||
void draw_status(int y, int x) { | ||
void draw_status() { | ||
int x, y; | ||
getyx(stdscr,y, x); | ||
attron(TEXT(2)); | ||
mvhline(HGT,0,'_',80); | ||
mvaddstr(HGT + 1, 8, status.inhibit); | ||
mvaddstr(HGT + 1, 52, (status.isInsert ? "I" : "OVR")); | ||
mvprintw(HGT+1, 74, "%02i,%02i", y + 1, x + 1); | ||
standend(); | ||
move(y,x); | ||
refresh(); | ||
} | ||
#define TXTOPT "Option ===>" | ||
#define TXTCMD "Command ===>" | ||
#define TXTHDR "ISPF Primary Option Menu" | ||
Field menuFlds[] = { | ||
/* TYPE |ROW|COL|LEN| TXET | ATTR | NXT */ | ||
/******************* MENU BAR **********************/ | ||
{ BTN , 0, 3, 0,"Menu" , A_NORMAL , }, | ||
{ BTN , 0, 9, 0,"Utilities" , A_NORMAL , }, | ||
{ BTN , 0, 20, 0,"Compilers" , A_NORMAL , }, | ||
{ BTN , 0, 31, 0,"Options" , A_NORMAL , }, | ||
{ BTN , 0, 40, 0,"Status" , A_NORMAL , }, | ||
{ BTN , 0, 48, 0,"Help" , A_NORMAL , }, | ||
/******************** INPUTS ***********************/ | ||
{ INP , 3, 13, 66, "" , INPT , -1 }, | ||
/******************** LABELS ***********************/ | ||
{ LBL , 2, 28, 0,TXTHDR , TEXT(4) , }, | ||
{ LBL , 3, 1, 0,TXTOPT , TEXT(2) , }, | ||
/******************** RULERS ***********************/ | ||
{ RLR, 1, 1, 78, "q" , TEXT(4) , }, | ||
{END} | ||
}; | ||
Screen* init_screen(Field *fields) { | ||
Screen* buildScreen(Field *fields) { | ||
Screen* scr; | ||
scr = (Screen*) calloc(1, sizeof(Screen)); | ||
... | ... | @@ -119,24 +128,21 @@ Screen* init_screen(Field *fields) { |
} | ||
int start() { | ||
int start(Screen *scr) { | ||
init(); | ||
Screen *menu = init_screen(menuFlds); | ||
draw(menu); | ||
draw(scr); | ||
int x, y; | ||
move(3, 13); | ||
getyx(stdscr,y, x); | ||
draw_status(y, x); | ||
draw_status(); | ||
int chr = mvinch(y,x); // save attr | ||
chtype clr = chr & A_COLOR; | ||
chtype attr = chr & A_ATTRIBUTES; | ||
chgat(1, A_REVERSE | attr, 0, NULL); // set block | ||
while (1) { | ||
int ch = getch(); | ||
//chgat(1, attr, clr, NULL); | ||
switch (ch) { | ||
case KEY_LEFT: | ||
... | ... | @@ -159,20 +165,29 @@ int start() { |
case KEY_STAB: | ||
case KEY_BTAB: | ||
case KEY_END: | ||
case 10: | ||
case KEY_ENTER: | ||
status.inhibit = "X - SYSTEM"; | ||
draw_status(); | ||
scr = scr->submit(scr); | ||
status.inhibit = " "; | ||
draw_status(); | ||
break; | ||
case 'q': | ||
goto cleanup; | ||
default: | ||
break; | ||
} | ||
addch(chr); | ||
draw_status(y, x); | ||
chr = mvinch(y,x); // save attr | ||
clr = chr & A_COLOR; | ||
attr = chr & A_ATTRIBUTES; | ||
chgat(1, A_REVERSE | attr, 0, NULL); | ||
refresh(); | ||
draw_status(); | ||
} | ||
cleanup: | ||
endwin(); | ||
return 0; | ||
} | ||
\ No newline at end of file | ||
} |
/**COPY***************************************************************/ | ||
/* */ | ||
/* COPYRIGHT (C) 2019 ZACK WONG */ | ||
/* THIS PROGRAM IS FREE SOFTWARE: YOU CAN REDISTRIBUTE IT AND/OR */ | ||
/* MODIFY IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS */ | ||
/* BIN PUBLISHED BY THE FREE SOFTWARE FOUNDATION, EITHER VERSION 3 */ | ||
/* OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION. */ | ||
/* */ | ||
/* THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, */ | ||
/* BUT WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF */ | ||
/* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE */ | ||
/* GNU GENERAL PUBLIC LICENSE FOR MORE DETAILS. */ | ||
/* */ | ||
/* YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC */ | ||
/* LICENSE ALONG WITH THIS PROGRAM. IF NOT, SEE */ | ||
/* <HTTPS://WWW.GNU.ORG/LICENSES/>. */ | ||
/* */ | ||
/*********************************************************************/ | ||
/**BRIEF**************************************************************/ | ||
/* */ | ||
/* MEMBER : PANE TYPE: C11HDR */ | ||
/* PROGRAMMER : COFFEE DATE: 28 JUL 2019 */ | ||
/* CONTACT : <[email protected]> */ | ||
/* */ | ||
/* DESCRIPTION : ISPF MAIN MENU AND ENTRY POINT. */ | ||
/* */ | ||
/*********************************************************************/ | ||
/**OUTLINE************************************************************/ | ||
/* */ | ||
/*********************************************************************/ | ||
/**MAINTAINANCE HISTORY***********************************************/ | ||
/* DD MMM YYYY NNNNNNNNN <XXXXXXXXXXXXXXXXXXXXXXXXX> */ | ||
/* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */ | ||
/* */ | ||
/*********************************************************************/ | ||
#ifndef PANE_H | ||
#define PANE_H | ||
/*********************************************************************/ | ||
/* INCLUDES */ | ||
/*********************************************************************/ | ||
#include <curses.h> | ||
#include <stdint.h> | ||
#include <malloc.h> | ||
#include <string.h> | ||
#include <stdbool.h> | ||
/*********************************************************************/ | ||
/* PREPROCESSOR DEFS */ | ||
/*********************************************************************/ | ||
#define TEXT(c) A_PROTECT | COLOR_PAIR(c) | ||
#define INPT A_UNDERLINE | COLOR_PAIR(6) | ||
/*********************************************************************/ | ||
/* CONSTANT LITERALS */ | ||
/*********************************************************************/ | ||
#define LBL 0 | ||
#define BTN 1 | ||
#define RLR 2 | ||
#define INP 3 | ||
#define END 0b1111 | ||
/*********************************************************************/ | ||
/* TYPE DEFINITIONS */ | ||
/*********************************************************************/ | ||
typedef unsigned char byte; | ||
typedef struct Field { | ||
... | ... | @@ -38,10 +88,15 @@ typedef struct Screen { |
Field* inps; | ||
Mask cell[80][43]; | ||
void (*submit)(char*); | ||
bool update; | ||
struct Screen* (*submit)(struct Screen*); | ||
}Screen; | ||
extern int start(); | ||
void draw(Screen *scr); | ||
#endif | ||
\ No newline at end of file | ||
/*********************************************************************/ | ||
/* EXPORTS */ | ||
/*********************************************************************/ | ||
extern void init(); | ||
extern int start(Screen* scr); | ||
extern Screen* buildScreen(Field *fields); | ||
#endif |
/**COPY***************************************************************/ | ||
/* */ | ||
/* COPYRIGHT (C) 2019 ZACK WONG */ | ||
/* THIS PROGRAM IS FREE SOFTWARE: YOU CAN REDISTRIBUTE IT AND/OR */ | ||
/* MODIFY IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS */ | ||
/* BIN PUBLISHED BY THE FREE SOFTWARE FOUNDATION, EITHER VERSION 3 */ | ||
/* OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION. */ | ||
/* */ | ||
/* THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, */ | ||
/* BUT WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF */ | ||
/* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE */ | ||
/* GNU GENERAL PUBLIC LICENSE FOR MORE DETAILS. */ | ||
/* */ | ||
/* YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC */ | ||
/* LICENSE ALONG WITH THIS PROGRAM. IF NOT, SEE */ | ||
/* <HTTPS://WWW.GNU.ORG/LICENSES/>. */ | ||
/* */ | ||
/*********************************************************************/ | ||
/**BRIEF**************************************************************/ | ||
/* */ | ||
/* MEMBER : MAIN TYPE: C11SCE */ | ||
/* PROGRAMMER : COFFEE DATE: 28 JUL 2019 */ | ||
/* CONTACT : <[email protected]> */ | ||
/* */ | ||
/* DESCRIPTION : ISPF MAIN MENU AND ENTRY POINT. */ | ||
/* */ | ||
/*********************************************************************/ | ||
/**OUTLINE************************************************************/ | ||
/* */ | ||
/*********************************************************************/ | ||
/**MAINTAINANCE HISTORY***********************************************/ | ||
/* DD MMM YYYY NNNNNNNNN <XXXXXXXXXXXXXXXXXXXXXXXXX> */ | ||
/* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */ | ||
/* */ | ||
/*********************************************************************/ | ||
/*********************************************************************/ | ||
/* INCLUDES */ | ||
/*********************************************************************/ | ||
#include "../../icpl/src/pane.h" | ||
#include <stdbool.h> /* STDLIB BOOLEANS TYPE */ | ||
/*********************************************************************/ | ||
/* PREPROCESSOR DEFS */ | ||
/*********************************************************************/ | ||
/*********************************************************************/ | ||
/* CONSTANT LITERALS */ | ||
/*********************************************************************/ | ||
#define TXTOPT "Option ===>" | ||
#define TXTCMD "Command ===>" | ||
#define TXTHDR "ISPF Primary Option Menu" | ||
enum FLDNUM { | ||
BTN0, | ||
BTN1, | ||
BTN2, | ||
BTN3, | ||
BTN4, | ||
BTN5, | ||
INP0, | ||
OUT0 | ||
} ; | ||
/*********************************************************************/ | ||
/* FUNCTION DECLARATIONS */ | ||
/*********************************************************************/ | ||
Screen* MAIN_A100_SUBMIT (Screen*); | ||
void MAIN_B130_GET_NEXT_SCREEN (); | ||
void MAIN_B120_VALIDATE_MENU (); | ||
/*********************************************************************/ | ||
/* LOCAL DECLARATIONS */ | ||
/*********************************************************************/ | ||
Field MENUFLDS[] = { /* ISPF PRIMARY OPTION MENU */ | ||
/*FLDID | TYPE |ROW|COL|LEN| TEXT | ATTR | NXT */ | ||
/************************ MENU BAR **************************/ | ||
[BTN0] = { BTN , 0, 3, 0,"Menu" , A_NORMAL , }, | ||
[BTN1] = { BTN , 0, 9, 0,"Utilities" , A_NORMAL , }, | ||
[BTN2] = { BTN , 0, 20, 0,"Compilers" , A_NORMAL , }, | ||
[BTN3] = { BTN , 0, 31, 0,"Options" , A_NORMAL , }, | ||
[BTN4] = { BTN , 0, 40, 0,"Status" , A_NORMAL , }, | ||
[BTN5] = { BTN , 0, 48, 0,"Help" , A_NORMAL , }, | ||
/************************* INPUTS ***************************/ | ||
[INP0] = { INP , 3, 13, 66, "" , INPT , -1 }, | ||
/************************* LABELS ***************************/ | ||
[OUT0] = { LBL , 3, 1, 0, "" , TEXT(2) , }, | ||
/*AUTO*/ { LBL , 2, 28, 0,TXTHDR , TEXT(4) , }, | ||
/*AUTO*/ { LBL , 3, 1, 0,TXTOPT , TEXT(2) , }, | ||
/************************* RULERS ***************************/ | ||
/*AUTO*/ { RLR, 1, 1, 78, "q" , TEXT(4) , }, | ||
/*AUTO*/ {END} | ||
}; | ||
int main() { | ||
/*********************************************************************/ | ||
/* WK_STORAGE */ | ||
/*********************************************************************/ | ||
bool WK_IS_VALID; | ||
start(); | ||
/*********************************************************************/ | ||
/* MAIN_A000_INIT */ | ||
/*********************************************************************/ | ||
#define MAIN_A000_INIT main | ||
int MAIN_A000_INIT() { | ||
init(); | ||
Screen *mainmenu = buildScreen(MENUFLDS); | ||
mainmenu->submit = MAIN_A100_SUBMIT; | ||
start(mainmenu); | ||
return 0; | ||
} | ||
\ No newline at end of file | ||
} /* MAIN_A000_INIT */ | ||
/*********************************************************************/ | ||
/* MAIN_MAINMENU_UPD */ | ||
/*********************************************************************/ | ||
/*********************************************************************/ | ||
/* MAIN_A100_SUBMIT */ | ||
/*********************************************************************/ | ||
Screen* MAIN_A100_SUBMIT (Screen* self) { | ||
int y, x; | ||
getyx(stdscr, y, x); | ||
if (self->cell[y][x].type == BTN){ | ||
/* MAIN_A110_ADD_SUBMENU();*/ | ||
return self; | ||
} | ||
MAIN_B120_VALIDATE_MENU(); | ||
if (WK_IS_VALID) { | ||
MAIN_B130_GET_NEXT_SCREEN(); | ||
} | ||
else { | ||
} | ||
return self; | ||
} /* MAIN_A100_SUBMIT */ | ||
/*********************************************************************/ | ||
/* MAIN_B120_VALIDATE_MENU */ | ||
/*********************************************************************/ | ||
void MAIN_B120_VALIDATE_MENU (){ | ||
return; | ||
} /* MAIN_B120_VALIDATE_MENU */ | ||
/*********************************************************************/ | ||
/* MAIN_B130_GET_NEXT_SCREEN */ | ||
/*********************************************************************/ | ||
void MAIN_B130_GET_NEXT_SCREEN (){ | ||
return; | ||
} /* MAIN_B130_GET_NEXT_SCREEN */ | ||
Please register or sign in to comment