22
while ( (ent = getpwent ()) != 0)
39
while ((ent = getpwent ()) != 0)
24
used = CDKallocStrings(list, ent->pw_name, x++, used);
41
used = CDKallocStrings (list, ent->pw_name, x++, used);
29
int main(int argc, char **argv)
31
/* Declare variables. */
32
CDKSCREEN *cdkscreen = 0;
47
#define CB_PARAMS EObjectType cdktype GCC_UNUSED, void* object GCC_UNUSED, void* clientdata GCC_UNUSED, chtype key GCC_UNUSED
49
static void fill_undo (CDKALPHALIST *widget, int deleted, char *data)
51
int top = getCDKScrollCurrentTop (widget->scrollField);
52
int item = getCDKAlphalistCurrentItem (widget);
55
myUndoList[undoSize].deleted = deleted;
56
myUndoList[undoSize].topline = top;
57
myUndoList[undoSize].original = -1;
58
myUndoList[undoSize].position = item;
59
for (n = 0; n < userSize; ++n)
61
if (!strcmp (myUserList[n], data))
63
myUndoList[undoSize].original = n;
70
static int do_delete (CB_PARAMS)
72
CDKALPHALIST *widget = (CDKALPHALIST *)clientdata;
74
char **list = getCDKAlphalistContents (widget, &size);
79
int save = getCDKScrollCurrentTop (widget->scrollField);
80
int first = getCDKAlphalistCurrentItem (widget);
83
fill_undo (widget, first, list[first]);
84
for (n = first; n < size; ++n)
85
list[n] = list[n + 1];
86
setCDKAlphalistContents (widget, list, size - 1);
87
setCDKScrollCurrentTop (widget->scrollField, save);
88
setCDKAlphalistCurrentItem (widget, first);
89
drawCDKAlphalist (widget, BorderOf (widget));
95
static int do_delete1 (CB_PARAMS)
97
CDKALPHALIST *widget = (CDKALPHALIST *)clientdata;
99
char **list = getCDKAlphalistContents (widget, &size);
104
int save = getCDKScrollCurrentTop (widget->scrollField);
105
int first = getCDKAlphalistCurrentItem (widget);
111
fill_undo (widget, first, list[first]);
112
for (n = first; n < size; ++n)
113
list[n] = list[n + 1];
114
setCDKAlphalistContents (widget, list, size - 1);
115
setCDKScrollCurrentTop (widget->scrollField, save);
116
setCDKAlphalistCurrentItem (widget, first);
117
drawCDKAlphalist (widget, BorderOf (widget));
124
static int do_help (CB_PARAMS)
126
static char *message[] =
130
"F1 = help (this message)",
131
"F2 = delete current item",
132
"F3 = delete previous item",
133
"F4 = reload all items",
134
"F5 = undo deletion",
137
popupLabel (cdkscreen, message, CDKcountStrings (message));
141
static int do_reload (CB_PARAMS)
147
CDKALPHALIST *widget = (CDKALPHALIST *)clientdata;
148
setCDKAlphalistContents (widget, myUserList, userSize);
149
setCDKAlphalistCurrentItem (widget, 0);
150
drawCDKAlphalist (widget, BorderOf (widget));
156
static int do_undo (CB_PARAMS)
162
CDKALPHALIST *widget = (CDKALPHALIST *)clientdata;
165
char **oldlist = getCDKAlphalistContents (widget, &size);
166
char **newlist = (char **)malloc ((++size + 1) * sizeof (char *));
170
for (n = size - 1; n > myUndoList[undoSize].deleted; --n)
172
newlist[n] = copyChar (oldlist[n - 1]);
174
newlist[n--] = copyChar (myUserList[myUndoList[undoSize].original]);
177
newlist[n] = copyChar (oldlist[n]);
180
setCDKAlphalistContents (widget, newlist, size);
181
setCDKScrollCurrentTop (widget->scrollField, myUndoList[undoSize].topline);
182
setCDKAlphalistCurrentItem (widget, myUndoList[undoSize].position);
183
drawCDKAlphalist (widget, BorderOf (widget));
189
int main (int argc, char **argv)
33
191
CDKALPHALIST *alphaList = 0;
34
192
WINDOW *cursesWin = 0;
35
193
char *title = "<C></B/24>Alpha List\n<C>Title";
36
194
char *label = "</B>Account: ";
39
197
char *mesg[5], temp[256];
42
199
CDK_PARAMS params;
44
CDKparseParams(argc, argv, ¶ms, CDK_CLI_PARAMS);
201
CDKparseParams (argc, argv, ¶ms, "c" CDK_CLI_PARAMS);
203
/* Get the user list. */
204
userSize = getUserList (&userList);
207
fprintf (stderr, "Cannot get user list\n");
208
ExitProgram (EXIT_FAILURE);
210
myUserList = copyCharList (userList);
211
myUndoList = (UNDO *) malloc (userSize * sizeof (UNDO));
47
cursesWin = initscr();
215
cursesWin = initscr ();
48
216
cdkscreen = initCDKScreen (cursesWin);
50
218
/* Start color. */
53
/* Get the user list. */
54
count = getUserList (&info);
56
221
/* Create the alpha list widget. */
57
222
alphaList = newCDKAlphalist (cdkscreen,
58
CDKparamValue(¶ms, 'X', CENTER),
59
CDKparamValue(¶ms, 'Y', CENTER),
60
CDKparamValue(¶ms, 'H', 0),
61
CDKparamValue(¶ms, 'W', 0),
223
CDKparamValue (¶ms, 'X', CENTER),
224
CDKparamValue (¶ms, 'Y', CENTER),
225
CDKparamValue (¶ms, 'H', 0),
226
CDKparamValue (¶ms, 'W', 0),
228
CDKparamNumber (¶ms, 'c') ? 0 : userList,
229
CDKparamNumber (¶ms, 'c') ? 0 : userSize,
65
CDKparamValue(¶ms, 'N', TRUE),
66
CDKparamValue(¶ms, 'S', FALSE));
231
CDKparamValue (¶ms, 'N', TRUE),
232
CDKparamValue (¶ms, 'S', FALSE));
235
destroyCDKScreen (cdkscreen);
238
fprintf (stderr, "Cannot create widget\n");
239
ExitProgram (EXIT_FAILURE);
242
bindCDKObject (vALPHALIST, alphaList, '?', do_help, NULL);
243
bindCDKObject (vALPHALIST, alphaList, KEY_F1, do_help, NULL);
244
bindCDKObject (vALPHALIST, alphaList, KEY_F2, do_delete, alphaList);
245
bindCDKObject (vALPHALIST, alphaList, KEY_F3, do_delete1, alphaList);
246
bindCDKObject (vALPHALIST, alphaList, KEY_F4, do_reload, alphaList);
247
bindCDKObject (vALPHALIST, alphaList, KEY_F5, do_undo, alphaList);
249
if (CDKparamNumber (¶ms, 'c'))
251
setCDKAlphalistContents (alphaList, userList, userSize);
69
254
/* Let them play with the alpha list. */
70
255
word = activateCDKAlphalist (alphaList, 0);