static int motListSetSelectionPosAttrib(Ihandle* ih, const char* value) { int start=0, end=0; Widget cbedit; if (!ih->data->has_editbox) return 0; if (!value || iupStrEqualNoCase(value, "NONE")) { XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); XmTextFieldClearSelection(cbedit, CurrentTime); return 0; } if (iupStrEqualNoCase(value, "ALL")) { XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); XmTextFieldSetSelection(cbedit, (XmTextPosition)0, (XmTextPosition)XmTextFieldGetLastPosition(cbedit), CurrentTime); return 0; } if (iupStrToIntInt(value, &start, &end, ':')!=2) return 0; if(start<0 || end<0) return 0; /* end is inside the selection, in IUP is outside */ end--; XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); XmTextFieldSetSelection(cbedit, (XmTextPosition)start, (XmTextPosition)end, CurrentTime); return 0; }
void Process_Resize( void ) { int flag; char old_width[10], old_height[10]; static char *untitledStr = NULL; if ( DialogFlag == NEW ) { strcpy(undo_file, last_fname); last_fname[0] = '\0'; SavedOnce = False; Backup_Icons(); /* for undo */ flag = DO_NOT_SAVE; Init_Icons(icon_width, icon_height, flag); if (!untitledStr) untitledStr = GETSTR(2,20, "UNTITLED"); strcpy(last_fname, untitledStr); strcat(last_fname, ".m.pm"); last_fname[strlen(last_fname)] = '\0'; ChangeTitle(); Repaint_Exposed_Tablet(); Dirty = False; NewFlag = TRUE; } else{ sprintf(old_width, "%d", icon_width); XmTextFieldSetString(newWidthText, old_width); sprintf(old_height, "%d", icon_height); XmTextFieldSetString(newHeightText, old_height); XtManageChild(newIconDialog); XmProcessTraversal(newWidthText, XmTRAVERSE_CURRENT); XmTextFieldSetSelection(newWidthText, 0, 3, CurrentTime); } }
void ShowRateChangeDialog(struct rpar_object *rp,int focus) { Arg args[1]; char tempString[LINEMAX]; Widget focusTo; XmString XmTemp; char *insert; int insertlen; cur_rpar = rp; if(cur_rpar != NULL) { XmTemp=XmStringCreate("Change Rate Parameter",XmSTRING_DEFAULT_CHARSET); XtSetArg(args[0],XmNdialogTitle,XmTemp); XtSetValues(rate_dlg,args,1); if(cur_rpar->tag != NULL) XmTextFieldSetString(rate_tag,cur_rpar->tag); else XmTextFieldSetString(rate_tag,""); sprintf(tempString,"%f",cur_rpar->value); XmTextFieldSetString(rate_rate,tempString); switch(focus) { case 0: focusTo=rate_tag; break; default: focusTo=rate_rate; } } else { XmTemp=XmStringCreate("Create Rate Parameter",XmSTRING_DEFAULT_CHARSET); XtSetArg(args[0],XmNdialogTitle,XmTemp); XtSetValues(rate_dlg,args,1); XmTextFieldSetString(rate_tag,""); XmTextFieldSetString(rate_rate,""); focusTo = rate_tag; } XmStringFree(XmTemp); XtManageChild(rate_dlg); XmProcessTraversal(focusTo,XmTRAVERSE_CURRENT); insert=XmTextFieldGetString(focusTo); insertlen=strlen(insert); XmTextFieldSetSelection(focusTo,0,insertlen,XtLastTimestampProcessed(XtDisplay(focusTo))); XmTextFieldSetHighlight(focusTo,0,insertlen,XmHIGHLIGHT_SELECTED); XtFree(insert); }
void CEdit:: SetSel(int nStartChar, int nEndChar, BOOL bNoScroll) { // Set the current selection. if (_xd_textwidget != NULL) { XtVaSetValues(_xd_textwidget, XmNautoShowCursorPosition, !bNoScroll, NULL); XmTextPosition len = XmTextGetLastPosition(_xd_textwidget); if (nEndChar > len) nEndChar = (int)len ; if (XmIsText(_xd_textwidget)) XmTextSetSelection(_xd_textwidget, nStartChar, nEndChar, XtLastTimestampProcessed(XtDisplay(_xd_textwidget))); else if (XmIsTextField(_xd_textwidget)) XmTextFieldSetSelection(_xd_textwidget, nStartChar, nEndChar, XtLastTimestampProcessed(XtDisplay(_xd_textwidget))); } }
void ui_field_select_string( Widget field, BOOL assign_focus ) { STRING valuestr = NULL; valuestr = ui_field_get_string(field); if (XtIsSubclass(field, xmTextFieldWidgetClass)) XmTextFieldSetSelection(field, 0, strlen(valuestr), CurrentTime); else if (XtIsSubclass(field, xmTextWidgetClass)) XmTextSetSelection(field, 0, strlen(valuestr), CurrentTime); if (assign_focus) XmProcessTraversal(field, XmTRAVERSE_CURRENT); util_free(valuestr); }
static void motListEditKeyPressEvent(Widget cbedit, Ihandle *ih, XKeyEvent *evt, Boolean *cont) { *cont = True; iupmotKeyPressEvent(cbedit, ih, (XEvent*)evt, cont); if (*cont == False) return; if (evt->state & ControlMask) /* Ctrl */ { KeySym motcode = iupmotKeycodeToKeysym(evt); if (motcode == XK_c) { motListSetClipboardAttrib(ih, "COPY"); *cont = False; return; } else if (motcode == XK_x) { motListSetClipboardAttrib(ih, "CUT"); *cont = False; return; } else if (motcode == XK_v) { motListSetClipboardAttrib(ih, "PASTE"); *cont = False; return; } else if (motcode == XK_a) { XmTextFieldSetSelection(cbedit, 0, XmTextFieldGetLastPosition(cbedit), CurrentTime); *cont = False; return; } } }
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 }