void set_history_from_line(const string& line, bool ignore_history_commands) { if (ignore_history_commands && private_gdb_history) return; while (gdb_history.size() < 1) gdb_history += ""; gdb_history[gdb_history.size() - 1] = line; if (gdb_history_w) { int pos = gdb_history.size(); // XmListReplaceItemsPos() disturbs the current selection, so // save it here int *selected; int selected_count; if (!XmListGetSelectedPos(gdb_commands_w, &selected, &selected_count)) selected = 0; MString xm_line(line, LIST_CHARSET); XmString xms = xm_line.xmstring(); XmListReplaceItemsPos(gdb_commands_w, &xms, 1, pos); if (selected) { // Restore old selection for (int i = 0; i < selected_count; i++) XmListSelectPos(gdb_commands_w, selected[i], False); XtFree((char *)selected); } } }
static void MoveDownCB( Widget w, XtPointer client_data, XtPointer call_data ) { int *position_list; int position_count; if (XmListGetSelectedPos(i18n.preeditTypeList, &position_list, &position_count)) { /* there should be only one selected per our selection policy set on the list, but consider the first selected one in any case */ /* this should always be the case as the Move Down button should be insensitive when the first item is selected, but check anyway */ if (position_list[0] != i18n.preeditTypeListLastPos) { XmStringTable list_items; XmString items[2]; int sel_pos = position_list[0]; int sel_index = sel_pos - 1; XtVaGetValues(i18n.preeditTypeList, XmNitems, &list_items, NULL); /* makes an array of two XmStrings by reversing the selected one and the item succeeding it */ items[0] = list_items[sel_index + 1]; items[1] = list_items[sel_index]; /* this call preserves selected state */ XmListReplaceItemsPos(i18n.preeditTypeList, items, 2, sel_pos); if (sel_pos == (i18n.preeditTypeListLastPos - 1)) { /* it's now the last one, so set the MoveDown button insensitive */ XtSetSensitive(i18n.buttonMoveDown, False); } if (sel_pos == 1) { /* it's not anymore the first one, so set the MoveUp button sensitive */ XtSetSensitive(i18n.buttonMoveUp, True); } /* preeditType has changed */ i18n.preeditHasChanged = True; } } }
static void nbcb_rat_off (LibraryMenuTypePtr net, int pos) { XmString str; char *name = net->Name; name[0] = '*'; net->flag = 0; str = XmStringCreatePCB (name); XmListReplaceItemsPos (netlist_list, &str, 1, pos); XmStringFree (str); }
static void _UISymbolLoadNamesCBK (Widget widget,Widget list,XmAnyCallbackStruct *callData) { int symbol, symNum, i, color, *selectPos, selectCount; FILE *file; char *fileName, buffer [1024], *token, delimit [3]; static Widget select = NULL; UISymbol**editSymbols; XmString xmString [1]; widget = widget; callData = callData; if (select == NULL) select = UIFileSelectionCreate ((char *) "Symbol Name file Selection",NULL,(char *) "*.txt",XmFILE_REGULAR); XtVaGetValues (list,XmNuserData, &editSymbols, NULL); XtVaGetValues (list,XmNitemCount, &symNum, NULL); if ((fileName = UIFileSelection (select,true)) == NULL) return; if ((file = fopen (fileName,"r")) == NULL) { CMmsgPrint (CMmsgSysError, "File Openning Error in: %s %d",__FILE__,__LINE__); return; } sprintf (delimit,"%c%c",DBASCIISeparator,'\0'); while (fgets (buffer,sizeof (buffer),file) != NULL) { token = strtok (buffer,delimit); sscanf (token,"%d",&symbol); for (i = 0;i < symNum; ++i) if (editSymbols [i]->SymbolID () == symbol) { if ((token = strtok ((char *) NULL,delimit)) != (char *) NULL) { if (token [0] == '\"' || token [0] == '\'') {token [strlen (token) - 1] = '\0'; token++; } editSymbols [i]->Name (token); } if ((token = strtok ((char *) NULL,delimit)) != (char *) NULL) if (sscanf (token,"%d",&color) == 1) editSymbols [i]->Foreground (color); if ((token = strtok ((char *) NULL,delimit)) != (char *) NULL) if (sscanf (token,"%d",&color) == 1) editSymbols [i]->Background (color); xmString [0] = XmStringCreate (editSymbols [i]->Name (),UICharSetNormal); XmListReplaceItemsPos (list,xmString,1,i + 1); XmStringFree (xmString [0]); break; } } if (XmListGetSelectedPos (list,&selectPos,&selectCount)) { XmTextFieldSetString (XtNameToWidget (XtParent (XtParent (XtParent (list))),UISymTextFieldName),editSymbols [selectPos [0]]->Name ()); XtFree ((char *) selectPos); } }
/* ** Sort the items in a list widget "listWidget" */ static void sortWidgetList(Widget listWidget) { XmString *items, *sortedItems; int nItems, i; XtVaGetValues(listWidget, XmNitems, &items, XmNitemCount, &nItems, NULL); sortedItems = (XmString *)XtMalloc(sizeof(XmString) * nItems); for (i=0; i<nItems; i++) sortedItems[i] = XmStringCopy(items[i]); qsort(sortedItems, nItems, sizeof(XmString), compareXmStrings); XmListReplaceItemsPos(listWidget, sortedItems, nItems, 1); for (i=0; i<nItems; i++) XmStringFree(sortedItems[i]); XtFree((char *)sortedItems); }
static void _UISymbolTextValueChangedCBK (Widget widget,Widget list,XmTextVerifyCallbackStruct *callData) { char *aString; UISymbol *editSymbol; int *itemPosList, itemPosCount; XmString xmString [1]; if (callData->reason != XmCR_VALUE_CHANGED) return; if (!XmListGetSelectedPos (list,&itemPosList,&itemPosCount)) return; if (itemPosCount > 1) { XtFree ((char *) itemPosList); return; } XtVaGetValues (widget, XmNuserData, &editSymbol, NULL); aString = XmTextFieldGetString (widget); editSymbol->Name (aString); xmString [0] = XmStringCreate (aString,UICharSetNormal); XtFree (aString); XmListReplaceItemsPos (list,xmString,itemPosCount,itemPosList [0]); XmListSelectPos (list,itemPosList [0],false); XmStringFree (xmString [0]); XtFree ((char *) itemPosList); }
static void netlist_select (Widget w, void *v, XmListCallbackStruct * cbs) { XmString str; int pos = cbs->item_position; LibraryMenuTypePtr net = & (PCB->NetlistLib.Menu[pos - 1]); char *name = net->Name; if (name[0] == ' ') { name[0] = '*'; net->flag = 0; } else { name[0] = ' '; net->flag = 1; } str = XmStringCreatePCB (name); XmListReplaceItemsPos (netlist_list, &str, 1, pos); XmStringFree (str); XmListSelectPos (netlist_list, pos, False); }
/* runs on each sentence */ static void update_panel(struct gps_data_t *gpsdata, char *message, size_t len UNUSED, int level UNUSED) { unsigned int i; int newstate; XmString string[MAXCHANNELS + 1]; char s[128], *latlon, *sp; /* the raw data sisplay */ if (message[0] != '\0') while (isspace(*(sp = message + strlen(message) - 1))) *sp = '\0'; XmTextFieldSetString(status, message); /* This is for the satellite status display */ if (gpsdata->satellites) { string[0] = XmStringCreateSimple( "PRN: Elev: Azim: SNR: Used:"); for (i = 0; i < MAXCHANNELS; i++) { if (i < (unsigned int)gpsdata->satellites) { (void)snprintf(s, sizeof(s), " %3d %2d %3d %2d %c", gpsdata->PRN[i], gpsdata->elevation[i], gpsdata->azimuth[i], gpsdata->ss[i], gpsdata->used[i] ? 'Y' : 'N'); } else (void)strlcpy(s, " ", sizeof(s)); string[i + 1] = XmStringCreateSimple(s); } XmListReplaceItemsPos(satellite_list, string, (int)sizeof(string), 1); #ifndef S_SPLINT_S for (i = 0; i < (sizeof(string)/sizeof(string[0])); i++) XmStringFree(string[i]); #endif /* S_SPLINT_S */ } /* here are the value fields */ if (isnan(gpsdata->fix.time)==0) { (void)unix_to_iso8601(gpsdata->fix.time, s, sizeof(s)); XmTextFieldSetString(text_1, s); } else XmTextFieldSetString(text_1, "n/a"); if (gpsdata->fix.mode >= MODE_2D) { latlon = deg_to_str(deg_type, fabs(gpsdata->fix.latitude)); (void)snprintf(s, sizeof(s), "%s %c", latlon, (gpsdata->fix.latitude < 0) ? 'S' : 'N'); XmTextFieldSetString(text_2, s); } else XmTextFieldSetString(text_2, "n/a"); if (gpsdata->fix.mode >= MODE_2D) { latlon = deg_to_str(deg_type, fabs(gpsdata->fix.longitude)); (void)snprintf(s, sizeof(s), "%s %c", latlon, (gpsdata->fix.longitude < 0) ? 'W' : 'E'); XmTextFieldSetString(text_3, s); } else XmTextFieldSetString(text_3, "n/a"); if (gpsdata->fix.mode == MODE_3D) { (void)snprintf(s, sizeof(s), "%f %s", gpsdata->fix.altitude * altunits->factor, altunits->legend); XmTextFieldSetString(text_4, s); } else XmTextFieldSetString(text_4, "n/a"); if (gpsdata->fix.mode >= MODE_2D && isnan(gpsdata->fix.track)==0) { (void)snprintf(s, sizeof(s), "%f %s", gpsdata->fix.speed * speedunits->factor, speedunits->legend); XmTextFieldSetString(text_5, s); } else XmTextFieldSetString(text_5, "n/a"); if (gpsdata->fix.mode >= MODE_2D && isnan(gpsdata->fix.track)==0) { (void)snprintf(s, sizeof(s), "%f degrees", gpsdata->fix.track); XmTextFieldSetString(text_6, s); } else XmTextFieldSetString(text_6, "n/a"); if (isnan(gpsdata->fix.eph)==0) { (void)snprintf(s, sizeof(s), "%f %s", gpsdata->fix.eph * altunits->factor, altunits->legend); XmTextFieldSetString(text_7, s); } else XmTextFieldSetString(text_7, "n/a"); if (isnan(gpsdata->fix.epv)==0) { (void)snprintf(s, sizeof(s), "%f %s", gpsdata->fix.epv * altunits->factor, altunits->legend); XmTextFieldSetString(text_8, s); } else XmTextFieldSetString(text_8, "n/a"); if (gpsdata->fix.mode == MODE_3D && isnan(gpsdata->fix.climb)==0) { (void)snprintf(s, sizeof(s), "%f %s/sec", gpsdata->fix.climb * altunits->factor, altunits->legend); XmTextFieldSetString(text_9, s); } else XmTextFieldSetString(text_9, "n/a"); if (gpsdata->set & DEVICEID_SET) { (void)strlcpy(s, "xgps: ", sizeof(s)); (void)strlcpy(s+6, gpsdata->gps_id, sizeof(s)-6); set_title(s); } if (gpsdata->online == 0) { newstate = 0; (void)strlcpy(s, "OFFLINE", sizeof(s)); } else { newstate = gpsdata->fix.mode; switch (gpsdata->fix.mode) { case MODE_2D: (void)snprintf(s, sizeof(s), "2D %sFIX", (gpsdata->status == STATUS_DGPS_FIX) ? "DIFF " : ""); break; case MODE_3D: (void)snprintf(s, sizeof(s), "3D %sFIX", (gpsdata->status == STATUS_DGPS_FIX) ? "DIFF " : ""); break; default: (void)strlcpy(s, "NO FIX", sizeof(s)); break; } } if (newstate != state) { timer = time(NULL); state = newstate; } (void)snprintf(s + strlen(s), sizeof(s) - strlen(s), " (%d secs)", (int) (time(NULL) - timer)); XmTextFieldSetString(text_10, s); draw_graphics(gpsdata); XtRemoveTimeOut(timeout); timeout = XtAppAddTimeOut(app, 2000, handle_time_out, NULL); }
void AliasListUiItem::handleChangeButtonPress() { char *key_str = NULL; char *value_str = NULL; PropStringPair *new_pair = NULL; XmString replace_string; int *pos_list, num_pos; // if nothing selected nothing to change... if(XmListGetSelectedPos(this->getWidget(), &pos_list, &num_pos)) { XtVaGetValues(key_widget, XmNvalue, &key_str, NULL); XtVaGetValues(value_widget, XmNvalue, &value_str, NULL); if(key_str != NULL) if(strlen(key_str) > 0) { new_pair = (*list_items)[pos_list[0] - 1]; if(deleted_items == NULL) { deleted_items = new DtVirtArray<char *>(10); } deleted_items->append(strdup((*list_items)[pos_list[0] -1]->label)); free(new_pair->label); new_pair->label = strdup(key_str); if(new_pair->value != NULL) { free(new_pair->value); if(value_str != NULL) new_pair->value = strdup(value_str); else new_pair->value = NULL; } replace_string = XmStringCreateLocalized( formatPropPair(new_pair->label, new_pair->value)); XmListReplaceItemsPos(this->getWidget(), &replace_string, 1, pos_list[0]); XmListSelectPos(this->getWidget(), pos_list[0], TRUE); } props_changed = TRUE; } }