static void XlfdCB() { Widget dialog; Arg args[5]; char mess[1024]; int n; XmString cs, cs1, cs2; sprintf(mess, "%s : %s", resource.file_name, fullpath); cs = XmStringCreateLocalized(mess); cs1 = XmStringSeparatorCreate(); cs2 = XmStringConcat(cs, cs1); XmStringFree(cs); XmStringFree(cs1); sprintf(mess, "%s : %s", resource.xlfd_name, fullFontData.xlfdname); cs1 = XmStringCreateLocalized(mess); cs = XmStringConcat(cs2, cs1); XmStringFree(cs1); XmStringFree(cs2); n = 0; XtSetArg (args[n], XmNtitle, resource.l_xlfd_title); n++; XtSetArg (args[n], XmNmessageString, cs); n++; XtSetArg (args[n], XmNdialogStyle, XmDIALOG_MODELESS); n++; dialog = XmCreateInformationDialog (toplevel, "Xlfd_name", args, n); XtUnmanageChild (XmMessageBoxGetChild(dialog, XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild (XmMessageBoxGetChild(dialog, XmDIALOG_HELP_BUTTON)); XtManageChild (dialog); XmStringFree(cs); }
XmString multiline_xmstring(char *text) { char *start, *end; Boolean done; XmString string = NULL; XmString tmp_string; XmString separator = NULL; char *buffer; if (!text) return (NULL); buffer = alloca(strlen((const char *)text) + 1); start = text; done = FALSE; while ( ! done) /* loop thu local copy */ { /* looking for \n */ end = start; while ((*end != '\0') && (*end != '\n')) end++; if (*end == '\0') done = TRUE; /* we are at the end */ /* Don't convert empty string unless it's an initial newline. */ if ((start != end) || (start == text)) { strncpy(buffer, start, end - start); buffer[end - start] = '\0'; if (!string) string = XmStringCreate(buffer, XmFONTLIST_DEFAULT_TAG); else { tmp_string = XmStringCreate(buffer, XmFONTLIST_DEFAULT_TAG); string = XmStringConcat(string, tmp_string); XmStringFree(tmp_string); } } /* Make a separator if this isn't the last segment. */ if (!done) { if (!separator) separator = XmStringSeparatorCreate(); string = XmStringConcat(string, separator); start = ++end; /* start at next char */ } } if (separator) XmStringFree(separator); return (string); }
int main(int argc, char **argv) { Widget toplevel, one, d; XtAppContext app; XmFontList fontlist; XmString xms; Arg args[10]; XmTab tabs[MAX_COLUMNS]; XmTabList tablist; XmRendition renditions[MAX_COLUMNS]; XmRenderTable rendertable; XmStringTable xmstring_table; int xmstring_count; Pixel pixels[MAX_COLUMNS]; int n, i; XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app, "Label", NULL, 0, &argc, argv, fallback, NULL); d = XmGetXmDisplay(XtDisplay(toplevel)); /* Create the multi-column data for the list */ xmstring_table = CreateListData(&xmstring_count) ; xms = xmstring_table[0]; for (i=1; i<xmstring_count; i++) { XmString s, x; s = XmStringSeparatorCreate(); x = XmStringConcat(xms, s); xms = XmStringConcat(x, xmstring_table[i]); } one = XtVaCreateManagedWidget("One", xmLabelWidgetClass, toplevel, XmNalignment, XmALIGNMENT_BEGINNING, XmNlabelString, xms, NULL); XtRealizeWidget(toplevel); #if 0 /* Note: the following values are the result of * querying the current geometry. */ { static XtWidgetGeometry Expected[] = { {CWWidth | CWHeight , 0, 0, 112, 58, 0,0,0}, /* One */ }; /* toplevel should be replaced with to correct applicationShell */ PrintDetails(toplevel, Expected); } #endif LessTifTestMainLoop(toplevel); exit(0); }
/****************************************************** createDialog ******************************************************/ void createDialog(Widget parent,int dialogType,char *message1,char *message2) { XmString str,str1,str2,str3,string,string2; Widget dialog = 0; dialog = XmCreateMessageDialog(parent, "Dialog", NULL, 0); XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_HELP_BUTTON)); XtSetSensitive(XmMessageBoxGetChild(dialog,XmDIALOG_HELP_BUTTON),FALSE); XtAddCallback(dialog,XmNokCallback,killDialog,NULL); switch(dialogType) { case XmDIALOG_WARNING: str=XmStringCreateLtoR("WarningDialog",XmSTRING_DEFAULT_CHARSET); break; case XmDIALOG_ERROR: str=XmStringCreateLtoR("ErrorDialog",XmSTRING_DEFAULT_CHARSET); break; case XmDIALOG_INFORMATION: str=XmStringCreateLtoR("InformationDialog",XmSTRING_DEFAULT_CHARSET); break; case XmDIALOG_MESSAGE: str=XmStringCreateLtoR("MessageDialog",XmSTRING_DEFAULT_CHARSET); break; case XmDIALOG_QUESTION: str=XmStringCreateLtoR("QuestionDialog",XmSTRING_DEFAULT_CHARSET); break; case XmDIALOG_WORKING: str=XmStringCreateLtoR("WorkDialog",XmSTRING_DEFAULT_CHARSET); break; default: str=XmStringCreateLtoR("Dialog",XmSTRING_DEFAULT_CHARSET); break; } str1 = XmStringCreateLtoR(message1,XmFONTLIST_DEFAULT_TAG); str2 = XmStringCreateLtoR(message2,XmFONTLIST_DEFAULT_TAG); string = XmStringConcat(str1,str2); str3 = XmStringCreateLtoR("ALH ",XmFONTLIST_DEFAULT_TAG); string2 = XmStringConcat(str3,str); XtVaSetValues(dialog, XmNdialogType, dialogType, XmNdialogTitle, string2, XmNmessageString, string, (XtPointer)NULL); XmStringFree(str); XmStringFree(str1); XmStringFree(str2); XmStringFree(string); XtManageChild(dialog); XFlush(display); }
static void motFileDlgNewFolderCallback(Widget w, Widget filebox, XtPointer call_data) { XmString xm_new_dir = motFileDlgPrompt(filebox, iupStrMessageGet("IUP_NAMENEWFOLDER")); if (xm_new_dir) { XmString xm_dir; XtVaGetValues(filebox, XmNdirectory, &xm_dir, NULL); xm_dir = XmStringConcat(xm_dir, xm_new_dir); { char* dir; XmStringGetLtoR(xm_dir, XmSTRING_DEFAULT_CHARSET, &dir); iupdrvMakeDirectory(dir); XtFree(dir); } XtVaSetValues(filebox, XmNdirectory, xm_dir, NULL); XmStringFree(xm_dir); XmStringFree(xm_new_dir); } (void)call_data; (void)w; }
int main(int argc, char **argv) { #ifdef LESSTIF_VERSION Widget toplevel; XtAppContext app; XmFontList fontlist; XmString xmstr1 = XmStringCreate("Here is a ", "MY_FONT1"); XmString xmstr2 = XmStringCreate("different font", "MY_FONT"); char buf[] = { 0xdf, 0x80, 0x06, 0x00, 0x01, 0x00 }; XmStringContext context; char *text; XmStringCharSet cs; XmStringDirection dir; Boolean sep; XmString xmstr = XmStringConcat(xmstr1, xmstr2); XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app, "Label", NULL, 0, &argc, argv, NULL, NULL); fontlist = XmFontListAppendEntry(NULL, XmFontListEntryCreate("MY_FONT", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-o-normal--17-0-75-75-p-*-iso8859-1"))); fontlist = XmFontListAppendEntry(fontlist, XmFontListEntryCreate("MY_FONT1", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-r-normal--17-0-75-75-p-*-iso8859-1"))); asn1_dump((unsigned char *)xmstr); printf("SINGLE SEGMENT\n"); text = NULL; cs = "-adobe-helvetica-bold-r-normal--17-0-75-75-p-*-iso8859-1"; _XmStringSingleSegment(xmstr, &text, &cs); printf("text: %s cs: %s\n", text ? text : "(empty)", cs ? cs : "(empty)"); if (_XmStringIsXmString((XmString)buf)) printf("IS STRING\n"); else printf("ISN'T STRING\n"); asn1_dump((unsigned char *)buf); XmStringInitContext(&context, xmstr); while (XmStringGetNextSegment(context, &text, &cs, &dir, &sep)) { printf("%s %s %d %d\n", text ? text : "(null)", cs ? cs : "(null)", dir, sep); } XmStringFreeContext(context); printf("current charset: %s\n", _XmStringGetCurrentCharset()); #endif exit(0); }
int main(int argc, char *argv[]) { int n; Arg args[10]; XtAppContext app; Widget toplevel, button; XmString label, label1, label2; setlocale(LC_ALL, ""); //建立顶级窗口 toplevel = XtVaAppInitialize(&app, "FontList1", NULL, 0, &argc, argv, NULL, NULL); //建立按钮上标签的字符串 label1 = XmStringCreate("复合字符串Testing", "small"); label2 = XmStringCreate("大字体Testing", "large"); label = XmStringConcat(label1, label2); n = 0; XtSetArg(args[n], XmNlabelString, label); n++; button = XmCreatePushButton(toplevel, "pushbutton", args, n); XtManageChild(button); //显示窗口 XtRealizeWidget(toplevel); //进入事件循环 XtAppMainLoop(app); }
int main(int argc, char **argv) { Widget toplevel, one; XtAppContext app; XmFontList fontlist; XmString xmstr1 = XmStringCreateLtoR("Here is a\n", "MY_FONT1"); XmString xmstr2 = XmStringCreate("different font", "MY_FONT"); XmString xmstr3 = XmStringCreate("accelerator", "MY_FONT"); XmStringContext context; char *text; XmStringCharSet tag; XmStringDirection dir; Boolean sep; XmString xmstr = XmStringConcat(xmstr1, xmstr2); XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app, "Label", NULL, 0, &argc, argv, FallBack, NULL); XmStringInitContext(&context, xmstr); while (XmStringGetNextSegment(context, &text, &tag, &dir, &sep)) { printf("Text: %s Tag: %s Dir: %d Sep: %d\n", text, tag, dir, sep); fflush(stdout); } fontlist = XmFontListAppendEntry(NULL, XmFontListEntryCreate("MY_FONT", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-o-normal--17-0-75-75-p-*-iso8859-1"))); fontlist = XmFontListAppendEntry(fontlist, XmFontListEntryCreate("MY_FONT1", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-o-normal--30-*-*-*-*-*-iso8859-1"))); one = XtVaCreateManagedWidget("One", xmLabelWidgetClass, toplevel, XmNfontList, fontlist, XmNlabelString, xmstr, XmNacceleratorText, xmstr3, NULL); printf("xmstr: %p %p\n", xmstr, ((XmLabelRec*)one)->label._label); XtRealizeWidget(toplevel); { static XtWidgetGeometry Expected[] = { CWWidth | CWHeight, 0, 0, 128, 55, 0,0,0, /* Form */ }; PrintDetails(toplevel, Expected); } LessTifTestMainLoop(toplevel); /* XtAppMainLoop(app); */ exit(0); }
int main(int argc, char **argv) { Widget toplevel, one, d; XtAppContext app; XmFontList fontlist; XmString xmstr1 = XmStringCreateLtoR("\n\nHere is a\n\n", "MY_FONT1"); XmString xmstr2 = XmStringCreate("different font", "MY_FONT"); XmString xmstr3 = XmStringCreate("accelerator", "MY_FONT"); XmStringContext context; char *text; XmStringCharSet tag; XmStringDirection dir; Boolean sep; XmString xmstr = XmStringConcat(xmstr1, xmstr2); XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app, "Label", NULL, 0, &argc, argv, NULL, NULL); d = XmGetXmDisplay(XtDisplay(toplevel)); XtAddCallback(d, XmNnoFontCallback, NoFontCB, NULL); XtAddCallback(d, XmNnoRenditionCallback, NoRenditionCB, NULL); fontlist = XmFontListAppendEntry(NULL, XmFontListEntryCreate("MY_FONT", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-o-normal--17-0-75-75-p-*-iso8859-1"))); fontlist = XmFontListAppendEntry(fontlist, XmFontListEntryCreate("MY_FONT1", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-r-normal--17-0-75-75-p-*-iso8859-1"))); one = XtVaCreateManagedWidget("One", xmLabelWidgetClass, toplevel, XmNfontList, fontlist, XmNlabelString, xmstr, XmNacceleratorText, xmstr3, NULL); XtRealizeWidget(toplevel); /* Note: the following values are the result of * querying the current geometry. */ { static XtWidgetGeometry Expected[] = { {CWWidth | CWHeight , 0, 0, 112, 58, 0,0,0}, /* One */ }; /* toplevel should be replaced with to correct applicationShell */ PrintDetails(toplevel, Expected); } LessTifTestMainLoop(toplevel); exit(0); }
static XmString string_append(XmString s1, XmString s2) { XmString s3 = XmStringConcat(s1, s2); XmStringFree(s1); XmStringFree(s2); return (s3); }
XmString xs_concat_words(int n, char *words[]) { XmString xmstr; int i, len = 0; if (n <= 0) return(XmStringCreate("", XmSTRING_DEFAULT_CHARSET)); xmstr = (XmString)NULL; for (i = 0; i < n; i++) { XmString tmp; if (i > 0) { tmp = XmStringCreate(" ", XmSTRING_DEFAULT_CHARSET); xmstr = XmStringConcat(xmstr, tmp); } tmp = XmStringCreate(words[i], XmSTRING_DEFAULT_CHARSET); xmstr = XmStringConcat(xmstr, tmp); } return xmstr; }
/* ** CreateListData(): routine to convert the ** poem into an array of compound strings */ XmStringTable CreateListData (int *count) { XmStringTable table = (XmStringTable) 0 ; int line = 0 ; int column = 0 ; int index = 0 ; XmString entry ; XmString row =NULL; XmString tmp =NULL; XmString tab; tab = XmStringComponentCreate (XmSTRING_COMPONENT_TAB, 0, NULL); while (poem[index] != (char *) 0) { /* create a compound string, using the rendition tag */ entry = XmStringGenerate ((XtPointer) poem[index], NULL, XmCHARSET_TEXT, rendition_data[column].tag) ; if (row != (XmString)NULL) { tmp = XmStringConcat (row, tab) ; XmStringFree (row) ; row = XmStringConcatAndFree (tmp, entry) ; } else { row = entry ; } ++column ; if (column == MAX_COLUMNS) { if (table == (XmStringTable) 0) { table = (XmStringTable) XtMalloc((unsigned) 1 * sizeof (XmString)) ; } else { table = (XmStringTable) XtRealloc((char *) table, (unsigned) (line + 1) * sizeof (XmString)) ; } table[line++] = row ; row = (XmString) 0 ; column = 0 ; } index++ ; } XmStringFree (tab) ; table[line] = (XmString) 0 ; *count = line ; return table ; }
void Longer(Widget w, XtPointer client, XtPointer call) { Widget l = (Widget)client; XmString x, y; fprintf(stderr, "Longer: resizing the label ...\n"); XtVaGetValues(l, XmNlabelString, &x, NULL); y = XmStringConcat(x, x); XtVaSetValues(l, XmNlabelString, y, NULL); XmStringFree(y); }
int main(int argc, char **argv) { Widget toplevel, one, two; XtAppContext app; XmFontList fontlist; XmString xmstr1 = XmStringCreate("Here is a ", "MY_FONT1"); XmString xmstr2 = XmStringCreate("different font", "MY_FONT"); XmString xmstr = XmStringConcat(xmstr1, xmstr2); XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app, "LabelG", NULL, 0, &argc, argv, FallBack, NULL); fontlist = XmFontListAppendEntry(NULL, XmFontListEntryCreate("MY_FONT", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-o-normal--17-0-75-75-p-*-iso8859-1"))); fontlist = XmFontListAppendEntry(fontlist, XmFontListEntryCreate("MY_FONT1", XmFONT_IS_FONT, XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-bold-r-normal--17-0-75-75-p-*-iso8859-1"))); two = XtVaCreateManagedWidget("Two", xmBulletinBoardWidgetClass, toplevel, NULL); one = XtVaCreateManagedWidget("One", xmPushButtonGadgetClass, two, XmNfontList, fontlist, XmNlabelString, xmstr, NULL); XtRealizeWidget(toplevel); /* Note: the following values are the result of * querying the current geometry. */ { static XtWidgetGeometry Expected[] = { CWWidth | CWHeight , 0, 0, 217, 51, 0,0,0, /* Two */ CWWidth | CWHeight | CWX | CWY, 10, 10, 196, 30, 0,0,0, /* One */ }; /* toplevel should be replaced with to correct applicationShell */ PrintDetails(toplevel, Expected); } LessTifTestMainLoop(toplevel); exit(0); }
int main(int argc, char **argv) { Widget toplevel, one, d; XtAppContext app; XmFontList fontlist; XmString xms; Arg args[10]; XmTab tabs[MAX_COLUMNS]; XmTabList tablist; XmRendition renditions[MAX_COLUMNS]; XmRenderTable rendertable; XmStringTable xmstring_table; int xmstring_count; Pixel pixels[MAX_COLUMNS]; int n, i; XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app, "Label", NULL, 0, &argc, argv, NULL, NULL); d = XmGetXmDisplay(XtDisplay(toplevel)); XtAddCallback(d, XmNnoFontCallback, NoFontCB, NULL); XtAddCallback(d, XmNnoRenditionCallback, NoRenditionCB, NULL); /* Create some colors */ for (i = 0 ; i < MAX_COLUMNS ; i++) { pixels[i] = ConvertStringToPixel (toplevel, rendition_data[i].color) ; } /* Create tab stops for columnar output */ for (i = 0 ; i < MAX_COLUMNS ; i++) { tabs[i] = XmTabCreate ((float) 1.5, XmINCHES, ((i == 0) ? XmABSOLUTE : XmRELATIVE), XmALIGNMENT_BEGINNING, ".") ; } /* Create a tablist table which contains the tabs */ tablist = XmTabListInsertTabs (NULL, tabs, XtNumber (tabs), 0) ; /* Create some multi-font/color renditions, and use the tablist */ /* This will be inherited if we use it on the first rendition */ for (i = 0 ; i < MAX_COLUMNS ; i++) { n = 0 ; if (i == 0) { XtSetArg (args[n], XmNtabList, tablist); n++; } XtSetArg (args[n], XmNrenditionForeground, pixels[i]); n++; XtSetArg (args[n], XmNfontName, rendition_data[i].font); n++; XtSetArg (args[n], XmNfontType, XmFONT_IS_FONT); n++; renditions[i] = XmRenditionCreate (toplevel, rendition_data[i].tag, args, n); } /* Create the Render Table */ rendertable = XmRenderTableAddRenditions (NULL, renditions, XtNumber (renditions), XmMERGE_NEW) ; /* Create the multi-column data for the list */ xmstring_table = CreateListData(&xmstring_count) ; xms = xmstring_table[0]; for (i=1; i<xmstring_count; i++) { XmString s, x; s = XmStringSeparatorCreate(); x = XmStringConcat(xms, s); xms = XmStringConcat(x, xmstring_table[i]); } one = XtVaCreateManagedWidget("One", xmLabelWidgetClass, toplevel, XmNalignment, XmALIGNMENT_BEGINNING, XmNrenderTable, rendertable, XmNlabelString, xms, NULL); XtRealizeWidget(toplevel); #if 0 /* Note: the following values are the result of * querying the current geometry. */ { static XtWidgetGeometry Expected[] = { {CWWidth | CWHeight , 0, 0, 112, 58, 0,0,0}, /* One */ }; /* toplevel should be replaced with to correct applicationShell */ PrintDetails(toplevel, Expected); } #endif LessTifTestMainLoop(toplevel); exit(0); }
void writesdm(char *filename) { cdmObjectHandle ds, mesh, meshref; cdmObjectHandle PtVec3C, PtScalarT, ZoneScalarT, FldHandle; cdm_int64 status; short flag; long i, j, nvect; char str2[] = "Error - cannot open file: "; XmString string, string1, string2; double *temparray, *tempvect1, *tempvect2, *tempvect3; /* Create the dataset that contains the field data. */ printf("\nStoring Field data in CDM file \"%s\".\n", filename); ds = cdmDataset_Create(cdmHDF5, cdmCreate, filename); if (ds < 0) { errorfile = 0; string1 = XmStringLtoRCreate(str2, XmSTRING_DEFAULT_CHARSET); string2 = XmStringLtoRCreate(filnam, XmSTRING_DEFAULT_CHARSET); string = XmStringConcat(string1,string2); XtVaSetValues(objerrlab,XmNlabelString,string,NULL); XmStringFree(string); XmStringFree(string1); XmStringFree(string2); MyManageChild(errorform); return; } mesh = cdmGenPolyhedralMesh_Create(ds, 3, 3, nnodes, "XCMUPoly3DMesh"); if (mesh < 0) { printf("Cannot create mesh.\n"); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMesh_Commit(mesh); /* Write velocities. */ flag = -1; if (nvectin > -1) flag = 1; else if (cvectin > -1) flag = 0; if (flag > -1) { /* Define velocity field template. */ PtVec3C = cdmGenPolyhedralMeshFieldTemplate_Create(ds, mesh, 3, "ThreeCompPtVector"); if (PtVec3C < 0) { printf("Cannot create ThreeCompPtVector template.\n"); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtVec3C, 1, cdm0Cell); if (status < 0) { printf("Cannot create ThreeCompPtVector template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtVec3C, 1, cdmFloat64); if (status < 0) { printf("Cannot create ThreeCompPtVector template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtVec3C, 2, cdm0Cell); if (status < 0) { printf("Cannot create ThreeCompPtVector template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtVec3C, 2, cdmFloat64); if (status < 0) { printf("Cannot create ThreeCompPtVector template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtVec3C, 3, cdm0Cell); if (status < 0) { printf("Cannot create ThreeCompPtVector template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtVec3C, 3, cdmFloat64); if (status < 0) { printf("Cannot create ThreeCompPtVector template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_Commit(PtVec3C); if (status < 0) { printf("Cannot commit ThreeCompPtVector template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } /* Fill vector arrays. */ if (flag == 1) { nvect = nnodes; tempvect1 = (double *)malloc((nnodes+1)*sizeof(double)); tempvect2 = (double *)malloc((nnodes+1)*sizeof(double)); tempvect3 = (double *)malloc((nnodes+1)*sizeof(double)); fillnodevalue(vectfldx,tempvect1); fillnodevalue(vectfldy,tempvect2); fillnodevalue(vectfldz,tempvect3); } else { nvect = ncells; tempvect1 = (double *)malloc((ncells+1)*sizeof(double)); tempvect2 = (double *)malloc((ncells+1)*sizeof(double)); tempvect3 = (double *)malloc((ncells+1)*sizeof(double)); fillcellvalue(cvectfldx,tempvect1+1); fillcellvalue(cvectfldy,tempvect2+1); fillcellvalue(cvectfldz,tempvect3+1); } /* Store vector data. */ FldHandle = cdmGenPolyhedralMeshField_Create(ds, PtVec3C, "Velocity"); if (FldHandle < 0) { printf("Cannot create Velocity field.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } printf("\nStoring first velocity component with %ld values.\n",nvect); status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle,1,1,nvect,1, tempvect1+1); if (status < 0) { printf("Cannot create Velocity field.\n"); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } printf("\nStoring second velocity component with %ld values.\n",nvect); status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle,1,1,nvect,1, tempvect2+1); if (status < 0) { printf("Cannot create Velocity field.\n"); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } printf("\nStoring third velocity component with %ld values.\n",nvect); status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle,1,1,nvect,1, tempvect3+1); if (status < 0) { printf("Cannot create Velocity field.\n"); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } free(tempvect1); free(tempvect2); free(tempvect3); status = cdmGenPolyhedralMeshField_Commit(FldHandle); if (status < 0) { printf("Cannot create Velocity field.\n"); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); } /* Define point scalar field template, if field data exists. */ flag = 0; for (i = 0; i < MAXFIELDS; i++) flag += nvars_to_write[i]; if (flag > 0) { PtScalarT = cdmGenPolyhedralMeshFieldTemplate_Create(ds, mesh, 1, "PointScalarT"); if (PtScalarT < 0) { printf("Cannot create PointScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtScalarT, 1, cdm0Cell); if (status < 0) { printf("Cannot create PointScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtScalarT, 1, cdmFloat64); if (status < 0) { printf("Cannot create PointScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_Commit(PtScalarT); if (status < 0) { printf("Cannot commit PointScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } /* Loop through node fields and store data. */ temparray = (double *)malloc((nnodes+1)*sizeof(double)); for (i = 0; i < MAXFIELDS; i++) { if (nvars_to_write[i]) { FldHandle = cdmGenPolyhedralMeshField_Create(ds, PtScalarT, fieldname[i]); if (FldHandle < 0) { printf("Cannot create point scalar field \"%s\".\n", fieldname[i]); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } fillnodevalue(i,temparray); printf("\nStoring point component %s with %ld values.\n", fieldname[i], nnodes); status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle, 1, 1, nnodes, 1, temparray+1); if (status < 0) { printf("Cannot create point scalar field \"%s\".\n", fieldname[i]); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshField_Commit(FldHandle); if (status < 0) { printf("Cannot create point scalar field \"%s\".\n", fieldname[i]); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } cdmGenPolyhedralMeshField_Delete(FldHandle); } } cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); free(temparray); } /* Define cell scalar field template, if field data exists. */ flag = 0; for (i = 0; i < MAXFIELDS; i++) flag += cvars_to_write[i]; if (flag > 0) { ZoneScalarT = cdmGenPolyhedralMeshFieldTemplate_Create(ds, mesh, 1, "ZoneScalarT"); if (ZoneScalarT < 0) { printf("Cannot create ZoneScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(ZoneScalarT, 1, cdm0Cell); if (status < 0) { printf("Cannot create ZoneScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(ZoneScalarT, 1, cdmFloat64); if (status < 0) { printf("Cannot create ZoneScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshFieldTemplate_Commit(ZoneScalarT); if (status < 0) { printf("Cannot commit ZoneScalarT template.\n"); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } /* Loop through cell fields and store data. */ temparray = (double *)malloc((ncells)*sizeof(double)); for (i = 0; i < MAXFIELDS; i++) { if (cvars_to_write[i]) { FldHandle = cdmGenPolyhedralMeshField_Create(ds, ZoneScalarT, cfieldname[i]); if (FldHandle < 0) { printf("Cannot create zone scalar field \"%s\".\n", cfieldname[i]); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } fillcellvalue(i,temparray); printf("\nStoring zone component %s with %ld values.\n", cfieldname[i], ncells); status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle, 1, 1, ncells, 1, temparray); if (status < 0) { printf("Cannot create zone scalar field \"%s\".\n", cfieldname[i]); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } status = cdmGenPolyhedralMeshField_Commit(FldHandle); if (status < 0) { printf("Cannot create zone scalar field \"%s\".\n", cfieldname[i]); cdmGenPolyhedralMeshField_Delete(FldHandle); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT); cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C); cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); return; } cdmGenPolyhedralMeshField_Delete(FldHandle); } } free(temparray); cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT); } /* Cleanup. */ cdmGenPolyhedralMesh_Delete(mesh); cdmDataset_Delete(ds); }
/****************************************************************************** * Function: int FormatChunksToXmString () * * Parameters: * *ret_list may be NULL when called * * Returns: 0 if successful, -1 if errors * * errno Values: * * Purpose: Take some rich text chunks and turn it into an XmString. * ******************************************************************************/ static int FormatChunksToXmString( DtHelpDispAreaStruct *pDAS, Boolean free_flag, void **title_chunks, XmString *ret_title, XmFontList *ret_list, Boolean *ret_mod ) { int result = 0; int i; long j; int quarkCount; long chunkType; long myIdx; _DtCvPointer fontPtr; char *charSet; const char *strChunk; char buffer[16]; _DtHelpFontHints fontSpecs; XmFontContext fontContext; XmString partTitle; XmString newTitle; XrmQuark charSetQuark; XrmName myCharSetQuarks[20]; XrmName xrmName[_CEFontAttrNumber]; Boolean myMore; /* * Initialize the pointers. */ *ret_title = NULL; *ret_mod = False; if (title_chunks == NULL) return -1; /* * initialize the font context */ _DtHelpCeCopyDefFontAttrList(&fontSpecs); if ( NULL != *ret_list ) { if (XmFontListInitFontContext (&fontContext, *ret_list) == False) result = -1; else { XFontStruct *myFontStruct; /* * quarkize all the character sets found. */ quarkCount = 0; do { myMore = XmFontListGetNextFont (fontContext, &charSet, &myFontStruct); if (myMore) { myCharSetQuarks[quarkCount++] = XrmStringToQuark (charSet); XtFree (charSet); } } while (myMore); XmFontListFreeFontContext (fontContext); } } /* if NULL != *ret_list */ else { /* if NULL == *ret_list */ quarkCount = 0; myCharSetQuarks[0] = 0; } /* * Build the XrmString based on the segments. * The format of the returned information is * 'DT_HELP_CE_CHARSET locale string' * 'DT_HELP_CE_FONT_PTR fontptr string' * 'DT_HELP_CE_SPC spc' * 'DT_HELP_CE_STRING string' - uses last specified * charset/font_ptr. * * The order and manner in which the title_chunks are processed * is known and depended upon in several locations. * Do not change this without changing the other locations. * See the _DtHelpFormatxxx() routines and the ones that * create the title_chunk arrays in FormatSDL.c and FormatCCDF.c */ myIdx = __DtHelpDefaultFontIndexGet(pDAS); _DtHelpCopyDefaultList(xrmName); for (i = 0; result == 0 && title_chunks[i] != DT_HELP_CE_END; i++) { /* * create a string for the char set and a quark for it. */ chunkType = (long) title_chunks[i++]; /* * i now points to the first value after the type */ if (chunkType & DT_HELP_CE_CHARSET) { char *charSet; char *lang = (char *) title_chunks[i]; /* * test to see if the locale is in a lang.codeset form */ if (_DtHelpCeStrchr(lang, ".", 1, &charSet) == 0) { *charSet = '\0'; charSet++; } else { charSet = lang; lang = NULL; } /* * resolve/load the font for the default fonts */ _DtHelpDAResolveFont(pDAS, lang, charSet, fontSpecs, &fontPtr); myIdx = (long) fontPtr; if (lang != NULL) { charSet--; *charSet = '.'; } if (free_flag) free(title_chunks[i]); /* * move the i to point to the string. */ i++; } else if (chunkType & DT_HELP_CE_FONT_PTR) { /* * get the default font for the language and code set. */ (void) __DtHelpFontCharSetQuarkGet(pDAS, (long)title_chunks[i], &xrmName[_DT_HELP_FONT_CHAR_SET]); (void) __DtHelpFontLangQuarkGet(pDAS, (long)title_chunks[i], &xrmName[_DT_HELP_FONT_LANG_TER]); (void) __DtHelpFontIndexGet(pDAS, xrmName, &myIdx); /* * move the i to point to the string. */ i++; } /* * the i point spc or string. */ if (chunkType & DT_HELP_CE_SPC) { j = (long) title_chunks[i]; strChunk = _DtHelpDAGetSpcString(pDAS->spc_chars[j].spc_idx); fontPtr = pDAS->spc_chars[j].font_ptr; /* * get the default font for the language and code set. */ (void) __DtHelpFontCharSetQuarkGet(pDAS, (long)fontPtr, &xrmName[_DT_HELP_FONT_CHAR_SET]); (void) __DtHelpFontLangQuarkGet(pDAS, (long)fontPtr, &xrmName[_DT_HELP_FONT_LANG_TER]); (void) __DtHelpFontIndexGet(pDAS, xrmName, &myIdx); } else /* if (chunkType & _DT_HELP_CE_STRING) */ strChunk = (char *) title_chunks[i]; sprintf(buffer, "%ld", myIdx); charSetQuark = XrmStringToQuark(buffer); j = 0; while (j < quarkCount && myCharSetQuarks[j] != charSetQuark) j++; /* * If we didn't find a matching character set, * add it to the list. */ if (j >= quarkCount) { /* Copy the input list so XmFontListAppendEntry can mangle it. */ /* But only do it once! */ if (False == *ret_mod) *ret_list = XmFontListCopy(*ret_list); if (myIdx < 0) { XFontSet fontSet = __DtHelpFontSetGet(pDAS->font_info, myIdx); XmFontListEntry fontEntry; fontEntry = XmFontListEntryCreate (buffer, XmFONT_IS_FONTSET, (XtPointer) fontSet); *ret_list = XmFontListAppendEntry (*ret_list, fontEntry); XmFontListEntryFree (&fontEntry); } else { XFontStruct *fontStruct = __DtHelpFontStructGet(pDAS->font_info, myIdx); XmFontListEntry fontEntry; fontEntry = XmFontListEntryCreate (buffer, XmFONT_IS_FONT, (XtPointer) fontStruct); *ret_list = XmFontListAppendEntry (*ret_list, fontEntry); XmFontListEntryFree (&fontEntry); } *ret_mod = True; if (*ret_list == NULL) result = -1; myCharSetQuarks[quarkCount++] = charSetQuark; } /* * add this segment to the XmString. */ if (result == 0) { if (*ret_title == NULL) *ret_title = XmStringGenerate ((char *) strChunk, buffer, XmCHARSET_TEXT, NULL); else { partTitle = XmStringGenerate ((char *) strChunk, buffer, XmCHARSET_TEXT, NULL); newTitle = XmStringConcat (*ret_title, partTitle); XmStringFree (*ret_title); XmStringFree (partTitle); *ret_title = newTitle; } /* * if a newline was specified, * replace it with a blank. */ if (*ret_title != NULL && (chunkType & DT_HELP_CE_NEWLINE)) { partTitle = XmStringGenerate (" ", buffer, XmCHARSET_TEXT, NULL); newTitle = XmStringConcat (*ret_title, partTitle); XmStringFree (*ret_title); XmStringFree (partTitle); *ret_title = newTitle; } if (*ret_title == NULL) result = -1; } if (free_flag && (chunkType & DT_HELP_CE_STRING)) free(title_chunks[i]); } /* * deallocate the memory. */ if (free_flag) free(title_chunks); return result; }
/****************************************************** Error message popup ******************************************************/ void errMsg(const char *fmt, ...) { XmString cstring,cstringOld,cstringNew; va_list vargs; static char lstring[1024]; /* DANGER: Fixed buffer size */ static int warningboxMessages = 0; int nargs=10; Arg args[10]; size_t len; struct tm * tms; time_t timeofday; timeofday = time(0L); tms = localtime(&timeofday); len = strftime(lstring,TIME_SIZE,"%Y/%m/%d %H:%M ",tms); va_start(vargs,fmt); vsprintf(&lstring[TIME_SIZE-1],fmt,vargs); va_end(vargs); if(lstring[TIME_SIZE-1] == '\0') return; alLogOpModMessage(0,0,&lstring[TIME_SIZE-1]); if (_no_error_popup) { return; } if (warningbox) { if (warningboxMessages > 30) return; cstring=XmStringCreateLtoR(lstring,XmSTRING_DEFAULT_CHARSET); XtVaGetValues(warningbox, XmNmessageString, &cstringOld, NULL); cstringNew = XmStringConcat(cstringOld,cstring); XmStringFree(cstring); XmStringFree(cstringOld); if (warningboxMessages == 30){ cstring=XmStringCreateLtoR( "\nOnly first 30 messages are displayed and logged\n", XmSTRING_DEFAULT_CHARSET); cstringOld = cstringNew; cstringNew = XmStringConcat(cstringOld,cstring); XmStringFree(cstring); XmStringFree(cstringOld); } XtVaSetValues(warningbox, XmNmessageString, cstringNew, NULL); XmStringFree(cstringNew); warningboxMessages += 1; XtManageChild(warningbox); } else { XBell(display,50); XBell(display,50); XBell(display,50); cstring=XmStringCreateLtoR(lstring,XmSTRING_DEFAULT_CHARSET); nargs=0; XtSetArg(args[nargs],XmNtitle,"ALH Warning"); nargs++; XtSetArg(args[nargs],XmNmessageString,cstring); nargs++; warningbox=XmCreateWarningDialog(topLevelShell,"warningMessage", args,nargs); XmStringFree(cstring); XtDestroyWidget(XmMessageBoxGetChild(warningbox,XmDIALOG_CANCEL_BUTTON)); XtDestroyWidget(XmMessageBoxGetChild(warningbox,XmDIALOG_HELP_BUTTON)); /*XtAddCallback(warningbox,XmNokCallback,logMessageString,NULL);*/ XtAddCallback(warningbox,XmNokCallback,killWidget,NULL); warningboxMessages = 1; XtManageChild(warningbox); } }
/****************************************************** createActionDialog ******************************************************/ void createActionDialog(Widget parent,int dialogType,char *message1, XtCallbackProc okCallback,XtPointer okParm,XtPointer userParm) { static Widget dialog = 0; /* make it static for reuse */ XmString str,str1,str2,str3; static XtCallbackProc oldOkCallback = 0; static XtPointer oldOkParm = 0; if (dialog && XtIsManaged(dialog)) XtUnmanageChild(dialog); if (!dialogType ) return; /* destroy runtimeToplevel dialog so dialog is positioned properly */ if ( parent && dialog && XtParent(XtParent(dialog)) != parent) { XtDestroyWidget(dialog); dialog = 0; } if (!dialog) { dialog = XmCreateMessageDialog(parent, "Dialog", NULL, 0); XtSetSensitive(XmMessageBoxGetChild(dialog,XmDIALOG_HELP_BUTTON),FALSE); XtAddCallback(dialog,XmNcancelCallback,(XtCallbackProc) XtUnmanageChild,NULL); } else { XtRemoveCallback(dialog,XmNokCallback,oldOkCallback,(XtPointer)oldOkParm); } switch(dialogType) { case XmDIALOG_WARNING: str = XmStringCreateSimple("WarningDialog"); break; case XmDIALOG_ERROR: str = XmStringCreateSimple("ErrorDialog"); break; case XmDIALOG_INFORMATION: str = XmStringCreateSimple("InformationDialog"); break; case XmDIALOG_MESSAGE: str = XmStringCreateSimple("MessageDialog"); break; case XmDIALOG_QUESTION: str = XmStringCreateSimple("QuestionDialog"); break; case XmDIALOG_WORKING: str = XmStringCreateSimple("WorkingDialog"); break; default: str = XmStringCreateSimple("InformationDialog"); break; } str1 = XmStringCreateLtoR("ALH ",XmFONTLIST_DEFAULT_TAG); str3 = XmStringConcat(str1,str); str2=XmStringCreateLtoR(message1,XmSTRING_DEFAULT_CHARSET); XtVaSetValues(dialog, XmNuserData, userParm, XmNdialogType, dialogType, XmNdialogTitle, str3, XmNmessageString, str2, (XtPointer)NULL); XmStringFree(str); XmStringFree(str2); XtAddCallback(dialog,XmNokCallback,okCallback,okParm); oldOkCallback = okCallback; oldOkParm = okParm; XtManageChild(dialog); XFlush(display); /* XmUpdateDisplay(dialog); */ return; }
void XgraBuildPresentPanel() { Widget PanelLabel; Widget PanelButton; Pixmap PanelPixmap; XmString PanelString; XmString PanelString1; XmString PanelString2; XmFontList PanelFontList; XFontStruct *PanelFont; Display *PanelDisplay; char Buffer[ 64 ]; Arg Args[3]; autbegin(); PanelDisplay = XtDisplay( XgraMainWindow ); PanelFont = XLoadQueryFont( PanelDisplay, "-*-helvetica-bold-o-*--24-*" ); PanelFontList = XmFontListCreate( PanelFont, "Panel_charset1" ); PanelFont = XLoadQueryFont( PanelDisplay, "-*-helvetica-bold-r-*--18-*" ); PanelFontList = XmFontListAdd( PanelFontList, PanelFont, "Panel_charset2" ); PanelFont = XLoadQueryFont( PanelDisplay, "-*-helvetica-bold-r-*--12-*" ); PanelFontList = XmFontListAdd( PanelFontList, PanelFont, "Panel_charset4" ); XtSetArg( Args[0], XmNshadowType , XmSHADOW_ETCHED_IN ); XtSetArg( Args[1], XmNdeleteResponse, XmDESTROY ); XtSetArg( Args[2], XmNtitle , "Xgra present" ); XgraHelpPresentPanel.PANEL = XmCreateFormDialog( XgraMainWindow, XgraHelpPresentPanel.TITLE, Args, 3); XtAddCallback( XgraHelpPresentPanel.PANEL, XmNdestroyCallback, XgraDestroyDialogCallback, NULL ); XgraHelpPresentPanel.PANEL_FORM = XtVaCreateManagedWidget( "", xmFormWidgetClass, XgraHelpPresentPanel.PANEL, XmNtopAttachment , XmATTACH_FORM, XmNbottomAttachment , XmATTACH_FORM, XmNleftAttachment , XmATTACH_FORM, XmNrightAttachment , XmATTACH_FORM, NULL ); XgraHelpPresentPanel.FRAME = XtVaCreateManagedWidget( "", xmFrameWidgetClass, XgraHelpPresentPanel.PANEL_FORM, XmNtopAttachment , XmATTACH_POSITION, XmNtopPosition , 05, XmNbottomAttachment, XmATTACH_POSITION, XmNbottomPosition , 95, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 05, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 95, NULL ); XgraHelpPresentPanel.FORM = XtVaCreateManagedWidget( "", xmFormWidgetClass, XgraHelpPresentPanel.FRAME, XmNtopAttachment , XmATTACH_POSITION, XmNtopPosition , 05, XmNbottomAttachment, XmATTACH_POSITION, XmNbottomPosition , 95, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 05, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 95, NULL ); PanelPixmap = XgraCreatePixmap( XgraMainWindow, XgraHelpPresentPixmap, XGRA_PRESENT_PIXMAP_WIDTH, XGRA_PRESENT_PIXMAP_HEIGHT ); PanelLabel = XtVaCreateManagedWidget( "", xmLabelGadgetClass, XgraHelpPresentPanel.FORM, XmNlabelType , XmPIXMAP, XmNlabelPixmap , PanelPixmap, NULL ); sprintf( Buffer, "ALLIANCE CAD SYSTEM %s\n", ALLIANCE_VERSION ); PanelString = XmStringCreateLtoR( Buffer, "Panel_charset2" ); PanelLabel = XtVaCreateManagedWidget( "", xmLabelWidgetClass, XgraHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNtopAttachment , XmATTACH_POSITION, XmNtopPosition , 15, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 75, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 25, NULL ); XmStringFree( PanelString ); PanelString1 = XmStringCreateLtoR( "Xgra" , "Panel_charset1" ); PanelString2 = XmStringCreateLtoR( "\n( Touch Me )", "Panel_charset4" ); PanelString = XmStringConcat( PanelString1, PanelString2 ); PanelButton = XtVaCreateManagedWidget( "", xmPushButtonWidgetClass, XgraHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNshadowThickness , 3, XmNtopAttachment , XmATTACH_WIDGET, XmNtopWidget , PanelLabel, XmNtopOffset , 5, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 60, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 40, NULL ); XmStringFree( PanelString ); XmStringFree( PanelString1 ); XmStringFree( PanelString2 ); XtAddCallback( PanelButton, XmNactivateCallback, XgraExitDialogCallback, NULL ); sprintf( Buffer, "\nGraphic GRA Viewer\nVersion %s", ALLIANCE_VERSION ); PanelString = XmStringCreateLtoR( Buffer, "Panel_charset2" ); PanelLabel = XtVaCreateManagedWidget( "", xmLabelWidgetClass, XgraHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNtopAttachment , XmATTACH_WIDGET, XmNtopWidget , PanelButton, XmNtopOffset , 5, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 75, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 25, NULL ); XmStringFree( PanelString ); PanelString = XmStringCreateLtoR( "copyright \251 1995 MASI, \ CAO-VLSI Team\nE-mail support: [email protected]", "Panel_charset4" ); PanelLabel = XtVaCreateManagedWidget( "", xmLabelWidgetClass, XgraHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNtopAttachment , XmATTACH_WIDGET, XmNtopWidget , PanelLabel, XmNtopOffset , 5, XmNrightAttachment , XmATTACH_FORM, XmNleftAttachment , XmATTACH_FORM, NULL ); XmStringFree( PanelString ); autend(); }
static void da_expose(Widget w, XtPointer client_data, XtPointer call_data) { XExposeEvent *e = &((XmDrawingAreaCallbackStruct *) call_data) ->event->xexpose; XmString *items, *selected_items, out_string, tmp_string; Boolean underline; int item_count, selected_count; Widget list = (Widget) client_data; Dimension width, height, extent, item_extent, string_height; int i; XmFontList font_list; XRectangle clip; /* Extract items, selected items and font from XmList */ XtVaGetValues(list, XmNitems, &items, XmNitemCount, &item_count, XmNselectedItems, &selected_items, XmNselectedItemCount, &selected_count, XmNfontList, &font_list, NULL); XtVaGetValues(w, XmNwidth, &width, XmNheight, &height, NULL); underline = (selected_count > 0); create_gc(w); extent = 0; out_string = NULL; /* * Form list items into a single compound string, inserting * separators where needed to avoid drawing outside the XmDrawingArea */ for (i = 0; i < item_count; i++) { item_extent = XmStringWidth(font_list, items[i]); if (out_string != NULL && (extent + item_extent > width)) { extent = 0; out_string = string_append(out_string, XmStringSeparatorCreate()); } tmp_string = XmStringConcat(out_string, items[i]); XmStringFree(out_string); out_string = tmp_string; extent = extent + item_extent; } string_height = XmStringHeight(font_list, out_string); clip.x = e->x; clip.y = e->y; clip.width = e->width; clip.height = e->height; XSetClipRectangles(XtDisplay(w), gc, 0, 0, &clip, 1, YXBanded); /* Draw compound string, underlining the selected item if any */ if (underline) XmStringDrawUnderline(XtDisplay(w), XtWindow(w), font_list, out_string, gc, 0, (height - string_height) / 2, width, XmALIGNMENT_CENTER, XmSTRING_DIRECTION_L_TO_R, NULL, selected_items[0]); else XmStringDraw(XtDisplay(w), XtWindow(w), font_list, out_string, gc, 0, (height - string_height) / 2, width, XmALIGNMENT_CENTER, XmSTRING_DIRECTION_L_TO_R, NULL); XmStringFree(out_string); }
void RequestCB( XtPointer client_data, int *source, XtInputId *id) { char buf[512]; int count; int remainder; RequestHeader *phdr = (RequestHeader *)buf; #ifdef VG_TRACE vg_TRACE_EXECUTION("main: entered RequestCB ..."); #endif /* VG_TRACE */ /* * There's a request in the pipe. Read the header. */ count = read(0, buf, sizeof(*phdr)); if (count != sizeof(*phdr)) { return; } /* * Calculate amount of data after header. */ remainder = phdr->length - sizeof(*phdr); if (remainder > 0) { /* * Read remainder of request. */ count = read(0, buf+sizeof(*phdr), remainder); } /* * Initiate response to request. */ switch(phdr->opcode) { case REQUEST_OP_EXIT: #ifdef VG_TRACE vg_TRACE_EXECUTION("main: got REQUEST_OP_EXIT ..."); #endif /* VG_TRACE */ RespondExitCB(NULL, NULL, NULL); break; case REQUEST_OP_MESSAGE: { RequestMessage *r = (RequestMessage *)phdr; XmString string; #ifdef VG_TRACE vg_TRACE_EXECUTION("main: got REQUEST_OP_MESSAGE ..."); #endif /* VG_TRACE */ if (r->idMC) { FILE *fp; /* * Caller passed in MC_* message id. */ if (r->idMC == MC_NO_LOGIN && (fp = fopen(NO_LOGIN_FILE,"r")) != NULL) { /* * For MC_NO_LOGIN read message from file. */ char buffer[256]; int j; string = NULL; while (fgets(buffer, 256, fp) != NULL) { j = strlen(buffer); if ( buffer[j-1] == '\n' ) buffer[j-1] = '\0'; string = XmStringConcat(xmstr, XmStringCreate(buffer, XmFONTLIST_DEFAULT_TAG)); string = XmStringConcat(xmstr, XmStringSeparatorCreate()); } } else { /* * Read message from message catalog. */ string = ReadCatalogXms(MC_ERROR_SET, r->idMC, buf+r->offMessage); } } else { /* * Generate message from provided string. */ #ifdef SIA string = multiline_xmstring(buf+r->offMessage); #else string = XmStringCreate(buf+r->offMessage,XmFONTLIST_DEFAULT_TAG); #endif } _DtShowDialog(error, string); XmStringFree(string); } break; case REQUEST_OP_HOSTNAME: #ifdef VG_TRACE vg_TRACE_EXECUTION("main: got REQUEST_OP_HOSTNAME ..."); #endif /* VG_TRACE */ _DtShowDialog(hostname, NULL); break; case REQUEST_OP_EXPASSWORD: #ifdef VG_TRACE vg_TRACE_EXECUTION("main: got REQUEST_OP_EXPASSWORD ..."); #endif /* VG_TRACE */ _DtShowDialog(expassword, NULL); break; case REQUEST_OP_CHPASS: #ifdef VG_TRACE vg_TRACE_EXECUTION("main: got REQUEST_OP_CHPASS ..."); #endif /* VG_TRACE */ break; case REQUEST_OP_CHALLENGE: { RequestChallenge *r = (RequestChallenge *)phdr; XmString string; int i; LoginTextPtr textdata; Boolean change; #ifdef VG_TRACE vg_TRACE_EXECUTION("main: got REQUEST_OP_CHALLENGE ..."); #endif /* VG_TRACE */ textdata = GetLoginTextPtr(login_text); change = (textdata->bEcho != r->bEcho); XtUnmapWidget(textdata->text[textdata->bEcho]); textdata->bEcho = r->bEcho; textdata->noechobuf[0] = '\0'; XtAddEventHandler(textdata->text[textdata->bEcho], ExposureMask, False, FakeFocusIn, NULL); XtMapWidget(textdata->text[textdata->bEcho]); XtPopup(login_shell, XtGrabNone); XGrabKeyboard (dpyinfo.dpy, XtWindow (textdata->text[textdata->bEcho]), False, GrabModeAsync, GrabModeAsync, CurrentTime); XmTextFieldSetString( textdata->text[textdata->bEcho], r->offUserNameSeed ? buf+r->offUserNameSeed : ""); XmTextFieldSetSelection ( textdata->text[1], 0, XmTextFieldGetLastPosition(textdata->text[1]), CurrentTime ); if (r->idMC) { /* * Read message from message catalog. */ string = ReadCatalogXms(MC_LABEL_SET, r->idMC, buf+r->offChallenge); } else { /* * Generate message from provided string. */ string = XmStringCreate(buf+r->offChallenge,XmFONTLIST_DEFAULT_TAG); } i = 0; XtSetArg(argt[i], XmNlabelString, string ); i++; XtSetValues(login_label, argt, i); XmStringFree(string); if (change) { char buf[256]; i = 0; if (textdata->bEcho) { XtSetArg(argt[i], XmNlabelString, textdata->onGreeting ); i++; } else { sprintf(buf, textdata->offGreetingFormat, textdata->offGreetingUname); string = XmStringCreate(buf, XmFONTLIST_DEFAULT_TAG); XtSetArg(argt[i], XmNlabelString, string ); i++; free(textdata->offGreetingUname); } XtSetValues(greeting, argt, i); /* set the dt_label with the session that is enabled */ SetDtLabelAndIcon(); } XtSetSensitive(ok_button, True); XtSetSensitive(clear_button, True); XtSetSensitive(options_button, True); XtSetSensitive(help_button, True); XUngrabKeyboard(dpyinfo.dpy,CurrentTime); } break; #ifdef SIA case REQUEST_OP_FORM: { RequestForm *r = (RequestForm *)buf; int i; char *prompt_ptr; #ifdef VG_TRACE vg_TRACE_EXECUTION("main: got REQUEST_OP_FORM ..."); #endif /* VG_TRACE */ siaFormInfo.num_prompts = r->num_prompts; siaFormInfo.rendition = r->rendition; siaFormInfo.title = XtMalloc(strlen(buf + r->offTitle)); strcpy(siaFormInfo.title, buf + r->offTitle); prompt_ptr = buf + r->offPrompts; for (i=0; i < siaFormInfo.num_prompts; i++) { siaFormInfo.visible[i] = r->visible[i]; siaFormInfo.prompts[i] = XtMalloc(strlen(prompt_ptr)); siaFormInfo.answers[i] = NULL; strcpy(siaFormInfo.prompts[i], prompt_ptr); prompt_ptr += strlen(prompt_ptr) + 1; } /* * Create Widgets: * Form * Title * prompt labels and answer text fields for each prompt * OK button * Add callbacks as needed. If not visible don't echo. * On OK callback, collect info and send it. Destroy widgets. */ SiaForm(&siaFormInfo); } break; #endif /* SIA */ } #if 0 { /* * Send immediate response to debug. */ char outbuf[512]; char *p; ResponseDebug *rdebug = (ResponseDebug *)outbuf; rdebug->hdr.opcode = REQUEST_OP_DEBUG; rdebug->hdr.reserved = 0; rdebug->offString = sizeof(*rdebug); p = ((char *)(rdebug)) + rdebug->offString; strcpy(p, "This is my debug string"); rdebug->hdr.length = sizeof(*rdebug) + strlen(p) + 1; TellRequester(outbuf, (size_t) rdebug->hdr.length); } #endif }
void XschBuildPresentPanel() { Widget PanelLabel; Widget PanelButton; Pixmap PanelPixmap; XmString PanelString; XmString PanelString1; XmString PanelString2; XmFontList PanelFontList; XFontStruct *PanelFont; Display *PanelDisplay; char Buffer[ 64 ]; Arg Args[3]; autbegin(); PanelDisplay = XtDisplay( XschMainWindow ); PanelFont = XLoadQueryFont( PanelDisplay, "-*-helvetica-bold-o-*--24-*" ); PanelFontList = XmFontListCreate( PanelFont, "Panel_charset1" ); PanelFont = XLoadQueryFont( PanelDisplay, "-*-helvetica-bold-r-*--18-*" ); PanelFontList = XmFontListAdd( PanelFontList, PanelFont, "Panel_charset2" ); PanelFont = XLoadQueryFont( PanelDisplay, "-*-helvetica-bold-r-*--12-*" ); PanelFontList = XmFontListAdd( PanelFontList, PanelFont, "Panel_charset4" ); XtSetArg( Args[0], XmNshadowType , XmSHADOW_ETCHED_IN ); XtSetArg( Args[1], XmNdeleteResponse, XmDO_NOTHING ); XtSetArg( Args[2], XmNtitle , "Xsch present" ); XschHelpPresentPanel.PANEL = XmCreateFormDialog( XschMainWindow, XschHelpPresentPanel.TITLE, Args, 3); XtAddCallback( XschHelpPresentPanel.PANEL, XmNdestroyCallback, XschDestroyDialogCallback, NULL ); XschHelpPresentPanel.PANEL_FORM = XtVaCreateManagedWidget( "", xmFormWidgetClass, XschHelpPresentPanel.PANEL, XmNtopAttachment , XmATTACH_FORM, XmNbottomAttachment , XmATTACH_FORM, XmNleftAttachment , XmATTACH_FORM, XmNrightAttachment , XmATTACH_FORM, NULL ); XschHelpPresentPanel.FRAME = XtVaCreateManagedWidget( "", xmFrameWidgetClass, XschHelpPresentPanel.PANEL_FORM, XmNtopAttachment , XmATTACH_POSITION, XmNtopPosition , 05, XmNbottomAttachment, XmATTACH_POSITION, XmNbottomPosition , 95, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 05, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 95, NULL ); XschHelpPresentPanel.FORM = XtVaCreateManagedWidget( "", xmFormWidgetClass, XschHelpPresentPanel.FRAME, XmNtopAttachment , XmATTACH_POSITION, XmNtopPosition , 05, XmNbottomAttachment, XmATTACH_POSITION, XmNbottomPosition , 95, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 05, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 95, NULL ); PanelPixmap = XschCreatePixmap( XschMainWindow, LIP6bw_bits, LIP6bw_width, LIP6bw_height); PanelLabel = XtVaCreateManagedWidget( "", xmLabelGadgetClass, XschHelpPresentPanel.FORM, XmNlabelType , XmPIXMAP, XmNlabelPixmap , PanelPixmap, NULL ); sprintf( Buffer, "ALLIANCE CAD SYSTEM %s\n", ALLIANCE_VERSION ); PanelString = XmStringCreateLtoR( Buffer, "Panel_charset2" ); PanelLabel = XtVaCreateManagedWidget( "", xmLabelWidgetClass, XschHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNtopAttachment , XmATTACH_POSITION, XmNtopPosition , 15, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 75, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 25, NULL ); XmStringFree( PanelString ); PanelString1 = XmStringCreateLtoR( "Xsch" , "Panel_charset1" ); PanelString2 = XmStringCreateLtoR( "\n( Touch Me )", "Panel_charset4" ); PanelString = XmStringConcat( PanelString1, PanelString2 ); PanelButton = XtVaCreateManagedWidget( "", xmPushButtonWidgetClass, XschHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNshadowThickness , 3, XmNtopAttachment , XmATTACH_WIDGET, XmNtopWidget , PanelLabel, XmNtopOffset , 5, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 60, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 40, NULL ); XmStringFree( PanelString ); XmStringFree( PanelString1 ); XmStringFree( PanelString2 ); XtAddCallback( PanelButton, XmNactivateCallback, XschExitDialogCallback, NULL ); sprintf( Buffer, "\nGraphic Schematic Viewer\nVersion %s", VERSION ); PanelString = XmStringCreateLtoR( Buffer, "Panel_charset2" ); PanelLabel = XtVaCreateManagedWidget( "", xmLabelWidgetClass, XschHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNtopAttachment , XmATTACH_WIDGET, XmNtopWidget , PanelButton, XmNtopOffset , 5, XmNrightAttachment , XmATTACH_POSITION, XmNrightPosition , 75, XmNleftAttachment , XmATTACH_POSITION, XmNleftPosition , 25, NULL ); XmStringFree( PanelString ); PanelString = XmStringCreateLtoR( "copyright \251 1996-2004 ASIM, \ CAO-VLSI Team\nWritten by Ludovic Jacomme\nE-mail : [email protected]", "Panel_charset4" ); PanelLabel = XtVaCreateManagedWidget( "", xmLabelWidgetClass, XschHelpPresentPanel.FORM, XmNfontList , PanelFontList, XmNlabelString , PanelString, XmNtopAttachment , XmATTACH_WIDGET, XmNtopWidget , PanelLabel, XmNtopOffset , 5, XmNrightAttachment , XmATTACH_FORM, XmNleftAttachment , XmATTACH_FORM, NULL ); XmStringFree( PanelString ); autend(); }
void MakeDialog( DialogType dtype ) { register int i, j; int width; FILE *fp, *fopen(); char buffer[128]; char *str; Widget w, text; Dimension txt_width, txt_height; XmString ok, cancel, nw, sv; Widget tlev; /* * do things common to all dialogs... */ ok = ReadCatalogXms(MC_LABEL_SET, MC_OK_LABEL, MC_DEF_OK_LABEL); cancel = ReadCatalogXms(MC_LABEL_SET, MC_CANCEL_LABEL, MC_DEF_CANCEL_LABEL); i = InitArg(MessageBox); XtSetArg(argt[i], XmNmarginHeight, MBOX_MARGIN_HEIGHT ); i++; XtSetArg(argt[i], XmNmarginWidth, MBOX_MARGIN_WIDTH ); i++; XtSetArg(argt[i], XmNshadowThickness, SHADOW_THICKNESS ); i++; XtSetArg(argt[i], XmNokLabelString, ok ); i++; XtSetArg(argt[i], XmNcancelLabelString, cancel ); i++; XtSetArg(argt[i], XmNnoResize, False ); i++; XtSetArg(argt[i], XmNresizePolicy, XmRESIZE_ANY ); i++; /* * create the various dialogs... */ /* JET - check the matte widget, and if non-null, well use that as * the parent for dialogs. Otherwise use table (the original * toplevel widget for this func). This is useful for Xinerama so * that child dialogs are centered on the matte, and not the whole * SLS screen. */ if (matte != (Widget)NULL) tlev = matte; else tlev = table; switch (dtype) { case error: xmstr = ReadCatalogXms(MC_ERROR_SET, MC_LOGIN, ""); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateErrorDialog(tlev, "error_message", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); error_message = w; break; case help: xmstr = ReadCatalogXms(MC_HELP_SET, MC_HELP, MC_DEF_HELP); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateInformationDialog(tlev, "help_message", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); txt_width = DisplayWidth (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_height = DisplayHeight (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_width = (txt_width > 850) ? 800 : txt_width - 50; txt_height = (txt_height > 900) ? 750 : txt_height - 150; i = InitArg(Text); XtSetArg(argt[i], XmNheight, txt_height); i++; XtSetArg(argt[i], XmNwidth, txt_width); i++; XtSetArg(argt[i], XmNeditMode, XmMULTI_LINE_EDIT); i++; XtSetArg(argt[i], XmNscrollBarDisplayPolicy, XmAS_NEEDED); i++; XtSetArg(argt[i], XmNscrollingPolicy, XmAUTOMATIC); i++; XtSetArg(argt[i], XmNeditable, False); i++; str = (char*) ReadCatalog(MC_HELP_SET, MC_HELP, MC_DEF_HELP); XtSetArg(argt[i], XmNvalue, strdup(str)); i++; text = XmCreateScrolledText(w, "help_message_text", argt, i); XtManageChild(text); XtManageChild(w); help_message = w; break; case copyright: if ((fp = fopen(COPYRIGHT,"r")) == NULL) #if defined( __hp_osf ) xmstr = XmStringCreate("Cannot open copyright file '/usr/X11/copyright'.", XmFONTLIST_DEFAULT_TAG); #else xmstr = XmStringCreate("Cannot open copyright file '/etc/copyright'.", XmFONTLIST_DEFAULT_TAG); #endif else { xmstr = (XmString) NULL; while (fgets(buffer, 128, fp) != NULL) { j = strlen(buffer); if ( buffer[j-1] == '\n' ) buffer[j-1] = '\0'; if ( xmstr != NULL ) xmstr = XmStringConcat(xmstr, XmStringSeparatorCreate()); xmstr = XmStringConcat(xmstr, XmStringCreate(buffer, XmFONTLIST_DEFAULT_TAG)); } } fclose(fp); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateInformationDialog(tlev, "copyright_msg", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); XtAddCallback(w, XmNokCallback, CopyrightCB, (XtPointer) 0); copyright_msg = w; break; case hostname: nw = ReadCatalogXms(MC_LABEL_SET, MC_NW_LABEL, MC_DEF_NW_LABEL); sv = ReadCatalogXms(MC_LABEL_SET, MC_START_LABEL, MC_DEF_START_LABEL); xmstr = ReadCatalogXms(MC_HELP_SET, MC_SYSTEM, MC_DEF_SYSTEM); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; XtSetArg(argt[i], XmNokLabelString, nw ); i++; XtSetArg(argt[i], XmNcancelLabelString, sv ); i++; w = XmCreateWarningDialog(tlev, "hostname_msg", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); XmStringFree(nw); XmStringFree(sv); hostname_message = w; break; case expassword: xmstr = ReadCatalogXms(MC_ERROR_SET, MC_PASSWD_EXPIRED, MC_DEF_PASSWD_EXPIRED); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateQuestionDialog(tlev, "password_msg", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); passwd_message = w; break; case help_chooser: xmstr = ReadCatalogXms(MC_HELP_SET, MC_HELP_CHOOSER, MC_DEF_HELP_CHOOSER); w = XmCreateInformationDialog(tlev, "help_message", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); txt_width = DisplayWidth (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_height = DisplayHeight (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_width = (txt_width > 850) ? 800 : txt_width - 50; txt_height = (txt_height > 900) ? 750 : txt_height - 150; i = InitArg(Text); XtSetArg(argt[i], XmNheight, txt_height); i++; XtSetArg(argt[i], XmNwidth, txt_width); i++; XtSetArg(argt[i], XmNeditMode, XmMULTI_LINE_EDIT); i++; XtSetArg(argt[i], XmNscrollBarDisplayPolicy, XmAS_NEEDED); i++; XtSetArg(argt[i], XmNscrollingPolicy, XmAUTOMATIC); i++; XtSetArg(argt[i], XmNeditable, False); i++; str = (char*) ReadCatalog(MC_HELP_SET, MC_HELP_CHOOSER, MC_DEF_HELP_CHOOSER); XtSetArg(argt[i], XmNvalue, strdup(str)); i++; text = XmCreateScrolledText(w, "help_message_text", argt, i); XtManageChild(text); XtManageChild(w); help_message = w; break; }