1 /* 2 * Author: Marc van Kempen 3 * Desc: include file for UI-objects 4 * 5 * Copyright (c) 1995, Marc van Kempen 6 * 7 * All rights reserved. 8 * 9 * This software may be used, modified, copied, distributed, and 10 * sold, in both source and binary form provided that the above 11 * copyright and these terms are retained, verbatim, as the first 12 * lines of this file. Under no circumstances is the author 13 * responsible for the proper functioning of this software, nor does 14 * the author assume any responsibility for damages incurred with 15 * its use. 16 * 17 */ 18 19 #include "dialog.h" 20 #include <ncurses.h> 21 22 /*********************************************************************** 23 * 24 * Defines 25 * 26 ***********************************************************************/ 27 28 #define ctrl(a) ((a) - 'a' + 1) 29 30 /* the Object types */ 31 #define STRINGOBJ 1 32 #define LISTOBJ 2 33 #define BUTTONOBJ 3 34 35 /* the return signals from the selection routines */ 36 /* 1000 and higher should avoid conflicts with keys pressed */ 37 #define SEL_CR 1001 /* return was pressed */ 38 #define SEL_ESC 1002 /* ESC pressed */ 39 #define SEL_TAB 1003 /* TAB pressed */ 40 #define SEL_BACKTAB 1004 /* SHIFT-TAB pressed */ 41 #define SEL_BUTTON 1005 /* a button was pressed */ 42 43 /*********************************************************************** 44 * 45 * Typedefs 46 * 47 ***********************************************************************/ 48 49 typedef struct { 50 WINDOW *win; /* the window it's contained in */ 51 char *title; /* the prompt for the input field */ 52 char *s; /* initial value of the input field */ 53 int x, y, w, len; /* the (y, x) position of the upperleft */ 54 /* corner and the width <w> of the display */ 55 /* and length <len> of the field */ 56 int attr_mask; /* special attributes */ 57 } StringObj; 58 59 typedef struct { 60 WINDOW *win; /* the windows it's contained in */ 61 char *title; /* the title of the list */ 62 char **name; /* the names of the list */ 63 int *seld; /* the currently selected names */ 64 char *elt; /* the current element in the list list[sel] */ 65 int x, y, w, h, n; /* dimensions of list and # of elements (n) */ 66 int scroll, sel; /* current position in the list */ 67 } ListObj; 68 69 typedef struct { 70 WINDOW *win; /* the window it's contained in */ 71 char *title; /* title for the button */ 72 int x, y, w, h; /* its dimensions */ 73 int *pushed; /* boolean that determines wether button was pushed */ 74 } ButtonObj; 75 76 typedef struct ComposeObj { 77 int objtype; 78 void *obj; 79 struct ComposeObj *next, *prev; 80 } ComposeObj; 81 82 /********************************************************************** 83 * 84 * Prototypes 85 * 86 **********************************************************************/ 87 88 void RefreshStringObj(StringObj *so); 89 StringObj *NewStringObj(WINDOW *win, char *title, char *s, 90 int y, int x, int w, int len); 91 int SelectStringObj(StringObj *so); 92 void DelStringObj(StringObj *so); 93 94 void RefreshListObj(ListObj *lo); 95 ListObj *NewListObj(WINDOW *win, char *title, char **list, 96 char *listelt, int y, int x, int h, int w, int n); 97 void UpdateListObj(ListObj *lo, char **list, int n); 98 int SelectListObj(ListObj *lo); 99 void DelListObj(ListObj *obj); 100 void MarkCurrentListObj(ListObj *lo); 101 void MarkAllListObj(ListObj *lo); 102 void UnMarkAllListObj(ListObj *lo); 103 104 void RefreshButtonObj(ButtonObj *bo); 105 ButtonObj *NewButtonObj(WINDOW *win, char *title, int *pushed, 106 int y, int x); 107 int SelectButtonObj(ButtonObj *bo); 108 void DelButtonObj(ButtonObj *bo); 109 void AddObj(ComposeObj **Obj, int objtype, void *obj); 110 void FreeObj(ComposeObj *Obj); 111 int ReadObj(ComposeObj *Obj); 112 int PollObj(ComposeObj **Obj); 113 void DelObj(ComposeObj *Obj); 114 115