comparison src/view_file_icon.c @ 966:c24a297efbef

marks in iconview made clickable
author nadvornik
date Sat, 16 Aug 2008 23:37:26 +0000
parents ba1d3c4bc0cd
children eb5dbdff14f6
comparison
equal deleted inserted replaced
965:cbdabb499684 966:c24a297efbef
366 } 366 }
367 } 367 }
368 368
369 return NULL; 369 return NULL;
370 } 370 }
371
372 static void vficon_mark_toggled_cb(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
373 {
374 ViewFile *vf = data;
375 GtkTreeModel *store;
376 GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
377 GtkTreeIter row;
378 gint column;
379 GList *list;
380 guint toggled_mark;
381
382 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
383 if (!path || !gtk_tree_model_get_iter(store, &row, path))
384 return;
385
386 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
387
388 column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell), "column_number"));
389 g_object_get(G_OBJECT(cell), "toggled_mark", &toggled_mark, NULL);
390
391 IconData *id = g_list_nth_data(list, column);
392
393 if (id)
394 {
395 FileData *fd = id->fd;
396 file_data_set_mark(fd, toggled_mark, !file_data_get_mark(fd, toggled_mark));
397 }
398 }
399
371 400
372 /* 401 /*
373 *------------------------------------------------------------------- 402 *-------------------------------------------------------------------
374 * tooltip type window 403 * tooltip type window
375 *------------------------------------------------------------------- 404 *-------------------------------------------------------------------
1378 break; 1407 break;
1379 default: 1408 default:
1380 break; 1409 break;
1381 } 1410 }
1382 1411
1383 return TRUE; 1412 return FALSE;
1384 } 1413 }
1385 1414
1386 gint vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) 1415 gint vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
1387 { 1416 {
1388 ViewFile *vf = data; 1417 ViewFile *vf = data;
2281 name_sidecars = g_strdup_printf("%s %s", id->fd->name, sidecars); 2310 name_sidecars = g_strdup_printf("%s %s", id->fd->name, sidecars);
2282 } 2311 }
2283 2312
2284 g_object_set(cell, "pixbuf", id->fd->thumb_pixbuf, 2313 g_object_set(cell, "pixbuf", id->fd->thumb_pixbuf,
2285 "text", name_sidecars, 2314 "text", name_sidecars,
2286 "marks", id->fd->marks, 2315 "marks", file_data_get_marks(id->fd),
2287 "show_marks", vf->marks_enabled, 2316 "show_marks", vf->marks_enabled,
2288 "cell-background-gdk", &color_bg, 2317 "cell-background-gdk", &color_bg,
2289 "cell-background-set", TRUE, 2318 "cell-background-set", TRUE,
2290 "foreground-gdk", &color_fg, 2319 "foreground-gdk", &color_fg,
2291 "foreground-set", TRUE, 2320 "foreground-set", TRUE,
2325 g_object_set(G_OBJECT(renderer), "xpad", THUMB_BORDER_PADDING * 2, 2354 g_object_set(G_OBJECT(renderer), "xpad", THUMB_BORDER_PADDING * 2,
2326 "ypad", THUMB_BORDER_PADDING, 2355 "ypad", THUMB_BORDER_PADDING,
2327 "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL); 2356 "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
2328 2357
2329 g_object_set_data(G_OBJECT(column), "column_number", GINT_TO_POINTER(n)); 2358 g_object_set_data(G_OBJECT(column), "column_number", GINT_TO_POINTER(n));
2359 g_object_set_data(G_OBJECT(renderer), "column_number", GINT_TO_POINTER(n));
2330 2360
2331 cd = g_new0(ColumnData, 1); 2361 cd = g_new0(ColumnData, 1);
2332 cd->vf = vf; 2362 cd->vf = vf;
2333 cd->number = n; 2363 cd->number = n;
2334 gtk_tree_view_column_set_cell_data_func(column, renderer, vficon_cell_data_cb, cd, g_free); 2364 gtk_tree_view_column_set_cell_data_func(column, renderer, vficon_cell_data_cb, cd, g_free);
2335 2365
2336 gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column); 2366 gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
2367
2368 g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(vficon_mark_toggled_cb), vf);
2337 } 2369 }
2338 2370
2339 /* 2371 /*
2340 *----------------------------------------------------------------------------- 2372 *-----------------------------------------------------------------------------
2341 * base 2373 * base