mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
Split up generic code to generate a gtk tree view column
We used to do this just for the dive list, but the new cylinder view will want to do a lot of the same boilerplate gtk stuff, so make it a bit more generic and move it to gtk-gui.c. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fe0eff8f1e
commit
8d82c57e46
3 changed files with 50 additions and 41 deletions
|
@ -33,4 +33,13 @@ extern GtkWidget *equipment_widget(void);
|
|||
|
||||
extern GtkWidget *dive_list_create(void);
|
||||
|
||||
typedef void (*data_func_t)(GtkTreeViewColumn *col,
|
||||
GtkCellRenderer *renderer,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data);
|
||||
|
||||
extern GtkTreeViewColumn *tree_view_column(GtkWidget *tree_view, int index, const char *title,
|
||||
data_func_t data_func, PangoAlignment align, gboolean visible);
|
||||
|
||||
#endif
|
||||
|
|
46
divelist.c
46
divelist.c
|
@ -424,9 +424,9 @@ void update_dive_list_units(void)
|
|||
|
||||
void update_dive_list_col_visibility(void)
|
||||
{
|
||||
gtk_tree_view_column_set_visible(dive_list.sac, visible_cols.sac);
|
||||
gtk_tree_view_column_set_visible(dive_list.otu, visible_cols.otu);
|
||||
return;
|
||||
gtk_tree_view_column_set_visible(dive_list.sac, visible_cols.sac);
|
||||
gtk_tree_view_column_set_visible(dive_list.otu, visible_cols.otu);
|
||||
return;
|
||||
}
|
||||
|
||||
static void fill_dive_list(void)
|
||||
|
@ -469,46 +469,10 @@ void dive_list_update_dives(void)
|
|||
repaint_dive();
|
||||
}
|
||||
|
||||
typedef void (*data_func_t)(GtkTreeViewColumn *col,
|
||||
GtkCellRenderer *renderer,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data);
|
||||
|
||||
static GtkTreeViewColumn *divelist_column(struct DiveList *dl, int index, const char *title,
|
||||
data_func_t data_func, PangoAlignment align, gboolean visible)
|
||||
data_func_t data_func, PangoAlignment align, gboolean visible)
|
||||
{
|
||||
GtkCellRenderer *renderer;
|
||||
GtkTreeViewColumn *col;
|
||||
double xalign = 0.0; /* left as default */
|
||||
|
||||
renderer = gtk_cell_renderer_text_new();
|
||||
col = gtk_tree_view_column_new();
|
||||
|
||||
gtk_tree_view_column_set_title(col, title);
|
||||
gtk_tree_view_column_set_sort_column_id(col, index);
|
||||
gtk_tree_view_column_set_resizable(col, TRUE);
|
||||
gtk_tree_view_column_pack_start(col, renderer, TRUE);
|
||||
if (data_func)
|
||||
gtk_tree_view_column_set_cell_data_func(col, renderer, data_func, NULL, NULL);
|
||||
else
|
||||
gtk_tree_view_column_add_attribute(col, renderer, "text", index);
|
||||
gtk_object_set(GTK_OBJECT(renderer), "alignment", align, NULL);
|
||||
switch (align) {
|
||||
case PANGO_ALIGN_LEFT:
|
||||
xalign = 0.0;
|
||||
break;
|
||||
case PANGO_ALIGN_CENTER:
|
||||
xalign = 0.5;
|
||||
break;
|
||||
case PANGO_ALIGN_RIGHT:
|
||||
xalign = 1.0;
|
||||
break;
|
||||
}
|
||||
gtk_cell_renderer_set_alignment(GTK_CELL_RENDERER(renderer), xalign, 0.5);
|
||||
gtk_tree_view_column_set_visible(col, visible);
|
||||
gtk_tree_view_append_column(GTK_TREE_VIEW(dl->tree_view), col);
|
||||
return col;
|
||||
return tree_view_column(dl->tree_view, index, title, data_func, align, visible);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
36
gtk-gui.c
36
gtk-gui.c
|
@ -203,6 +203,42 @@ static void quit(GtkWidget *w, gpointer data)
|
|||
gtk_main_quit();
|
||||
}
|
||||
|
||||
GtkTreeViewColumn *tree_view_column(GtkWidget *tree_view, int index, const char *title,
|
||||
data_func_t data_func, PangoAlignment align, gboolean visible)
|
||||
{
|
||||
GtkCellRenderer *renderer;
|
||||
GtkTreeViewColumn *col;
|
||||
double xalign = 0.0; /* left as default */
|
||||
|
||||
renderer = gtk_cell_renderer_text_new();
|
||||
col = gtk_tree_view_column_new();
|
||||
|
||||
gtk_tree_view_column_set_title(col, title);
|
||||
gtk_tree_view_column_set_sort_column_id(col, index);
|
||||
gtk_tree_view_column_set_resizable(col, TRUE);
|
||||
gtk_tree_view_column_pack_start(col, renderer, TRUE);
|
||||
if (data_func)
|
||||
gtk_tree_view_column_set_cell_data_func(col, renderer, data_func, (void *)(long)index, NULL);
|
||||
else
|
||||
gtk_tree_view_column_add_attribute(col, renderer, "text", index);
|
||||
gtk_object_set(GTK_OBJECT(renderer), "alignment", align, NULL);
|
||||
switch (align) {
|
||||
case PANGO_ALIGN_LEFT:
|
||||
xalign = 0.0;
|
||||
break;
|
||||
case PANGO_ALIGN_CENTER:
|
||||
xalign = 0.5;
|
||||
break;
|
||||
case PANGO_ALIGN_RIGHT:
|
||||
xalign = 1.0;
|
||||
break;
|
||||
}
|
||||
gtk_cell_renderer_set_alignment(GTK_CELL_RENDERER(renderer), xalign, 0.5);
|
||||
gtk_tree_view_column_set_visible(col, visible);
|
||||
gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), col);
|
||||
return col;
|
||||
}
|
||||
|
||||
static void create_radio(GtkWidget *vbox, const char *name, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
|
Loading…
Reference in a new issue