void ShowPreferencesDialog( Widget w, XtPointer client_data, XtPointer callback ) { FileMgrRec * file_mgr_rec; DialogData * dialog_data; FileMgrData * file_mgr_data; PreferencesRec *preferences_rec; Arg args[1]; Widget mbar; char *tmpStr, *tempStr; /* Set the menu item to insensitive to prevent multiple */ /* dialogs from being posted and get the area under the */ /* menu pane redrawn. */ if (w) { mbar = XmGetPostedFromWidget(XtParent(w)); XmUpdateDisplay (w); XtSetArg(args[0], XmNuserData, &file_mgr_rec); XtGetValues(mbar, args, 1); /* Ignore accelerators when we're insensitive */ if ((file_mgr_rec->menuStates & PREFERENCES) == 0) { XSetInputFocus(XtDisplay(w), XtWindow(file_mgr_rec->preferencesBtn_child), RevertToParent, CurrentTime); return; } } else { /* Done only during a restore session */ file_mgr_rec = (FileMgrRec *)client_data; } /* Ignore accelerators received after we're unposted */ if ((dialog_data = _DtGetInstanceData ((XtPointer)file_mgr_rec)) == NULL) return; file_mgr_data = (FileMgrData *) dialog_data->data; file_mgr_rec->menuStates &= ~ PREFERENCES; _DtShowDialog (file_mgr_rec->shell, NULL, (XtPointer)file_mgr_rec, file_mgr_data->preferences, PreferencesChange, (XtPointer)file_mgr_rec, PreferencesClose, (XtPointer)file_mgr_rec, NULL, False, False, NULL, NULL); /* set the title */ preferences_rec = (PreferencesRec *)_DtGetDialogInstance( file_mgr_data->preferences); if(file_mgr_data->title != NULL && (strcmp(file_mgr_data->helpVol, DTFILE_HELP_NAME) != 0 || strcmp(file_mgr_data->title, "Trash Can") == 0)) { tmpStr = GETMESSAGE(23, 1, "Set View Options"); tempStr = (char *)XtMalloc(strlen(tmpStr) + strlen(file_mgr_data->title) + 5); sprintf(tempStr, "%s - %s", file_mgr_data->title, tmpStr); } else { tmpStr = (GETMESSAGE(23,22, "File Manager - Set View Options")); tempStr = XtNewString(tmpStr); } XtSetArg (args[0], XmNtitle, tempStr); XtSetValues (preferences_rec->shell, args, 1); XtFree(tempStr); file_mgr_rec->preferencesBtn_child=preferences_rec->shell; }
void ShowDialogCB( Widget w, XtPointer dialog, XtPointer call_data ) { _DtShowDialog( (DialogType) dialog, NULL); }
void MenuItemCB( Widget w, XtPointer client_data, XtPointer call_data ) { int i; char *logoFile; char *logoName; char *temp_p; char temp[MAXPATHLEN]; #ifdef VG_TRACE vg_TRACE_EXECUTION("main: entered MenuItemCB ..."); #endif /* VG_TRACE */ session_selected = True; switch ( (int) client_data) { case OB_RESTART_SERVER: CleanupAndExit(NULL, NOTIFY_RESTART); break; case OB_NO_WINDOWS: CleanupAndExit(NULL, NOTIFY_NO_WINDOWS); break; case OB_COPYRIGHT: _DtShowDialog(copyright, NULL); break; case OB_ALT_DTS: case OB_FAILSAFE: case OB_DTLITE: case OB_DT: case OB_LAST_DT: /* * set the label on the dt_label widget.. */ if(w != options_last_dt) { XtSetArg(argt[0], XmNlabelString, &xmstr); XtGetValues(w, argt, 1); XtSetArg(argt[0], XmNlabelString, xmstr); XtSetValues(dt_label, argt, 1); } else ClearDtlabel(); i = 0; XtSetArg(argt[i], XmNuserData, &logoFile ); i++; XtGetValues(w, argt, i); /* * remove trailing spaces */ if(strchr(logoFile,' ')) temp_p = strtok(logoFile," "); else temp_p = logoFile; logoName = _DtGetIconFileName(DefaultScreenOfDisplay(dpyinfo.dpy), temp_p, NULL, NULL, 0); if (logoName == NULL) { LogError( ReadCatalog(MC_LOG_SET,MC_LOG_NO_LOGOBIT,MC_DEF_LOG_NO_LOGOBIT), logoFile); logoFile = NULL; } i = 0; XtSetArg(argt[i], XmNimageName, logoName); i++; XtSetValues(logo_pixmap, argt, i); /* * Clear Dt toggles... */ ClearDtButtons(); /* * set the selected toggle button... */ XtSetArg(argt[0], XmNset, True); XtSetValues(w, argt, 1); SetDefaultDt(w); /* * return focus to name/password widgets... */ if ( focusWidget != NULL) ProcessTraversal(focusWidget, XmTRAVERSE_CURRENT); break; } }
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 }