void lineTextFieldActivateCB( Widget w, XtPointer client_data, XtPointer call_data) { short line, rows, cols; int conv; char *cb, *buf, *linestr; Widget doc_w, line_w; XmTextPosition pos; cb = "lineTextFieldActivateCB"; doc_w = get_document_text(w, cb); line_w = get_widget_by_name(w, cb, "lineTextField"); XtVaGetValues(doc_w, XmNrows, &rows, XmNcolumns, &cols, NULL); buf = XmTextGetString(doc_w); linestr = XmTextFieldGetString(line_w); conv = atoi(linestr); if (conv > rows) { manage_widget(w, cb, "lineOutOfRangeMessageBox"); goto Cleanup; } line = (short) conv; pos = line_to_position(buf, line, rows, cols); XmTextSetInsertionPosition(doc_w, pos); Cleanup: XtFree(linestr); XtFree(buf); }
void editCB( Widget w, XtPointer client_data, XtPointer call_data) { int i; char *s; long action; Time time; Widget widget; XButtonEvent *event; XmPushButtonCallbackStruct *acs; XmTextPosition left, right; action = (long) client_data; acs = (XmPushButtonCallbackStruct *) call_data; event = (XButtonEvent *) acs->event; time = event->time; widget = get_document_text(w, "editCB"); switch (action) { case EDIT_CUT: XmTextCut(widget, time); break; case EDIT_COPY: XmTextCopy(widget, time); break; case EDIT_PASTE: XmTextPaste(widget); break; case EDIT_DELETE: XmTextRemove(widget); break; case EDIT_CLEAR: if (False == XmTextGetSelectionPosition(widget, &left, &right)) break; s = calloc(1 + right - left, sizeof(char)); if (NULL == s) { perror("Dtpad (calloc)"); exit(1); } for (i = 0; i < right - left; i++) s[i] = ' '; s[right - left] = '\0'; XmTextReplace(widget, left, right, s); XtFree(s); break; default: break; } }
void newDocCB( Widget w, XtPointer client_data, XtPointer call_data) { Widget widget; widget = get_document_text(w, "newDocCB"); XmTextSetString(widget, ""); widget = get_widget_by_name(w, "newDocCB", "lineTextField"); XmTextFieldSetString(widget, ""); update_message(w, "newDocCB", "Created new empty file."); set_save_path(NULL); set_been_saved(False); update_document_linecount(w, "newDocCB"); update_window_title(w, "newDocCB"); }
void includeFileCB( Widget w, XtPointer client_data, XtPointer call_data) { char *file_data, *c_path; Widget widget; XmFileSelectionBoxCallbackStruct *res; XmTextPosition pos; res = (XmFileSelectionBoxCallbackStruct *) call_data; c_path = XmStringUnparse(res->value, NULL, XmCHARSET_TEXT, XmCHARSET_TEXT, NULL, 0, XmOUTPUT_ALL); file_data = get_file_contents(w, "fileOpenCB", c_path); widget = get_document_text(w, "fileOpenCB"); pos = XmTextGetInsertionPosition(widget); XmTextInsert(widget, pos, file_data); update_document_linecount(w, "includeFileCB"); update_message(w, "fileOpenCB", "Included file."); XtFree(c_path); XtFree(file_data); XtUnmanageChild(w); }
void editCB( Widget w, XtPointer client_data, XtPointer call_data) { long action; Time time; Widget widget; XButtonEvent *event; XmPushButtonCallbackStruct *acs; action = (long) client_data; acs = (XmPushButtonCallbackStruct *) call_data; event = (XButtonEvent *) acs->event; time = event->time; widget = get_document_text(w, "editCB"); switch (action) { case EDIT_CUT: XmTextCut(widget, time); break; case EDIT_COPY: XmTextCopy(widget, time); break; case EDIT_PASTE: XmTextPaste(widget); break; case EDIT_DELETE: XmTextRemove(widget); break; case EDIT_CLEAR: edit_clear(widget); break; default: break; } }