visible_cols_t visible_cols = {TRUE, FALSE};
static const char *default_dive_computer;
+static const char *default_dive_computer_device;
static int is_default_dive_computer(const char *name)
{
return default_dive_computer && !strcmp(name, default_dive_computer);
}
+static int is_default_dive_computer_device(const char *name)
+{
+ return default_dive_computer_device && !strcmp(name, default_dive_computer_device);
+}
+
static void set_default_dive_computer(const char *name)
{
if (!name || !*name)
subsurface_set_conf("dive_computer", PREF_STRING, name);
}
+static void set_default_dive_computer_device(const char *name)
+{
+ if (!name || !*name)
+ return;
+ if (is_default_dive_computer_device(name))
+ return;
+ default_dive_computer_device = name;
+ subsurface_set_conf("dive_computer_device", PREF_STRING, name);
+}
+
void repaint_dive(void)
{
update_dive(current_dive);
<menuitem name=\"Save\" action=\"SaveFile\" /> \
<menuitem name=\"Print\" action=\"Print\" /> \
<separator name=\"Separator1\"/> \
- <menuitem name=\"Import\" action=\"Import\" /> \
- <separator name=\"Separator2\"/> \
<menuitem name=\"Preferences\" action=\"Preferences\" /> \
- <separator name=\"Separator3\"/> \
+ <separator name=\"Separator2\"/> \
<menuitem name=\"Quit\" action=\"Quit\" /> \
</menu> \
<menu name=\"LogMenu\" action=\"LogMenuAction\"> \
+ <menuitem name=\"Import\" action=\"Import\" /> \
+ <separator name=\"Separator\"/> \
<menuitem name=\"Renumber\" action=\"Renumber\" /> \
<menu name=\"View\" action=\"ViewMenuAction\"> \
<menuitem name=\"List\" action=\"ViewList\" /> \
divelist_font = subsurface_get_conf("divelist_font", PREF_STRING);
default_dive_computer = subsurface_get_conf("dive_computer", PREF_STRING);
+ default_dive_computer_device = subsurface_get_conf("dive_computer_device", PREF_STRING);
error_info_bar = NULL;
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
return GTK_COMBO_BOX(combo_box);
}
+const char *subsurface_device_name()
+{
+ if (!default_dive_computer_device || !*default_dive_computer_device)
+ return subsurface_USB_name();
+ else
+ return default_dive_computer_device;
+}
+
static GtkEntry *dive_computer_device(GtkWidget *vbox)
{
GtkWidget *hbox, *entry, *frame;
entry = gtk_entry_new();
gtk_container_add(GTK_CONTAINER(frame), entry);
- gtk_entry_set_text(GTK_ENTRY(entry), subsurface_USB_name());
+ gtk_entry_set_text(GTK_ENTRY(entry), subsurface_device_name());
return GTK_ENTRY(entry);
}
}
}
+static GtkWidget *import_dive_computer(device_data_t *data, GtkDialog *dialog)
+{
+ GError *error;
+ GtkWidget *vbox, *info, *container, *label, *button;
+
+ error = do_import(data);
+ if (!error)
+ return NULL;
+
+ button = gtk_dialog_get_widget_for_response(dialog, GTK_RESPONSE_ACCEPT);
+ gtk_button_set_use_stock(GTK_BUTTON(button), 0);
+ gtk_button_set_label(GTK_BUTTON(button), "Retry");
+
+ vbox = gtk_dialog_get_content_area(dialog);
+
+ info = gtk_info_bar_new();
+ container = gtk_info_bar_get_content_area(GTK_INFO_BAR(info));
+ label = gtk_label_new(error->message);
+ gtk_container_add(GTK_CONTAINER(container), label);
+ gtk_box_pack_start(GTK_BOX(vbox), info, FALSE, FALSE, 0);
+ return info;
+}
+
void import_dialog(GtkWidget *w, gpointer data)
{
int result;
- GtkWidget *dialog, *hbox, *vbox, *label;
+ GtkWidget *dialog, *hbox, *vbox, *label, *info = NULL;
GtkComboBox *computer;
GtkEntry *device;
GtkWidget *XMLchooser;
devicedata.progress.bar = gtk_progress_bar_new();
gtk_container_add(GTK_CONTAINER(hbox), devicedata.progress.bar);
+repeat:
gtk_widget_show_all(dialog);
result = gtk_dialog_run(GTK_DIALOG(dialog));
switch (result) {
case GTK_RESPONSE_ACCEPT:
/* what happened - did the user pick a file? In that case
* we ignore whether a dive computer model was picked */
+ if (info)
+ gtk_widget_destroy(info);
list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(XMLchooser));
if (g_slist_length(list) == 0) {
if (!gtk_combo_box_get_active_iter(computer, &iter))
devicedata.name = comp;
devicedata.devname = gtk_entry_get_text(device);
set_default_dive_computer(devicedata.name);
- do_import(&devicedata);
+ set_default_dive_computer_device(devicedata.devname);
+ info = import_dive_computer(&devicedata, GTK_DIALOG(dialog));
+ if (info)
+ goto repeat;
} else {
g_slist_foreach(list,do_import_file,NULL);
g_slist_free(list);
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress->bar), value);
}
+void update_progressbar_text(progressbar_t *progress, const char *text)
+{
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress->bar), text);
+}
void set_filename(const char *filename)
{