static void nemo_extension_config_widget_init (NemoExtensionConfigWidget *self) { self->current_extensions = NULL; self->initial_extension_ids = NULL; self->bl_handler = g_signal_connect (nemo_plugin_preferences, "changed::" NEMO_PLUGIN_PREFERENCES_DISABLED_EXTENSIONS, G_CALLBACK (on_settings_changed), self); GtkWidget *label = nemo_config_base_widget_get_label (NEMO_CONFIG_BASE_WIDGET (self)); gchar *title = g_strdup (_("Extensions")); gchar *markup = g_strdup_printf ("<b>%s</b>", title); gtk_label_set_markup (GTK_LABEL (label), markup); g_free (title); g_free (markup); self->restart_button = gtk_button_new_with_label (_("Extensions changed. Restart required.")); GtkWidget *bb = nemo_config_base_widget_get_buttonbox (NEMO_CONFIG_BASE_WIDGET (self)); gtk_box_pack_end (GTK_BOX (bb), self->restart_button, FALSE, FALSE, 0); g_signal_connect (self->restart_button, "clicked", G_CALLBACK (on_restart_clicked), self); gtk_widget_set_no_show_all (self->restart_button, TRUE); g_signal_connect (nemo_config_base_widget_get_enable_button (NEMO_CONFIG_BASE_WIDGET (self)), "clicked", G_CALLBACK (on_enable_clicked), self); g_signal_connect (nemo_config_base_widget_get_disable_button (NEMO_CONFIG_BASE_WIDGET (self)), "clicked", G_CALLBACK (on_disable_clicked), self); g_signal_connect (NEMO_CONFIG_BASE_WIDGET (self)->listbox, "row-activated", G_CALLBACK (on_row_activated), self); gchar **init_settings = g_settings_get_strv (nemo_plugin_preferences, NEMO_PLUGIN_PREFERENCES_DISABLED_EXTENSIONS); guint i; for (i = 0; i < g_strv_length (init_settings); i++) { self->initial_extension_ids = g_list_append (self->initial_extension_ids, g_strdup (init_settings[i])); } g_strfreev (init_settings); refresh_widget (self); }
static void nemo_action_config_widget_init (NemoActionConfigWidget *self) { self->actions = NULL; self->bl_handler = g_signal_connect (nemo_plugin_preferences, "changed::" NEMO_PLUGIN_PREFERENCES_DISABLED_ACTIONS, G_CALLBACK (on_settings_changed), self); GtkWidget *label = nemo_config_base_widget_get_label (NEMO_CONFIG_BASE_WIDGET (self)); gchar *title = g_strdup (_("Actions")); gchar *markup = g_strdup_printf ("<b>%s</b>", title); gtk_label_set_markup (GTK_LABEL (label), markup); g_free (title); g_free (markup); GtkWidget *widget = gtk_button_new_from_icon_name ("folder", GTK_ICON_SIZE_BUTTON); GtkWidget *bb = nemo_config_base_widget_get_buttonbox (NEMO_CONFIG_BASE_WIDGET (self)); gtk_box_pack_end (GTK_BOX (bb), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_signal_connect (widget, "clicked", G_CALLBACK (on_open_folder_clicked), self); g_signal_connect (nemo_config_base_widget_get_enable_button (NEMO_CONFIG_BASE_WIDGET (self)), "clicked", G_CALLBACK (on_enable_clicked), self); g_signal_connect (nemo_config_base_widget_get_disable_button (NEMO_CONFIG_BASE_WIDGET (self)), "clicked", G_CALLBACK (on_disable_clicked), self); g_signal_connect (NEMO_CONFIG_BASE_WIDGET (self)->listbox, "row-activated", G_CALLBACK (on_row_activated), self); refresh_widget (self); setup_dir_monitors (self); }
static void refresh_widget (NemoExtensionConfigWidget *widget) { if (widget->current_extensions != NULL) { g_list_free_full (widget->current_extensions, (GDestroyNotify) extension_proxy_free); widget->current_extensions = NULL; } nemo_config_base_widget_clear_list (NEMO_CONFIG_BASE_WIDGET (widget)); detect_extensions (widget); if (widget->current_extensions == NULL) { GtkWidget *empty_label = gtk_label_new (NULL); gchar *markup = NULL; markup = g_strdup_printf ("<i>%s</i>", _("No extensions found")); gtk_label_set_markup (GTK_LABEL (empty_label), markup); g_free (markup); GtkWidget *empty_row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (empty_row), empty_label); gtk_widget_show_all (empty_row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), empty_row); gtk_widget_set_sensitive (GTK_WIDGET (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), FALSE); } else { GtkSizeGroup *row_group, *name_group; GList *l; gchar **blacklist = g_settings_get_strv (nemo_plugin_preferences, NEMO_PLUGIN_PREFERENCES_DISABLED_EXTENSIONS); row_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); name_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); for (l = widget->current_extensions; l != NULL; l=l->next) { gchar *markup; ExtensionProxy *proxy = l->data; gboolean active = TRUE; guint i = 0; for (i = 0; i < g_strv_length (blacklist); i++) { if (g_strcmp0 (blacklist[i], proxy->name) == 0) { active = FALSE; break; } } GtkWidget *w; GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); GtkWidget *button = gtk_check_button_new (); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), active); g_signal_connect (button, "toggled", G_CALLBACK (on_check_toggled), proxy); gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2); w = gtk_label_new (NULL); markup = NULL; if (proxy->display_name == NULL) markup = g_strdup_printf ("<b>%s</b>", proxy->name); else markup = g_strdup_printf ("<b>%s</b>", proxy->display_name); gtk_label_set_markup (GTK_LABEL (w), markup); gtk_label_set_xalign (GTK_LABEL (w), 0.0); g_clear_pointer (&markup, g_free); gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 0); gtk_size_group_add_widget (name_group, w); w = gtk_label_new (NULL); if (proxy->display_name == NULL) markup = g_strdup (_("no information available")); else markup = g_strdup_printf ("%s", proxy->desc); gtk_label_set_markup (GTK_LABEL (w), markup); g_clear_pointer (&markup, g_free); gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 6); if (proxy->config_exec != NULL) { button = gtk_link_button_new_with_label ("uri://dummy", _("Configure")); g_signal_connect (button, "activate-link", G_CALLBACK (on_config_clicked), proxy); gtk_box_pack_end (GTK_BOX (box), button, FALSE, FALSE, 2); gtk_widget_set_tooltip_text (button, ""); } GtkWidget *row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (row), box); gtk_size_group_add_widget (row_group, row); gtk_widget_show_all (row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), row); } g_strfreev (blacklist); } update_restart_visiblity (widget); nemo_config_base_widget_set_default_buttons_sensitive (NEMO_CONFIG_BASE_WIDGET (widget), widget->current_extensions != NULL); }
static void refresh_widget (NemoActionConfigWidget *widget) { gchar **data_dirs; gchar *path; guint i; if (widget->actions != NULL) { g_list_free_full (widget->actions, (GDestroyNotify) action_proxy_free); widget->actions = NULL; } nemo_config_base_widget_clear_list (NEMO_CONFIG_BASE_WIDGET (widget)); data_dirs = (gchar **) g_get_system_data_dirs (); for (i = 0; i < g_strv_length (data_dirs); i++) { path = g_build_filename (data_dirs[i], "nemo", "actions", NULL); populate_from_directory (widget, path); g_clear_pointer (&path, g_free); } path = nemo_action_manager_get_user_directory_path (); populate_from_directory (widget, path); g_clear_pointer (&path, g_free); if (widget->actions == NULL) { GtkWidget *empty_label = gtk_label_new (NULL); gchar *markup = NULL; markup = g_strdup_printf ("<i>%s</i>", _("No actions found")); gtk_label_set_markup (GTK_LABEL (empty_label), markup); g_free (markup); GtkWidget *empty_row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (empty_row), empty_label); gtk_widget_show_all (empty_row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), empty_row); gtk_widget_set_sensitive (GTK_WIDGET (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), FALSE); } else { GList *l; gchar **blacklist = g_settings_get_strv (nemo_plugin_preferences, NEMO_PLUGIN_PREFERENCES_DISABLED_ACTIONS); for (l = widget->actions; l != NULL; l=l->next) { ActionProxy *proxy = l->data; gboolean active = TRUE; guint i = 0; for (i = 0; i < g_strv_length (blacklist); i++) { if (g_strcmp0 (blacklist[i], proxy->filename) == 0) { active = FALSE; break; } } GtkWidget *w; GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); GtkWidget *button = gtk_check_button_new (); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), active); g_signal_connect (button, "toggled", G_CALLBACK (on_check_toggled), proxy); gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2); w = gtk_image_new (); if (proxy->stock_id != NULL) gtk_image_set_from_stock (GTK_IMAGE (w), proxy->stock_id, GTK_ICON_SIZE_MENU); else if (proxy->icon_name != NULL) gtk_image_set_from_icon_name (GTK_IMAGE (w), proxy->icon_name, GTK_ICON_SIZE_MENU); gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 2); gchar *display_name = strip_accel (proxy->name); w = gtk_label_new (display_name); g_free (display_name); gtk_widget_set_tooltip_text(w, proxy->comment); gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 2); GtkWidget *row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (row), box); gtk_widget_show_all (row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), row); } gtk_widget_set_sensitive (GTK_WIDGET (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), TRUE); g_strfreev (blacklist); } nemo_config_base_widget_set_default_buttons_sensitive (NEMO_CONFIG_BASE_WIDGET (widget), widget->actions != NULL); }
static void refresh_widget (NemoExtensionConfigWidget *widget) { if (widget->current_extensions != NULL) { g_list_free_full (widget->current_extensions, (GDestroyNotify) extension_proxy_free); widget->current_extensions = NULL; } nemo_config_base_widget_clear_list (NEMO_CONFIG_BASE_WIDGET (widget)); detect_extensions (widget); if (widget->current_extensions == NULL) { GtkWidget *empty_label = gtk_label_new (NULL); gchar *markup = NULL; markup = g_strdup_printf ("<i>%s</i>", _("No extensions found")); gtk_label_set_markup (GTK_LABEL (empty_label), markup); g_free (markup); GtkWidget *empty_row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (empty_row), empty_label); gtk_widget_show_all (empty_row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), empty_row); } else { GList *l; gchar **blacklist = g_settings_get_strv (widget->settings, BLACKLIST_KEY); for (l = widget->current_extensions; l != NULL; l=l->next) { ExtensionProxy *proxy = l->data; gboolean active = TRUE; gint i = 0; for (i = 0; i < g_strv_length (blacklist); i++) { if (g_strcmp0 (blacklist[i], proxy->name) == 0) { active = FALSE; break; } } GtkWidget *w; GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); GtkWidget *button = gtk_check_button_new (); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), active); g_signal_connect (button, "toggled", G_CALLBACK (on_check_toggled), proxy); gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2); w = gtk_label_new (NULL); gchar *markup = NULL; if (proxy->display_name == NULL) markup = g_strdup_printf ("%s - <i>%s</i>", proxy->name, _("no information available")); else markup = g_strdup_printf ("%s - <i>%s</i>", proxy->display_name, proxy->desc); gtk_label_set_markup (GTK_LABEL (w), markup); g_free (markup); gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 2); GtkWidget *row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (row), box); gtk_widget_show_all (row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), row); } g_strfreev (blacklist); } update_restart_visiblity (widget); nemo_config_base_widget_set_default_buttons_sensitive (NEMO_CONFIG_BASE_WIDGET (widget), widget->current_extensions != NULL); }
static void refresh_widget (NemoScriptConfigWidget *widget) { if (widget->scripts != NULL) { g_list_free_full (widget->scripts, (GDestroyNotify) script_proxy_free); widget->scripts = NULL; } nemo_config_base_widget_clear_list (NEMO_CONFIG_BASE_WIDGET (widget)); gchar *path = NULL; path = nemo_get_scripts_directory_path (); populate_from_directory (widget, path); g_clear_pointer (&path, g_free); if (widget->scripts == NULL) { GtkWidget *empty_label = gtk_label_new (NULL); gchar *markup = NULL; markup = g_strdup_printf ("<i>%s</i>", _("No scripts found")); gtk_label_set_markup (GTK_LABEL (empty_label), markup); g_free (markup); GtkWidget *empty_row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (empty_row), empty_label); gtk_widget_show_all (empty_row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), empty_row); gtk_widget_set_sensitive (GTK_WIDGET (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), FALSE); } else { GList *l; gchar **blacklist = g_settings_get_strv (nemo_plugin_preferences, NEMO_PLUGIN_PREFERENCES_DISABLED_SCRIPTS); for (l = widget->scripts; l != NULL; l=l->next) { ScriptProxy *proxy = l->data; gboolean active = TRUE; gint i = 0; for (i = 0; i < g_strv_length (blacklist); i++) { if (g_strcmp0 (blacklist[i], proxy->name) == 0) { active = FALSE; break; } } GtkWidget *w; GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); GtkWidget *button = gtk_check_button_new (); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), active); g_signal_connect (button, "toggled", G_CALLBACK (on_check_toggled), proxy); gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2); w = gtk_label_new (proxy->name); gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 2); GtkWidget *row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (row), box); gtk_widget_show_all (row); gtk_container_add (GTK_CONTAINER (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), row); } gtk_widget_set_sensitive (GTK_WIDGET (NEMO_CONFIG_BASE_WIDGET (widget)->listbox), TRUE); g_strfreev (blacklist); } nemo_config_base_widget_set_default_buttons_sensitive (NEMO_CONFIG_BASE_WIDGET (widget), widget->scripts != NULL); }