Mercurial > geeqie.yaz
comparison src/desktop_file.c @ 1737:fad7d30676c3
Editors: disable Delete button if a .desktop file is not writeable and disable Edit button when no entry is selected.
author | zas_ |
---|---|
date | Fri, 04 Dec 2009 20:40:02 +0000 |
parents | 80ba6b99478f |
children |
comparison
equal
deleted
inserted
replaced
1736:0459cfe50c1a | 1737:fad7d30676c3 |
---|---|
44 struct _EditorListWindow | 44 struct _EditorListWindow |
45 { | 45 { |
46 GtkWidget *window; | 46 GtkWidget *window; |
47 GtkWidget *view; | 47 GtkWidget *view; |
48 GenericDialog *gd; /* any open confirm dialogs ? */ | 48 GenericDialog *gd; /* any open confirm dialogs ? */ |
49 GtkWidget *delete_button; | |
50 GtkWidget *edit_button; | |
49 }; | 51 }; |
50 | 52 |
51 typedef struct _EditorWindowDel_Data EditorWindowDel_Data; | 53 typedef struct _EditorWindowDel_Data EditorWindowDel_Data; |
52 struct _EditorWindowDel_Data | 54 struct _EditorWindowDel_Data |
53 { | 55 { |
365 static void editor_list_window_new_cb(GtkWidget *widget, gpointer data) | 367 static void editor_list_window_new_cb(GtkWidget *widget, gpointer data) |
366 { | 368 { |
367 editor_window_new(DESKTOP_FILE_TEMPLATE, _("new.desktop")); | 369 editor_window_new(DESKTOP_FILE_TEMPLATE, _("new.desktop")); |
368 } | 370 } |
369 | 371 |
372 static void editor_list_window_selection_changed_cb(GtkWidget *widget, gpointer data) | |
373 { | |
374 EditorListWindow *ewl = data; | |
375 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(ewl->view)); | |
376 GtkTreeIter iter; | |
377 | |
378 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
379 { | |
380 GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(ewl->view)); | |
381 gchar *path; | |
382 | |
383 gtk_tree_model_get(store, &iter, | |
384 DESKTOP_FILE_COLUMN_PATH, &path, | |
385 -1); | |
386 | |
387 gtk_widget_set_sensitive(ewl->delete_button, access_file(path, W_OK)); | |
388 gtk_widget_set_sensitive(ewl->edit_button, TRUE); | |
389 g_free(path); | |
390 } | |
391 | |
392 } | |
370 | 393 |
371 static gint editor_list_window_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data) | 394 static gint editor_list_window_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data) |
372 { | 395 { |
373 gint n = GPOINTER_TO_INT(data); | 396 gint n = GPOINTER_TO_INT(data); |
374 gint ret = 0; | 397 gint ret = 0; |
464 | 487 |
465 button = pref_button_new(NULL, GTK_STOCK_EDIT, NULL, FALSE, | 488 button = pref_button_new(NULL, GTK_STOCK_EDIT, NULL, FALSE, |
466 G_CALLBACK(editor_list_window_edit_cb), ewl); | 489 G_CALLBACK(editor_list_window_edit_cb), ewl); |
467 gtk_container_add(GTK_CONTAINER(hbox), button); | 490 gtk_container_add(GTK_CONTAINER(hbox), button); |
468 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); | 491 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); |
492 gtk_widget_set_sensitive(button, FALSE); | |
469 gtk_widget_show(button); | 493 gtk_widget_show(button); |
494 ewl->edit_button = button; | |
470 | 495 |
471 button = pref_button_new(NULL, GTK_STOCK_DELETE, NULL, FALSE, | 496 button = pref_button_new(NULL, GTK_STOCK_DELETE, NULL, FALSE, |
472 G_CALLBACK(editor_list_window_delete_cb), ewl); | 497 G_CALLBACK(editor_list_window_delete_cb), ewl); |
473 gtk_container_add(GTK_CONTAINER(hbox), button); | 498 gtk_container_add(GTK_CONTAINER(hbox), button); |
474 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); | 499 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); |
500 gtk_widget_set_sensitive(button, FALSE); | |
475 gtk_widget_show(button); | 501 gtk_widget_show(button); |
502 ewl->delete_button = button; | |
476 | 503 |
477 button = pref_button_new(NULL, GTK_STOCK_CLOSE, NULL, FALSE, | 504 button = pref_button_new(NULL, GTK_STOCK_CLOSE, NULL, FALSE, |
478 G_CALLBACK(editor_list_window_close_cb), ewl); | 505 G_CALLBACK(editor_list_window_close_cb), ewl); |
479 gtk_container_add(GTK_CONTAINER(hbox), button); | 506 gtk_container_add(GTK_CONTAINER(hbox), button); |
480 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); | 507 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); |
488 gtk_widget_show(scrolled); | 515 gtk_widget_show(scrolled); |
489 | 516 |
490 ewl->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(desktop_file_list)); | 517 ewl->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(desktop_file_list)); |
491 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ewl->view)); | 518 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ewl->view)); |
492 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_SINGLE); | 519 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_SINGLE); |
520 g_signal_connect(selection, "changed", G_CALLBACK(editor_list_window_selection_changed_cb), ewl); | |
493 | 521 |
494 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ewl->view), FALSE); | 522 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ewl->view), FALSE); |
495 | 523 |
496 column = gtk_tree_view_column_new(); | 524 column = gtk_tree_view_column_new(); |
497 gtk_tree_view_column_set_title(column, _("Desktop file")); | 525 gtk_tree_view_column_set_title(column, _("Desktop file")); |