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"));