static void do_loop(int span, int looped) { newtComponent form; newtComponent label; char s1[256]; struct dahdi_maintinfo m; int res; struct newtExitStruct es; newtOpenWindow(20,12,40,4, s[span].desc); form = newtForm(NULL, NULL, 0); m.spanno = span; if (looped) { snprintf(s1, sizeof(s1), "Looping UP span %d...\n", span); m.command = DAHDI_MAINT_LOOPUP; } else { snprintf(s1, sizeof(s1), "Looping DOWN span %d...\n", span); m.command = DAHDI_MAINT_LOOPDOWN; } label = newtLabel(3,1,s1); newtFormAddComponent(form, label); newtPushHelpLine("Please wait..."); newtFormSetTimer(form, 200); newtFormRun(form, &es); res = ioctl(ctl, DAHDI_MAINT, &m); newtFormDestroy(form); newtPopWindow(); newtPopHelpLine(); }
void newtGridWrappedWindowAt(newtGrid grid, char * title, int left, int top) { int width, height; newtGridGetSize(grid, &width, &height); newtOpenWindow(left, top, width + 2, height + 2, title); newtGridPlace(grid, 1, 1); }
/* * Screen_OpenWindow * */ static VALUE rb_ext_Screen_OpenWindow(VALUE self, VALUE left, VALUE top, VALUE width, VALUE height, VALUE title) { return INT2NUM(newtOpenWindow(NUM2INT(left), NUM2INT(top), NUM2INT(width), NUM2INT(height), StringValuePtr(title))); }
/** * @brief Draw a centered window. * @param width - width in char cells * @param height - no. of char cells. * @param title - fixed title * @returns zero on success */ int newtCenteredWindow(unsigned int width,unsigned int height, const char * title) { int top, left; top = (int)(SLtt_Screen_Rows - height) / 2; /* I don't know why, but this seems to look better */ if ((SLtt_Screen_Rows % 2) && (top % 2)) top--; left = (int)(SLtt_Screen_Cols - width) / 2; return newtOpenWindow(left, top, width, height, title); }
static void nmt_newt_form_build (NmtNewtForm *form) { NmtNewtFormPrivate *priv = NMT_NEWT_FORM_GET_PRIVATE (form); int screen_height, screen_width, form_height, form_width; newtComponent *cos; int i; priv->dirty = FALSE; nmt_newt_widget_realize (NMT_NEWT_WIDGET (form)); nmt_newt_widget_size_request (priv->content, &form_width, &form_height); newtGetScreenSize (&screen_width, &screen_height); if (!priv->fixed_width) priv->width = MIN (form_width + 2 * priv->padding, screen_width - 2); if (!priv->fixed_height) priv->height = MIN (form_height + 2 * priv->padding, screen_height - 2); if (!priv->fixed_x) priv->x = (screen_width - form_width) / 2; if (!priv->fixed_y) priv->y = (screen_height - form_height) / 2; nmt_newt_widget_size_allocate (priv->content, priv->padding, priv->padding, priv->width - 2 * priv->padding, priv->height - 2 * priv->padding); if (priv->height - 2 * priv->padding < form_height) { newtComponent scroll_bar = newtVerticalScrollbar (priv->width - 1, 0, priv->height, NEWT_COLORSET_WINDOW, NEWT_COLORSET_ACTCHECKBOX); priv->form = newtForm (scroll_bar, NULL, NEWT_FLAG_NOF12); newtFormAddComponent (priv->form, scroll_bar); newtFormSetHeight (priv->form, priv->height - 2); } else priv->form = newtForm (NULL, NULL, NEWT_FLAG_NOF12); if (priv->escape_exits) newtFormAddHotKey (priv->form, NEWT_KEY_ESCAPE); cos = nmt_newt_widget_get_components (priv->content); for (i = 0; cos[i]; i++) newtFormAddComponent (priv->form, cos[i]); g_free (cos); if (priv->focus) { newtComponent fco; fco = nmt_newt_widget_get_focus_component (priv->focus); if (fco) newtFormSetCurrent (priv->form, fco); } #ifdef HAVE_NEWTFORMGETSCROLLPOSITION if (priv->scroll_position) newtFormSetScrollPosition (priv->form, priv->scroll_position); #endif newtOpenWindow (priv->x, priv->y, priv->width, priv->height, priv->title_lc); }
static void show_span(int span) { newtComponent form; newtComponent back; newtComponent loop; newtComponent label; newtComponent bitbox; newtComponent inuse; newtComponent levels; newtComponent bpvcount; newtComponent alarms; newtComponent syncsrc; newtComponent irqmisses; char s1[] = " 1111111111222222222233"; char s2[] = "1234567890123456789012345678901"; int x; int looped = 0; struct newtExitStruct es; void *ss; char info2[256]; if (span < 0) { /* Display info on a span */ ss = newtListboxGetCurrent(spans); if (ss) { span = (long)(ss); } } snprintf(info2, sizeof(info2), "%-59s F10=Back", s[span].desc); newtOpenWindow(10,2,60,20, s[span].desc); newtPushHelpLine(info2); back = newtButton(48,8,"Back"); loop = newtButton(48,14,"Loop"); form = newtForm(NULL, NULL, 0); newtFormAddComponents(form, back, loop, NULL); span_max_chan_pos = s[span].totalchans; for (x=0;x<DAHDI_MAX_CHANNELS;x++) { DAHDI_PARAMS zp; int res; memset(&zp, 0, sizeof(zp)); zp.channo = x; res = ioctl(ctl, DAHDI_GET_PARAMS, &zp); if (!res && zp.spanno == span && zp.chanpos > span_max_chan_pos ) span_max_chan_pos = zp.chanpos; } if (span_max_chan_pos > 32) span_max_chan_pos = 32; s1[span_max_chan_pos] = '\0'; s2[span_max_chan_pos] = '\0'; bitbox = newtTextbox(8,10,span_max_chan_pos,9,0); newtFormAddComponent(form, bitbox); label = newtLabel(8,8,s1); newtFormAddComponent(form, label); label = newtLabel(8,9,s2); newtFormAddComponent(form, label); newtFormAddHotKey(form, NEWT_KEY_F10); newtFormSetTimer(form, 200); label = newtLabel(4,10,"TxA"); newtFormAddComponent(form, label); label = newtLabel(4,11,"TxB"); newtFormAddComponent(form, label); label = newtLabel(4,12,"TxC"); newtFormAddComponent(form, label); label = newtLabel(4,13,"TxD"); newtFormAddComponent(form, label); label = newtLabel(4,15,"RxA"); newtFormAddComponent(form, label); label = newtLabel(4,16,"RxB"); newtFormAddComponent(form, label); label = newtLabel(4,17,"RxC"); newtFormAddComponent(form, label); label = newtLabel(4,18,"RxD"); newtFormAddComponent(form, label); label = newtLabel(4,7,"Total/Conf/Act: "); newtFormAddComponent(form, label); inuse = newtTextbox(24,7,12,1,0); newtFormAddComponent(form, inuse); label = newtLabel(4,6,"Tx/Rx Levels: "); newtFormAddComponent(form, label); levels = newtTextbox(24,6,30,1,0); newtFormAddComponent(form, levels); label = newtLabel(4,5,"Bipolar Viol: "); newtFormAddComponent(form, label); bpvcount = newtTextbox(24,5,30,1,0); newtFormAddComponent(form, bpvcount); label = newtLabel(4,4,"IRQ Misses: "); newtFormAddComponent(form, label); irqmisses = newtTextbox(24,4,30,1,0); newtFormAddComponent(form, irqmisses); label = newtLabel(4,3,"Sync Source: "); newtFormAddComponent(form, label); syncsrc = newtTextbox(24,3,30,1,0); newtFormAddComponent(form, syncsrc); label = newtLabel(4,2,"Current Alarms: "); newtFormAddComponent(form, label); alarms = newtTextbox(24,2,30,1,0); newtFormAddComponent(form, alarms); for(;;) { /* Wait for user to select something */ do { add_cards(NULL); show_bits(span, bitbox, inuse, levels, bpvcount, alarms, syncsrc, irqmisses); newtFormRun(form, &es); } while(es.reason == NEWT_EXIT_TIMER); switch(es.reason) { case NEWT_EXIT_COMPONENT: if (es.u.co == loop) { looped = !looped; do_loop(span, looped); newtFormSetTimer(form, 200); } if (es.u.co == back) { goto out; } break; case NEWT_EXIT_HOTKEY: switch(es.u.key) { #if 0 case NEWT_KEY_F1: show_span(-1); break; #endif case NEWT_KEY_F10: goto out; } break; default: break; } } out: newtFormDestroy(form); newtPopWindow(); newtPopHelpLine(); span_max_chan_pos = 0; }
/** * Pop up a list containing the filenames in @p source_file and the severity if they have changed since the * last backup. There can be no more than @p ARBITRARY_MAXIMUM files in @p source_file. * @param source_file The file containing a list of changed files. */ void popup_changelist_from_file(char *source_file) { char *reason = NULL; newtComponent myForm; newtComponent bClose; newtComponent bSelect; newtComponent b_res; newtComponent fileListbox; newtComponent headerMsg; /*@ ???? ************************************************************ */ void *curr_choice; void *keylist[ARBITRARY_MAXIMUM]; /*@ int ************************************************************* */ int i = 0; int currline = 0; int finished = FALSE; long lng = 0; /*@ buffers ********************************************************* */ char *tmp; char *differ_sz; struct s_filelist *filelist; assert_string_is_neither_NULL_nor_zerolength(source_file); if (g_text_mode) { log_msg(2, "Text mode. Therefore, no popup list."); return; } log_msg(2, "Examining file %s", source_file); lng = count_lines_in_file(source_file); if (lng < 1) { log_msg(2, "No lines in file. Therefore, no popup list."); return; } else if (lng >= ARBITRARY_MAXIMUM) { log_msg(2, "Too many files differ for me to list."); return; } filelist = (struct s_filelist *) malloc(sizeof(struct s_filelist)); fileListbox = newtListbox(2, 2, 12, NEWT_FLAG_SCROLL | NEWT_FLAG_RETURNEXIT); newtListboxClear(fileListbox); if (load_filelist_into_array(filelist, source_file)) { log_msg(2, "Can't open %s; therefore, cannot popup list", source_file); return; } log_msg(2, "%d files loaded into filelist array", filelist->entries); for (i = 0; i < filelist->entries; i++) { keylist[i] = (void *) i; newtListboxAppendEntry(fileListbox, filelist_entry_to_string(& (filelist-> el[i])), keylist[i]); } asprintf(&differ_sz, _(" %d files differ. Hit 'Select' to pick a file. Hit 'Close' to quit the list."), i); newtPushHelpLine(differ_sz); paranoid_free(differ_sz); bClose = newtCompactButton(10, 15, _(" Close ")); bSelect = newtCompactButton(30, 15, _(" Select ")); asprintf(&tmp, "%-10s %-20s", _("Priority"), _("Filename")); headerMsg = newtLabel(2, 1, tmp); paranoid_free(tmp); newtOpenWindow(5, 4, 70, 16, _("Non-matching files")); myForm = newtForm(NULL, NULL, 0); newtFormAddComponents(myForm, headerMsg, fileListbox, bClose, bSelect, NULL); while (!finished) { b_res = newtRunForm(myForm); if (b_res == bClose) { finished = TRUE; } else { curr_choice = newtListboxGetCurrent(fileListbox); for (i = 0; i < filelist->entries && keylist[i] != curr_choice; i++); if (i == filelist->entries && filelist->entries > 0) { log_to_screen(_("I don't know what that button does!")); } else { currline = i; if (filelist->entries > 0) { severity_of_difference(filelist->el[currline]. filename, reason); asprintf(&tmp, "%s --- %s", filelist->el[currline].filename, reason); popup_and_OK(tmp); paranoid_free(tmp); paranoid_free(reason); } } } } newtFormDestroy(myForm); newtPopWindow(); newtPopHelpLine(); }
static int wtCmd(ClientData clientData, Tcl_Interp * interp, int argc, char ** argv) { enum mode mode = MODE_NONE; poptContext optCon; int arg; const char * optArg; const char * text; const char * nextArg; char * end; int height; int width; int noCancel = 0; int noItem = 0; int scrollText = 0; int rc = 0; int flags = 0; int defaultNo = 0; char * result; char ** selections, ** next; char * title = NULL; struct poptOption optionsTable[] = { { "checklist", '\0', 0, 0, OPT_CHECKLIST }, { "defaultno", '\0', 0, &defaultNo, 0 }, { "inputbox", '\0', 0, 0, OPT_INPUTBOX }, { "menu", '\0', 0, 0, OPT_MENU }, { "msgbox", '\0', 0, 0, OPT_MSGBOX }, { "nocancel", '\0', 0, &noCancel, 0 }, { "noitem", '\0', 0, &noItem, 0 }, { "radiolist", '\0', 0, 0, OPT_RADIOLIST }, { "scrolltext", '\0', 0, &scrollText, 0 }, { "title", '\0', POPT_ARG_STRING, &title, 0 }, { "yesno", '\0', 0, 0, OPT_YESNO }, { 0, 0, 0, 0, 0 } }; optCon = poptGetContext("whiptcl", argc, argv, optionsTable, 0); while ((arg = poptGetNextOpt(optCon)) > 0) { optArg = poptGetOptArg(optCon); switch (arg) { case OPT_MENU: if (mode != MODE_NONE) rc = -1; mode = MODE_MENU; break; case OPT_MSGBOX: if (mode != MODE_NONE) rc = -1; mode = MODE_MSGBOX; break; case OPT_RADIOLIST: if (mode != MODE_NONE) rc = -1; mode = MODE_RADIOLIST; break; case OPT_CHECKLIST: if (mode != MODE_NONE) rc = -1; mode = MODE_CHECKLIST; break; case OPT_YESNO: if (mode != MODE_NONE) rc = -1; mode = MODE_YESNO; break; case OPT_INPUTBOX: if (mode != MODE_NONE) rc = -1; mode = MODE_INPUTBOX; break; } } if (arg < -1) { /* this could buffer oveflow, bug we're not setuid so I don't care */ interp->result = malloc(200); interp->freeProc = TCL_DYNAMIC; sprintf(interp->result, "%s: %s\n", poptBadOption(optCon, POPT_BADOPTION_NOALIAS), poptStrerror(arg)); return TCL_ERROR; } if (mode == MODE_NONE) { interp->result = "no dialog mode was specified"; return TCL_ERROR; } else if (rc) { interp->result = "multiple modes were specified"; return TCL_ERROR; } if (!(text = poptGetArg(optCon))) { interp->result = "missing text parameter"; return TCL_ERROR; } if (!(nextArg = poptGetArg(optCon))) { interp->result = "height missing"; return TCL_ERROR; } height = strtoul(nextArg, &end, 10); if (*end) { interp->result = "height is not a number"; return TCL_ERROR; } if (!(nextArg = poptGetArg(optCon))) { interp->result = "width missing"; return TCL_ERROR; } width = strtoul(nextArg, &end, 10); if (*end) { interp->result = "width is not a number"; return TCL_ERROR; } width -= 2; height -= 2; newtOpenWindow((80 - width) / 2, (24 - height) / 2, width, height, title); if (noCancel) flags |= FLAG_NOCANCEL; if (noItem) flags |= FLAG_NOITEM; if (scrollText) flags |= FLAG_SCROLL_TEXT; if (defaultNo) flags |= FLAG_DEFAULT_NO; switch (mode) { case MODE_MSGBOX: rc = messageBox(text, height, width, MSGBOX_MSG, flags); break; case MODE_YESNO: rc = messageBox(text, height, width, MSGBOX_YESNO, flags); if (rc == DLG_OKAY) interp->result = "yes"; else interp->result = "no"; if (rc == DLG_ERROR) rc = 0; break; case MODE_INPUTBOX: rc = inputBox(text, height, width, optCon, flags, &result); if (!rc) { interp->result = strdup(result); interp->freeProc = TCL_DYNAMIC; } break; case MODE_MENU: rc = listBox(text, height, width, optCon, flags, &result); if (!rc) { interp->result = strdup(result); interp->freeProc = TCL_DYNAMIC; } break; case MODE_RADIOLIST: rc = checkList(text, height, width, optCon, 1, flags, &selections); if (!rc) { interp->result = strdup(selections[0]); interp->freeProc = TCL_DYNAMIC; } break; case MODE_CHECKLIST: rc = checkList(text, height, width, optCon, 0, flags, &selections); if (!rc) { for (next = selections; *next; next++) Tcl_AppendElement(interp, *next); free(selections); } break; case MODE_NONE: /* this can't happen */ } newtPopWindow(); if (rc == DLG_ERROR) { interp->result = "bad paramter for whiptcl dialog box"; return TCL_ERROR; } Tcl_SetVar(interp, "whiptcl_canceled", (rc == DLG_CANCEL) ? "1" : "0", 0); return TCL_OK; } static char * setBacktext(ClientData data, Tcl_Interp * interp, char * name1, char * name2, int flags) { static char blankLine[81] = " " " "; newtDrawRootText(0, 0, blankLine); newtDrawRootText(0, 0, Tcl_GetVar(interp, "whiptcl_backtext", TCL_GLOBAL_ONLY)); return NULL; } static char * setHelptext(ClientData data, Tcl_Interp * interp, char * name1, char * name2, int flags) { char * text = Tcl_GetVar(interp, "whiptcl_helpline", TCL_GLOBAL_ONLY); if (!text) text = ""; else if (!strlen(text)) text = NULL; newtPopHelpLine(); newtPushHelpLine(text); return NULL; }
int main(void) { newtComponent b1, b2, r1, r2, r3, e2, e3, l1, l2, l3, scale; newtComponent lb, t, rsf, answer, timeLabel; newtComponent cs[10]; newtComponent f, chklist, e1; struct callbackInfo cbis[3]; char results[10]; char * enr2, * enr3, * scaleVal; void ** selectedList; int i, numsel; char buf[20]; const char * spinner = "-\\|/\\|/"; const char * spinState; struct newtExitStruct es; newtInit(); newtCls(); newtSetSuspendCallback(suspend, NULL); newtSetHelpCallback(helpCallback); newtDrawRootText(0, 0, "Newt test program"); newtPushHelpLine(NULL); newtDrawRootText(-50, 0, "More root text"); newtOpenWindow(2, 2, 30, 10, "first window"); newtOpenWindow(10, 5, 65, 16, "window 2"); f = newtForm(NULL, "This is some help text", 0); chklist = newtForm(NULL, NULL, 0); b1 = newtButton(3, 1, "Exit"); b2 = newtButton(18, 1, "Update"); r1 = newtRadiobutton(20, 10, "Choice 1", 0, NULL); r2 = newtRadiobutton(20, 11, "Chc 2", 1, r1); r3 = newtRadiobutton(20, 12, "Choice 3", 0, r2); rsf = newtForm(NULL, NULL, 0); newtFormAddComponents(rsf, r1, r2, r3, NULL); newtFormSetBackground(rsf, NEWT_COLORSET_CHECKBOX); for (i = 0; i < 10; i++) { sprintf(buf, "Check %d", i); cs[i] = newtCheckbox(3, 10 + i, buf, ' ', NULL, &results[i]); newtFormAddComponent(chklist, cs[i]); } l1 = newtLabel(3, 6, "Scale:"); l2 = newtLabel(3, 7, "Scrolls:"); l3 = newtLabel(3, 8, "Hidden:"); e1 = newtEntry(12, 6, "", 20, &scaleVal, 0); e2 = newtEntry(12, 7, "Default", 20, &enr2, NEWT_FLAG_SCROLL); /* e3 = newtEntry(12, 8, NULL, 20, &enr3, NEWT_FLAG_HIDDEN); */ e3 = newtEntry(12, 8, NULL, 20, &enr3, NEWT_FLAG_PASSWORD); cbis[0].state = &results[0]; cbis[0].en = e1; newtComponentAddCallback(cs[0], disableCallback, &cbis[0]); scale = newtScale(3, 14, 32, 100); newtFormSetHeight(chklist, 3); newtFormAddComponents(f, b1, b2, l1, l2, l3, e1, e2, e3, chklist, NULL); newtFormAddComponents(f, rsf, scale, NULL); lb = newtListbox(45, 1, 6, NEWT_FLAG_MULTIPLE | NEWT_FLAG_BORDER | NEWT_FLAG_SCROLL | NEWT_FLAG_SHOWCURSOR); newtListboxAppendEntry(lb, "First", (void *) 1); newtListboxAppendEntry(lb, "Second", (void *) 2); newtListboxAppendEntry(lb, "Third", (void *) 3); newtListboxAppendEntry(lb, "Fourth", (void *) 4); newtListboxAppendEntry(lb, "Sixth", (void *) 6); newtListboxAppendEntry(lb, "Seventh", (void *) 7); newtListboxAppendEntry(lb, "Eighth", (void *) 8); newtListboxAppendEntry(lb, "Ninth", (void *) 9); newtListboxAppendEntry(lb, "Tenth", (void *) 10); newtListboxInsertEntry(lb, "Fifth", (void *) 5, (void *) 4); newtListboxInsertEntry(lb, "Eleventh", (void *) 11, (void *) 10); newtListboxDeleteEntry(lb, (void *) 11); spinState = spinner; timeLabel = newtLabel(45, 8, "Spinner: -"); t = newtTextbox(45, 10, 17, 5, NEWT_FLAG_WRAP); newtTextboxSetText(t, "This is some text does it look okay?\nThis should be alone.\nThis shouldn't be printed"); newtFormAddComponents(f, lb, timeLabel, t, NULL); newtRefresh(); newtFormSetTimer(f, 200); do { newtFormRun(f, &es); if (es.reason == NEWT_EXIT_COMPONENT && es.u.co == b2) { newtScaleSet(scale, atoi(scaleVal)); newtRefresh(); answer = NULL; } else if (es.reason == NEWT_EXIT_TIMER) { spinState++; if (!*spinState) spinState = spinner; sprintf(buf, "Spinner: %c", *spinState); newtLabelSetText(timeLabel, buf); } } while (es.reason != NEWT_EXIT_COMPONENT || es.u.co == b2); scaleVal = strdup(scaleVal); enr2 = strdup(enr2); enr3 = strdup(enr3); selectedList = newtListboxGetSelection(lb, &numsel); newtFormDestroy(f); newtPopWindow(); newtPopWindow(); newtFinished(); printf("got string 1: %s\n", scaleVal); printf("got string 2: %s\n", enr2); printf("got string 3: %s\n", enr3); if(selectedList) { printf("\nSelected listbox items:\n"); for(i = 0; i < numsel; i++) puts(selectedList[i]); } return 0; }