X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=aoview%2Faoview_dev_dialog.c;h=3f92085cfd5f0bdc4ccab3d62007c81b31456abe;hp=00947404e7100dbf076cd00905f7af2a06a8f743;hb=a0e6bfee635b64092262936c858542318f6fc6dc;hpb=be3f4fed7b863c8cdaabe32b61b65a8b3cd11355 diff --git a/aoview/aoview_dev_dialog.c b/aoview/aoview_dev_dialog.c index 00947404..3f92085c 100644 --- a/aoview/aoview_dev_dialog.c +++ b/aoview/aoview_dev_dialog.c @@ -45,6 +45,25 @@ aoview_dev_dialog_map(GtkWidget *widget, gpointer data) gtk_tree_view_columns_autosize(dev_list); } +static GtkMessageDialog *dev_open_fail_dialog; + +static void +aoview_dev_open_failed(char *name) +{ + char *utf8_file; + utf8_file = g_filename_to_utf8(name, -1, NULL, NULL, NULL); + if (!utf8_file) + utf8_file = name; + gtk_message_dialog_format_secondary_text(dev_open_fail_dialog, + "\"%s\"", utf8_file); + if (utf8_file != name) + g_free(utf8_file); + gtk_dialog_run(GTK_DIALOG(dev_open_fail_dialog)); + gtk_widget_hide(GTK_WIDGET(dev_open_fail_dialog)); +} + +gboolean dialog_save_log; + static void aoview_dev_selected(GtkTreeModel *model, GtkTreePath *path, @@ -55,7 +74,14 @@ aoview_dev_selected(GtkTreeModel *model, gtk_tree_model_get(model, iter, 2, &string, -1); - aoview_monitor_connect(string); + if (dialog_save_log) { + dialog_save_log = FALSE; + if (!aoview_eeprom_save(string)) + aoview_dev_open_failed(string); + } else { + if (!aoview_monitor_connect(string)) + aoview_dev_open_failed(string); + } } static GtkWidget *dialog; @@ -72,7 +98,6 @@ aoview_dev_dialog_connect(GtkWidget *widget, gpointer data) gtk_tree_selection_selected_foreach(tree_selection, aoview_dev_selected, data); - gtk_widget_hide(dialog); } @@ -82,6 +107,13 @@ aoview_dev_disconnect(GtkWidget *widget) aoview_monitor_disconnect(); } +static void +aoview_dev_savelog(GtkWidget *widget, gpointer data) +{ + dialog_save_log = TRUE; + gtk_widget_show(dialog); +} + #define _(a) a void @@ -91,6 +123,7 @@ aoview_dev_dialog_init(GladeXML *xml) GtkWidget *connect_button; GtkTreeSelection *dev_selection; GtkWidget *ao_disconnect; + GtkWidget *ao_savelog; dialog = glade_xml_get_widget(xml, "device_connect_dialog"); assert(dialog); @@ -123,4 +156,13 @@ aoview_dev_dialog_init(GladeXML *xml) g_signal_connect(G_OBJECT(ao_disconnect), "activate", G_CALLBACK(aoview_dev_disconnect), ao_disconnect); + + ao_savelog = glade_xml_get_widget(xml, "ao_savelog"); + assert(ao_savelog); + + g_signal_connect(G_OBJECT(ao_savelog), "activate", + G_CALLBACK(aoview_dev_savelog), + dialog); + dev_open_fail_dialog = GTK_MESSAGE_DIALOG(glade_xml_get_widget(xml, "dev_open_fail_dialog")); + assert(dev_open_fail_dialog); }