static int __connect_widget(struct iio_device *dev, const char *attr, const char *value, size_t len, void *d) { unsigned int i, nb_items = ARRAY_SIZE(attrs); GtkBuilder *builder = (GtkBuilder *) d; for (i = 0; i < nb_items; i++) { if (!strcmp(attrs[i].name, attr)) { connect_widget(builder, &attrs[i], atoi(value)); return 0; } } return 0; }
static int __connect_widget(struct iio_device *dev, const char *attr, const char *value, size_t len, void *d) { unsigned int i, nb_items = ARRAY_SIZE(attrs); GtkBuilder *builder = (GtkBuilder *) d; char str[80]; int bit, ret; for (i = 0; i < nb_items; i++) { ret = sscanf(attrs[i].name, "%[^'#']#%d", str, &bit); if (!strcmp(str, attr)) { connect_widget(builder, &attrs[i], atoi(value)); if (ret == 1) return 0; } } return 0; }
static int fmcomms2adv_init(GtkWidget *notebook) { GtkWidget *fmcomms2adv_panel; int i; builder = gtk_builder_new(); nbook = GTK_NOTEBOOK(notebook); if (!gtk_builder_add_from_file(builder, "fmcomms2_adv.glade", NULL)) gtk_builder_add_from_file(builder, OSC_GLADE_FILE_PATH "fmcomms2_adv.glade", NULL); fmcomms2adv_panel = GTK_WIDGET(gtk_builder_get_object(builder, "fmcomms2adv_panel")); for (i = 0; i < ARRAY_SIZE(attrs); i++) connect_widget(builder, &attrs[i]); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "bist_tone"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "bist_tone_frequency"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "tone_level"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "bist_prbs"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "loopback"))), 0); g_builder_connect_signal(builder, "bist_tone", "changed", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "bist_tone_frequency", "changed", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "tone_level", "changed", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c2q", "toggled", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c1q", "toggled", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c2i", "toggled", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c1i", "toggled", G_CALLBACK(bist_tone_cb), builder); if (dev_slave) { g_builder_connect_signal(builder, "mcs_sync", "clicked", G_CALLBACK(mcs_cb), builder); gtk_combo_box_set_active( GTK_COMBO_BOX(gtk_builder_get_object(builder, "calibration_switch_control")), 0); __cal_switch_ports_enable_cb(0); g_builder_connect_signal(builder, "calibration_switch_control", "changed", G_CALLBACK(cal_switch_ports_enable_cb), builder); g_builder_connect_signal(builder, "tx_phase", "value-changed", G_CALLBACK(tx_phase_hscale_value_changed), 0); g_builder_connect_signal(builder, "do_fmcomms5_cal", "clicked", G_CALLBACK(do_calibration), gtk_builder_get_object(builder, "do_fmcomms5_cal")); g_builder_connect_signal(builder, "undo_fmcomms5_cal", "clicked", G_CALLBACK(undo_calibration), NULL); } else { gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(builder, "mcs_sync"))); gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(builder, "frame_fmcomms5"))); } this_page = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), fmcomms2adv_panel, NULL); gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(notebook), fmcomms2adv_panel, "FMComms2 Advanced"); g_builder_connect_signal(builder, "notebook1", "switch-page", G_CALLBACK(change_page_cb), GTK_WIDGET(gtk_builder_get_object(builder, "initialize"))); return 0; }