📄 updategui.c
字号:
sprintf(posi, "%c %.5f掳", dn, fabs(rad2deg(pvtD800.posn.lat))); gtk_entry_set_text (GTK_ENTRY(widget), posi); /* position lon */ if ( pvtD800.posn.lon >= 0 ) de='E'; else de='W'; grad=floor(rad2deg(fabs(pvtD800.posn.lon))); minute=(rad2deg(fabs(pvtD800.posn.lon))-grad)*60; widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "londegentry"); sprintf(posi, "%c %03d掳 %02.3f \'", de, abs((int)grad), minute); gtk_entry_set_text (GTK_ENTRY(widget), posi); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "londecentry"); sprintf(posi, "%c %.5f掳", de, fabs(rad2deg(pvtD800.posn.lon))); gtk_entry_set_text (GTK_ENTRY(widget), posi); /* estimated position error */ widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "epeentry"); sprintf(posi, "%.1f (m)", pvtD800.epe); gtk_entry_set_text (GTK_ENTRY(widget), posi); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "epehentry"); sprintf(posi, "%.1f (m)", pvtD800.eph); gtk_entry_set_text (GTK_ENTRY(widget), posi); widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "epeventry"); sprintf(posi, "%.1f (m)", pvtD800.epv); gtk_entry_set_text (GTK_ENTRY(widget), posi); /* height */ widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "heightentry"); sprintf(posi, "%.1f (m)", pvtD800.alt+pvtD800.msl_hght); gtk_entry_set_text (GTK_ENTRY(widget), posi); /* fix */ widget = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "fixentry"); switch(pvtD800.fix) { case 1: sprintf(posi, "%s", "Data invalid!"); break; case 2: sprintf(posi, "%s", "2D"); break; case 3: sprintf(posi, "%s", "3D"); break; case 4: sprintf(posi, "%s", "2D diff"); break; case 5: sprintf(posi, "%s", "3D diff"); break; case 0: default: sprintf(posi, "%s", "Data unusable!"); break; } gtk_entry_set_text (GTK_ENTRY(widget), posi); /* speedo */ drawing_area = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "drawingarea1"); //gtk_widget_set_size_request (drawing_area, 120, 120); drawable=drawing_area->window; sy=drawing_area->allocation.height; sx=drawing_area->allocation.width; gdk_draw_rectangle(drawable, drawing_area->style->bg_gc[GTK_WIDGET_STATE (drawing_area)], TRUE, 0, 0, sx, sy); cmap=gdk_colormap_get_system(); yellowgc=gdk_gc_new(drawable); if( !gdk_color_alloc(cmap,&yellow) ) { fprintf(stderr, "Couldn't allocate color.\n"); } gdk_gc_set_foreground(yellowgc,&yellow); redgc=gdk_gc_new(drawable); if( !gdk_color_alloc(cmap,&red) ) { fprintf(stderr, "Couldn't allocate color.\n"); } gdk_gc_set_foreground(redgc,&red); // gdk_draw_line(drawable, yellowgc, 0,0,sx,sy); // gdk_draw_line(drawable, drawing_area->style->white_gc,0,sy,sx,0); // gdk_draw_line(drawable, redgc,sx/2,sy/2,sx-50,sy/2); gdk_draw_arc (drawable, drawing_area->style->white_gc, TRUE, (gint)(sx/2)-50, (gint)(sy/2)-50, 100, 100, 0*64, 360*64); gdk_draw_arc (drawable, drawing_area->style->black_gc, FALSE, (gint)(sx/2)-50, (gint)(sy/2)-50, 100, 100, 0*64, 360*64); d=(((0.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-40*cos(d), (sy/2)-40*sin(d), (sx/2)-50*cos(d)+1, (sy/2)-50*sin(d)); d=(((20.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-45*cos(d), (sy/2)-45*sin(d), (sx/2)-50*cos(d)+1, (sy/2)-50*sin(d)); d=(((40.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-45*cos(d), (sy/2)-45*sin(d), (sx/2)-50*cos(d)+1, (sy/2)-50*sin(d)); d=(((60.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-45*cos(d), (sy/2)-45*sin(d), (sx/2)-50*cos(d)+1, (sy/2)-50*sin(d)); d=(((80.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-44*cos(d), (sy/2)-44*sin(d), (sx/2)-50*cos(d)+1, (sy/2)-50*sin(d)); gdk_draw_line(drawable, drawing_area->style->black_gc, sx/2,sy/2-40,sx/2,sy/2-50); d=(((120.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-45*cos(d), (sy/2)-45*sin(d), (sx/2)-50*cos(d), (sy/2)-50*sin(d)); d=(((140.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-45*cos(d), (sy/2)-45*sin(d), (sx/2)-50*cos(d), (sy/2)-50*sin(d)); d=(((160.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-45*cos(d), (sy/2)-45*sin(d), (sx/2)-50*cos(d), (sy/2)-50*sin(d)); d=(((180.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-45*cos(d), (sy/2)-45*sin(d), (sx/2)-50*cos(d), (sy/2)-50*sin(d)); d=(((200.0/200)*240)-30)/180*pi; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)-40*cos(d), (sy/2)-40*sin(d), (sx/2)-50*cos(d), (sy/2)-50*sin(d)); font=gdk_font_load("-*-helvetica-bold-r-normal--*-80-*-*-*-*-iso8859-1"); gdk_draw_text(drawable, font, drawing_area->style->black_gc, sx/2-7, sy/2-52, "100", 3); gdk_draw_text(drawable, font, drawing_area->style->black_gc, sx/2-49, sy/2+29, "0", 1); gdk_draw_text(drawable, font, drawing_area->style->black_gc, sx/2+47, sy/2+29, "200", 3); // pointer gdk_draw_arc (drawable, redgc, FALSE, (gint)(sx/2)-3, (gint)(sy/2)-3, 6, 6, 0*64, 360*64); d=(((speed*3.6/200)*240)-30)/180*pi; gdk_draw_line(drawable, redgc, sx/2, sy/2, (sx/2)-50*cos(d), (sy/2)-50*sin(d)); /* direction */ drawing_area = (GtkWidget *)lookup_widget (GTK_WIDGET (data), "drawingarea2"); //gtk_widget_set_size_request (drawing_area, 120, 120); drawable=drawing_area->window; sy=drawing_area->allocation.height; sx=drawing_area->allocation.width; gdk_draw_rectangle(drawable, drawing_area->style->bg_gc[GTK_WIDGET_STATE (drawing_area)], TRUE, 0, 0, sx, sy); cmap=gdk_colormap_get_system(); yellowgc=gdk_gc_new(drawable); if( !gdk_color_alloc(cmap,&yellow) ) { fprintf(stderr, "Couldn't allocate color.\n"); } gdk_gc_set_foreground(yellowgc,&yellow); redgc=gdk_gc_new(drawable); if( !gdk_color_alloc(cmap,&red) ) { fprintf(stderr, "Couldn't allocate color.\n"); } gdk_gc_set_foreground(redgc,&red); gdk_draw_arc (drawable, drawing_area->style->white_gc, TRUE, (gint)(sx/2)-50, (gint)(sy/2)-50, 100, 100, 0*64, 360*64); gdk_draw_arc(drawable, drawing_area->style->black_gc, FALSE, (gint)(sx/2)-50, (gint)(sy/2)-50, 100, 100, 0*64, 360*64); gdk_draw_line(drawable, drawing_area->style->black_gc, sx/2,sy/2+40,sx/2,sy/2+50); gdk_draw_line(drawable, drawing_area->style->black_gc, sx/2,sy/2-40,sx/2,sy/2-50); gdk_draw_line(drawable, drawing_area->style->black_gc, sx/2+40,sy/2,sx/2+50,sy/2); gdk_draw_line(drawable, drawing_area->style->black_gc, sx/2-40,sy/2,sx/2-50,sy/2); d=pi/4; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)+45*sin(d), (sy/2)-45*cos(d), (sx/2)+50*sin(d), (sy/2)-50*cos(d)); d=3*pi/4; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)+46*sin(d), (sy/2)-46*cos(d), (sx/2)+50*sin(d), (sy/2)-50*cos(d)); d=5*pi/4; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)+45*sin(d), (sy/2)-45*cos(d), (sx/2)+50*sin(d), (sy/2)-50*cos(d)); d=7*pi/4; gdk_draw_line(drawable, drawing_area->style->black_gc, (sx/2)+45*sin(d), (sy/2)-45*cos(d), (sx/2)+49*sin(d), (sy/2)-49*cos(d)); gdk_draw_arc (drawable, redgc, FALSE, (gint)(sx/2)-3, (gint)(sy/2)-3, 6, 6, 0*64, 360*64); d=directionrad(pvtD800.north, pvtD800.east); gdk_draw_line(drawable, redgc, sx/2, sy/2, (sx/2)+50*sin(d), (sy/2)-50*cos(d)); font=gdk_font_load("-*-helvetica-bold-r-normal--*-80-*-*-*-*-iso8859-1"); gdk_draw_text(drawable, font, drawing_area->style->black_gc, sx/2-3, sy/2-52, "N", 1); gdk_draw_text(drawable, font, drawing_area->style->black_gc, sx/2-2, sy/2+59, "S", 1); gdk_draw_text(drawable, font, drawing_area->style->black_gc, sx/2+53, sy/2+4, "E", 1); gdk_draw_text(drawable, font, drawing_area->style->black_gc, sx/2-60, sy/2+3, "W", 1); return 1;}/* update time in gui */void updateGuiTime(gpointer *frame){ GtkWidget *widget; char posi[255]; extern D600_Date_Time_Type utctime; widget = (GtkWidget *)lookup_widget (GTK_WIDGET (frame), "timeentry"); sprintf(posi, "%02d.%02d.%d - %02d:%02d:%02d h (UTC)", utctime.day, utctime.month, utctime.year, utctime.hour, utctime.minute, utctime.second); gtk_entry_set_text (GTK_ENTRY(widget), posi);}/* update device info in gui */void updateGuiDeviceinfo(gpointer *data){ GtkWidget *widget; GtkTreeIter iter1; GtkTreeStore *treestore; GtkCellRenderer *renderer, *renderer2; GtkTreeViewColumn *column, *column2; GtkTreeIter iter, iter2; extern int tty; char buff[255]; extern DeviceInfo garmingps; garmingps=getVersion(tty); widget = lookup_widget (GTK_WIDGET (data), "treeview2"); /* create treeview */ column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, "Protocol"); 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 = 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); /* tree 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)); /* device */ gtk_tree_store_append(treestore, &iter, NULL); gtk_tree_store_set(treestore, &iter, 0, "Device ",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -