]>
Dogcows Code - chaz/tint2/blob - src/tint2conf/theme_view.c
4 #include <glib/gstdio.h>
6 #include "theme_view.h"
8 // The data columns that we export via the tree model interface
9 GtkWidget
*g_theme_view
;
10 GtkListStore
*g_store
;
11 int g_width_list
, g_height_list
;
12 GtkCellRenderer
*g_renderer
;
16 GtkWidget
*create_view()
18 GtkTreeViewColumn
*col
;
19 GtkCellRenderer
*renderer
;
22 g_store
= gtk_list_store_new(NB_COL
, G_TYPE_STRING
, GDK_TYPE_PIXBUF
);
24 view
= gtk_tree_view_new_with_model(GTK_TREE_MODEL(g_store
));
25 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(view
), TRUE
);
26 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view
), FALSE
);
28 g_object_unref(g_store
); // destroy store automatically with view
30 renderer
= gtk_cell_renderer_text_new();
31 col
= gtk_tree_view_column_new();
32 gtk_tree_view_column_pack_start(col
, renderer
, TRUE
);
33 gtk_tree_view_column_add_attribute(col
, renderer
, "text", COL_THEME_FILE
);
34 gtk_tree_view_column_set_visible(col
, FALSE
);
35 gtk_tree_view_append_column(GTK_TREE_VIEW(view
),col
);
39 g_renderer
= gtk_cell_renderer_pixbuf_new();
40 g_object_set(g_renderer
, "xalign", 0.0, NULL
);
41 gtk_cell_renderer_set_fixed_size(g_renderer
, g_width_list
, g_height_list
);
42 // specific to gtk-2.18 or higher
43 //gtk_cell_renderer_set_padding(g_renderer, 5, 5);
44 col
= gtk_tree_view_column_new();
45 gtk_tree_view_column_pack_start(col
, g_renderer
, TRUE
);
46 gtk_tree_view_column_add_attribute(col
, g_renderer
, "pixbuf", COL_SNAPSHOT
);
47 gtk_tree_view_append_column(GTK_TREE_VIEW(view
),col
);
53 void custom_list_append(const gchar
*name
)
57 gtk_list_store_append(g_store
, &iter
);
58 gtk_list_store_set(g_store
, &iter
, COL_THEME_FILE
, name
, -1);
62 gboolean
update_snapshot()
67 gboolean have_iter
, found
= FALSE
;
69 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(g_theme_view
));
70 have_iter
= gtk_tree_model_get_iter_first(model
, &iter
);
72 gtk_tree_model_get(model
, &iter
, COL_SNAPSHOT
, &icon
, -1);
75 have_iter
= gtk_tree_model_iter_next(model
, &iter
);
84 // build panel's snapshot
86 gchar
*name
, *snap
, *cmd
;
87 gint pixWidth
, pixHeight
;
88 gboolean changeSize
= FALSE
;
90 snap
= g_build_filename (g_get_user_config_dir(), "tint2", "snap.jpg", NULL
);
93 gtk_tree_model_get(model
, &iter
, COL_THEME_FILE
, &name
, -1);
94 cmd
= g_strdup_printf("tint2 -c \'%s\' -s \'%s\'", name
, snap
);
98 pixbuf
= gdk_pixbuf_new_from_file(snap
, NULL
);
100 printf("snapshot NULL : %s\n", cmd
);
107 pixWidth
= gdk_pixbuf_get_width(pixbuf
);
108 pixHeight
= gdk_pixbuf_get_height(pixbuf
);
109 if (g_width_list
< pixWidth
) {
110 g_width_list
= pixWidth
;
113 if (g_height_list
< (pixHeight
+6)) {
114 g_height_list
= pixHeight
+6;
118 gtk_cell_renderer_set_fixed_size(g_renderer
, g_width_list
, g_height_list
);
120 gtk_list_store_set(g_store
, &iter
, COL_SNAPSHOT
, pixbuf
, -1);
127 void custom_list_append2(const gchar
*name
)
131 gint pixWidth
, pixHeight
;
132 gboolean changeSize
= FALSE
;
135 // build panel's snapshot
136 snap
= g_build_filename (g_get_user_config_dir(), "tint2", "snap.jpg", NULL
);
139 cmd
= g_strdup_printf("tint2 -c \'%s\' -s \'%s\'", name
, snap
);
144 icon
= gdk_pixbuf_new_from_file(snap
, NULL
);
149 pixWidth
= gdk_pixbuf_get_width(icon
);
150 pixHeight
= gdk_pixbuf_get_height(icon
);
151 if (g_width_list
< pixWidth
) {
152 g_width_list
= pixWidth
;
155 if (g_height_list
< (pixHeight
+6)) {
156 g_height_list
= pixHeight
+6;
160 gtk_cell_renderer_set_fixed_size(g_renderer
, g_width_list
, g_height_list
);
162 gtk_list_store_append(g_store
, &iter
);
163 gtk_list_store_set(g_store
, &iter
, COL_THEME_FILE
, name
, COL_SNAPSHOT
, icon
, -1);
This page took 0.044591 seconds and 5 git commands to generate.