From 7f4395abaa6338c89e0a244060137a7602540d91 Mon Sep 17 00:00:00 2001 From: c vw Date: Wed, 12 Jan 2022 18:18:02 +0100 Subject: [PATCH] Converted long lists of radio buttons to combo-boxes, to save some space on the screen. --- radio_menu.c | 616 ++++++++++++++++++++++++++------------------------- 1 file changed, 311 insertions(+), 305 deletions(-) diff --git a/radio_menu.c b/radio_menu.c index 0467e64..a479821 100644 --- a/radio_menu.c +++ b/radio_menu.c @@ -58,8 +58,6 @@ static GtkWidget *tx_gains[2]; static GtkWidget *sat_b; static GtkWidget *rsat_b; -static GtkWidget *receivers_1; -static GtkWidget *receivers_2; static GtkWidget *duplex_b; static GtkWidget *mute_rx_b; @@ -111,6 +109,7 @@ static void rx_gain_value_changed_cb(GtkWidget *widget, gpointer data) { static void drive_gain_value_changed_cb(GtkWidget *widget, gpointer data) { DAC *dac=(DAC *)data; if(radio->device==SOAPYSDR_USB_DEVICE) { + // should use setDrive here to move the main drive slider transmitter->drive=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget)); soapy_protocol_set_tx_gain(transmitter,(double)transmitter->drive); /* @@ -322,70 +321,70 @@ static void none_cb(GtkWidget *widget, gpointer data) { } } -static void alex_cb(GtkWidget *widget, gpointer data) { - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { - filter_board = ALEX; - load_filters(); - } -} - -static void apollo_cb(GtkWidget *widget, gpointer data) { - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { - filter_board = APOLLO; - load_filters(); - } -} - -static void charly25_cb(GtkWidget *widget, gpointer data) { - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { - filter_board = CHARLY25; - load_filters(); +static void filter_cb(GtkWidget *widget, gpointer data) { + int val = gtk_combo_box_get_active (GTK_COMBO_BOX(widget)); + switch (val) { + case 0: + default: + filter_board=NONE; + break; + case 1: + filter_board=ALEX; + break; + case 2: + filter_board=APOLLO; + break; + case 3: + filter_board=CHARLY25; + break; + case 4: + filter_board=N2ADR; + break; } + load_filters(); } -static void n2adr_cb(GtkWidget *widget, gpointer data) { - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { - filter_board = N2ADR; - load_filters(); - } -} - - static void sample_rate_cb(GtkToggleButton *widget, gpointer data) { - if(gtk_toggle_button_get_active(widget)) { -#ifdef CLIENT_SERVER - if(radio_is_remote) { - send_sample_rate(client_socket,-1,GPOINTER_TO_INT(data)); - } else { -#endif - radio_change_sample_rate(GPOINTER_TO_INT(data)); - } + char *p = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widget)); + int samplerate; + + // + // There are so many different possibilities for sample rates, so + // we just "scanf" from the combobox text entry + // + if (sscanf(p, "%d", &samplerate) != 1) return; #ifdef CLIENT_SERVER + if(radio_is_remote) + { + send_sample_rate(client_socket,-1,samplerate); } + else #endif + { + radio_change_sample_rate(samplerate); + } } static void receivers_cb(GtkToggleButton *widget, gpointer data) { + int val=gtk_combo_box_get_active (GTK_COMBO_BOX(widget))+1; // // reconfigure_radio requires that the RX panels are active // (segfault otherwise), therefore ignore this while TXing // if (isTransmitting()) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (receivers_1), receivers==1); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (receivers_2), receivers==2); + gtk_combo_box_set_active(GTK_COMBO_BOX(widget),receivers - 1); return; } - if(gtk_toggle_button_get_active(widget)) { -#ifdef CLIENT_SERVER - if(radio_is_remote) { - send_receivers(client_socket,GPOINTER_TO_INT(data)); - } else { -#endif - radio_change_receivers(GPOINTER_TO_INT(data)); #ifdef CLIENT_SERVER + if(radio_is_remote) + { + send_receivers(client_socket,val); } + else #endif - } + { + radio_change_receivers(val); + } } static void region_cb(GtkWidget *widget, gpointer data) { @@ -393,23 +392,35 @@ static void region_cb(GtkWidget *widget, gpointer data) { } static void rit_cb(GtkWidget *widget,gpointer data) { - rit_increment=GPOINTER_TO_INT(data); + int val = gtk_combo_box_get_active (GTK_COMBO_BOX(widget)); + switch (val) { + case 0: + default: + rit_increment=1; + break; + case 1: + rit_increment=10; + break; + case 2: + rit_increment=100; + break; + } } static void ck10mhz_cb(GtkWidget *widget, gpointer data) { - atlas_clock_source_10mhz = GPOINTER_TO_INT(data); + atlas_clock_source_10mhz = gtk_combo_box_get_active (GTK_COMBO_BOX(widget)); } static void ck128mhz_cb(GtkWidget *widget, gpointer data) { - atlas_clock_source_128mhz=atlas_clock_source_128mhz==1?0:1; + atlas_clock_source_128mhz=gtk_combo_box_get_active (GTK_COMBO_BOX(widget)) ? 1 : 0; } static void micsource_cb(GtkWidget *widget, gpointer data) { - atlas_mic_source=atlas_mic_source==1?0:1; + atlas_mic_source=gtk_combo_box_get_active (GTK_COMBO_BOX(widget)) ? 1 : 0; } -static void penelopetx_cb(GtkWidget *widget, gpointer data) { - atlas_penelope=GPOINTER_TO_INT(data); +static void tx_cb(GtkWidget *widget, gpointer data) { + atlas_penelope=gtk_combo_box_get_active (GTK_COMBO_BOX(widget)); } void radio_menu(GtkWidget *parent) { @@ -472,239 +483,196 @@ void radio_menu(GtkWidget *parent) { gtk_grid_attach(GTK_GRID(grid),receivers_label,col,row,1,1); row++; - - receivers_1=gtk_radio_button_new_with_label(NULL,"1"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (receivers_1), receivers==1); - gtk_grid_attach(GTK_GRID(grid),receivers_1,col,row,1,1); - g_signal_connect(receivers_1,"toggled",G_CALLBACK(receivers_cb),(gpointer *)1); - - row++; - + GtkWidget *receivers_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(receivers_combo),NULL,"1"); if(radio->supported_receivers>1) { - receivers_2=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(receivers_1),"2"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (receivers_2), receivers==2); - gtk_grid_attach(GTK_GRID(grid),receivers_2,col,row,1,1); - g_signal_connect(receivers_2,"toggled",G_CALLBACK(receivers_cb),(gpointer *)2); - row++; + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(receivers_combo),NULL,"2"); } + gtk_combo_box_set_active(GTK_COMBO_BOX(receivers_combo),receivers - 1); + gtk_grid_attach(GTK_GRID(grid),receivers_combo,col,row,1,1); + g_signal_connect(receivers_combo,"changed",G_CALLBACK(receivers_cb),NULL); + + row++; - col++; - if(row>temp_row) temp_row=row; - - row=1; + GtkWidget *sample_rate_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(sample_rate_label), "Sample Rate:"); + gtk_grid_attach(GTK_GRID(grid),sample_rate_label,col,row,1,1); + row++; + GtkWidget *sample_rate_combo_box=gtk_combo_box_text_new(); switch(protocol) { case ORIGINAL_PROTOCOL: - { - GtkWidget *sample_rate_label=gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(sample_rate_label), "Sample Rate:"); - gtk_grid_attach(GTK_GRID(grid),sample_rate_label,col,row,1,1); - row++; - - GtkWidget *sample_rate_48=gtk_radio_button_new_with_label(NULL,"48000"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_48), active_receiver->sample_rate==48000); - gtk_grid_attach(GTK_GRID(grid),sample_rate_48,col,row,1,1); - g_signal_connect(sample_rate_48,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)48000); - row++; - - GtkWidget *sample_rate_96=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_48),"96000"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_96), active_receiver->sample_rate==96000); - gtk_grid_attach(GTK_GRID(grid),sample_rate_96,col,row,1,1); - g_signal_connect(sample_rate_96,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)96000); - row++; - - GtkWidget *sample_rate_192=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_96),"192000"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_192), active_receiver->sample_rate==192000); - gtk_grid_attach(GTK_GRID(grid),sample_rate_192,col,row,1,1); - g_signal_connect(sample_rate_192,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)192000); - row++; - - GtkWidget *sample_rate_384=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_192),"384000"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_384), active_receiver->sample_rate==384000); - gtk_grid_attach(GTK_GRID(grid),sample_rate_384,col,row,1,1); - g_signal_connect(sample_rate_384,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)384000); - row++; - + case NEW_PROTOCOL: + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"48000"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"96000"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"192000"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"384000"); if(protocol==NEW_PROTOCOL) { - GtkWidget *sample_rate_768=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_384),"768000"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_768), active_receiver->sample_rate==768000); - gtk_grid_attach(GTK_GRID(grid),sample_rate_768,col,row,1,1); - g_signal_connect(sample_rate_768,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)768000); - row++; - - GtkWidget *sample_rate_1536=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_768),"1536000"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_1536), active_receiver->sample_rate==1536000); - gtk_grid_attach(GTK_GRID(grid),sample_rate_1536,col,row,1,1); - g_signal_connect(sample_rate_1536,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)1536000); - row++; - -#ifdef GPIO - gtk_widget_set_sensitive(sample_rate_768,FALSE); - gtk_widget_set_sensitive(sample_rate_1536,FALSE); +#ifndef GPIO + // seems that these very high sample rates cannot be handled if using GPIO + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"768000"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"1536000"); #endif } - col++; + switch (active_receiver->sample_rate) { + case 48000: + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),0); + break; + case 96000: + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),1); + break; + case 192000: + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),2); + break; + case 384000: +#ifdef GPIO + case 768000: + case 1536000: +#endif + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),3); + break; +#ifndef GPIO + case 768000: + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),4); + break; + case 1536000: + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),5); + break; +#endif } break; - + #ifdef SOAPYSDR case SOAPYSDR_PROTOCOL: if(strcmp(radio->name,"sdrplay")==0) { - GtkWidget *sample_rate_combo_box=gtk_combo_box_text_new(); + // It seems that only one does work ? + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"768000"); + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),0); + // gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"96000"); // gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"192000"); // gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"384000"); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"768000"); - switch(radio_sample_rate) { - case 96000: - gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),0); - break; - case 192000: - gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),1); - break; - case 384000: - gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),2); - break; - case 768000: - gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),3); - break; - } - g_signal_connect(sample_rate_combo_box,"changed",G_CALLBACK(sample_rate_cb),radio); - gtk_grid_attach(GTK_GRID(grid),sample_rate_combo_box,col,row,1,1); - row++; +// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,"768000"); +// switch(radio_sample_rate) { +// case 96000: +// gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),0); +// break; +// case 192000: +// gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),1); +// break; +// case 384000: +// gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),2); +// break; +// case 768000: +// gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),3); +// break; +// } } else { - GtkWidget *sample_rate_label=gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(sample_rate_label), "Sample Rate:"); - gtk_grid_attach(GTK_GRID(grid),sample_rate_label,col,row,1,1); - row++; + // There is only one sample rate and this we write into the combobox char rate[16]; sprintf(rate,"%d",radio->info.soapy.sample_rate); - GtkWidget *sample_rate=gtk_radio_button_new_with_label(NULL,rate); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate), radio->info.soapy.sample_rate); - gtk_grid_attach(GTK_GRID(grid),sample_rate,col,row,1,1); - g_signal_connect(sample_rate,"toggled",G_CALLBACK(sample_rate_cb),GINT_TO_POINTER(radio->info.soapy.sample_rate)); - - col++; + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sample_rate_combo_box),NULL,rate); + gtk_combo_box_set_active(GTK_COMBO_BOX(sample_rate_combo_box),0); } break; #endif } + gtk_grid_attach(GTK_GRID(grid),sample_rate_combo_box,col,row,1,1); + g_signal_connect(sample_rate_combo_box,"changed",G_CALLBACK(sample_rate_cb),NULL); row++; if(row>temp_row) temp_row=row; + col++, row=1; - if(protocol==ORIGINAL_PROTOCOL || protocol==NEW_PROTOCOL) { + GtkWidget *rit_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(rit_label), "RIT/XIT step (Hz):"); + gtk_grid_attach(GTK_GRID(grid),rit_label,col,row,1,1); + row++; - if((protocol==NEW_PROTOCOL && device==NEW_DEVICE_ORION) || - (protocol==NEW_PROTOCOL && device==NEW_DEVICE_ORION2) || - (protocol==ORIGINAL_PROTOCOL && device==DEVICE_ORION) || - (protocol==ORIGINAL_PROTOCOL && device==DEVICE_ORION2)) { - GtkWidget *ptt_ring_b=gtk_radio_button_new_with_label(NULL,"PTT On Ring, Mic and Bias on Tip"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_ring_b), mic_ptt_tip_bias_ring==0); - gtk_grid_attach(GTK_GRID(grid),ptt_ring_b,col,row,1,1); - g_signal_connect(ptt_ring_b,"toggled",G_CALLBACK(ptt_ring_cb),NULL); - row++; + GtkWidget *rit_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(rit_combo),NULL,"1"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(rit_combo),NULL,"10"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(rit_combo),NULL,"100"); - GtkWidget *ptt_tip_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(ptt_ring_b),"PTT On Tip, Mic and Bias on Ring"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_tip_b), mic_ptt_tip_bias_ring==1); - gtk_grid_attach(GTK_GRID(grid),ptt_tip_b,col,row,1,1); - g_signal_connect(ptt_tip_b,"toggled",G_CALLBACK(ptt_tip_cb),NULL); - row++; + switch (rit_increment) { + default: + rit_increment=1; + // fallthrough + case 1: + gtk_combo_box_set_active(GTK_COMBO_BOX(rit_combo),0); + break; + case 10: + gtk_combo_box_set_active(GTK_COMBO_BOX(rit_combo),1); + break; + case 100: + gtk_combo_box_set_active(GTK_COMBO_BOX(rit_combo),2); + break; + } + gtk_grid_attach(GTK_GRID(grid), rit_combo, col, row, 1, 1); + g_signal_connect(rit_combo,"changed",G_CALLBACK(rit_cb),NULL); + row++; - GtkWidget *ptt_b=gtk_check_button_new_with_label("PTT Enabled"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_b), mic_ptt_enabled); - gtk_grid_attach(GTK_GRID(grid),ptt_b,col,row,1,1); - g_signal_connect(ptt_b,"toggled",G_CALLBACK(ptt_cb),NULL); - row++; + GtkWidget *sat_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(sat_label), "SAT mode:"); + gtk_grid_attach(GTK_GRID(grid),sat_label,col,row,1,1); + row++; - GtkWidget *bias_b=gtk_check_button_new_with_label("BIAS Enabled"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bias_b), mic_bias_enabled); - gtk_grid_attach(GTK_GRID(grid),bias_b,col,row,1,1); - g_signal_connect(bias_b,"toggled",G_CALLBACK(bias_cb),NULL); - row++; + GtkWidget *sat_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sat_combo),NULL,"SAT Off"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sat_combo),NULL,"SAT"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sat_combo),NULL,"RSAT"); + gtk_combo_box_set_active(GTK_COMBO_BOX(sat_combo),sat_mode); + gtk_grid_attach(GTK_GRID(grid),sat_combo,col,row,1,1); + g_signal_connect(sat_combo,"changed",G_CALLBACK(sat_cb),NULL); + row++; - if(row>temp_row) temp_row=row; - col++; - } + if(row>temp_row) temp_row=row; + + col++; + row=1; - row=1; + if(protocol==ORIGINAL_PROTOCOL || protocol==NEW_PROTOCOL) { GtkWidget *filter_board_label=gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(filter_board_label), "Filter Board:"); gtk_grid_attach(GTK_GRID(grid),filter_board_label,col,row,1,1); row++; - GtkWidget *none_b = gtk_radio_button_new_with_label(NULL, "NONE"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(none_b), filter_board == NONE); - gtk_grid_attach(GTK_GRID(grid), none_b, col, row, 1, 1); - row++; - - GtkWidget *alex_b = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(none_b), "ALEX"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(alex_b), filter_board == ALEX); - gtk_grid_attach(GTK_GRID(grid), alex_b, col, row, 1, 1); - row++; - - GtkWidget *apollo_b = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(none_b), "APOLLO"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(apollo_b), filter_board == APOLLO); - gtk_grid_attach(GTK_GRID(grid), apollo_b, col, row, 1, 1); - row++; - - GtkWidget *charly25_b = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(none_b), "CHARLY25"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(charly25_b), filter_board==CHARLY25); - gtk_grid_attach(GTK_GRID(grid), charly25_b, col, row, 1, 1); - row++; + GtkWidget *filter_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(filter_combo),NULL,"NONE"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(filter_combo),NULL,"ALEX"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(filter_combo),NULL,"APOLLO"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(filter_combo),NULL,"CHARLY25"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(filter_combo),NULL,"N2ADR"); + + switch (filter_board) { + case NONE: + gtk_combo_box_set_active(GTK_COMBO_BOX(filter_combo),0); + case ALEX: + gtk_combo_box_set_active(GTK_COMBO_BOX(filter_combo),1); + case APOLLO: + gtk_combo_box_set_active(GTK_COMBO_BOX(filter_combo),2); + case CHARLY25: + gtk_combo_box_set_active(GTK_COMBO_BOX(filter_combo),3); + break; + case N2ADR: + gtk_combo_box_set_active(GTK_COMBO_BOX(filter_combo),4); + break; + } + gtk_grid_attach(GTK_GRID(grid), filter_combo, col, row, 1, 1); + g_signal_connect(filter_combo,"changed",G_CALLBACK(filter_cb),NULL); - GtkWidget *n2adr_b = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(none_b), "N2ADR"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(n2adr_b), filter_board==N2ADR); - gtk_grid_attach(GTK_GRID(grid), n2adr_b, col, row, 1, 1); row++; - g_signal_connect(none_b, "toggled", G_CALLBACK(none_cb), NULL); - g_signal_connect(alex_b, "toggled", G_CALLBACK(alex_cb), NULL); - g_signal_connect(apollo_b, "toggled", G_CALLBACK(apollo_cb), NULL); - g_signal_connect(charly25_b, "toggled", G_CALLBACK(charly25_cb), NULL); - g_signal_connect(n2adr_b, "toggled", G_CALLBACK(n2adr_cb), NULL); - - if(row>temp_row) temp_row=row; - col++; } - row=1; - - GtkWidget *rit_label=gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(rit_label), "RIT/XIT step (Hz):"); - gtk_grid_attach(GTK_GRID(grid),rit_label,col,row,1,1); - row++; - - GtkWidget *rit_1=gtk_radio_button_new_with_label(NULL,"1"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rit_1), rit_increment==1); - gtk_grid_attach(GTK_GRID(grid),rit_1,col,row,1,1); - g_signal_connect(rit_1,"pressed",G_CALLBACK(rit_cb),(gpointer *)1); - row++; - - GtkWidget *rit_10=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(rit_1),"10"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rit_10), rit_increment==10); - gtk_grid_attach(GTK_GRID(grid),rit_10,col,row,1,1); - g_signal_connect(rit_10,"pressed",G_CALLBACK(rit_cb),(gpointer *)10); - row++; - - GtkWidget *rit_100=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(rit_10),"100"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rit_100), rit_increment==100); - gtk_grid_attach(GTK_GRID(grid),rit_100,col,row,1,1); - g_signal_connect(rit_100,"pressed",G_CALLBACK(rit_cb),(gpointer *)100); - row++; - - if(row>temp_row) temp_row=row; - col++; - row=1; - -#ifdef GPIO +//#ifdef GPIO GtkWidget *vfo_divisor_label=gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(vfo_divisor_label), "VFO Encoder Divisor:"); gtk_grid_attach(GTK_GRID(grid),vfo_divisor_label,col,row,1,1); @@ -715,82 +683,119 @@ void radio_menu(GtkWidget *parent) { gtk_grid_attach(GTK_GRID(grid),vfo_divisor,col,row,1,1); g_signal_connect(vfo_divisor,"value_changed",G_CALLBACK(vfo_divisor_value_changed_cb),NULL); row++; -#endif +//#endif - GtkWidget *iqswap_b=gtk_check_button_new_with_label("Swap IQ"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (iqswap_b), iqswap); - gtk_grid_attach(GTK_GRID(grid),iqswap_b,col,row,1,1); - g_signal_connect(iqswap_b,"toggled",G_CALLBACK(iqswap_cb),NULL); - row++; - if(row>temp_row) temp_row=row; - col++; - #ifdef USBOZY if (protocol==ORIGINAL_PROTOCOL && (device == DEVICE_OZY || device == DEVICE_METIS)) #else if (protocol==ORIGINAL_PROTOCOL && radio->device == DEVICE_METIS) #endif { + col++; row=1; GtkWidget *atlas_label=gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(atlas_label), "Atlas bus:"); - gtk_grid_attach(GTK_GRID(grid),atlas_label,col,row,1,1); + gtk_label_set_markup(GTK_LABEL(atlas_label), "ATLAS bus settings:"); + gtk_grid_attach(GTK_GRID(grid),atlas_label,col,row,2,1); row++; - // Possibly "fuse" the 10Mhz Atlas buttons in one drop-down - GtkWidget *ck10mhz_1=gtk_radio_button_new_with_label(NULL,"10MHz clock=Atlas"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ck10mhz_1), atlas_clock_source_10mhz==0); - gtk_grid_attach(GTK_GRID(grid),ck10mhz_1,col,row,1,1); - g_signal_connect(ck10mhz_1,"toggled",G_CALLBACK(ck10mhz_cb),(gpointer *)0); - row++; + GtkWidget *clock10_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(clock10_label), "10 MHz source:"); + gtk_grid_attach(GTK_GRID(grid),clock10_label,col,row,1,1); - GtkWidget *ck10mhz_2=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(ck10mhz_1),"10MHz clock=Penelope"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ck10mhz_2), atlas_clock_source_10mhz==1); - gtk_grid_attach(GTK_GRID(grid),ck10mhz_2,col,row,1,1); - g_signal_connect(ck10mhz_2,"toggled",G_CALLBACK(ck10mhz_cb),(gpointer *)1); - row++; - GtkWidget *ck10mhz_3=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(ck10mhz_2),"10MHz clock=Mercury"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ck10mhz_3), atlas_clock_source_10mhz==2); - gtk_grid_attach(GTK_GRID(grid),ck10mhz_3,col,row,1,1); - g_signal_connect(ck10mhz_3,"toggled",G_CALLBACK(ck10mhz_cb),(gpointer *)2); - row++; + GtkWidget *ck10mhz_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(ck10mhz_combo),NULL,"Atlas"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(ck10mhz_combo),NULL,"Penelope"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(ck10mhz_combo),NULL,"Mercury"); + gtk_combo_box_set_active(GTK_COMBO_BOX(ck10mhz_combo),atlas_clock_source_10mhz); + gtk_grid_attach(GTK_GRID(grid),ck10mhz_combo,col+1,row,1,1); + g_signal_connect(ck10mhz_combo,"changed",G_CALLBACK(ck10mhz_cb),NULL); - GtkWidget *ck128_b=gtk_check_button_new_with_label("122.88MHz ck=Mercury"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ck128_b), atlas_clock_source_128mhz); - gtk_grid_attach(GTK_GRID(grid),ck128_b,col,row,1,1); - g_signal_connect(ck128_b,"toggled",G_CALLBACK(ck128mhz_cb),NULL); row++; - GtkWidget *mic_src_b=gtk_check_button_new_with_label("Mic src=Penelope"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mic_src_b), atlas_mic_source); - gtk_grid_attach(GTK_GRID(grid),mic_src_b,col,row,1,1); - g_signal_connect(mic_src_b,"toggled",G_CALLBACK(micsource_cb),NULL); - row++; + GtkWidget *clock128_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(clock128_label), "122.88 MHz source:"); + gtk_grid_attach(GTK_GRID(grid),clock128_label,col,row,1,1); + + GtkWidget *ck128mhz_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(ck128mhz_combo),NULL,"Penelope"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(ck128mhz_combo),NULL,"Mercury"); + gtk_combo_box_set_active(GTK_COMBO_BOX(ck128mhz_combo),atlas_clock_source_128mhz ? 1 : 0); + gtk_grid_attach(GTK_GRID(grid),ck128mhz_combo,col+1,row,1,1); + g_signal_connect(ck128mhz_combo,"changed",G_CALLBACK(ck128mhz_cb),NULL); - // Possibly "fuse" the TX buttons in one drop-down - GtkWidget *penelopetx_1=gtk_radio_button_new_with_label(NULL,"No TX"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (penelopetx_1), atlas_penelope==0); - gtk_grid_attach(GTK_GRID(grid),penelopetx_1,col,row,1,1); - g_signal_connect(penelopetx_1,"toggled",G_CALLBACK(penelopetx_cb),(gpointer *)0); row++; - GtkWidget *penelopetx_2=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(penelopetx_1),"Penelope TX"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (penelopetx_2), atlas_penelope==1); - gtk_grid_attach(GTK_GRID(grid),penelopetx_2,col,row,1,1); - g_signal_connect(penelopetx_2,"toggled",G_CALLBACK(penelopetx_cb),(gpointer *)1); + GtkWidget *micsource_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(micsource_label), "Mic source:"); + gtk_grid_attach(GTK_GRID(grid),micsource_label,col,row,1,1); + + GtkWidget *micsource_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(micsource_combo),NULL,"Janus"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(micsource_combo),NULL,"Penelope"); + gtk_combo_box_set_active(GTK_COMBO_BOX(micsource_combo),atlas_mic_source ? 1 : 0); + gtk_grid_attach(GTK_GRID(grid),micsource_combo,col+1,row,1,1); + g_signal_connect(micsource_combo,"changed",G_CALLBACK(micsource_cb),NULL); + row++; - GtkWidget *penelopetx_3=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(penelopetx_1),"Pennylane TX"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (penelopetx_3), atlas_penelope==2); - gtk_grid_attach(GTK_GRID(grid),penelopetx_3,col,row,1,1); - g_signal_connect(penelopetx_3,"toggled",G_CALLBACK(penelopetx_cb),(gpointer *)2); + GtkWidget *tx_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(tx_label), "TX config:"); + gtk_grid_attach(GTK_GRID(grid),tx_label,col,row,1,1); + + GtkWidget *tx_combo=gtk_combo_box_text_new(); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(tx_combo),NULL,"No TX"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(tx_combo),NULL,"Penelope"); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(tx_combo),NULL,"Pennylane"); + gtk_combo_box_set_active(GTK_COMBO_BOX(tx_combo),atlas_penelope); + gtk_grid_attach(GTK_GRID(grid),tx_combo,col+1,row,1,1); + g_signal_connect(tx_combo,"changed",G_CALLBACK(tx_cb),NULL); + row++; if(row>temp_row) temp_row=row; } + if((protocol==NEW_PROTOCOL && device==NEW_DEVICE_ORION) || + (protocol==NEW_PROTOCOL && device==NEW_DEVICE_ORION2) || + (protocol==ORIGINAL_PROTOCOL && device==DEVICE_ORION) || + (protocol==ORIGINAL_PROTOCOL && device==DEVICE_ORION2)) { + + col++; + row=1; + + GtkWidget *orion_label=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(orion_label), "Orion(2) Mic jack:"); + gtk_grid_attach(GTK_GRID(grid),orion_label,col,row,2,1); + row++; + + GtkWidget *ptt_ring_b=gtk_radio_button_new_with_label(NULL,"PTT On Ring, Mic and Bias on Tip"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_ring_b), mic_ptt_tip_bias_ring==0); + gtk_grid_attach(GTK_GRID(grid),ptt_ring_b,col,row,2,1); + g_signal_connect(ptt_ring_b,"toggled",G_CALLBACK(ptt_ring_cb),NULL); + row++; + + GtkWidget *ptt_tip_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(ptt_ring_b),"PTT On Tip, Mic and Bias on Ring"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_tip_b), mic_ptt_tip_bias_ring==1); + gtk_grid_attach(GTK_GRID(grid),ptt_tip_b,col,row,2,1); + g_signal_connect(ptt_tip_b,"toggled",G_CALLBACK(ptt_tip_cb),NULL); + row++; + + GtkWidget *ptt_b=gtk_check_button_new_with_label("PTT Enabled"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_b), mic_ptt_enabled); + gtk_grid_attach(GTK_GRID(grid),ptt_b,col,row,2,1); + g_signal_connect(ptt_b,"toggled",G_CALLBACK(ptt_cb),NULL); + row++; + + GtkWidget *bias_b=gtk_check_button_new_with_label("BIAS Enabled"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bias_b), mic_bias_enabled); + gtk_grid_attach(GTK_GRID(grid),bias_b,col,row,2,1); + g_signal_connect(bias_b,"toggled",G_CALLBACK(bias_cb),NULL); + row++; + + if(row>temp_row) temp_row=row; + } row=temp_row; col=0; @@ -809,22 +814,24 @@ void radio_menu(GtkWidget *parent) { col++; - - GtkWidget *sat_combo=gtk_combo_box_text_new(); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sat_combo),NULL,"SAT Off"); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sat_combo),NULL,"SAT"); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(sat_combo),NULL,"RSAT"); - gtk_combo_box_set_active(GTK_COMBO_BOX(sat_combo),sat_mode); - gtk_grid_attach(GTK_GRID(grid),sat_combo,col,row,1,1); - g_signal_connect(sat_combo,"changed",G_CALLBACK(sat_cb),NULL); - - col++; - mute_rx_b=gtk_check_button_new_with_label("Mute RX when TX"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mute_rx_b), mute_rx_while_transmitting); gtk_grid_attach(GTK_GRID(grid),mute_rx_b,col,row,1,1); g_signal_connect(mute_rx_b,"toggled",G_CALLBACK(mute_rx_cb),NULL); + col++; + + GtkWidget *PA_enable_b=gtk_check_button_new_with_label("PA enable"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (PA_enable_b), pa_enabled); + gtk_grid_attach(GTK_GRID(grid),PA_enable_b,col,row,1,1); + g_signal_connect(PA_enable_b,"toggled",G_CALLBACK(PA_enable_cb),NULL); + + col++; + GtkWidget *iqswap_b=gtk_check_button_new_with_label("Swap IQ"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (iqswap_b), iqswap); + gtk_grid_attach(GTK_GRID(grid),iqswap_b,col,row,1,1); + g_signal_connect(iqswap_b,"toggled",G_CALLBACK(iqswap_cb),NULL); + row++; col=0; @@ -851,12 +858,6 @@ void radio_menu(GtkWidget *parent) { g_signal_connect(rx_gain_calibration_b,"value_changed",G_CALLBACK(rx_gain_calibration_value_changed_cb),NULL); } - col++; - GtkWidget *PA_enable_b=gtk_check_button_new_with_label("PA enable"); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (PA_enable_b), pa_enabled); - gtk_grid_attach(GTK_GRID(grid),PA_enable_b,col,row,1,1); - g_signal_connect(PA_enable_b,"toggled",G_CALLBACK(PA_enable_cb),NULL); - row++; if(row>temp_row) temp_row=row; @@ -865,20 +866,25 @@ void radio_menu(GtkWidget *parent) { col=0; if(radio->device==SOAPYSDR_USB_DEVICE) { int i; - if(radio->info.soapy.rx_gains>0) { - GtkWidget *rx_gain=gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(rx_gain), "RX Gains:"); - gtk_label_set_justify(GTK_LABEL(rx_gain),GTK_JUSTIFY_LEFT); - gtk_grid_attach(GTK_GRID(grid),rx_gain,col,row,1,1); + if(strcmp(radio->name,"sdrplay")==0 || strcmp(radio->name,"rtlsdr")==0) { + // We display fixed gains below + if(radio->info.soapy.rx_gains>0) { + GtkWidget *rx_gain=gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(rx_gain), "RX Gains:"); + gtk_label_set_justify(GTK_LABEL(rx_gain),GTK_JUSTIFY_LEFT); + gtk_grid_attach(GTK_GRID(grid),rx_gain,col,row,1,1); + } } if(can_transmit) { + /* if(radio->info.soapy.tx_gains>0) { col=2; GtkWidget *tx_gain=gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(tx_gain), "TX Gains:"); gtk_grid_attach(GTK_GRID(grid),tx_gain,col,row,1,1); } + */ } row++; -- 2.45.2