EXPORT gboolean create_new_gauge(GtkWidget * widget, gpointer data) { GtkWidget *tmp = NULL; GladeXML *xml = glade_get_widget_tree(widget); GtkWidget *parent = glade_xml_get_widget(xml,"gauge_frame"); gauge = mtx_gauge_face_new(); gtk_widget_set_events(gauge,GDK_POINTER_MOTION_HINT_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); g_signal_connect(GTK_WIDGET(gauge),"motion_notify_event",G_CALLBACK(gauge_motion),NULL); g_signal_connect(GTK_WIDGET(gauge),"button_press_event",G_CALLBACK(gauge_button),NULL); gtk_container_add(GTK_CONTAINER(parent),gauge); gtk_widget_show_all(parent); mtx_gauge_face_redraw_canvas(MTX_GAUGE_FACE(gauge)); gauge_loaded = TRUE; gtk_widget_set_sensitive(glade_xml_get_widget(xml,"tab_notebook"),TRUE); gtk_widget_set_sensitive(glade_xml_get_widget(xml,"animate_frame"),TRUE); gtk_widget_set_sensitive(glade_xml_get_widget(xml,"new_gauge_menuitem"),FALSE); gtk_widget_set_sensitive(glade_xml_get_widget(xml,"close_gauge_menuitem"),TRUE); gtk_widget_set_sensitive(glade_xml_get_widget(xml,"load_gauge_menuitem"),FALSE); gtk_widget_set_sensitive(glade_xml_get_widget(xml,"save_gauge_menuitem"),TRUE); gtk_widget_set_sensitive(glade_xml_get_widget(xml,"save_as_menuitem"),TRUE); update_attributes(); return (TRUE); }
void mtx_gauge_face_import_xml(MtxGaugeFace *gauge, const gchar * filename) { xmlDoc *doc = NULL; xmlNode *root_element = NULL; gchar *tmpbuf = NULL; MtxGaugeFacePrivate *priv = NULL; g_return_if_fail(gauge); g_return_if_fail(filename); priv = MTX_GAUGE_FACE_GET_PRIVATE(gauge); g_return_if_fail(priv); /* * this initialize the library and check potential ABI mismatches * between the version it was compiled for and the actual shared * library used. */ LIBXML_TEST_VERSION /*parse the file and get the DOM */ doc = xmlReadFile(filename, NULL, 0); if (doc == NULL) { printf("error: could not parse file %s\n",filename); } else { /*Get the root element node */ root_element = xmlDocGetRootElement(doc); g_object_freeze_notify(G_OBJECT(gauge)); mtx_gauge_face_remove_all_text_blocks(gauge); mtx_gauge_face_remove_all_alert_ranges(gauge); mtx_gauge_face_remove_all_warning_ranges(gauge); mtx_gauge_face_remove_all_tick_groups(gauge); mtx_gauge_face_remove_all_polygons(gauge); load_elements(gauge, root_element); /* Fix for api break, default to CW gauges */ if (priv->rotation == 187) priv->rotation = MTX_ROT_CCW; if (priv->rotation == 188) priv->rotation = MTX_ROT_CW; priv->xc = priv->w / 2; priv->yc = priv->h / 2; priv->radius = MIN (priv->w/2, priv->h/2) - 5; g_object_thaw_notify(G_OBJECT(gauge)); if ((GTK_IS_WINDOW(gtk_widget_get_parent(GTK_WIDGET(gauge)))) && (priv->w > 0) && (priv->h > 0)) gtk_window_resize(GTK_WINDOW(gtk_widget_get_parent(GTK_WIDGET(gauge))),priv->w,priv->h); generate_gauge_background(gauge); mtx_gauge_face_set_value(MTX_GAUGE_FACE(gauge),priv->lbound); mtx_gauge_face_redraw_canvas (gauge); priv->xml_filename = g_strdup(filename); } g_free(tmpbuf); /*free the document */ xmlFreeDoc(doc); /* *Free the global variables that may *have been allocated by the parser. */ xmlCleanupParser(); }