Example #1
0
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);
	}
    }
}
Example #2
0
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;
	}
    }

}
Example #3
0
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);
}
Example #4
0
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);
		}
	}
Example #5
0
/*
** 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);
}
Example #6
0
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);
	}
Example #7
0
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);
}
Example #8
0
/* 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);
}
Example #9
0
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;
    }
}