From: Linus Torvalds Date: Tue, 20 Sep 2011 17:06:24 +0000 (-0700) Subject: Make 'struct DiveList' entirely internal to divelist.c X-Git-Url: http://git.tdb.fi/?p=ext%2Fsubsurface.git;a=commitdiff_plain;h=9cf8d98711dff888f5bfa8efd52ca7b8cf8bfa07 Make 'struct DiveList' entirely internal to divelist.c Passing it around is just annoying, and we only ever have one. Let's not burden all the users with the silly thing. Signed-off-by: Linus Torvalds --- diff --git a/divelist.c b/divelist.c index 3b84079..24d4014 100644 --- a/divelist.c +++ b/divelist.c @@ -7,6 +7,16 @@ #include "dive.h" #include "display.h" +struct DiveList { + GtkWidget *tree_view; + GtkWidget *container_widget; + GtkListStore *model; + GtkTreeViewColumn *date, *depth, *duration, *location; + GtkTreeViewColumn *temperature, *cylinder, *nitrox, *sac; +}; + +static struct DiveList dive_list; + /* * The dive list has the dive data in both string format (for showing) * and in "raw" format (for sorting purposes) @@ -327,17 +337,17 @@ static gboolean set_one_dive(GtkTreeModel *model, return dive == data; } -void flush_divelist(struct DiveList *dive_list, struct dive *dive) +void flush_divelist(struct dive *dive) { - GtkTreeModel *model = GTK_TREE_MODEL(dive_list->model); + GtkTreeModel *model = GTK_TREE_MODEL(dive_list.model); gtk_tree_model_foreach(model, set_one_dive, dive); } -void update_dive_list_units(struct DiveList *dive_list) +void update_dive_list_units(void) { const char *unit; - GtkTreeModel *model = GTK_TREE_MODEL(dive_list->model); + GtkTreeModel *model = GTK_TREE_MODEL(dive_list.model); switch (output_units.length) { case METERS: @@ -347,18 +357,18 @@ void update_dive_list_units(struct DiveList *dive_list) unit = "ft"; break; } - gtk_tree_view_column_set_title(dive_list->depth, unit); + gtk_tree_view_column_set_title(dive_list.depth, unit); gtk_tree_model_foreach(model, set_one_dive, NULL); } -static void fill_dive_list(struct DiveList *dive_list) +static void fill_dive_list(void) { int i; GtkTreeIter iter; GtkListStore *store; - store = GTK_LIST_STORE(dive_list->model); + store = GTK_LIST_STORE(dive_list.model); for (i = 0; i < dive_table.nr; i++) { struct dive *dive = dive_table.dives[i]; @@ -376,13 +386,13 @@ static void fill_dive_list(struct DiveList *dive_list) -1); } - update_dive_list_units(dive_list); + update_dive_list_units(); } -void dive_list_update_dives(struct DiveList dive_list) +void dive_list_update_dives(void) { gtk_list_store_clear(GTK_LIST_STORE(dive_list.model)); - fill_dive_list(&dive_list); + fill_dive_list(); repaint_dive(); } @@ -417,9 +427,8 @@ static GtkTreeViewColumn *divelist_column(struct DiveList *dl, int index, const return col; } -struct DiveList dive_list_create(void) +GtkWidget *dive_list_create(void) { - struct DiveList dive_list; GtkTreeSelection *selection; PangoFontDescription *font_desc = pango_font_description_from_string("sans 8"); @@ -452,7 +461,7 @@ struct DiveList dive_list_create(void) dive_list.nitrox = divelist_column(&dive_list, DIVE_NITROX, "O2%", nitrox_data_func, 1); dive_list.sac = divelist_column(&dive_list, DIVE_NITROX, "SAC", sac_data_func, 1); - fill_dive_list(&dive_list); + fill_dive_list(); g_object_set(G_OBJECT(dive_list.tree_view), "headers-visible", TRUE, "search-column", 0, @@ -466,5 +475,5 @@ struct DiveList dive_list_create(void) GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(dive_list.container_widget), dive_list.tree_view); - return dive_list; + return dive_list.container_widget; } diff --git a/divelist.h b/divelist.h index 2d1fd50..25de683 100644 --- a/divelist.h +++ b/divelist.h @@ -3,20 +3,11 @@ #include -struct DiveList { - GtkWidget *tree_view; - GtkWidget *container_widget; - GtkListStore *model; - GtkTreeViewColumn *date, *depth, *duration, *location; - GtkTreeViewColumn *temperature, *cylinder, *nitrox, *sac; -}; - struct dive; -extern struct DiveList dive_list; -extern struct DiveList dive_list_create(void); -extern void dive_list_update_dives(struct DiveList); -extern void update_dive_list_units(struct DiveList *); -extern void flush_divelist(struct DiveList *, struct dive *); +extern GtkWidget *dive_list_create(void); +extern void dive_list_update_dives(void); +extern void update_dive_list_units(void); +extern void flush_divelist(struct dive *); #endif diff --git a/equipment.c b/equipment.c index 5d277fe..b9b9259 100644 --- a/equipment.c +++ b/equipment.c @@ -238,7 +238,7 @@ static void apply_cb(GtkButton *button, gpointer data) for (i = 0; i < MAX_CYLINDERS; i++) record_cylinder_changes(dive->cylinder+i, gtk_cylinder+i); - flush_divelist(&dive_list, dive); + flush_divelist(dive); } static void cancel_cb(GtkButton *button, gpointer data) @@ -416,8 +416,8 @@ GtkWidget *equipment_widget(void) gtk_box_pack_start(GTK_BOX(hbox), apply, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), cancel, FALSE, FALSE, 0); - g_signal_connect(apply, "clicked", G_CALLBACK(apply_cb), dive_list.model); - g_signal_connect(cancel, "clicked", G_CALLBACK(cancel_cb), dive_list.model); + g_signal_connect(apply, "clicked", G_CALLBACK(apply_cb), NULL); + g_signal_connect(cancel, "clicked", G_CALLBACK(cancel_cb), NULL); return vbox; } diff --git a/libdivecomputer.c b/libdivecomputer.c index c53a81e..9e5bd90 100644 --- a/libdivecomputer.c +++ b/libdivecomputer.c @@ -608,5 +608,5 @@ void import_dialog(GtkWidget *w, gpointer data) gtk_widget_destroy(dialog); report_dives(); - dive_list_update_dives(dive_list); + dive_list_update_dives(); } diff --git a/main.c b/main.c index 03957e1..d125169 100644 --- a/main.c +++ b/main.c @@ -14,7 +14,6 @@ GtkWidget *main_vbox; GtkWidget *error_info_bar; GtkWidget *error_label; int error_count; -struct DiveList dive_list; GConfClient *gconf; struct units output_units; @@ -98,7 +97,7 @@ void update_dive(struct dive *new_dive) if (old_dive) { flush_dive_info_changes(old_dive); flush_dive_equipment_changes(old_dive); - flush_divelist(&dive_list, old_dive); + flush_divelist(old_dive); } if (new_dive) { show_dive_info(new_dive); @@ -190,7 +189,7 @@ static void file_open(GtkWidget *w, gpointer data) } g_slist_free(filenames); report_dives(); - dive_list_update_dives(dive_list); + dive_list_update_dives(); } gtk_widget_destroy(dialog); } @@ -316,7 +315,7 @@ static void unit_dialog(GtkWidget *w, gpointer data) /* Make sure to flush any modified old dive data with old units */ update_dive(NULL); output_units = menu_units; - update_dive_list_units(&dive_list); + update_dive_list_units(); repaint_dive(); gconf_client_set_bool(gconf, GCONF_NAME(feet), output_units.length == FEET, NULL); gconf_client_set_bool(gconf, GCONF_NAME(psi), output_units.pressure == PSI, NULL); @@ -426,6 +425,7 @@ int main(int argc, char **argv) GtkWidget *info_box; GtkWidget *notebook; GtkWidget *dive_info; + GtkWidget *dive_list; GtkWidget *equipment; GtkWidget *menubar; GtkWidget *vbox; @@ -465,7 +465,7 @@ int main(int argc, char **argv) /* Create the actual divelist */ dive_list = dive_list_create(); - gtk_paned_add2(GTK_PANED(paned), dive_list.container_widget); + gtk_paned_add2(GTK_PANED(paned), dive_list); /* VBox for dive info, and tabs */ info_box = gtk_vbox_new(FALSE, 6); @@ -510,7 +510,7 @@ int main(int argc, char **argv) } report_dives(); - dive_list_update_dives(dive_list); + dive_list_update_dives(); gtk_main(); return 0;