]> git.tdb.fi Git - ext/subsurface.git/blobdiff - info.c
Add some more cochran data parsing code/comments
[ext/subsurface.git] / info.c
diff --git a/info.c b/info.c
index 38087c6e662bdc4d6a3a8ac40630a88c4f5fdfbc..813d58adcfb0572dc88c278ca13820bd2e0380d3 100644 (file)
--- a/info.c
+++ b/info.c
@@ -38,8 +38,8 @@ static char *get_text(GtkTextView *view)
  * NOTW: NULL and "" need to be treated as "unchanged" */
 static int text_changed(const char *old, const char *new)
 {
-       return ((old && strcmp(old,new)) ||
-               (!old && strcmp("",new)));
+       return (old && strcmp(old,new)) ||
+               (!old && strcmp("",new));
 }
 
 static char *get_combo_box_entry_text(GtkComboBoxEntry *combo_box, char **textp)
@@ -100,19 +100,58 @@ void show_dive_info(struct dive *dive)
                dive && dive->notes ? dive->notes : "", -1);
 }
 
+static int delete_dive_info(struct dive *dive)
+{
+       int success;
+       GtkWidget *dialog;
+
+       if (!dive)
+               return 0;
+
+       dialog = gtk_dialog_new_with_buttons("Delete Dive",
+               GTK_WINDOW(main_window),
+               GTK_DIALOG_DESTROY_WITH_PARENT,
+               GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
+               GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+               NULL);
+
+       gtk_widget_show_all(dialog);
+       success = gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT;
+       if (success) {
+               delete_dive(dive);
+               mark_divelist_changed(TRUE);
+               dive_list_update_dives();
+       }
+
+       gtk_widget_destroy(dialog);
+
+       return success;
+}
+
 static void info_menu_edit_cb(GtkMenuItem *menuitem, gpointer user_data)
 {
        edit_dive_info(current_dive);
 }
 
-static void populate_popup_cb(GtkTextView *entry, GtkMenu *menu, gpointer user_data)
+static void info_menu_delete_cb(GtkMenuItem *menuitem, gpointer user_data)
 {
-       GtkWidget *item = gtk_menu_item_new_with_label("Edit");
-       g_signal_connect(item, "activate", G_CALLBACK(info_menu_edit_cb), NULL);
+       delete_dive_info(current_dive);
+}
+
+static void add_menu_item(GtkMenu *menu, const char *label, void (*cb)(GtkMenuItem *, gpointer))
+{
+       GtkWidget *item = gtk_menu_item_new_with_label(label);
+       g_signal_connect(item, "activate", G_CALLBACK(cb), NULL);
        gtk_widget_show(item); /* Yes, really */
        gtk_menu_prepend(menu, item);
 }
 
+static void populate_popup_cb(GtkTextView *entry, GtkMenu *menu, gpointer user_data)
+{
+       add_menu_item(menu, "Delete", info_menu_delete_cb);
+       add_menu_item(menu, "Edit", info_menu_edit_cb);
+}
+
 static GtkEntry *text_value(GtkWidget *box, const char *label)
 {
        GtkWidget *widget;
@@ -258,13 +297,13 @@ void add_location(const char *string)
 
 static int get_rating(const char *string)
 {
-       int rating = 0;
+       int rating_val = 0;
        int i;
 
        for (i = 0; i <= 5; i++)
                if (!strcmp(star_strings[i],string))
-                       rating = i;
-       return rating;
+                       rating_val = i;
+       return rating_val;
 }
 
 struct dive_info {
@@ -313,7 +352,7 @@ static void save_dive_info_changes(struct dive *dive, struct dive_info *info)
 
        if (changed) {
                mark_divelist_changed(TRUE);
-               flush_divelist(dive);
+               update_dive(dive);
        }
 }