newer INSTALL file pulled in by autogen.sh
[fw/altos] / aoview / aoview_dev_dialog.c
index f1165e12f89168536291fd6375594a49f4dec10d..3f92085cfd5f0bdc4ccab3d62007c81b31456abe 100644 (file)
 
 #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);
 }