]> git.tdb.fi Git - ext/subsurface.git/blobdiff - divelist.c
Merge branch 'for-linus' of git://github.com/dirkhh/subsurface
[ext/subsurface.git] / divelist.c
index eb6e8482f337eddf82f7806866bc608e09b70c68..0a601c511f27e2fab3243e83f6770dfc00ce1093 100644 (file)
@@ -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)
@@ -267,8 +277,8 @@ static void get_string(char **str, const char *s)
        if (!s)
                s = "";
        len = strlen(s);
-       if (len > 16)
-               len = 16;
+       if (len > 40)
+               len = 40;
        n = malloc(len+1);
        memcpy(n, s, len);
        n[len] = 0;
@@ -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,7 +357,7 @@ void update_dive_list_units(struct DiveList *dive_list)
                unit = "max/ft";
                break;
        }
-       gtk_tree_view_column_set_title(dive_list->depth, unit);
+       gtk_tree_view_column_set_title(dive_list.depth, unit);
 
        switch (output_units.temperature) {
        case CELSIUS:
@@ -360,18 +370,18 @@ void update_dive_list_units(struct DiveList *dive_list)
                unit = "Kelvin";
                break;
        }
-       gtk_tree_view_column_set_title(dive_list->temperature, unit);
+       gtk_tree_view_column_set_title(dive_list.temperature, 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];
@@ -389,13 +399,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();
 }
 
@@ -406,7 +416,7 @@ typedef void (*data_func_t)(GtkTreeViewColumn *col,
                            gpointer data);
 
 static GtkTreeViewColumn *divelist_column(struct DiveList *dl, int index, const char *title,
-               data_func_t data_func, int align_right)
+                                       data_func_t data_func, int align_right, int expand)
 {
        GtkCellRenderer *renderer;
        GtkTreeViewColumn *col;
@@ -426,13 +436,15 @@ static GtkTreeViewColumn *divelist_column(struct DiveList *dl, int index, const
                gtk_object_set(GTK_OBJECT(renderer), "alignment", PANGO_ALIGN_RIGHT, NULL);
                gtk_cell_renderer_set_alignment(GTK_CELL_RENDERER(renderer), 1.0, 0.5);
        }
+       gtk_tree_view_column_set_expand(col,expand);
+       if (expand) 
+               gtk_tree_view_column_set_min_width(col,50);
        gtk_tree_view_append_column(GTK_TREE_VIEW(dl->tree_view), col);
        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");
 
@@ -456,16 +468,16 @@ struct DiveList dive_list_create(void)
        gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_BROWSE);
        gtk_widget_set_size_request(dive_list.tree_view, 200, 200);
 
-       dive_list.date = divelist_column(&dive_list, DIVE_DATE, "Date", date_data_func, 0);
-       dive_list.depth = divelist_column(&dive_list, DIVE_DEPTH, "ft", depth_data_func, 1);
-       dive_list.duration = divelist_column(&dive_list, DIVE_DURATION, "min", duration_data_func, 1);
-       dive_list.location = divelist_column(&dive_list, DIVE_LOCATION, "Location", NULL, 0);
-       dive_list.temperature = divelist_column(&dive_list, DIVE_TEMPERATURE, "deg", temperature_data_func, 1);
-       dive_list.cylinder = divelist_column(&dive_list, DIVE_CYLINDER, "Cyl", NULL, 0);
-       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);
+       dive_list.date = divelist_column(&dive_list, DIVE_DATE, "Date", date_data_func, 0, 0);
+       dive_list.depth = divelist_column(&dive_list, DIVE_DEPTH, "max/ft", depth_data_func, 1, 0);
+       dive_list.duration = divelist_column(&dive_list, DIVE_DURATION, "min", duration_data_func, 1, 0);
+       dive_list.location = divelist_column(&dive_list, DIVE_LOCATION, "Location", NULL, 0, 1);
+       dive_list.temperature = divelist_column(&dive_list, DIVE_TEMPERATURE, "degF", temperature_data_func, 1, 0);
+       dive_list.cylinder = divelist_column(&dive_list, DIVE_CYLINDER, "Cyl", NULL, 0, 0);
+       dive_list.nitrox = divelist_column(&dive_list, DIVE_NITROX, "O2%", nitrox_data_func, 1, 0);
+       dive_list.sac = divelist_column(&dive_list, DIVE_NITROX, "SAC", sac_data_func, 1, 0);
 
-       fill_dive_list(&dive_list);
+       fill_dive_list();
 
        g_object_set(G_OBJECT(dive_list.tree_view), "headers-visible", TRUE,
                                          "search-column", 0,
@@ -479,5 +491,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;
 }