/* files-widget.c generated by valac 0.14.2, the Vala compiler * generated from files-widget.vala, do not modify */ /* -*- Mode: vala; tab-width: 4; intend-tabs-mode: t -*- */ /* alm * * Copyright (C) Seif Lotfy 2012 * Copyright (C) Manish Sinha 2012 * * alm is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * alm is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see ."; */ #include #include #include #include #include #include #include #include #include #include #include #define ALM_TYPE_FILE_TYPE_BLACKLIST (alm_file_type_blacklist_get_type ()) #define ALM_FILE_TYPE_BLACKLIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ALM_TYPE_FILE_TYPE_BLACKLIST, AlmFileTypeBlacklist)) #define ALM_FILE_TYPE_BLACKLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ALM_TYPE_FILE_TYPE_BLACKLIST, AlmFileTypeBlacklistClass)) #define ALM_IS_FILE_TYPE_BLACKLIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ALM_TYPE_FILE_TYPE_BLACKLIST)) #define ALM_IS_FILE_TYPE_BLACKLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ALM_TYPE_FILE_TYPE_BLACKLIST)) #define ALM_FILE_TYPE_BLACKLIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ALM_TYPE_FILE_TYPE_BLACKLIST, AlmFileTypeBlacklistClass)) typedef struct _AlmFileTypeBlacklist AlmFileTypeBlacklist; typedef struct _AlmFileTypeBlacklistClass AlmFileTypeBlacklistClass; typedef struct _AlmFileTypeBlacklistPrivate AlmFileTypeBlacklistPrivate; #define ALM_TYPE_BLACKLIST (alm_blacklist_get_type ()) #define ALM_BLACKLIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ALM_TYPE_BLACKLIST, AlmBlacklist)) #define ALM_BLACKLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ALM_TYPE_BLACKLIST, AlmBlacklistClass)) #define ALM_IS_BLACKLIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ALM_TYPE_BLACKLIST)) #define ALM_IS_BLACKLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ALM_TYPE_BLACKLIST)) #define ALM_BLACKLIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ALM_TYPE_BLACKLIST, AlmBlacklistClass)) typedef struct _AlmBlacklist AlmBlacklist; typedef struct _AlmBlacklistClass AlmBlacklistClass; #define _alm_blacklist_unref0(var) ((var == NULL) ? NULL : (var = (alm_blacklist_unref (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) typedef struct _AlmParamSpecFileTypeBlacklist AlmParamSpecFileTypeBlacklist; #define ALM_TYPE_PATH_BLACKLIST (alm_path_blacklist_get_type ()) #define ALM_PATH_BLACKLIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ALM_TYPE_PATH_BLACKLIST, AlmPathBlacklist)) #define ALM_PATH_BLACKLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ALM_TYPE_PATH_BLACKLIST, AlmPathBlacklistClass)) #define ALM_IS_PATH_BLACKLIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ALM_TYPE_PATH_BLACKLIST)) #define ALM_IS_PATH_BLACKLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ALM_TYPE_PATH_BLACKLIST)) #define ALM_PATH_BLACKLIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ALM_TYPE_PATH_BLACKLIST, AlmPathBlacklistClass)) typedef struct _AlmPathBlacklist AlmPathBlacklist; typedef struct _AlmPathBlacklistClass AlmPathBlacklistClass; typedef struct _AlmPathBlacklistPrivate AlmPathBlacklistPrivate; #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) typedef struct _AlmParamSpecPathBlacklist AlmParamSpecPathBlacklist; #define ALM_TYPE_FILES_WIDGET (alm_files_widget_get_type ()) #define ALM_FILES_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ALM_TYPE_FILES_WIDGET, AlmFilesWidget)) #define ALM_FILES_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ALM_TYPE_FILES_WIDGET, AlmFilesWidgetClass)) #define ALM_IS_FILES_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ALM_TYPE_FILES_WIDGET)) #define ALM_IS_FILES_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ALM_TYPE_FILES_WIDGET)) #define ALM_FILES_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ALM_TYPE_FILES_WIDGET, AlmFilesWidgetClass)) typedef struct _AlmFilesWidget AlmFilesWidget; typedef struct _AlmFilesWidgetClass AlmFilesWidgetClass; typedef struct _AlmFilesWidgetPrivate AlmFilesWidgetPrivate; #define ALM_FILES_WIDGET_TYPE_TREE_VIEW_COLS (alm_files_widget_tree_view_cols_get_type ()) #define _alm_file_type_blacklist_unref0(var) ((var == NULL) ? NULL : (var = (alm_file_type_blacklist_unref (var), NULL))) #define _alm_path_blacklist_unref0(var) ((var == NULL) ? NULL : (var = (alm_path_blacklist_unref (var), NULL))) typedef struct _Block3Data Block3Data; struct _AlmFileTypeBlacklist { GTypeInstance parent_instance; volatile int ref_count; AlmFileTypeBlacklistPrivate * priv; }; struct _AlmFileTypeBlacklistClass { GTypeClass parent_class; void (*finalize) (AlmFileTypeBlacklist *self); }; struct _AlmFileTypeBlacklistPrivate { AlmBlacklist* blacklist_interface; GeeHashMap* checkboxes; }; struct _AlmParamSpecFileTypeBlacklist { GParamSpec parent_instance; }; struct _AlmPathBlacklist { GTypeInstance parent_instance; volatile int ref_count; AlmPathBlacklistPrivate * priv; }; struct _AlmPathBlacklistClass { GTypeClass parent_class; void (*finalize) (AlmPathBlacklist *self); }; struct _AlmPathBlacklistPrivate { AlmBlacklist* blacklist_interface; GeeHashSet* all_blocked_folder; }; struct _AlmParamSpecPathBlacklist { GParamSpec parent_instance; }; struct _AlmFilesWidget { GtkBox parent_instance; AlmFilesWidgetPrivate * priv; }; struct _AlmFilesWidgetClass { GtkBoxClass parent_class; }; struct _AlmFilesWidgetPrivate { AlmFileTypeBlacklist* files_type_blacklist; AlmPathBlacklist* path_blacklist; GtkTreeView* folder_list; GtkListStore* folder_list_store; GeeHashMap* mime_dict; GeeHashMap* checkboxes; GeeHashSet* button_list; GeeHashMap* defined_dirs; AlmBlacklist* blacklist; gboolean file_type_fire_signal; GtkIconTheme* icon_theme; GdkPixbuf* stock_folder_icon; }; typedef enum { ALM_FILES_WIDGET_TREE_VIEW_COLS_APP_NAME, ALM_FILES_WIDGET_TREE_VIEW_COLS_ICON, ALM_FILES_WIDGET_TREE_VIEW_COLS_DESKTOP_FILE, ALM_FILES_WIDGET_TREE_VIEW_COLS_N_COLS } AlmFilesWidgetTreeViewCols; struct _Block3Data { int _ref_count_; AlmFilesWidget * self; GtkCheckButton* check_button; }; static gpointer alm_file_type_blacklist_parent_class = NULL; extern gchar* alm_file_type_blacklist_interpretation_prefix; gchar* alm_file_type_blacklist_interpretation_prefix = NULL; static gpointer alm_path_blacklist_parent_class = NULL; extern gchar* alm_path_blacklist_folder_prefix; gchar* alm_path_blacklist_folder_prefix = NULL; static gchar* alm_path_blacklist_prefix; static gchar* alm_path_blacklist_prefix = NULL; static gchar* alm_path_blacklist_suffix; static gchar* alm_path_blacklist_suffix = NULL; static gpointer alm_files_widget_parent_class = NULL; gpointer alm_file_type_blacklist_ref (gpointer instance); void alm_file_type_blacklist_unref (gpointer instance); GParamSpec* alm_param_spec_file_type_blacklist (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void alm_value_set_file_type_blacklist (GValue* value, gpointer v_object); void alm_value_take_file_type_blacklist (GValue* value, gpointer v_object); gpointer alm_value_get_file_type_blacklist (const GValue* value); GType alm_file_type_blacklist_get_type (void) G_GNUC_CONST; gpointer alm_blacklist_ref (gpointer instance); void alm_blacklist_unref (gpointer instance); GParamSpec* alm_param_spec_blacklist (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void alm_value_set_blacklist (GValue* value, gpointer v_object); void alm_value_take_blacklist (GValue* value, gpointer v_object); gpointer alm_value_get_blacklist (const GValue* value); GType alm_blacklist_get_type (void) G_GNUC_CONST; #define ALM_FILE_TYPE_BLACKLIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ALM_TYPE_FILE_TYPE_BLACKLIST, AlmFileTypeBlacklistPrivate)) enum { ALM_FILE_TYPE_BLACKLIST_DUMMY_PROPERTY }; AlmFileTypeBlacklist* alm_file_type_blacklist_new (AlmBlacklist* blacklist_inter, GeeHashMap* all_checkboxes); AlmFileTypeBlacklist* alm_file_type_blacklist_construct (GType object_type, AlmBlacklist* blacklist_inter, GeeHashMap* all_checkboxes); static gchar* alm_file_type_blacklist_get_name (AlmFileTypeBlacklist* self, const gchar* interpretation); void alm_file_type_blacklist_populate_file_types (AlmFileTypeBlacklist* self); GHashTable* alm_blacklist_get_all_templates (AlmBlacklist* self); void alm_file_type_blacklist_block (AlmFileTypeBlacklist* self, const gchar* interpretation); void alm_blacklist_add_template (AlmBlacklist* self, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template); void alm_file_type_blacklist_unblock (AlmFileTypeBlacklist* self, const gchar* interpretation); void alm_blacklist_remove_template (AlmBlacklist* self, const gchar* blacklist_id); static void alm_file_type_blacklist_finalize (AlmFileTypeBlacklist* obj); gpointer alm_path_blacklist_ref (gpointer instance); void alm_path_blacklist_unref (gpointer instance); GParamSpec* alm_param_spec_path_blacklist (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void alm_value_set_path_blacklist (GValue* value, gpointer v_object); void alm_value_take_path_blacklist (GValue* value, gpointer v_object); gpointer alm_value_get_path_blacklist (const GValue* value); GType alm_path_blacklist_get_type (void) G_GNUC_CONST; #define ALM_PATH_BLACKLIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ALM_TYPE_PATH_BLACKLIST, AlmPathBlacklistPrivate)) enum { ALM_PATH_BLACKLIST_DUMMY_PROPERTY }; AlmPathBlacklist* alm_path_blacklist_new (AlmBlacklist* blacklist_inter); AlmPathBlacklist* alm_path_blacklist_construct (GType object_type, AlmBlacklist* blacklist_inter); static void alm_path_blacklist_on_blacklist_added (AlmPathBlacklist* self, const gchar* blacklist_id, ZeitgeistEvent* ev); static void _alm_path_blacklist_on_blacklist_added_alm_blacklist_template_added (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self); static void alm_path_blacklist_on_blacklist_removed (AlmPathBlacklist* self, const gchar* blacklist_id, ZeitgeistEvent* ev); static void _alm_path_blacklist_on_blacklist_removed_alm_blacklist_template_removed (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self); static void alm_path_blacklist_get_blocked_folder (AlmPathBlacklist* self); gboolean alm_path_blacklist_is_duplicate (AlmPathBlacklist* self, const gchar* path); static gchar* alm_path_blacklist_get_folder (AlmPathBlacklist* self, ZeitgeistEvent* ev); void alm_path_blacklist_block (AlmPathBlacklist* self, const gchar* folder); void alm_path_blacklist_unblock (AlmPathBlacklist* self, const gchar* folder); GeeHashSet* alm_path_blacklist_get_all_folders (AlmPathBlacklist* self); static void alm_path_blacklist_finalize (AlmPathBlacklist* obj); GType alm_files_widget_get_type (void) G_GNUC_CONST; #define ALM_FILES_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ALM_TYPE_FILES_WIDGET, AlmFilesWidgetPrivate)) enum { ALM_FILES_WIDGET_DUMMY_PROPERTY }; static GType alm_files_widget_tree_view_cols_get_type (void) G_GNUC_UNUSED; AlmFilesWidget* alm_files_widget_new (AlmBlacklist* blacklist_interface); AlmFilesWidget* alm_files_widget_construct (GType object_type, AlmBlacklist* blacklist_interface); static void __lambda9_ (AlmFilesWidget* self, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template); static void ___lambda9__alm_blacklist_template_added (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self); static void __lambda10_ (AlmFilesWidget* self, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template); static void ___lambda10__alm_blacklist_template_removed (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self); static void __lambda11_ (AlmFilesWidget* self, const gchar* folder); static void alm_files_widget_add_folder_to_view (AlmFilesWidget* self, const gchar* folder); static void ___lambda11__alm_path_blacklist_folder_added (AlmPathBlacklist* _sender, const gchar* path, gpointer self); static void __lambda12_ (AlmFilesWidget* self, const gchar* folder); static gboolean alm_files_widget_remove_folder_from_view (AlmFilesWidget* self, const gchar* folder); static void ___lambda12__alm_path_blacklist_folder_removed (AlmPathBlacklist* _sender, const gchar* path, gpointer self); static void alm_files_widget_setup_ui (AlmFilesWidget* self); static Block3Data* block3_data_ref (Block3Data* _data3_); static void block3_data_unref (Block3Data* _data3_); static void ____lambda13_ (Block3Data* _data3_); static void _____lambda13__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self); static void alm_files_widget_on_add_folder (AlmFilesWidget* self); static void _alm_files_widget_on_add_folder_gtk_tool_button_clicked (GtkToolButton* _sender, gpointer self); static void alm_files_widget_on_remove_folder (AlmFilesWidget* self); static void _alm_files_widget_on_remove_folder_gtk_tool_button_clicked (GtkToolButton* _sender, gpointer self); static void alm_files_widget_folders_populate (AlmFilesWidget* self); const gchar* g_user_directory_to_string (GUserDirectory self); static const char* _g_user_directory_to_string (GUserDirectory value); GdkPixbuf* alm_applications_tree_view_get_pixbuf_from_gio_icon (GIcon* icon); static void alm_files_widget_finalize (GObject* obj); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); static gint _vala_array_length (gpointer array); static gpointer _alm_blacklist_ref0 (gpointer self) { return self ? alm_blacklist_ref (self) : NULL; } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } AlmFileTypeBlacklist* alm_file_type_blacklist_construct (GType object_type, AlmBlacklist* blacklist_inter, GeeHashMap* all_checkboxes) { AlmFileTypeBlacklist* self = NULL; AlmBlacklist* _tmp0_; AlmBlacklist* _tmp1_; GeeHashMap* _tmp2_; GeeHashMap* _tmp3_; g_return_val_if_fail (blacklist_inter != NULL, NULL); g_return_val_if_fail (all_checkboxes != NULL, NULL); self = (AlmFileTypeBlacklist*) g_type_create_instance (object_type); _tmp0_ = blacklist_inter; _tmp1_ = _alm_blacklist_ref0 (_tmp0_); _alm_blacklist_unref0 (self->priv->blacklist_interface); self->priv->blacklist_interface = _tmp1_; _tmp2_ = all_checkboxes; _tmp3_ = _g_object_ref0 (_tmp2_); _g_object_unref0 (self->priv->checkboxes); self->priv->checkboxes = _tmp3_; return self; } AlmFileTypeBlacklist* alm_file_type_blacklist_new (AlmBlacklist* blacklist_inter, GeeHashMap* all_checkboxes) { return alm_file_type_blacklist_construct (ALM_TYPE_FILE_TYPE_BLACKLIST, blacklist_inter, all_checkboxes); } static gchar* alm_file_type_blacklist_get_name (AlmFileTypeBlacklist* self, const gchar* interpretation) { gchar* result = NULL; const gchar* _tmp0_; gchar** _tmp1_; gchar** _tmp2_ = NULL; gchar** names; gint names_length1; gint _names_size_; const gchar* _tmp3_; gchar* _tmp4_ = NULL; gchar* name; const gchar* _tmp5_; gchar* _tmp6_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (interpretation != NULL, NULL); _tmp0_ = interpretation; _tmp2_ = _tmp1_ = g_strsplit (_tmp0_, "#", 0); names = _tmp2_; names_length1 = _vala_array_length (_tmp1_); _names_size_ = names_length1; _tmp3_ = names[names_length1 - 1]; _tmp4_ = g_utf8_strdown (_tmp3_, (gssize) (-1)); name = _tmp4_; _tmp5_ = alm_file_type_blacklist_interpretation_prefix; _tmp6_ = g_strdup_printf ("%s%s", _tmp5_, name); result = _tmp6_; _g_free0 (name); names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); return result; } void alm_file_type_blacklist_populate_file_types (AlmFileTypeBlacklist* self) { AlmBlacklist* _tmp0_; GHashTable* _tmp1_; GHashTable* _tmp2_; GList* _tmp3_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = self->priv->blacklist_interface; _tmp1_ = alm_blacklist_get_all_templates (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_hash_table_get_keys (_tmp2_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp3_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { gchar* _tmp4_; gchar* key = NULL; _tmp4_ = g_strdup ((const gchar*) key_it->data); key = _tmp4_; { const gchar* _tmp5_; const gchar* _tmp6_; gboolean _tmp7_ = FALSE; _tmp5_ = key; _tmp6_ = alm_file_type_blacklist_interpretation_prefix; _tmp7_ = g_str_has_prefix (_tmp5_, _tmp6_); if (_tmp7_) { AlmBlacklist* _tmp8_; GHashTable* _tmp9_; GHashTable* _tmp10_; const gchar* _tmp11_; gconstpointer _tmp12_ = NULL; ZeitgeistSubject* _tmp13_ = NULL; const gchar* _tmp14_ = NULL; gchar* _tmp15_; gchar* inter; GeeHashMap* _tmp16_; const gchar* _tmp17_; gboolean _tmp18_ = FALSE; _tmp8_ = self->priv->blacklist_interface; _tmp9_ = alm_blacklist_get_all_templates (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = key; _tmp12_ = g_hash_table_lookup (_tmp10_, _tmp11_); _tmp13_ = zeitgeist_event_get_subject ((ZeitgeistEvent*) _tmp12_, 0); _tmp14_ = zeitgeist_subject_get_interpretation (_tmp13_); _tmp15_ = g_strdup (_tmp14_); inter = _tmp15_; _tmp16_ = self->priv->checkboxes; _tmp17_ = inter; _tmp18_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp16_, _tmp17_); if (_tmp18_) { GeeHashMap* _tmp19_; const gchar* _tmp20_; gpointer _tmp21_ = NULL; GtkCheckButton* _tmp22_; _tmp19_ = self->priv->checkboxes; _tmp20_ = inter; _tmp21_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp19_, _tmp20_); _tmp22_ = (GtkCheckButton*) _tmp21_; gtk_toggle_button_set_active ((GtkToggleButton*) _tmp22_, TRUE); _g_object_unref0 (_tmp22_); } _g_free0 (inter); } _g_free0 (key); } } _g_list_free0 (key_collection); } } void alm_file_type_blacklist_block (AlmFileTypeBlacklist* self, const gchar* interpretation) { ZeitgeistEvent* _tmp0_; ZeitgeistEvent* _tmp1_; ZeitgeistEvent* ev; ZeitgeistSubject* _tmp2_; ZeitgeistSubject* _tmp3_; ZeitgeistSubject* sub; const gchar* _tmp4_; AlmBlacklist* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_ = NULL; gchar* _tmp8_; g_return_if_fail (self != NULL); g_return_if_fail (interpretation != NULL); _tmp0_ = zeitgeist_event_new (); _tmp1_ = g_object_ref_sink (_tmp0_); ev = _tmp1_; _tmp2_ = zeitgeist_subject_new (); _tmp3_ = g_object_ref_sink (_tmp2_); sub = _tmp3_; _tmp4_ = interpretation; zeitgeist_subject_set_interpretation (sub, _tmp4_); zeitgeist_event_add_subject (ev, sub); _tmp5_ = self->priv->blacklist_interface; _tmp6_ = interpretation; _tmp7_ = alm_file_type_blacklist_get_name (self, _tmp6_); _tmp8_ = _tmp7_; alm_blacklist_add_template (_tmp5_, _tmp8_, ev); _g_free0 (_tmp8_); _g_object_unref0 (sub); _g_object_unref0 (ev); } void alm_file_type_blacklist_unblock (AlmFileTypeBlacklist* self, const gchar* interpretation) { AlmBlacklist* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_ = NULL; gchar* _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (interpretation != NULL); _tmp0_ = self->priv->blacklist_interface; _tmp1_ = interpretation; _tmp2_ = alm_file_type_blacklist_get_name (self, _tmp1_); _tmp3_ = _tmp2_; alm_blacklist_remove_template (_tmp0_, _tmp3_); _g_free0 (_tmp3_); } static void alm_value_file_type_blacklist_init (GValue* value) { value->data[0].v_pointer = NULL; } static void alm_value_file_type_blacklist_free_value (GValue* value) { if (value->data[0].v_pointer) { alm_file_type_blacklist_unref (value->data[0].v_pointer); } } static void alm_value_file_type_blacklist_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = alm_file_type_blacklist_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer alm_value_file_type_blacklist_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* alm_value_file_type_blacklist_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { AlmFileTypeBlacklist* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = alm_file_type_blacklist_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* alm_value_file_type_blacklist_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { AlmFileTypeBlacklist** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = alm_file_type_blacklist_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* alm_param_spec_file_type_blacklist (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { AlmParamSpecFileTypeBlacklist* spec; g_return_val_if_fail (g_type_is_a (object_type, ALM_TYPE_FILE_TYPE_BLACKLIST), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } gpointer alm_value_get_file_type_blacklist (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, ALM_TYPE_FILE_TYPE_BLACKLIST), NULL); return value->data[0].v_pointer; } void alm_value_set_file_type_blacklist (GValue* value, gpointer v_object) { AlmFileTypeBlacklist* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, ALM_TYPE_FILE_TYPE_BLACKLIST)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, ALM_TYPE_FILE_TYPE_BLACKLIST)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; alm_file_type_blacklist_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { alm_file_type_blacklist_unref (old); } } void alm_value_take_file_type_blacklist (GValue* value, gpointer v_object) { AlmFileTypeBlacklist* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, ALM_TYPE_FILE_TYPE_BLACKLIST)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, ALM_TYPE_FILE_TYPE_BLACKLIST)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { alm_file_type_blacklist_unref (old); } } static void alm_file_type_blacklist_class_init (AlmFileTypeBlacklistClass * klass) { gchar* _tmp0_; alm_file_type_blacklist_parent_class = g_type_class_peek_parent (klass); ALM_FILE_TYPE_BLACKLIST_CLASS (klass)->finalize = alm_file_type_blacklist_finalize; g_type_class_add_private (klass, sizeof (AlmFileTypeBlacklistPrivate)); _tmp0_ = g_strdup ("interpretation-"); alm_file_type_blacklist_interpretation_prefix = _tmp0_; } static void alm_file_type_blacklist_instance_init (AlmFileTypeBlacklist * self) { self->priv = ALM_FILE_TYPE_BLACKLIST_GET_PRIVATE (self); self->ref_count = 1; } static void alm_file_type_blacklist_finalize (AlmFileTypeBlacklist* obj) { AlmFileTypeBlacklist * self; self = ALM_FILE_TYPE_BLACKLIST (obj); _alm_blacklist_unref0 (self->priv->blacklist_interface); _g_object_unref0 (self->priv->checkboxes); } GType alm_file_type_blacklist_get_type (void) { static volatile gsize alm_file_type_blacklist_type_id__volatile = 0; if (g_once_init_enter (&alm_file_type_blacklist_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { alm_value_file_type_blacklist_init, alm_value_file_type_blacklist_free_value, alm_value_file_type_blacklist_copy_value, alm_value_file_type_blacklist_peek_pointer, "p", alm_value_file_type_blacklist_collect_value, "p", alm_value_file_type_blacklist_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (AlmFileTypeBlacklistClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) alm_file_type_blacklist_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AlmFileTypeBlacklist), 0, (GInstanceInitFunc) alm_file_type_blacklist_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType alm_file_type_blacklist_type_id; alm_file_type_blacklist_type_id = g_type_register_fundamental (g_type_fundamental_next (), "AlmFileTypeBlacklist", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&alm_file_type_blacklist_type_id__volatile, alm_file_type_blacklist_type_id); } return alm_file_type_blacklist_type_id__volatile; } gpointer alm_file_type_blacklist_ref (gpointer instance) { AlmFileTypeBlacklist* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void alm_file_type_blacklist_unref (gpointer instance) { AlmFileTypeBlacklist* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { ALM_FILE_TYPE_BLACKLIST_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } static void _alm_path_blacklist_on_blacklist_added_alm_blacklist_template_added (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self) { alm_path_blacklist_on_blacklist_added (self, blacklist_id, blacklist_template); } static void _alm_path_blacklist_on_blacklist_removed_alm_blacklist_template_removed (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self) { alm_path_blacklist_on_blacklist_removed (self, blacklist_id, blacklist_template); } AlmPathBlacklist* alm_path_blacklist_construct (GType object_type, AlmBlacklist* blacklist_inter) { AlmPathBlacklist* self = NULL; AlmBlacklist* _tmp0_; AlmBlacklist* _tmp1_; AlmBlacklist* _tmp2_; AlmBlacklist* _tmp3_; g_return_val_if_fail (blacklist_inter != NULL, NULL); self = (AlmPathBlacklist*) g_type_create_instance (object_type); _tmp0_ = blacklist_inter; _tmp1_ = _alm_blacklist_ref0 (_tmp0_); _alm_blacklist_unref0 (self->priv->blacklist_interface); self->priv->blacklist_interface = _tmp1_; _tmp2_ = self->priv->blacklist_interface; g_signal_connect (_tmp2_, "template-added", (GCallback) _alm_path_blacklist_on_blacklist_added_alm_blacklist_template_added, self); _tmp3_ = self->priv->blacklist_interface; g_signal_connect (_tmp3_, "template-removed", (GCallback) _alm_path_blacklist_on_blacklist_removed_alm_blacklist_template_removed, self); alm_path_blacklist_get_blocked_folder (self); return self; } AlmPathBlacklist* alm_path_blacklist_new (AlmBlacklist* blacklist_inter) { return alm_path_blacklist_construct (ALM_TYPE_PATH_BLACKLIST, blacklist_inter); } gboolean alm_path_blacklist_is_duplicate (AlmPathBlacklist* self, const gchar* path) { gboolean result = FALSE; GeeHashSet* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (path != NULL, FALSE); _tmp0_ = self->priv->all_blocked_folder; _tmp1_ = path; _tmp2_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp0_, _tmp1_); result = _tmp2_; return result; } static void alm_path_blacklist_get_blocked_folder (AlmPathBlacklist* self) { GeeHashSet* _tmp0_; AlmBlacklist* _tmp1_; GHashTable* _tmp2_; GHashTable* _tmp3_; GList* _tmp4_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL); _g_object_unref0 (self->priv->all_blocked_folder); self->priv->all_blocked_folder = _tmp0_; _tmp1_ = self->priv->blacklist_interface; _tmp2_ = alm_blacklist_get_all_templates (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = g_hash_table_get_keys (_tmp3_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp4_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { gchar* _tmp5_; gchar* key = NULL; _tmp5_ = g_strdup ((const gchar*) key_it->data); key = _tmp5_; { const gchar* _tmp6_; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; _tmp6_ = key; _tmp7_ = alm_path_blacklist_folder_prefix; _tmp8_ = g_str_has_prefix (_tmp6_, _tmp7_); if (_tmp8_) { AlmBlacklist* _tmp9_; GHashTable* _tmp10_; GHashTable* _tmp11_; const gchar* _tmp12_; gconstpointer _tmp13_ = NULL; gchar* _tmp14_ = NULL; gchar* folder; GeeHashSet* _tmp15_; const gchar* _tmp16_; _tmp9_ = self->priv->blacklist_interface; _tmp10_ = alm_blacklist_get_all_templates (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = key; _tmp13_ = g_hash_table_lookup (_tmp11_, _tmp12_); _tmp14_ = alm_path_blacklist_get_folder (self, (ZeitgeistEvent*) _tmp13_); folder = _tmp14_; _tmp15_ = self->priv->all_blocked_folder; _tmp16_ = folder; gee_abstract_collection_add ((GeeAbstractCollection*) _tmp15_, _tmp16_); _g_free0 (folder); } _g_free0 (key); } } _g_list_free0 (key_collection); } } static void alm_path_blacklist_on_blacklist_added (AlmPathBlacklist* self, const gchar* blacklist_id, ZeitgeistEvent* ev) { const gchar* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; g_return_if_fail (self != NULL); g_return_if_fail (blacklist_id != NULL); g_return_if_fail (ev != NULL); _tmp0_ = blacklist_id; _tmp1_ = alm_path_blacklist_folder_prefix; _tmp2_ = g_str_has_prefix (_tmp0_, _tmp1_); if (_tmp2_) { ZeitgeistEvent* _tmp3_; gchar* _tmp4_ = NULL; gchar* uri; const gchar* _tmp5_; GeeHashSet* _tmp6_; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; _tmp3_ = ev; _tmp4_ = alm_path_blacklist_get_folder (self, _tmp3_); uri = _tmp4_; _tmp5_ = uri; g_signal_emit_by_name (self, "folder-added", _tmp5_); _tmp6_ = self->priv->all_blocked_folder; _tmp7_ = uri; _tmp8_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp6_, _tmp7_); if (!_tmp8_) { GeeHashSet* _tmp9_; const gchar* _tmp10_; _tmp9_ = self->priv->all_blocked_folder; _tmp10_ = uri; gee_abstract_collection_add ((GeeAbstractCollection*) _tmp9_, _tmp10_); } _g_free0 (uri); } } static void alm_path_blacklist_on_blacklist_removed (AlmPathBlacklist* self, const gchar* blacklist_id, ZeitgeistEvent* ev) { const gchar* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; g_return_if_fail (self != NULL); g_return_if_fail (blacklist_id != NULL); g_return_if_fail (ev != NULL); _tmp0_ = blacklist_id; _tmp1_ = alm_path_blacklist_folder_prefix; _tmp2_ = g_str_has_prefix (_tmp0_, _tmp1_); if (_tmp2_) { ZeitgeistEvent* _tmp3_; gchar* _tmp4_ = NULL; gchar* uri; const gchar* _tmp5_; GeeHashSet* _tmp6_; const gchar* _tmp7_; gboolean _tmp8_ = FALSE; _tmp3_ = ev; _tmp4_ = alm_path_blacklist_get_folder (self, _tmp3_); uri = _tmp4_; _tmp5_ = uri; g_signal_emit_by_name (self, "folder-removed", _tmp5_); _tmp6_ = self->priv->all_blocked_folder; _tmp7_ = uri; _tmp8_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp6_, _tmp7_); if (_tmp8_) { GeeHashSet* _tmp9_; const gchar* _tmp10_; _tmp9_ = self->priv->all_blocked_folder; _tmp10_ = uri; gee_abstract_collection_remove ((GeeAbstractCollection*) _tmp9_, _tmp10_); } _g_free0 (uri); } } static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) { gchar* result = NULL; GError * _inner_error_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (old != NULL, NULL); g_return_val_if_fail (replacement != NULL, NULL); { const gchar* _tmp0_; gchar* _tmp1_ = NULL; gchar* _tmp2_; GRegex* _tmp3_; GRegex* _tmp4_; GRegex* regex; GRegex* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_ = NULL; gchar* _tmp8_; _tmp0_ = old; _tmp1_ = g_regex_escape_string (_tmp0_, -1); _tmp2_ = _tmp1_; _tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); regex = _tmp4_; if (_inner_error_ != NULL) { if (_inner_error_->domain == G_REGEX_ERROR) { goto __catch2_g_regex_error; } g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } _tmp5_ = regex; _tmp6_ = replacement; _tmp7_ = g_regex_replace_literal (_tmp5_, self, (gssize) (-1), 0, _tmp6_, 0, &_inner_error_); _tmp8_ = _tmp7_; if (_inner_error_ != NULL) { _g_regex_unref0 (regex); if (_inner_error_->domain == G_REGEX_ERROR) { goto __catch2_g_regex_error; } _g_regex_unref0 (regex); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } result = _tmp8_; _g_regex_unref0 (regex); return result; } goto __finally2; __catch2_g_regex_error: { GError* e = NULL; e = _inner_error_; _inner_error_ = NULL; g_assert_not_reached (); _g_error_free0 (e); } __finally2: if (_inner_error_ != NULL) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } } static gchar* alm_path_blacklist_get_folder (AlmPathBlacklist* self, ZeitgeistEvent* ev) { gchar* result = NULL; ZeitgeistEvent* _tmp0_; ZeitgeistSubject* _tmp1_ = NULL; ZeitgeistSubject* _tmp2_; ZeitgeistSubject* sub; const gchar* _tmp3_ = NULL; gchar* _tmp4_; gchar* uri; const gchar* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_ = NULL; gchar* _tmp8_; const gchar* _tmp9_; gchar* _tmp10_ = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (ev != NULL, NULL); _tmp0_ = ev; _tmp1_ = zeitgeist_event_get_subject (_tmp0_, 0); _tmp2_ = _g_object_ref0 (_tmp1_); sub = _tmp2_; _tmp3_ = zeitgeist_subject_get_uri (sub); _tmp4_ = g_strdup (_tmp3_); uri = _tmp4_; _tmp5_ = uri; _tmp6_ = alm_path_blacklist_prefix; _tmp7_ = string_replace (_tmp5_, _tmp6_, ""); _tmp8_ = _tmp7_; _tmp9_ = alm_path_blacklist_suffix; _tmp10_ = string_replace (_tmp8_, _tmp9_, ""); _g_free0 (uri); uri = _tmp10_; _g_free0 (_tmp8_); result = uri; _g_object_unref0 (sub); return result; } void alm_path_blacklist_block (AlmPathBlacklist* self, const gchar* folder) { ZeitgeistEvent* _tmp0_; ZeitgeistEvent* _tmp1_; ZeitgeistEvent* ev; ZeitgeistSubject* _tmp2_; ZeitgeistSubject* _tmp3_; ZeitgeistSubject* sub; ZeitgeistSubject* _tmp4_; const gchar* _tmp5_; const gchar* _tmp6_; const gchar* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; ZeitgeistEvent* _tmp10_; ZeitgeistSubject* _tmp11_; AlmBlacklist* _tmp12_; const gchar* _tmp13_; const gchar* _tmp14_; gchar* _tmp15_ = NULL; gchar* _tmp16_; ZeitgeistEvent* _tmp17_; GeeHashSet* _tmp18_; const gchar* _tmp19_; gboolean _tmp20_ = FALSE; g_return_if_fail (self != NULL); g_return_if_fail (folder != NULL); _tmp0_ = zeitgeist_event_new (); _tmp1_ = g_object_ref_sink (_tmp0_); ev = _tmp1_; _tmp2_ = zeitgeist_subject_new (); _tmp3_ = g_object_ref_sink (_tmp2_); sub = _tmp3_; _tmp4_ = sub; _tmp5_ = alm_path_blacklist_prefix; _tmp6_ = folder; _tmp7_ = alm_path_blacklist_suffix; _tmp8_ = g_strdup_printf ("%s%s%s", _tmp5_, _tmp6_, _tmp7_); _tmp9_ = _tmp8_; zeitgeist_subject_set_uri (_tmp4_, _tmp9_); _g_free0 (_tmp9_); _tmp10_ = ev; _tmp11_ = sub; zeitgeist_event_add_subject (_tmp10_, _tmp11_); _tmp12_ = self->priv->blacklist_interface; _tmp13_ = alm_path_blacklist_folder_prefix; _tmp14_ = folder; _tmp15_ = g_strdup_printf ("%s%s", _tmp13_, _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = ev; alm_blacklist_add_template (_tmp12_, _tmp16_, _tmp17_); _g_free0 (_tmp16_); _tmp18_ = self->priv->all_blocked_folder; _tmp19_ = folder; _tmp20_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp18_, _tmp19_); if (!_tmp20_) { GeeHashSet* _tmp21_; const gchar* _tmp22_; _tmp21_ = self->priv->all_blocked_folder; _tmp22_ = folder; gee_abstract_collection_add ((GeeAbstractCollection*) _tmp21_, _tmp22_); } _g_object_unref0 (sub); _g_object_unref0 (ev); } void alm_path_blacklist_unblock (AlmPathBlacklist* self, const gchar* folder) { AlmBlacklist* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; GeeHashSet* _tmp5_; const gchar* _tmp6_; gboolean _tmp7_ = FALSE; g_return_if_fail (self != NULL); g_return_if_fail (folder != NULL); _tmp0_ = self->priv->blacklist_interface; _tmp1_ = alm_path_blacklist_folder_prefix; _tmp2_ = folder; _tmp3_ = g_strdup_printf ("%s%s", _tmp1_, _tmp2_); _tmp4_ = _tmp3_; alm_blacklist_remove_template (_tmp0_, _tmp4_); _g_free0 (_tmp4_); _tmp5_ = self->priv->all_blocked_folder; _tmp6_ = folder; _tmp7_ = gee_abstract_collection_contains ((GeeAbstractCollection*) _tmp5_, _tmp6_); if (_tmp7_) { GeeHashSet* _tmp8_; const gchar* _tmp9_; _tmp8_ = self->priv->all_blocked_folder; _tmp9_ = folder; gee_abstract_collection_remove ((GeeAbstractCollection*) _tmp8_, _tmp9_); } } GeeHashSet* alm_path_blacklist_get_all_folders (AlmPathBlacklist* self) { GeeHashSet* result; GeeHashSet* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->all_blocked_folder; result = _tmp0_; return result; } static void alm_value_path_blacklist_init (GValue* value) { value->data[0].v_pointer = NULL; } static void alm_value_path_blacklist_free_value (GValue* value) { if (value->data[0].v_pointer) { alm_path_blacklist_unref (value->data[0].v_pointer); } } static void alm_value_path_blacklist_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = alm_path_blacklist_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer alm_value_path_blacklist_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* alm_value_path_blacklist_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { AlmPathBlacklist* object; object = collect_values[0].v_pointer; if (object->parent_instance.g_class == NULL) { return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); } value->data[0].v_pointer = alm_path_blacklist_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* alm_value_path_blacklist_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { AlmPathBlacklist** object_p; object_p = collect_values[0].v_pointer; if (!object_p) { return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) { *object_p = NULL; } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { *object_p = value->data[0].v_pointer; } else { *object_p = alm_path_blacklist_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* alm_param_spec_path_blacklist (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { AlmParamSpecPathBlacklist* spec; g_return_val_if_fail (g_type_is_a (object_type, ALM_TYPE_PATH_BLACKLIST), NULL); spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); G_PARAM_SPEC (spec)->value_type = object_type; return G_PARAM_SPEC (spec); } gpointer alm_value_get_path_blacklist (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, ALM_TYPE_PATH_BLACKLIST), NULL); return value->data[0].v_pointer; } void alm_value_set_path_blacklist (GValue* value, gpointer v_object) { AlmPathBlacklist* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, ALM_TYPE_PATH_BLACKLIST)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, ALM_TYPE_PATH_BLACKLIST)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; alm_path_blacklist_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { alm_path_blacklist_unref (old); } } void alm_value_take_path_blacklist (GValue* value, gpointer v_object) { AlmPathBlacklist* old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, ALM_TYPE_PATH_BLACKLIST)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, ALM_TYPE_PATH_BLACKLIST)); g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); value->data[0].v_pointer = v_object; } else { value->data[0].v_pointer = NULL; } if (old) { alm_path_blacklist_unref (old); } } static void alm_path_blacklist_class_init (AlmPathBlacklistClass * klass) { gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; alm_path_blacklist_parent_class = g_type_class_peek_parent (klass); ALM_PATH_BLACKLIST_CLASS (klass)->finalize = alm_path_blacklist_finalize; g_type_class_add_private (klass, sizeof (AlmPathBlacklistPrivate)); g_signal_new ("folder_added", ALM_TYPE_PATH_BLACKLIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); g_signal_new ("folder_removed", ALM_TYPE_PATH_BLACKLIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); _tmp0_ = g_strdup ("dir-"); alm_path_blacklist_folder_prefix = _tmp0_; _tmp1_ = g_strdup ("file://"); alm_path_blacklist_prefix = _tmp1_; _tmp2_ = g_strdup ("/*"); alm_path_blacklist_suffix = _tmp2_; } static void alm_path_blacklist_instance_init (AlmPathBlacklist * self) { self->priv = ALM_PATH_BLACKLIST_GET_PRIVATE (self); self->ref_count = 1; } static void alm_path_blacklist_finalize (AlmPathBlacklist* obj) { AlmPathBlacklist * self; self = ALM_PATH_BLACKLIST (obj); _alm_blacklist_unref0 (self->priv->blacklist_interface); _g_object_unref0 (self->priv->all_blocked_folder); } GType alm_path_blacklist_get_type (void) { static volatile gsize alm_path_blacklist_type_id__volatile = 0; if (g_once_init_enter (&alm_path_blacklist_type_id__volatile)) { static const GTypeValueTable g_define_type_value_table = { alm_value_path_blacklist_init, alm_value_path_blacklist_free_value, alm_value_path_blacklist_copy_value, alm_value_path_blacklist_peek_pointer, "p", alm_value_path_blacklist_collect_value, "p", alm_value_path_blacklist_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (AlmPathBlacklistClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) alm_path_blacklist_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AlmPathBlacklist), 0, (GInstanceInitFunc) alm_path_blacklist_instance_init, &g_define_type_value_table }; static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; GType alm_path_blacklist_type_id; alm_path_blacklist_type_id = g_type_register_fundamental (g_type_fundamental_next (), "AlmPathBlacklist", &g_define_type_info, &g_define_type_fundamental_info, 0); g_once_init_leave (&alm_path_blacklist_type_id__volatile, alm_path_blacklist_type_id); } return alm_path_blacklist_type_id__volatile; } gpointer alm_path_blacklist_ref (gpointer instance) { AlmPathBlacklist* self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void alm_path_blacklist_unref (gpointer instance) { AlmPathBlacklist* self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { ALM_PATH_BLACKLIST_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } static GType alm_files_widget_tree_view_cols_get_type (void) { static volatile gsize alm_files_widget_tree_view_cols_type_id__volatile = 0; if (g_once_init_enter (&alm_files_widget_tree_view_cols_type_id__volatile)) { static const GEnumValue values[] = {{ALM_FILES_WIDGET_TREE_VIEW_COLS_APP_NAME, "ALM_FILES_WIDGET_TREE_VIEW_COLS_APP_NAME", "app-name"}, {ALM_FILES_WIDGET_TREE_VIEW_COLS_ICON, "ALM_FILES_WIDGET_TREE_VIEW_COLS_ICON", "icon"}, {ALM_FILES_WIDGET_TREE_VIEW_COLS_DESKTOP_FILE, "ALM_FILES_WIDGET_TREE_VIEW_COLS_DESKTOP_FILE", "desktop-file"}, {ALM_FILES_WIDGET_TREE_VIEW_COLS_N_COLS, "ALM_FILES_WIDGET_TREE_VIEW_COLS_N_COLS", "n-cols"}, {0, NULL, NULL}}; GType alm_files_widget_tree_view_cols_type_id; alm_files_widget_tree_view_cols_type_id = g_enum_register_static ("AlmFilesWidgetTreeViewCols", values); g_once_init_leave (&alm_files_widget_tree_view_cols_type_id__volatile, alm_files_widget_tree_view_cols_type_id); } return alm_files_widget_tree_view_cols_type_id__volatile; } static void __lambda9_ (AlmFilesWidget* self, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template) { const gchar* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; g_return_if_fail (blacklist_id != NULL); g_return_if_fail (blacklist_template != NULL); _tmp0_ = blacklist_id; _tmp1_ = alm_file_type_blacklist_interpretation_prefix; _tmp2_ = g_str_has_prefix (_tmp0_, _tmp1_); if (_tmp2_) { ZeitgeistEvent* _tmp3_; ZeitgeistSubject* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* inter; GeeHashMap* _tmp7_; const gchar* _tmp8_; gboolean _tmp9_ = FALSE; self->priv->file_type_fire_signal = FALSE; _tmp3_ = blacklist_template; _tmp4_ = zeitgeist_event_get_subject (_tmp3_, 0); _tmp5_ = zeitgeist_subject_get_interpretation (_tmp4_); _tmp6_ = g_strdup (_tmp5_); inter = _tmp6_; _tmp7_ = self->priv->checkboxes; _tmp8_ = inter; _tmp9_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp7_, _tmp8_); if (_tmp9_) { GeeHashMap* _tmp10_; const gchar* _tmp11_; gpointer _tmp12_ = NULL; GtkCheckButton* _tmp13_; _tmp10_ = self->priv->checkboxes; _tmp11_ = inter; _tmp12_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp10_, _tmp11_); _tmp13_ = (GtkCheckButton*) _tmp12_; gtk_toggle_button_set_active ((GtkToggleButton*) _tmp13_, TRUE); _g_object_unref0 (_tmp13_); } self->priv->file_type_fire_signal = TRUE; _g_free0 (inter); } } static void ___lambda9__alm_blacklist_template_added (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self) { __lambda9_ (self, blacklist_id, blacklist_template); } static void __lambda10_ (AlmFilesWidget* self, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template) { const gchar* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; g_return_if_fail (blacklist_id != NULL); g_return_if_fail (blacklist_template != NULL); _tmp0_ = blacklist_id; _tmp1_ = alm_file_type_blacklist_interpretation_prefix; _tmp2_ = g_str_has_prefix (_tmp0_, _tmp1_); if (_tmp2_) { ZeitgeistEvent* _tmp3_; ZeitgeistSubject* _tmp4_ = NULL; const gchar* _tmp5_ = NULL; gchar* _tmp6_; gchar* inter; GeeHashMap* _tmp7_; const gchar* _tmp8_; gboolean _tmp9_ = FALSE; self->priv->file_type_fire_signal = FALSE; _tmp3_ = blacklist_template; _tmp4_ = zeitgeist_event_get_subject (_tmp3_, 0); _tmp5_ = zeitgeist_subject_get_interpretation (_tmp4_); _tmp6_ = g_strdup (_tmp5_); inter = _tmp6_; _tmp7_ = self->priv->checkboxes; _tmp8_ = inter; _tmp9_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp7_, _tmp8_); if (_tmp9_) { GeeHashMap* _tmp10_; const gchar* _tmp11_; gpointer _tmp12_ = NULL; GtkCheckButton* _tmp13_; _tmp10_ = self->priv->checkboxes; _tmp11_ = inter; _tmp12_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp10_, _tmp11_); _tmp13_ = (GtkCheckButton*) _tmp12_; gtk_toggle_button_set_active ((GtkToggleButton*) _tmp13_, FALSE); _g_object_unref0 (_tmp13_); } self->priv->file_type_fire_signal = TRUE; _g_free0 (inter); } } static void ___lambda10__alm_blacklist_template_removed (AlmBlacklist* _sender, const gchar* blacklist_id, ZeitgeistEvent* blacklist_template, gpointer self) { __lambda10_ (self, blacklist_id, blacklist_template); } static void __lambda11_ (AlmFilesWidget* self, const gchar* folder) { AlmPathBlacklist* _tmp0_; const gchar* _tmp1_; gboolean _tmp2_ = FALSE; g_return_if_fail (folder != NULL); _tmp0_ = self->priv->path_blacklist; _tmp1_ = folder; _tmp2_ = alm_path_blacklist_is_duplicate (_tmp0_, _tmp1_); if (!_tmp2_) { const gchar* _tmp3_; _tmp3_ = folder; alm_files_widget_add_folder_to_view (self, _tmp3_); } } static void ___lambda11__alm_path_blacklist_folder_added (AlmPathBlacklist* _sender, const gchar* path, gpointer self) { __lambda11_ (self, path); } static void __lambda12_ (AlmFilesWidget* self, const gchar* folder) { const gchar* _tmp0_; g_return_if_fail (folder != NULL); _tmp0_ = folder; alm_files_widget_remove_folder_from_view (self, _tmp0_); } static void ___lambda12__alm_path_blacklist_folder_removed (AlmPathBlacklist* _sender, const gchar* path, gpointer self) { __lambda12_ (self, path); } AlmFilesWidget* alm_files_widget_construct (GType object_type, AlmBlacklist* blacklist_interface) { AlmFilesWidget * self = NULL; AlmBlacklist* _tmp0_; AlmBlacklist* _tmp1_; GeeHashMap* _tmp2_; GeeHashSet* _tmp3_; GtkIconTheme* _tmp4_; AlmBlacklist* _tmp5_; GeeHashMap* _tmp6_; AlmFileTypeBlacklist* _tmp7_; AlmBlacklist* _tmp8_; AlmPathBlacklist* _tmp9_; AlmBlacklist* _tmp10_; AlmBlacklist* _tmp11_; AlmPathBlacklist* _tmp12_; AlmPathBlacklist* _tmp13_; GHashFunc _tmp14_; GEqualFunc _tmp15_; GeeHashMap* _tmp16_; GeeHashMap* _tmp17_; GeeHashMap* _tmp18_; GeeHashMap* _tmp19_; GeeHashMap* _tmp20_; GeeHashMap* _tmp21_; GeeHashMap* _tmp22_; GeeHashMap* _tmp23_; GeeHashMap* _tmp24_; GeeHashMap* _tmp25_; GHashFunc _tmp26_; GEqualFunc _tmp27_; GeeHashMap* _tmp28_; GeeHashMap* _tmp29_; const gchar* _tmp30_ = NULL; GeeHashMap* _tmp31_; const gchar* _tmp32_ = NULL; GeeHashMap* _tmp33_; const gchar* _tmp34_ = NULL; GeeHashMap* _tmp35_; const gchar* _tmp36_ = NULL; GeeHashMap* _tmp37_; const gchar* _tmp38_ = NULL; GeeHashMap* _tmp39_; const gchar* _tmp40_ = NULL; GeeHashMap* _tmp41_; const gchar* _tmp42_ = NULL; GeeHashMap* _tmp43_; const gchar* _tmp44_ = NULL; GdkPixbuf* _tmp45_ = NULL; GdkPixbuf* _tmp46_; g_return_val_if_fail (blacklist_interface != NULL, NULL); self = (AlmFilesWidget*) g_object_new (object_type, "orientation", GTK_ORIENTATION_VERTICAL, NULL); _tmp0_ = blacklist_interface; _tmp1_ = _alm_blacklist_ref0 (_tmp0_); _alm_blacklist_unref0 (self->priv->blacklist); self->priv->blacklist = _tmp1_; _tmp2_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, GTK_TYPE_CHECK_BUTTON, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL); _g_object_unref0 (self->priv->checkboxes); self->priv->checkboxes = _tmp2_; _tmp3_ = gee_hash_set_new (GTK_TYPE_CHECK_BUTTON, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL); _g_object_unref0 (self->priv->button_list); self->priv->button_list = _tmp3_; _tmp4_ = gtk_icon_theme_new (); _g_object_unref0 (self->priv->icon_theme); self->priv->icon_theme = _tmp4_; _tmp5_ = blacklist_interface; _tmp6_ = self->priv->checkboxes; _tmp7_ = alm_file_type_blacklist_new (_tmp5_, _tmp6_); _alm_file_type_blacklist_unref0 (self->priv->files_type_blacklist); self->priv->files_type_blacklist = _tmp7_; _tmp8_ = blacklist_interface; _tmp9_ = alm_path_blacklist_new (_tmp8_); _alm_path_blacklist_unref0 (self->priv->path_blacklist); self->priv->path_blacklist = _tmp9_; _tmp10_ = blacklist_interface; g_signal_connect_object (_tmp10_, "template-added", (GCallback) ___lambda9__alm_blacklist_template_added, self, 0); _tmp11_ = blacklist_interface; g_signal_connect_object (_tmp11_, "template-removed", (GCallback) ___lambda10__alm_blacklist_template_removed, self, 0); _tmp12_ = self->priv->path_blacklist; g_signal_connect_object (_tmp12_, "folder-added", (GCallback) ___lambda11__alm_path_blacklist_folder_added, self, 0); _tmp13_ = self->priv->path_blacklist; g_signal_connect_object (_tmp13_, "folder-removed", (GCallback) ___lambda12__alm_path_blacklist_folder_removed, self, 0); _tmp14_ = g_str_hash; _tmp15_ = g_str_equal; _tmp16_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, _tmp14_, _tmp15_, NULL); _g_object_unref0 (self->priv->mime_dict); self->priv->mime_dict = _tmp16_; _tmp17_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp17_, "Audio", ZEITGEIST_NFO_AUDIO); _tmp18_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp18_, "Video", ZEITGEIST_NFO_VIDEO); _tmp19_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp19_, "Image", ZEITGEIST_NFO_IMAGE); _tmp20_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp20_, "Text", ZEITGEIST_NFO_DOCUMENT); _tmp21_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp21_, "Presentation", ZEITGEIST_NFO_PRESENTATION); _tmp22_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp22_, "Spreadsheet", ZEITGEIST_NFO_SPREADSHEET); _tmp23_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp23_, "Instant Messaging", ZEITGEIST_NMO_IMMESSAGE); _tmp24_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp24_, "E-mail", ZEITGEIST_NMO_EMAIL); _tmp25_ = self->priv->mime_dict; gee_abstract_map_set ((GeeAbstractMap*) _tmp25_, "Website", ZEITGEIST_NFO_WEBSITE); _tmp26_ = g_str_hash; _tmp27_ = g_str_equal; _tmp28_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_INT, NULL, NULL, _tmp26_, _tmp27_, NULL); _g_object_unref0 (self->priv->defined_dirs); self->priv->defined_dirs = _tmp28_; _tmp29_ = self->priv->defined_dirs; _tmp30_ = g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP); gee_abstract_map_set ((GeeAbstractMap*) _tmp29_, _tmp30_, GINT_TO_POINTER (G_USER_DIRECTORY_DESKTOP)); _tmp31_ = self->priv->defined_dirs; _tmp32_ = g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS); gee_abstract_map_set ((GeeAbstractMap*) _tmp31_, _tmp32_, GINT_TO_POINTER (G_USER_DIRECTORY_DOCUMENTS)); _tmp33_ = self->priv->defined_dirs; _tmp34_ = g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD); gee_abstract_map_set ((GeeAbstractMap*) _tmp33_, _tmp34_, GINT_TO_POINTER (G_USER_DIRECTORY_DOWNLOAD)); _tmp35_ = self->priv->defined_dirs; _tmp36_ = g_get_user_special_dir (G_USER_DIRECTORY_MUSIC); gee_abstract_map_set ((GeeAbstractMap*) _tmp35_, _tmp36_, GINT_TO_POINTER (G_USER_DIRECTORY_MUSIC)); _tmp37_ = self->priv->defined_dirs; _tmp38_ = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); gee_abstract_map_set ((GeeAbstractMap*) _tmp37_, _tmp38_, GINT_TO_POINTER (G_USER_DIRECTORY_PICTURES)); _tmp39_ = self->priv->defined_dirs; _tmp40_ = g_get_user_special_dir (G_USER_DIRECTORY_PUBLIC_SHARE); gee_abstract_map_set ((GeeAbstractMap*) _tmp39_, _tmp40_, GINT_TO_POINTER (G_USER_DIRECTORY_PUBLIC_SHARE)); _tmp41_ = self->priv->defined_dirs; _tmp42_ = g_get_user_special_dir (G_USER_DIRECTORY_TEMPLATES); gee_abstract_map_set ((GeeAbstractMap*) _tmp41_, _tmp42_, GINT_TO_POINTER (G_USER_DIRECTORY_TEMPLATES)); _tmp43_ = self->priv->defined_dirs; _tmp44_ = g_get_user_special_dir (G_USER_DIRECTORY_VIDEOS); gee_abstract_map_set ((GeeAbstractMap*) _tmp43_, _tmp44_, GINT_TO_POINTER (G_USER_DIRECTORY_VIDEOS)); _tmp45_ = gtk_widget_render_icon_pixbuf ((GtkWidget*) self, GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_LARGE_TOOLBAR); _tmp46_ = _g_object_ref0 (_tmp45_); _g_object_unref0 (self->priv->stock_folder_icon); self->priv->stock_folder_icon = _tmp46_; alm_files_widget_setup_ui (self); return self; } AlmFilesWidget* alm_files_widget_new (AlmBlacklist* blacklist_interface) { return alm_files_widget_construct (ALM_TYPE_FILES_WIDGET, blacklist_interface); } static Block3Data* block3_data_ref (Block3Data* _data3_) { g_atomic_int_inc (&_data3_->_ref_count_); return _data3_; } static void block3_data_unref (Block3Data* _data3_) { if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) { _g_object_unref0 (_data3_->self); _g_object_unref0 (_data3_->check_button); g_slice_free (Block3Data, _data3_); } } static void ____lambda13_ (Block3Data* _data3_) { AlmFilesWidget * self; gboolean _tmp0_; self = _data3_->self; _tmp0_ = self->priv->file_type_fire_signal; if (_tmp0_) { GtkCheckButton* _tmp1_; gboolean _tmp2_; gboolean _tmp3_; self->priv->file_type_fire_signal = FALSE; _tmp1_ = _data3_->check_button; _tmp2_ = gtk_toggle_button_get_active ((GtkToggleButton*) _tmp1_); _tmp3_ = _tmp2_; if (_tmp3_) { AlmFileTypeBlacklist* _tmp4_; GeeHashMap* _tmp5_; GtkCheckButton* _tmp6_; const gchar* _tmp7_; const gchar* _tmp8_; gpointer _tmp9_ = NULL; gchar* _tmp10_; _tmp4_ = self->priv->files_type_blacklist; _tmp5_ = self->priv->mime_dict; _tmp6_ = _data3_->check_button; _tmp7_ = gtk_button_get_label ((GtkButton*) _tmp6_); _tmp8_ = _tmp7_; _tmp9_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp5_, _tmp8_); _tmp10_ = (gchar*) _tmp9_; alm_file_type_blacklist_block (_tmp4_, _tmp10_); _g_free0 (_tmp10_); } else { AlmFileTypeBlacklist* _tmp11_; GeeHashMap* _tmp12_; GtkCheckButton* _tmp13_; const gchar* _tmp14_; const gchar* _tmp15_; gpointer _tmp16_ = NULL; gchar* _tmp17_; _tmp11_ = self->priv->files_type_blacklist; _tmp12_ = self->priv->mime_dict; _tmp13_ = _data3_->check_button; _tmp14_ = gtk_button_get_label ((GtkButton*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp12_, _tmp15_); _tmp17_ = (gchar*) _tmp16_; alm_file_type_blacklist_unblock (_tmp11_, _tmp17_); _g_free0 (_tmp17_); } self->priv->file_type_fire_signal = TRUE; } } static void _____lambda13__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) { ____lambda13_ (self); } static void _alm_files_widget_on_add_folder_gtk_tool_button_clicked (GtkToolButton* _sender, gpointer self) { alm_files_widget_on_add_folder (self); } static void _alm_files_widget_on_remove_folder_gtk_tool_button_clicked (GtkToolButton* _sender, gpointer self) { alm_files_widget_on_remove_folder (self); } static void alm_files_widget_setup_ui (AlmFilesWidget* self) { GtkBox* _tmp0_; GtkBox* _tmp1_; GtkBox* vbox_file_types; GtkBox* _tmp2_; GtkLabel* _tmp3_; GtkLabel* _tmp4_; GtkLabel* file_type_label; GtkLabel* _tmp5_; GtkLabel* _tmp6_; GtkBox* _tmp7_; GtkLabel* _tmp8_; GtkTable* _tmp9_; GtkTable* _tmp10_; GtkTable* checkbox_table; GeeHashMap* _tmp11_; GeeSet* _tmp12_; GeeSet* _tmp13_; GeeSet* _tmp14_; gint _tmp15_ = 0; gpointer* _tmp16_ = NULL; gchar** _tmp17_; gint _tmp17__length1; gchar** keys; gint keys_length1; gint _keys_size_; GtkBox* _tmp48_; GtkTable* _tmp49_; AlmFileTypeBlacklist* _tmp50_; GtkHSeparator* _tmp58_; GtkHSeparator* _tmp59_; GtkHSeparator* hoz_line; GtkBox* _tmp60_; GtkBox* _tmp61_; GtkBox* vbox_folders; GtkLabel* _tmp62_; GtkLabel* _tmp63_; GtkLabel* folders_label; GtkBox* _tmp64_; GtkBox* _tmp65_; GtkBox* file_chooser_vbox; GtkListStore* _tmp66_; GtkListStore* _tmp67_; GtkTreeView* _tmp68_; GtkTreeView* _tmp69_; GtkTreeView* _tmp70_; GtkTreeView* _tmp71_; GtkTreeViewColumn* _tmp72_; GtkTreeViewColumn* _tmp73_; GtkTreeViewColumn* column_pix_name; GtkTreeView* _tmp74_; GtkCellRendererPixbuf* _tmp75_; GtkCellRendererPixbuf* _tmp76_; GtkCellRendererPixbuf* pix_rend; GtkCellRendererText* _tmp77_; GtkCellRendererText* _tmp78_; GtkCellRendererText* name_rend; GValue _tmp79_ = {0}; GtkScrolledWindow* _tmp80_; GtkScrolledWindow* _tmp81_; GtkScrolledWindow* scroll; GtkTreeView* _tmp82_; GtkToolbar* _tmp83_; GtkToolbar* _tmp84_; GtkToolbar* folder_toolbar; GtkToolButton* _tmp85_; GtkToolButton* _tmp86_; GtkToolButton* folder_add; GtkToolButton* _tmp87_; GtkToolButton* _tmp88_; GtkToolButton* folder_remove; g_return_if_fail (self != NULL); gtk_container_set_border_width ((GtkContainer*) self, (guint) 12); _tmp0_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); _tmp1_ = g_object_ref_sink (_tmp0_); vbox_file_types = _tmp1_; _tmp2_ = vbox_file_types; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp2_, FALSE, FALSE, (guint) 0); _tmp3_ = (GtkLabel*) gtk_label_new (NULL); _tmp4_ = g_object_ref_sink (_tmp3_); file_type_label = _tmp4_; _tmp5_ = file_type_label; gtk_label_set_markup (_tmp5_, "Don't record activity for following type of files:"); _tmp6_ = file_type_label; gtk_misc_set_alignment ((GtkMisc*) _tmp6_, 0.0f, 0.5f); _tmp7_ = vbox_file_types; _tmp8_ = file_type_label; gtk_box_pack_start (_tmp7_, (GtkWidget*) _tmp8_, FALSE, TRUE, (guint) 0); _tmp9_ = (GtkTable*) gtk_table_new ((guint) 3, (guint) 3, TRUE); _tmp10_ = g_object_ref_sink (_tmp9_); checkbox_table = _tmp10_; _tmp11_ = self->priv->mime_dict; _tmp12_ = gee_abstract_map_get_keys ((GeeMap*) _tmp11_); _tmp13_ = _tmp12_; _tmp14_ = _tmp13_; _tmp16_ = gee_collection_to_array ((GeeCollection*) _tmp14_, &_tmp15_); _tmp17_ = _tmp16_; _tmp17__length1 = _tmp15_; _g_object_unref0 (_tmp14_); keys = _tmp17_; keys_length1 = _tmp17__length1; _keys_size_ = keys_length1; { gint i; gint row; gint col; i = 0; row = 0; col = 0; { gboolean _tmp18_; _tmp18_ = TRUE; while (TRUE) { gboolean _tmp19_; gint _tmp22_; gchar** _tmp23_; gint _tmp23__length1; gchar** _tmp24_; gint _tmp24__length1; gint _tmp25_; const gchar* _tmp26_; GtkCheckButton* _tmp27_; GtkCheckButton* _tmp28_; GtkCheckButton* check_button; GeeHashSet* _tmp29_; GtkCheckButton* _tmp30_; GeeHashMap* _tmp31_; GeeHashMap* _tmp32_; gchar** _tmp33_; gint _tmp33__length1; gint _tmp34_; const gchar* _tmp35_; gpointer _tmp36_ = NULL; gchar* _tmp37_; GtkCheckButton* _tmp38_; gint _tmp39_; GtkTable* _tmp42_; GtkCheckButton* _tmp43_; gint _tmp44_; gint _tmp45_; gint _tmp46_; gint _tmp47_; _tmp19_ = _tmp18_; if (!_tmp19_) { gint _tmp20_; gint _tmp21_; _tmp20_ = i; i = _tmp20_ + 1; _tmp21_ = col; col = _tmp21_ + 1; } _tmp18_ = FALSE; _tmp22_ = i; _tmp23_ = keys; _tmp23__length1 = keys_length1; if (!(_tmp22_ < _tmp23__length1)) { break; } _tmp24_ = keys; _tmp24__length1 = keys_length1; _tmp25_ = i; _tmp26_ = _tmp24_[_tmp25_]; _tmp27_ = (GtkCheckButton*) gtk_check_button_new_with_label (_tmp26_); _tmp28_ = g_object_ref_sink (_tmp27_); check_button = _tmp28_; _tmp29_ = self->priv->button_list; _tmp30_ = check_button; gee_abstract_collection_add ((GeeAbstractCollection*) _tmp29_, _tmp30_); _tmp31_ = self->priv->checkboxes; _tmp32_ = self->priv->mime_dict; _tmp33_ = keys; _tmp33__length1 = keys_length1; _tmp34_ = i; _tmp35_ = _tmp33_[_tmp34_]; _tmp36_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp32_, _tmp35_); _tmp37_ = (gchar*) _tmp36_; _tmp38_ = check_button; gee_abstract_map_set ((GeeAbstractMap*) _tmp31_, _tmp37_, _tmp38_); _g_free0 (_tmp37_); _tmp39_ = col; if (_tmp39_ > 2) { gint _tmp40_; gint _tmp41_; _tmp40_ = row; row = _tmp40_ + 1; _tmp41_ = col; col = _tmp41_ % 3; } _tmp42_ = checkbox_table; _tmp43_ = check_button; _tmp44_ = col; _tmp45_ = col; _tmp46_ = row; _tmp47_ = row; gtk_table_attach_defaults (_tmp42_, (GtkWidget*) _tmp43_, (guint) _tmp44_, (guint) (_tmp45_ + 1), (guint) _tmp46_, (guint) (_tmp47_ + 1)); _g_object_unref0 (check_button); } } } _tmp48_ = vbox_file_types; _tmp49_ = checkbox_table; gtk_box_pack_start (_tmp48_, (GtkWidget*) _tmp49_, FALSE, TRUE, (guint) 0); _tmp50_ = self->priv->files_type_blacklist; alm_file_type_blacklist_populate_file_types (_tmp50_); { GeeHashSet* _tmp51_; GeeIterator* _tmp52_ = NULL; GeeIterator* _check_button_it; _tmp51_ = self->priv->button_list; _tmp52_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) _tmp51_); _check_button_it = _tmp52_; while (TRUE) { Block3Data* _data3_; GeeIterator* _tmp53_; gboolean _tmp54_ = FALSE; GeeIterator* _tmp55_; gpointer _tmp56_ = NULL; GtkCheckButton* _tmp57_; _data3_ = g_slice_new0 (Block3Data); _data3_->_ref_count_ = 1; _data3_->self = g_object_ref (self); _tmp53_ = _check_button_it; _tmp54_ = gee_iterator_next (_tmp53_); if (!_tmp54_) { block3_data_unref (_data3_); _data3_ = NULL; break; } _tmp55_ = _check_button_it; _tmp56_ = gee_iterator_get (_tmp55_); _data3_->check_button = (GtkCheckButton*) _tmp56_; _tmp57_ = _data3_->check_button; g_signal_connect_data ((GtkToggleButton*) _tmp57_, "toggled", (GCallback) _____lambda13__gtk_toggle_button_toggled, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0); block3_data_unref (_data3_); _data3_ = NULL; } _g_object_unref0 (_check_button_it); } _tmp58_ = (GtkHSeparator*) gtk_hseparator_new (); _tmp59_ = g_object_ref_sink (_tmp58_); hoz_line = _tmp59_; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) hoz_line, FALSE, FALSE, (guint) 12); _tmp60_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); _tmp61_ = g_object_ref_sink (_tmp60_); vbox_folders = _tmp61_; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) vbox_folders, TRUE, TRUE, (guint) 0); _tmp62_ = (GtkLabel*) gtk_label_new (NULL); _tmp63_ = g_object_ref_sink (_tmp62_); folders_label = _tmp63_; gtk_label_set_markup (folders_label, "Don't record activity in the following folders:"); gtk_misc_set_alignment ((GtkMisc*) folders_label, 0.0f, 0.5f); gtk_box_pack_start (vbox_folders, (GtkWidget*) folders_label, FALSE, TRUE, (guint) 0); _tmp64_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); _tmp65_ = g_object_ref_sink (_tmp64_); file_chooser_vbox = _tmp65_; gtk_box_pack_start (vbox_folders, (GtkWidget*) file_chooser_vbox, TRUE, TRUE, (guint) 0); _tmp66_ = gtk_list_store_new (3, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_STRING); _g_object_unref0 (self->priv->folder_list_store); self->priv->folder_list_store = _tmp66_; _tmp67_ = self->priv->folder_list_store; _tmp68_ = (GtkTreeView*) gtk_tree_view_new_with_model ((GtkTreeModel*) _tmp67_); _tmp69_ = g_object_ref_sink (_tmp68_); _g_object_unref0 (self->priv->folder_list); self->priv->folder_list = _tmp69_; _tmp70_ = self->priv->folder_list; gtk_tree_view_set_headers_visible (_tmp70_, FALSE); _tmp71_ = self->priv->folder_list; gtk_tree_view_set_rules_hint (_tmp71_, TRUE); _tmp72_ = gtk_tree_view_column_new (); _tmp73_ = g_object_ref_sink (_tmp72_); column_pix_name = _tmp73_; gtk_tree_view_column_set_title (column_pix_name, "Name"); _tmp74_ = self->priv->folder_list; gtk_tree_view_append_column (_tmp74_, column_pix_name); _tmp75_ = (GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new (); _tmp76_ = g_object_ref_sink (_tmp75_); pix_rend = _tmp76_; gtk_cell_layout_add_attribute ((GtkCellLayout*) column_pix_name, (GtkCellRenderer*) pix_rend, "pixbuf", 1); gtk_cell_layout_pack_start ((GtkCellLayout*) column_pix_name, (GtkCellRenderer*) pix_rend, FALSE); _tmp77_ = (GtkCellRendererText*) gtk_cell_renderer_text_new (); _tmp78_ = g_object_ref_sink (_tmp77_); name_rend = _tmp78_; g_value_init (&_tmp79_, PANGO_TYPE_ELLIPSIZE_MODE); g_value_set_enum (&_tmp79_, PANGO_ELLIPSIZE_END); g_object_set_property ((GObject*) name_rend, "ellipsize", &_tmp79_); G_IS_VALUE (&_tmp79_) ? (g_value_unset (&_tmp79_), NULL) : NULL; gtk_cell_layout_pack_start ((GtkCellLayout*) column_pix_name, (GtkCellRenderer*) name_rend, TRUE); gtk_cell_layout_add_attribute ((GtkCellLayout*) column_pix_name, (GtkCellRenderer*) name_rend, "text", 0); gtk_tree_view_column_set_resizable (column_pix_name, TRUE); _tmp80_ = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL); _tmp81_ = g_object_ref_sink (_tmp80_); scroll = _tmp81_; _tmp82_ = self->priv->folder_list; gtk_container_add ((GtkContainer*) scroll, (GtkWidget*) _tmp82_); gtk_box_pack_start (file_chooser_vbox, (GtkWidget*) scroll, TRUE, TRUE, (guint) 0); _tmp83_ = (GtkToolbar*) gtk_toolbar_new (); _tmp84_ = g_object_ref_sink (_tmp83_); folder_toolbar = _tmp84_; g_object_set (folder_toolbar, "toolbar-style", GTK_TOOLBAR_ICONS, NULL); gtk_toolbar_set_icon_size (folder_toolbar, 1); g_object_set (folder_toolbar, "icon-size-set", TRUE, NULL); gtk_widget_set_visible ((GtkWidget*) folder_toolbar, TRUE); _tmp85_ = (GtkToolButton*) gtk_tool_button_new (NULL, "Add Folder"); _tmp86_ = g_object_ref_sink (_tmp85_); folder_add = _tmp86_; gtk_tool_button_set_icon_name (folder_add, "list-add-symbolic"); g_signal_connect_object (folder_add, "clicked", (GCallback) _alm_files_widget_on_add_folder_gtk_tool_button_clicked, self, 0); _tmp87_ = (GtkToolButton*) gtk_tool_button_new (NULL, "Remove Folder"); _tmp88_ = g_object_ref_sink (_tmp87_); folder_remove = _tmp88_; gtk_tool_button_set_icon_name (folder_remove, "list-remove-symbolic"); g_signal_connect_object (folder_remove, "clicked", (GCallback) _alm_files_widget_on_remove_folder_gtk_tool_button_clicked, self, 0); gtk_toolbar_insert (folder_toolbar, (GtkToolItem*) folder_add, 0); gtk_toolbar_insert (folder_toolbar, (GtkToolItem*) folder_remove, 1); gtk_box_pack_start (file_chooser_vbox, (GtkWidget*) folder_toolbar, FALSE, FALSE, (guint) 0); alm_files_widget_folders_populate (self); _g_object_unref0 (folder_remove); _g_object_unref0 (folder_add); _g_object_unref0 (folder_toolbar); _g_object_unref0 (scroll); _g_object_unref0 (name_rend); _g_object_unref0 (pix_rend); _g_object_unref0 (column_pix_name); _g_object_unref0 (file_chooser_vbox); _g_object_unref0 (folders_label); _g_object_unref0 (vbox_folders); _g_object_unref0 (hoz_line); keys = (_vala_array_free (keys, keys_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (checkbox_table); _g_object_unref0 (file_type_label); _g_object_unref0 (vbox_file_types); } static void alm_files_widget_folders_populate (AlmFilesWidget* self) { g_return_if_fail (self != NULL); { AlmPathBlacklist* _tmp0_; GeeHashSet* _tmp1_; GeeHashSet* _tmp2_; GeeIterator* _tmp3_ = NULL; GeeIterator* _folder_it; _tmp0_ = self->priv->path_blacklist; _tmp1_ = alm_path_blacklist_get_all_folders (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) _tmp2_); _folder_it = _tmp3_; while (TRUE) { GeeIterator* _tmp4_; gboolean _tmp5_ = FALSE; GeeIterator* _tmp6_; gpointer _tmp7_ = NULL; gchar* folder; const gchar* _tmp8_; _tmp4_ = _folder_it; _tmp5_ = gee_iterator_next (_tmp4_); if (!_tmp5_) { break; } _tmp6_ = _folder_it; _tmp7_ = gee_iterator_get (_tmp6_); folder = (gchar*) _tmp7_; _tmp8_ = folder; alm_files_widget_add_folder_to_view (self, _tmp8_); _g_free0 (folder); } _g_object_unref0 (_folder_it); } } static void alm_files_widget_on_add_folder (AlmFilesWidget* self) { GtkFileChooserDialog* _tmp0_; GtkFileChooserDialog* _tmp1_; GtkFileChooserDialog* chooser; GtkFileChooserDialog* _tmp2_; GtkFileChooserDialog* _tmp3_; gint _tmp4_ = 0; gint res; GtkFileChooserDialog* _tmp5_; gint _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = (GtkFileChooserDialog*) gtk_file_chooser_dialog_new ("Select a directory to blacklist", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, NULL); _tmp1_ = g_object_ref_sink (_tmp0_); chooser = _tmp1_; _tmp2_ = chooser; gtk_dialog_add_buttons ((GtkDialog*) _tmp2_, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); _tmp3_ = chooser; _tmp4_ = gtk_dialog_run ((GtkDialog*) _tmp3_); res = _tmp4_; _tmp5_ = chooser; gtk_widget_hide ((GtkWidget*) _tmp5_); _tmp6_ = res; if (_tmp6_ == ((gint) GTK_RESPONSE_OK)) { GtkFileChooserDialog* _tmp7_; gchar* _tmp8_ = NULL; gchar* folder; AlmPathBlacklist* _tmp9_; const gchar* _tmp10_; gboolean _tmp11_ = FALSE; _tmp7_ = chooser; _tmp8_ = gtk_file_chooser_get_filename ((GtkFileChooser*) _tmp7_); folder = _tmp8_; _tmp9_ = self->priv->path_blacklist; _tmp10_ = folder; _tmp11_ = alm_path_blacklist_is_duplicate (_tmp9_, _tmp10_); if (!_tmp11_) { const gchar* _tmp12_; AlmPathBlacklist* _tmp13_; const gchar* _tmp14_; _tmp12_ = folder; alm_files_widget_add_folder_to_view (self, _tmp12_); _tmp13_ = self->priv->path_blacklist; _tmp14_ = folder; alm_path_blacklist_block (_tmp13_, _tmp14_); } _g_free0 (folder); } _g_object_unref0 (chooser); } static void alm_files_widget_on_remove_folder (AlmFilesWidget* self) { GtkTreeView* _tmp0_; GtkTreeSelection* _tmp1_ = NULL; GtkTreeSelection* _tmp2_; GtkTreeSelection* sel; GtkTreeModel* model = NULL; GtkTreeIter iter = {0}; GtkTreeModel* _tmp3_ = NULL; GtkTreeIter _tmp4_ = {0}; GtkTreeModel* _tmp5_; gchar* folder = NULL; GtkTreeIter _tmp6_; GtkListStore* _tmp7_; GtkTreeIter _tmp8_; AlmPathBlacklist* _tmp9_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->folder_list; _tmp1_ = gtk_tree_view_get_selection (_tmp0_); _tmp2_ = _g_object_ref0 (_tmp1_); sel = _tmp2_; gtk_tree_selection_get_selected (sel, &_tmp3_, &_tmp4_); _g_object_unref0 (model); _tmp5_ = _g_object_ref0 (_tmp3_); model = _tmp5_; iter = _tmp4_; _tmp6_ = iter; gtk_tree_model_get (model, &_tmp6_, 0, &folder, -1); _tmp7_ = self->priv->folder_list_store; _tmp8_ = iter; gtk_list_store_remove (_tmp7_, &_tmp8_); _tmp9_ = self->priv->path_blacklist; alm_path_blacklist_unblock (_tmp9_, folder); _g_free0 (folder); _g_object_unref0 (model); _g_object_unref0 (sel); } static const char* _g_user_directory_to_string (GUserDirectory value) { switch (value) { case G_USER_DIRECTORY_DESKTOP: return "G_USER_DIRECTORY_DESKTOP"; case G_USER_DIRECTORY_DOCUMENTS: return "G_USER_DIRECTORY_DOCUMENTS"; case G_USER_DIRECTORY_DOWNLOAD: return "G_USER_DIRECTORY_DOWNLOAD"; case G_USER_DIRECTORY_MUSIC: return "G_USER_DIRECTORY_MUSIC"; case G_USER_DIRECTORY_PICTURES: return "G_USER_DIRECTORY_PICTURES"; case G_USER_DIRECTORY_PUBLIC_SHARE: return "G_USER_DIRECTORY_PUBLIC_SHARE"; case G_USER_DIRECTORY_TEMPLATES: return "G_USER_DIRECTORY_TEMPLATES"; case G_USER_DIRECTORY_VIDEOS: return "G_USER_DIRECTORY_VIDEOS"; case G_USER_N_DIRECTORIES: return "G_USER_N_DIRECTORIES"; } return NULL; } static gchar* string_strip (const gchar* self) { gchar* result = NULL; gchar* _tmp0_ = NULL; gchar* _result_; const gchar* _tmp1_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = g_strdup (self); _result_ = _tmp0_; _tmp1_ = _result_; g_strstrip (_tmp1_); result = _result_; return result; } static void alm_files_widget_add_folder_to_view (AlmFilesWidget* self, const gchar* folder) { GdkPixbuf* _tmp0_; GdkPixbuf* _tmp1_; GdkPixbuf* icon; GeeHashMap* _tmp2_; const gchar* _tmp3_; gboolean _tmp4_ = FALSE; const gchar* _tmp17_; gchar* _tmp18_ = NULL; gchar* _tmp19_; gchar* _tmp20_ = NULL; gchar* _tmp21_; gchar* name; GtkTreeIter iter = {0}; GtkListStore* _tmp22_; GtkTreeIter _tmp23_ = {0}; GtkListStore* _tmp24_; GtkTreeIter _tmp25_; const gchar* _tmp26_; GdkPixbuf* _tmp27_; g_return_if_fail (self != NULL); g_return_if_fail (folder != NULL); _tmp0_ = self->priv->stock_folder_icon; _tmp1_ = _g_object_ref0 (_tmp0_); icon = _tmp1_; _tmp2_ = self->priv->defined_dirs; _tmp3_ = folder; _tmp4_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp2_, _tmp3_); if (_tmp4_) { GeeHashMap* _tmp5_; const gchar* _tmp6_; gpointer _tmp7_ = NULL; GUserDirectory dir; GUserDirectory _tmp8_; const gchar* _tmp9_ = NULL; gchar* _tmp10_ = NULL; gchar* _tmp11_; GThemedIcon* _tmp12_; GThemedIcon* _tmp13_; GThemedIcon* nautilus_icon; GThemedIcon* _tmp14_; _tmp5_ = self->priv->defined_dirs; _tmp6_ = folder; _tmp7_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp5_, _tmp6_); dir = GPOINTER_TO_INT (_tmp7_); _tmp8_ = dir; _tmp9_ = _g_user_directory_to_string (_tmp8_); _tmp10_ = string_replace (_tmp9_, "G_USER_DIRECTORY_", "NAUTILUS_ICON_FOLDER_"); _tmp11_ = _tmp10_; _tmp12_ = (GThemedIcon*) g_themed_icon_new (_tmp11_); _tmp13_ = _tmp12_; _g_free0 (_tmp11_); nautilus_icon = _tmp13_; _tmp14_ = nautilus_icon; if (_tmp14_ != NULL) { GThemedIcon* _tmp15_; GdkPixbuf* _tmp16_ = NULL; _tmp15_ = nautilus_icon; _tmp16_ = alm_applications_tree_view_get_pixbuf_from_gio_icon ((GIcon*) _tmp15_); _g_object_unref0 (icon); icon = _tmp16_; } _g_object_unref0 (nautilus_icon); } _tmp17_ = folder; _tmp18_ = string_strip (_tmp17_); _tmp19_ = _tmp18_; _tmp20_ = g_path_get_basename (_tmp19_); _tmp21_ = _tmp20_; _g_free0 (_tmp19_); name = _tmp21_; _tmp22_ = self->priv->folder_list_store; gtk_list_store_append (_tmp22_, &_tmp23_); iter = _tmp23_; _tmp24_ = self->priv->folder_list_store; _tmp25_ = iter; _tmp26_ = folder; _tmp27_ = self->priv->stock_folder_icon; gtk_list_store_set (_tmp24_, &_tmp25_, 0, _tmp26_, 1, _tmp27_, 2, name, -1, -1); _g_free0 (name); _g_object_unref0 (icon); } static gboolean alm_files_widget_remove_folder_from_view (AlmFilesWidget* self, const gchar* folder) { gboolean result = FALSE; GtkTreeView* _tmp0_; GtkTreeModel* _tmp1_ = NULL; GtkTreeModel* _tmp2_; GtkTreeModel* model; GtkTreeIter iter = {0}; GtkTreeModel* _tmp3_; GtkTreeIter _tmp4_ = {0}; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (folder != NULL, FALSE); _tmp0_ = self->priv->folder_list; _tmp1_ = gtk_tree_view_get_model (_tmp0_); _tmp2_ = _g_object_ref0 (_tmp1_); model = _tmp2_; _tmp3_ = model; gtk_tree_model_get_iter_first (_tmp3_, &_tmp4_); iter = _tmp4_; while (TRUE) { GValue can_app_value = {0}; GtkTreeModel* _tmp5_; GtkTreeIter _tmp6_; GValue _tmp7_ = {0}; const gchar* _tmp8_ = NULL; gchar* _tmp9_; gchar* cand_folder; const gchar* _tmp10_; const gchar* _tmp11_; GtkTreeModel* _tmp14_; gboolean _tmp15_ = FALSE; gboolean more_entires; gboolean _tmp16_; _tmp5_ = model; _tmp6_ = iter; gtk_tree_model_get_value (_tmp5_, &_tmp6_, 0, &_tmp7_); G_IS_VALUE (&can_app_value) ? (g_value_unset (&can_app_value), NULL) : NULL; can_app_value = _tmp7_; _tmp8_ = g_value_get_string (&can_app_value); _tmp9_ = g_strdup (_tmp8_); cand_folder = _tmp9_; _tmp10_ = folder; _tmp11_ = cand_folder; if (g_strcmp0 (_tmp10_, _tmp11_) == 0) { GtkListStore* _tmp12_; GtkTreeIter _tmp13_; _tmp12_ = self->priv->folder_list_store; _tmp13_ = iter; gtk_list_store_remove (_tmp12_, &_tmp13_); result = TRUE; _g_free0 (cand_folder); G_IS_VALUE (&can_app_value) ? (g_value_unset (&can_app_value), NULL) : NULL; _g_object_unref0 (model); return result; } _tmp14_ = model; _tmp15_ = gtk_tree_model_iter_next (_tmp14_, &iter); more_entires = _tmp15_; _tmp16_ = more_entires; if (!_tmp16_) { result = FALSE; _g_free0 (cand_folder); G_IS_VALUE (&can_app_value) ? (g_value_unset (&can_app_value), NULL) : NULL; _g_object_unref0 (model); return result; } _g_free0 (cand_folder); G_IS_VALUE (&can_app_value) ? (g_value_unset (&can_app_value), NULL) : NULL; } _g_object_unref0 (model); } static void alm_files_widget_class_init (AlmFilesWidgetClass * klass) { alm_files_widget_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (AlmFilesWidgetPrivate)); G_OBJECT_CLASS (klass)->finalize = alm_files_widget_finalize; } static void alm_files_widget_instance_init (AlmFilesWidget * self) { self->priv = ALM_FILES_WIDGET_GET_PRIVATE (self); self->priv->file_type_fire_signal = TRUE; } static void alm_files_widget_finalize (GObject* obj) { AlmFilesWidget * self; self = ALM_FILES_WIDGET (obj); _alm_file_type_blacklist_unref0 (self->priv->files_type_blacklist); _alm_path_blacklist_unref0 (self->priv->path_blacklist); _g_object_unref0 (self->priv->folder_list); _g_object_unref0 (self->priv->folder_list_store); _g_object_unref0 (self->priv->mime_dict); _g_object_unref0 (self->priv->checkboxes); _g_object_unref0 (self->priv->button_list); _g_object_unref0 (self->priv->defined_dirs); _alm_blacklist_unref0 (self->priv->blacklist); _g_object_unref0 (self->priv->icon_theme); _g_object_unref0 (self->priv->stock_folder_icon); G_OBJECT_CLASS (alm_files_widget_parent_class)->finalize (obj); } GType alm_files_widget_get_type (void) { static volatile gsize alm_files_widget_type_id__volatile = 0; if (g_once_init_enter (&alm_files_widget_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (AlmFilesWidgetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) alm_files_widget_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AlmFilesWidget), 0, (GInstanceInitFunc) alm_files_widget_instance_init, NULL }; GType alm_files_widget_type_id; alm_files_widget_type_id = g_type_register_static (GTK_TYPE_BOX, "AlmFilesWidget", &g_define_type_info, 0); g_once_init_leave (&alm_files_widget_type_id__volatile, alm_files_widget_type_id); } return alm_files_widget_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { int i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); } static gint _vala_array_length (gpointer array) { int length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; }