MCPcopy Create free account
hub / github.com/NetHack/NetHack / create_tty_status

Function create_tty_status

win/X11/winstat.c:997–1049  ·  view source on GitHub ↗

create an overall status widget (X11_status_widget) and also separate widgets for all status fields and potential conditions */

Source from the content-addressed store, hash-verified

995/* create an overall status widget (X11_status_widget) and also
996 separate widgets for all status fields and potential conditions */
997static Widget
998create_tty_status(Widget parent, Widget top)
999{
1000 Widget form; /* viewport that holds the form that surrounds everything */
1001 Widget w, over_w, prev_w;
1002 Arg args[6];
1003 Cardinal num_args;
1004 int x, y, i, fld;
1005
1006 (void) memset((genericptr_t) args, 0, sizeof args);
1007 num_args = 0;
1008 if (top) {
1009 XtSetArg(args[num_args], nhStr(XtNfromVert), top); num_args++;
1010 }
1011 XtSetArg(args[num_args], nhStr(XtNdefaultDistance), 0); num_args++;
1012 XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;
1013 XtSetArg(args[num_args], XtNwidth, 400); num_args++;
1014 XtSetArg(args[num_args], XtNheight, 100); num_args++;
1015 form = XtCreateManagedWidget("status_viewport", viewportWidgetClass,
1016 parent, args, num_args);
1017
1018 (void) memset((genericptr_t) args, 0, sizeof args);
1019 num_args = 0;
1020 XtSetArg(args[num_args], XtNwidth, 400); num_args++;
1021 XtSetArg(args[num_args], XtNheight, 100); num_args++;
1022 X11_status_widget = XtCreateManagedWidget("status_form", formWidgetClass,
1023 form, args, num_args);
1024
1025 for (y = 0; y < X11_NUM_STATUS_LINES; y++) {
1026 fld = (y > 0) ? X11_fieldorder[y - 1][0] : 0; /* temp, for over_w */
1027 /* for row(s) beyond the first, pick a widget in the previous
1028 row to put this one underneath (in 'y' terms; 'x' is fluid) */
1029 over_w = (y > 0) ? X11_status_labels[fld] : (Widget) 0;
1030 /* widget on current row to put the next one to the right of ('x') */
1031 prev_w = (Widget) 0;
1032 for (x = 0; x < X11_NUM_STATUS_FIELD; x++) {
1033 fld = X11_fieldorder[y][x]; /* next field to handle */
1034 if (fld <= BL_FLUSH)
1035 continue; /* skip fieldorder[][] padding */
1036
1037 w = create_tty_status_field(fld, 0, over_w, prev_w);
1038 X11_status_labels[fld] = prev_w = w;
1039
1040 if (fld == BL_CONDITION) {
1041 for (i = 1; i <= SIZE(X11_cond_labels); ++i) { /* 1..32 */
1042 w = create_tty_status_field(fld, i, over_w, prev_w);
1043 X11_cond_labels[i - 1] = prev_w = w;
1044 }
1045 }
1046 }
1047 }
1048 return X11_status_widget;
1049}
1050
1051/*ARGSUSED*/
1052void

Callers 1

create_status_window_ttyFunction · 0.85

Calls 1

create_tty_status_fieldFunction · 0.85

Tested by

no test coverage detected