📄 updategui.c
字号:
/*************************************************************************** updategui.h - refresh values in gui ------------------- begin : So M鋜 21 17:50:31 CET 2004 copyright : (C) 2004 by Dennis Real email : dev-null@users.sourceforge.net ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/#include <stdio.h>#include <stdlib.h>#include <gtk/gtk.h>#include <math.h>#include "support.h"#include "def.h"#include "datatypes.h"#include "convert.h"#include "pvt.h"#include "device.h"/* update sat info in gui */void updateGuiSat(GtkNotebook * notebook){ GtkTreeView *widget; GtkTreeIter iter, iter1; GtkTreeStore *treestore; GtkCellRenderer *renderer, *renderer2; GtkTreeViewColumn *column, *column2; int z=0; char buff[255]; extern Almanac_Type satinfo[]; widget = (GtkTreeView *) lookup_widget (GTK_WIDGET (notebook), "treeview1"); /* columns */ column=gtk_tree_view_get_column(widget, 0); column2=gtk_tree_view_get_column(widget, 1); if (column!=NULL) { gtk_tree_view_remove_column(widget, column); } if (column2!=NULL) { gtk_tree_view_remove_column(widget, column2); } column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, "Satellite"); gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); column2 = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column2, "Value"); gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column2); /* renderer */ renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); renderer2 = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column2, renderer2, TRUE); g_object_set(renderer, "foreground-set", FALSE, NULL); g_object_set(renderer2, "foreground-set", FALSE, NULL); //g_object_set(renderer, "foreground", "Red", "foreground-set", TRUE, NULL); //g_object_set(renderer, "text", "dkjfh", NULL); gtk_tree_view_column_add_attribute(column, renderer, "text", 0); gtk_tree_view_column_add_attribute(column2, renderer2, "text", 1); /* store */ treestore=gtk_tree_store_new(2, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(treestore)); while ( (satinfo[z].wn!=0) && (z<ANZSAT) ) { gtk_tree_store_append(treestore, &iter, NULL); gtk_tree_store_set(treestore, &iter, 0, "Satellite", -1 ); if ( satinfo[z].wn==65535.0 ) sprintf(buff, "PRN-%02d (inactive)", z+1); else sprintf(buff, "PRN-%02d", z+1); gtk_tree_store_set(treestore, &iter, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Week number: (weeks)", -1); sprintf(buff, "%d", satinfo[z].wn); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Almanac Data Reference Time: (s)", -1); sprintf(buff, "%f", satinfo[z].toa); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Clock correction coefficient 1 (s):", -1); sprintf(buff, "%1.10E", satinfo[z].af0); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Clock correction coefficient 2 (s/s):", -1); sprintf(buff, "%1.10E", satinfo[z].af1); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Eccentricity:", -1); sprintf(buff, "%1.10E", satinfo[z].e); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Square root of semi-major axis (a) (m^1/2):", -1); sprintf(buff, "%f", satinfo[z].sqrta); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Mean anomaly at reference time (rad):", -1); sprintf(buff, "%f", satinfo[z].m0); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Argument of perigee (rad, deg):", -1); sprintf(buff, "%f %f", satinfo[z].w, rad2deg(satinfo[z].w)); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Right ascension (rad, deg):", -1); sprintf(buff, "%f %f", satinfo[z].omg0, rad2deg(satinfo[z].omg0)); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Rate of right ascension (rad/s):", -1); sprintf(buff, "%1.10E", satinfo[z].odot); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); gtk_tree_store_append(treestore, &iter1, &iter); gtk_tree_store_set(treestore, &iter1, 0, "Inclination angle (rad, deg):", -1); sprintf(buff, "%f %f", satinfo[z].i, rad2deg(satinfo[z].i)); gtk_tree_store_set(treestore, &iter1, 1, buff, -1); z++; }}/* update pvt in gui */gboolean updateGuiPvt(gpointer *data){ D800_Pvt_Data_Type pvtD800; char posi [40]; GtkWidget *widget; extern int tty; double speed; double minute; double grad; extern int timeouthandler[]; char dn, de; GtkWidget *drawing_area; GdkDrawable *drawable; double d; int sx,sy; GdkColor yellow={0,0xffff,0xffff,0x0000}; GdkColor red={0,0xffff,0x0000,0x0000}; GdkGC *yellowgc, *redgc; GdkColormap *cmap; GdkFont * font; /* get all pvt */ pvtD800=getAllpvtD800(tty); if( pvtD800.fix==0 ) { /* data useless or gps off. stop updating pvt */ g_source_remove (timeouthandler[pvt]); timeouthandler[pvt]=0; return 0; } /* speed */ speed=sqrt((pvtD800.north*pvtD800.north)+(pvtD800.east*pvtD800.east)); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "speedentry"); sprintf(posi, "%.3f (m/s) (%.1f掳)", speed, rad2deg(directionrad(pvtD800.north, pvtD800.east))); gtk_entry_set_text (GTK_ENTRY(widget), posi); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "speedlabel"); sprintf(posi, "%.1f km/h", speed*3.6); gtk_label_set_text (GTK_LABEL(widget), posi); /* velocity */ widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "velocityhentry"); sprintf(posi, "%.3f (m/s)", pvtD800.east); gtk_entry_set_text (GTK_ENTRY(widget), posi); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "velocityventry"); sprintf(posi, "%.3f (m/s)", pvtD800.north); gtk_entry_set_text (GTK_ENTRY(widget), posi); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "velocityupentry"); sprintf(posi, "%.3f (m/s)", pvtD800.up); gtk_entry_set_text (GTK_ENTRY(widget), posi); /* position lat */ if ( pvtD800.posn.lat >= 0 ) dn='N'; else dn='S'; grad=floor(rad2deg(fabs(pvtD800.posn.lat))); minute=(rad2deg(fabs(pvtD800.posn.lat))-grad)*60; widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "latdegentry"); sprintf(posi, "%c %02d掳 %02.3f \'", dn, abs((int)grad), minute); gtk_entry_set_text (GTK_ENTRY(widget), posi); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "latdecentry");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -