static int motTextSetSelectionAttrib(Ihandle* ih, const char* value) { int start=1, end=1; if (!value || iupStrEqualNoCase(value, "NONE")) { XmTextClearSelection(ih->handle, CurrentTime); return 0; } if (iupStrEqualNoCase(value, "ALL")) { XmTextSetSelection(ih->handle, (XmTextPosition)0, (XmTextPosition)XmTextGetLastPosition(ih->handle), CurrentTime); return 0; } if (ih->data->is_multiline) { int lin_start=1, col_start=1, lin_end=1, col_end=1; char *str; if (sscanf(value, "%d,%d:%d,%d", &lin_start, &col_start, &lin_end, &col_end)!=4) return 0; if (lin_start<1 || col_start<1 || lin_end<1 || col_end<1) return 0; str = XmTextGetString(ih->handle); start = motTextSetLinColToPosition(str, lin_start, col_start); end = motTextSetLinColToPosition(str, lin_end, col_end); XtFree(str); } else { if (iupStrToIntInt(value, &start, &end, ':')!=2) return 0; if(start<1 || end<1) return 0; start--; /* IUP starts at 1 */ end--; } /* end is inside the selection, in IUP is outside */ end--; XmTextSetSelection(ih->handle, (XmTextPosition)start, (XmTextPosition)end, CurrentTime); return 0; }
void Doit(Widget w, XtPointer client, XtPointer call) { char *s = (char *)client; String v = NULL; short rows; fprintf(stderr, "Callback %s, widget value '%s'\n", s, XmTextGetString(w)); XtVaGetValues(w, XmNvalue, &v, XmNrows, &rows, NULL); fprintf(stderr, "GetValues => value '%s', rows %d\n", v, rows); XtFree(v); }
int GetIntText(Widget text, int *value) { char *strValue, *endPtr; int retVal; strValue = XmTextGetString(text); /* Get Value */ removeWhiteSpace(strValue); /* Remove blanks and tabs */ *value = strtol(strValue, &endPtr, 10); /* Convert string to long */ if (strlen(strValue) == 0) /* String is empty */ retVal = TEXT_IS_BLANK; else if (*endPtr != '\0') /* Whole string not parsed */ retVal = TEXT_NOT_NUMBER; else retVal = TEXT_READ_OK; XtFree(strValue); return retVal; }
static void CloseAll(Widget w, void *userData, XmAnyCallbackStruct *callData) { char *p, *str; int paren_count = 0; str = XmTextGetString(appData->com_text); MEM_ALLOC_NOTIFY(str); for(p=str;*p;p++) { if(*p == '(') paren_count++; else if(*p == ')') paren_count--; } if(paren_count < 0) ErrorPopup("Missing left parenthesis"); else while(paren_count) { AppendComText(")"); paren_count--; } free(str); }
int save_listener_text(FILE *fp) { /* return -1 if fwrite problem */ if (listener_text) { char *str = NULL; str = XmTextGetString(listener_text); if (str) { size_t bytes; bytes = fwrite((void *)str, sizeof(char), snd_strlen(str), fp); XtFree(str); if (bytes == 0) return(-1); } } return(0); }
static void command_modify_callback(Widget w, XtPointer context, XtPointer info) { XmTextVerifyCallbackStruct *cbs = (XmTextVerifyCallbackStruct *)info; if (((cbs->text)->length > 0) || (dont_check_motion)) cbs->doit = true; else { char *str = NULL, *prompt; int len; prompt = listener_prompt(ss); str = XmTextGetString(w); len = XmTextGetLastPosition(w); if (within_prompt(str, cbs->startPos, len)) cbs->doit = false; else cbs->doit = true; if (str) XtFree(str); } }
static void attr_activate_cmd_scrolled_ok( Widget w, AttrMotif* attr, XmAnyCallbackStruct* data) { char* text; int sts; text = XmTextGetString(attr->cmd_scrolledinput); if (attr->input_open) { sts = ((AttrNav*)attr->attrnav)->set_attr_value(text); XtUnmanageChild(attr->cmd_scrolledinput); XtUnmanageChild(attr->cmd_scrolled_ok); XtUnmanageChild(attr->cmd_scrolled_ca); attr->set_prompt(""); attr->input_open = 0; if (attr->redraw_cb) (attr->redraw_cb)(attr); } }
static char* motTextGetLineValueAttrib(Ihandle* ih) { if (ih->data->is_multiline) { int lin, col, start, end; char* str = iupStrGetMemory(200); char *value = XmTextGetString(ih->handle); XmTextPosition pos = XmTextGetInsertionPosition(ih->handle); motTextGetLinColFromPosition(value, pos, &lin, &col); start = motTextSetLinColToPosition(value, lin, 1); end = motTextSetLinColToPosition(value, lin, 20000); XtFree(value); XmTextGetSubstring(ih->handle, start, end-start, 200, str); /* do not include the EOL */ return str; } else return motTextGetValueAttrib(ih); }
void GUI_GeneralFreqTextField(Widget w,XtPointer client,XtPointer call){ struct CSlider *cslider=(struct CSlider *)client; char *valstring=XmTextGetString(cslider->freqtextwidget); char text[20]; double value=GUI_pitch2freq(valstring); XtFree(valstring); if(cslider->islog){ double ai; if(value==0.0f) value=0.000001f; ai=((log(value)/log(cslider->maxval))-cslider->logval)*(1/(1-cslider->logval)); XtVaSetValues(cslider->sliderwidget, XmNvalue, #ifdef USELESSTIF MAXSLIDERVAL-(int)min(MAXSLIDERVAL,max(0,(ai*MAXSLIDERVAL))), #else (int)min(MAXSLIDERVAL,max(0,(ai*MAXSLIDERVAL))), #endif NULL ); }else{ XtVaSetValues(cslider->sliderwidget, XmNvalue, #ifdef USELESSTIF MAXSLIDERVAL-min(MAXSLIDERVAL,(int)(MAXSLIDERVAL*(value-cslider->minval)/(cslider->maxval-cslider->minval))), #else min(MAXSLIDERVAL,(int)(MAXSLIDERVAL*(value-cslider->minval)/(cslider->maxval-cslider->minval))), #endif NULL ); } if(cslider->isdouble){ sprintf(text,"%.*f",cslider->resolution,value); GUI_CallCallBackDouble(cslider,value); }else{ sprintf(text,"%d",(int)value); GUI_CallCallBackInt(cslider,(int)value); } XtRemoveCallback(cslider->textwidget,XmNvalueChangedCallback,GUI_GeneralTextField,cslider); XmTextSetString(cslider->textwidget,text); XtAddCallback(cslider->textwidget,XmNvalueChangedCallback,GUI_GeneralTextField,cslider); }
void WdaMotif::activate_cmd_input( Widget w, WdaMotif *wda, XmAnyCallbackStruct *data) { char *text; int sts; text = XmTextGetString( w); if ( wda->input_open) { sts = ((WdaNav *)wda->wdanav)->set_attr_value( wda->input_node, wda->input_name, text); XtUnmanageChild( w); wda->set_prompt( ""); wda->input_open = 0; if ( wda->redraw_cb) (wda->redraw_cb)( wda); ((WdaNav *)wda->wdanav)->set_inputfocus(); } }
const char *get_text(Screen_Obj *sop) { #ifdef HAVE_MOTIF char *s, *p; int len; p = XmTextGetString(sop->so_obj); len = strlen(p); /* BUG? memory leak? when is the strdup string freed? */ if (len == 0) s = (char *) NULL; else s = strdup(p); XtFree(p); return s; #endif /* HAVE_MOTIF */ return "NO MOTIF!?"; }
void XAttMotif::activate_cmd_input( Widget w, XAtt *xatt, XmAnyCallbackStruct *data) { char *text; int sts; text = XmTextGetString( w); if ( xatt->input_open) { sts = xatt->xattnav->set_attr_value( xatt->input_node, xatt->input_name, text); XtUnmanageChild( w); xatt->set_prompt( ""); xatt->input_open = 0; if ( xatt->redraw_cb) (xatt->redraw_cb)( xatt); xatt->xattnav->set_inputfocus(); } }
int GetIntTextWarn(Widget text, int *value, char *fieldName, int warnBlank) { int result; char *valueStr; result = GetIntText(text, value); if (result == TEXT_READ_OK || (result == TEXT_IS_BLANK && !warnBlank)) return result; valueStr = XmTextGetString(text); if (result == TEXT_IS_BLANK) DialogF (DF_ERR, text, 1, "Please supply a value for %s", "Acknowledged", fieldName); else /* TEXT_NOT_NUMBER */ DialogF (DF_ERR, text, 1, "Can't read integer value \"%s\" in %s", "Acknowledged", valueStr, fieldName); XtFree(valueStr); return result; }
int GetFloatTextWarn(Widget text, double *value, char *fieldName, int warnBlank) { int result; char *valueStr; result = GetFloatText(text, value); if (result == TEXT_READ_OK || (result == TEXT_IS_BLANK && !warnBlank)) return result; valueStr = XmTextGetString(text); if (result == TEXT_IS_BLANK) DialogF (DF_ERR, text, 1, "Please supply %s value", "Acknowledged", fieldName); else /* TEXT_NOT_NUMBER */ DialogF (DF_ERR, text, 1, "Can't read %s value: \"%s\"", "Acknowledged", fieldName, valueStr); XtFree(valueStr); return result; }
static void Remove_rpg_user() { char *username_string = NULL; char buf[ 250 ] = ""; char output_buffer[ MAX_TEXT_OUTPUT_SIZE ] = ""; int return_code = -1; int n_bytes = -1; HCI_LE_log( "Removing RPG user" ); /* Fetch username from appropriate widget. */ username_string = XmTextGetString( Username_input ); /* If username is of length zero, then warn user. */ if( strlen( username_string ) != 0 ) { /* Delete RPG user from system. */ sprintf( buf, "/usr/sbin/userdel -r %s", username_string ); return_code = MISC_system_to_buffer( buf, output_buffer, MAX_TEXT_OUTPUT_SIZE, &n_bytes ); return_code = return_code >> 8; if( return_code != 0 ) { HCI_LE_error( "userdel command failed: %d", return_code ); sprintf( buf, "\nError removing RPG User %s.\n", username_string ); strcat( output_buffer, buf ); Error_popup( output_buffer ); } else { XtVaSetValues( Password_input, XmNvalue, "", NULL ); XtVaSetValues( Retype_password_input, XmNvalue, "", NULL ); XtVaSetValues( Username_input, XmNvalue, "select user", NULL ); } Remove_user_from_operate_rpg_file( username_string ); }
void Browser::placeMark() { int i; int line_no; char mark_str[2]; mark_str[0] = '\001'; mark_str[1] = '\0'; theIBMApplication->setBusyCursor(TRUE); char *str = XmTextGetString(this->text); this->clearMark(); // // Calc where it should go // unsigned long pos = XmTextGetInsertionPosition(this->text); this->marker_pos = this->page_start + pos; line_no = 0; for(i = 0; i < pos; i++) { if(str[i] == '\n') line_no++; } this->marker_line_no = this->page_start_line_no + line_no; this->updateOffsets(pos); // // Save the marker character // this->marker_char[0] = str[pos]; this->ignore_cb = True; XmTextReplace(this->text, pos, pos+1, mark_str); this->ignore_cb = False; XmTextSetInsertionPosition(this->text, pos); XtFree(str); theIBMApplication->setBusyCursor(FALSE); }
static char* motTextGetCaretAttrib(Ihandle* ih) { XmTextPosition pos = XmTextGetInsertionPosition(ih->handle); if (ih->data->is_multiline) { int col, lin; char *value = XmTextGetString(ih->handle); motTextGetLinColFromPosition(value, pos, &lin, &col); XtFree(value); return iupStrReturnIntInt(lin, col, ','); } else { pos++; /* IUP starts at 1 */ return iupStrReturnInt((int)pos); } }
static void Complain(Widget w, XEvent *event, char **str, Cardinal *num) { /* if the minibuffer has focus (via pointer movement) and user types C-j (for example), * the textfield widget doesn't have any action associated with that, so it prints * C-j and leaves the cursor where it was; without this action, Motif posts a small * empty box where the character should be, which can be confusing; another option * would be to activate the keyboard instead (as in C-x), but I think that would only * add to the confusion. */ char *old_text, *new_text; XmTextPosition curpos; curpos = XmTextGetCursorPosition(w); old_text = XmTextGetString(w); new_text = (char *)CALLOC(snd_strlen(old_text) + 5, sizeof(char)); sprintf(new_text, "%s C-%c", (old_text) ? old_text : "", str[0][0]); XmTextSetString(w, new_text); XmTextSetCursorPosition(w, curpos); if (old_text) XtFree(old_text); FREE(new_text); }
// Run program with given arguments static void gdbRunDCB(Widget, XtPointer, XtPointer) { Widget text = XmSelectionBoxGetChild(run_dialog, XmDIALOG_TEXT); String _args = XmTextGetString(text); string args(_args); XtFree(_args); string cmd = gdb->run_command(args); while (!cmd.empty()) { string c; if (cmd.contains('\n')) c = cmd.before('\n'); else c = cmd; cmd = cmd.after('\n'); gdb_command(c, run_dialog); } }
// ChangeDirectory program with given arguments static void gdbChangeDirectoryDCB(Widget, XtPointer, XtPointer) { Widget text = XmSelectionBoxGetChild(cd_dialog, XmDIALOG_TEXT); String _args = XmTextGetString(text); string args(_args); XtFree(_args); string path = source_view->full_path(args); switch (gdb->type()) { case PERL: gdb_command("chdir " + quote(path, '\'')); break; case BASH: gdb_command("eval cd " + path); break; default: gdb_command("cd " + path); } }
// // Get the text from a text widget and clip off the leading and // trailing white space. // The return string must be deleted by the caller. // char *SetMacroNameDialog::GetTextWidgetToken(Widget textWidget) { char *name = XmTextGetString(textWidget); ASSERT(name); int i,len = STRLEN(name); for (i=len-1 ; i>=0 ; i--) { if (IsWhiteSpace(name,i)) name[i] = '\0'; else break; } i=0; SkipWhiteSpace(name,i); char *s = DuplicateString(name+i); XtFree(name); return s; }
// Apply button static void ApplyPlotCommandCB(Widget, XtPointer client_data, XtPointer) { PlotWindowInfo *plot = (PlotWindowInfo *)client_data; Widget text = XmCommandGetChild(plot->command, XmDIALOG_COMMAND_TEXT); String cmd_s = 0; if (XmIsTextField(text)) cmd_s = XmTextFieldGetString(text); else if (XmIsText(text)) cmd_s = XmTextGetString(text); else { assert(0); ::abort(); } string cmd = cmd_s; XtFree(cmd_s); send_and_replot(plot, cmd); }
void cgenP_set_envCB( Widget widget, XtPointer clientData, XtPointer callData ) { /*** DTB_USER_CODE_START vvv Add C variables and code below vvv ***/ DtbCgenEnvDialogInfo env_dlg = (DtbCgenEnvDialogInfo)clientData; STRING var_name = NULL; STRING var_value = NULL; STRING old_var_value = NULL; var_name = XmTextFieldGetString(env_dlg->name_textf); if (util_strempty(var_name)) return; var_value = XmTextGetString(env_dlg->textpane); if (strlist_str_exists(user_env_vars, var_name)) { /* the user has set this before - we need to deallocate * the string we allocated */ old_var_value = (STRING) strlist_get_str_data(user_env_vars, var_name); util_free(old_var_value); strlist_remove_str(user_env_vars, var_name); } if (!util_strempty(var_value)) strlist_add_str(user_env_vars, var_name, (void *)strdup(var_value)); else strlist_add_str(user_env_vars, var_name, (void *)NULL); /*** DTB_USER_CODE_END ^^^ Add C variables and code above ^^^ ***/ /*** DTB_USER_CODE_START vvv Add C code below vvv ***/ /*** DTB_USER_CODE_END ^^^ Add C code above ^^^ ***/ }
void FindDialog::textFieldCallback( Widget field, XtPointer data, XtPointer) { char *s; FindDialog *findData = (FindDialog *)data; if (*(s = XmTextGetString(field)) == '\0') { // Empty field. Traverse (void) XmProcessTraversal(field, XmTRAVERSE_NEXT_TAB_GROUP); } else { // Field not empty. Do search findData->getAllFields(); if (!findData->findMatching(False)) { XBell(XtDisplay(field), 0); } } return; }
void pp_close_prov_cb(Widget w, XtPointer a, XtPointer b) { char *input_date = NULL; char *todays_date = NULL; todays_date = get_todays_date(); input_date = XmTextGetString (ppp_start_date_txt); if ((gprov_new_package != 0) || (strcmp(input_date,todays_date) != 0)) { XtManageChild (ppp_confirm_dialog); XtPopup (ppp_confirm_shell,XtGrabNone); } else { XtUnmanageChild (pp_provision_form); XtPopdown (pp_provision_shell); } return; }
void save_find_dialog_state(FILE *fd) { if ((edit_find_dialog) && (XtIsManaged(edit_find_dialog))) { char *text = NULL; text = XmTextGetString(edit_find_text); if ((text) && (*text)) { #if HAVE_SCHEME fprintf(fd, "(%s #t \"%s\")\n", S_find_dialog, text); #endif #if HAVE_RUBY fprintf(fd, "%s(true, \"%s\")\n", TO_PROC_NAME(S_find_dialog), text); #endif #if HAVE_FORTH fprintf(fd, "#t \"%s\" %s drop\n", text, S_find_dialog); #endif XtFree(text); } else { #if HAVE_SCHEME if (ss->search_expr) fprintf(fd, "(%s #t \"%s\")\n", S_find_dialog, ss->search_expr); else fprintf(fd, "(%s #t)\n", S_find_dialog); #endif #if HAVE_RUBY if (ss->search_expr) fprintf(fd, "%s(true, \"%s\")\n", TO_PROC_NAME(S_find_dialog), ss->search_expr); else fprintf(fd, "%s(true)\n", TO_PROC_NAME(S_find_dialog)); #endif #if HAVE_FORTH if (ss->search_expr) fprintf(fd, "#t \"%s\" %s drop\n", ss->search_expr, S_find_dialog); else fprintf(fd, "#t %s drop\n", S_find_dialog); #endif } } }
static void completions_browse_callback(Widget w, XtPointer context, XtPointer info) { int i, j, old_len, new_len; char *text = NULL, *old_text = NULL; XmListCallbackStruct *cbs = (XmListCallbackStruct *)info; Widget requestor; if (ss->sgx->completion_requestor == NULL) requestor = listener_text; else requestor = ss->sgx->completion_requestor; /* choice = cbs->item_position - 1; */ text = (char *)XmStringUnparse(cbs->item, NULL, XmCHARSET_TEXT, XmCHARSET_TEXT, NULL, 0, XmOUTPUT_ALL); old_text = XmTextGetString(requestor); old_len = snd_strlen(old_text); new_len = snd_strlen(text); for (i = old_len - 1, j = new_len - 1; j >= 0; j--) { if (old_text[i] != text[j]) { i = old_len - 1; if (old_text[i] == text[j]) i--; /* this added 15-Apr-02 for case like map-chan(nel) */ /* probably should go back new_len and scan forwards instead */ } else i--; } if (requestor == listener_text) append_listener_text(XmTextGetLastPosition(listener_text), (char *)(text - 1 + old_len - i)); else { /* try to append to who(m?)ever asked for completion help */ XmTextInsert(requestor, XmTextGetLastPosition(requestor), (char *)(text - 1 + old_len - i)); } if (text) XtFree(text); if (old_text) XtFree(old_text); unpost_completion(requestor); }
void text_print(Widget w, XtPointer client_data, XtPointer call_data) { Widget text_w; char *text=NULL; FILE *mypipe; /* Get the text area */ text_w = XtNameToWidget(textdialog, "*text_w"); if (text_w) { text = XmTextGetString(text_w); if (text && *text) { /* Send to printer Check ENV for a printer variable */ if ((mypipe = popen(PRINTCOMMAND, "w"))) { fprintf(mypipe, "%s", text); pclose(mypipe); } XtFree(text); } } }
void options_spinbox_modCB( Widget widget, XtPointer clientdata, XtPointer calldata ) { Widget spinbox = (Widget) clientdata; int mvalue, value; Display *dpy = XtDisplayOfObject(widget); char *text = XtMalloc(BUFSIZ); char *textvalue; XmTextVerifyCallbackStruct *cbs = (XmTextVerifyCallbackStruct*) calldata; if (NULL == cbs->text->ptr) return; if (!all_digits(cbs->text->ptr)) { cbs->doit = FALSE; XBell(dpy, 50); } textvalue = XmTextGetString(widget); strncpy(text, textvalue, cbs->startPos); text[cbs->startPos] = '\0'; strcat(text, cbs->text->ptr); strcat(text, textvalue+cbs->endPos); XtVaGetValues(spinbox, XmNmaximumValue, &mvalue, NULL); value = (int) strtol(text, NULL, 10); if (value > mvalue) { cbs->doit = FALSE; XBell(dpy, 50); } if (NULL != text) XtFree(text); if (NULL != textvalue) XtFree(textvalue); }
void gdb_selectHP(Agent *, void *, void *call_data) { ReplyRequiredInfo *info = (ReplyRequiredInfo *)call_data; #if 0 if (gdb_keyboard_command) { // Use the GDB console to answer this query info->reply = ""; return; } #endif // Fetch previous output lines, in case this is a multi-line message. String s = XmTextGetString(gdb_w); string prompt(s); XtFree(s); prompt = prompt.from(int(messagePosition)) + info->question; // Issue prompt right now _gdb_out(info->question); info->question = ""; // Set and issue reply if (prompt.contains("file name")) { // File selection select_file(prompt, info->reply); } else { // Option selection select_from_gdb(prompt, info->reply); } _gdb_out(info->reply); }