X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=aoview%2Faoview_dev_dialog.c;h=3f92085cfd5f0bdc4ccab3d62007c81b31456abe;hp=f1165e12f89168536291fd6375594a49f4dec10d;hb=a5782398d968e7cb11f7203afada7c216f233b3b;hpb=09771c644de54ae354e8f98af7ba74289b3c0fcc diff --git a/aoview/aoview_dev_dialog.c b/aoview/aoview_dev_dialog.c index f1165e12..3f92085c 100644 --- a/aoview/aoview_dev_dialog.c +++ b/aoview/aoview_dev_dialog.c @@ -17,26 +17,6 @@ #include "aoview.h" -static GtkTreeViewColumn * -add_plain_text_column (GtkTreeView *view, const gchar *title, gint model_column, gint width) -{ - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - - renderer = gtk_cell_renderer_text_new (); - g_object_set(renderer, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL); - g_object_set(renderer, "width-chars", width, NULL); - column = gtk_tree_view_column_new_with_attributes (title, renderer, - "text", model_column, - NULL); - gtk_tree_view_column_set_resizable (column, FALSE); - gtk_tree_view_append_column (view, column); - - return column; -} - - - static void aoview_dev_dialog_map(GtkWidget *widget, gpointer data) { @@ -65,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, @@ -75,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; @@ -92,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); } @@ -102,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 @@ -111,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); @@ -118,9 +131,9 @@ aoview_dev_dialog_init(GladeXML *xml) dev_list = GTK_TREE_VIEW(glade_xml_get_widget(xml, "dev_list")); assert(dev_list); - add_plain_text_column(dev_list, _("Product"), 0, 16); - add_plain_text_column(dev_list, _("Serial"), 1, 8); - add_plain_text_column(dev_list, _("Device"), 2, 13); + aoview_add_plain_text_column(dev_list, _("Product"), 0, 16); + aoview_add_plain_text_column(dev_list, _("Serial"), 1, 8); + aoview_add_plain_text_column(dev_list, _("Device"), 2, 13); dev_selection = gtk_tree_view_get_selection(dev_list); gtk_tree_selection_set_mode(dev_selection, GTK_SELECTION_SINGLE); @@ -143,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); }