--- /dev/null
+/* ClipLibraryView.c generated by valac, the Vala compiler
+ * generated from ClipLibraryView.vala, do not modify */
+
+/* Copyright 2009-2010 Yorba Foundation
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later). See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <gee.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+#include <float.h>
+#include <math.h>
+#include <gdk/gdk.h>
+#include <gst/gst.h>
+#include <glib/gstdio.h>
+
+
+#define TYPE_CLIP_LIBRARY_VIEW (clip_library_view_get_type ())
+#define CLIP_LIBRARY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryView))
+#define CLIP_LIBRARY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewClass))
+#define IS_CLIP_LIBRARY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_LIBRARY_VIEW))
+#define IS_CLIP_LIBRARY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_LIBRARY_VIEW))
+#define CLIP_LIBRARY_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewClass))
+
+typedef struct _ClipLibraryView ClipLibraryView;
+typedef struct _ClipLibraryViewClass ClipLibraryViewClass;
+typedef struct _ClipLibraryViewPrivate ClipLibraryViewPrivate;
+
+#define MODEL_TYPE_PROJECT (model_project_get_type ())
+#define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject))
+#define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass))
+#define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT))
+#define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT))
+#define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass))
+
+typedef struct _ModelProject ModelProject;
+typedef struct _ModelProjectClass ModelProjectClass;
+
+#define CLIP_LIBRARY_VIEW_TYPE_SORT_MODE (clip_library_view_sort_mode_get_type ())
+
+#define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ())
+#define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem))
+#define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM))
+#define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface))
+
+typedef struct _ModelTimeSystem ModelTimeSystem;
+typedef struct _ModelTimeSystemIface ModelTimeSystemIface;
+
+#define CLIP_LIBRARY_VIEW_TYPE_COLUMN_TYPE (clip_library_view_column_type_get_type ())
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ())
+#define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile))
+#define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
+#define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE))
+#define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE))
+#define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
+
+typedef struct _ModelClipFile ModelClipFile;
+typedef struct _ModelClipFileClass ModelClipFileClass;
+
+#define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ())
+#define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation))
+#define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION))
+#define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface))
+
+typedef struct _ModelTempoInformation ModelTempoInformation;
+typedef struct _ModelTempoInformationIface ModelTempoInformationIface;
+
+#define TYPE_FRACTION (fraction_get_type ())
+typedef struct _Fraction Fraction;
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (gtk_tree_path_free (var), NULL)))
+
+#define LOGGING_TYPE_FACILITY (logging_facility_get_type ())
+
+#define LOGGING_TYPE_LEVEL (logging_level_get_type ())
+
+#define MODEL_TYPE_TRACK (model_track_get_type ())
+#define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack))
+#define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass))
+#define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK))
+#define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK))
+#define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass))
+
+typedef struct _ModelTrack ModelTrack;
+typedef struct _ModelTrackClass ModelTrackClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+typedef struct _ModelProjectPrivate ModelProjectPrivate;
+
+#define TYPE_TIME_CODE (time_code_get_type ())
+typedef struct _TimeCode TimeCode;
+
+#define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ())
+#define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine))
+#define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
+#define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE))
+#define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE))
+#define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
+
+typedef struct _ViewMediaEngine ViewMediaEngine;
+typedef struct _ViewMediaEngineClass ViewMediaEngineClass;
+
+#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ())
+#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader))
+#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
+#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER))
+#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER))
+#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
+
+typedef struct _ModelProjectLoader ModelProjectLoader;
+typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass;
+
+#define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ())
+#define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager))
+#define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
+#define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER))
+#define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER))
+#define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
+
+typedef struct _ModelUndoManager ModelUndoManager;
+typedef struct _ModelUndoManagerClass ModelUndoManagerClass;
+
+#define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ())
+#define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter))
+#define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
+#define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER))
+#define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER))
+#define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
+
+typedef struct _ModelLibraryImporter ModelLibraryImporter;
+typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass;
+#define __g_list_free_gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (_g_list_free_gtk_tree_path_free (var), NULL)))
+typedef struct _ModelClipFilePrivate ModelClipFilePrivate;
+
+#define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ())
+
+struct _ClipLibraryView {
+ GtkEventBox parent_instance;
+ ClipLibraryViewPrivate * priv;
+};
+
+struct _ClipLibraryViewClass {
+ GtkEventBoxClass parent_class;
+};
+
+typedef enum {
+ CLIP_LIBRARY_VIEW_SORT_MODE_NONE,
+ CLIP_LIBRARY_VIEW_SORT_MODE_ABC
+} ClipLibraryViewSortMode;
+
+struct _ModelTimeSystemIface {
+ GTypeInterface parent_iface;
+ void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div);
+ gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x);
+ gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x);
+ gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time);
+ gint64 (*get_pixel_snap_time) (ModelTimeSystem* self);
+ gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time);
+ float (*get_pixel_percentage) (ModelTimeSystem* self);
+ gint (*get_start_token) (ModelTimeSystem* self, gint xsize);
+ gint (*get_next_position) (ModelTimeSystem* self, gint token);
+ gint (*get_pixel_height) (ModelTimeSystem* self, gint token);
+ char* (*get_display_string) (ModelTimeSystem* self, gint token);
+ gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame);
+ gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize);
+ char* (*get_time_string) (ModelTimeSystem* self, gint64 time);
+ char* (*get_time_duration) (ModelTimeSystem* self, gint64 time);
+};
+
+struct _ClipLibraryViewPrivate {
+ ModelProject* project;
+ GtkTreeView* tree_view;
+ GtkTreeSelection* selection;
+ GtkLabel* label;
+ GtkListStore* list_store;
+ gint num_clipfiles;
+ GeeArrayList* files_dragging;
+ GtkIconTheme* icon_theme;
+ GdkPixbuf* default_audio_icon;
+ GdkPixbuf* default_video_icon;
+ GdkPixbuf* default_error_icon;
+ ClipLibraryViewSortMode sort_mode;
+ ModelTimeSystem* time_provider;
+};
+
+typedef enum {
+ CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL,
+ CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME,
+ CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION,
+ CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME
+} ClipLibraryViewColumnType;
+
+struct _Fraction {
+ gint numerator;
+ gint denominator;
+};
+
+struct _ModelTempoInformationIface {
+ GTypeInterface parent_iface;
+ void (*get_time_signature) (ModelTempoInformation* self, Fraction* result);
+ gint (*get_bpm) (ModelTempoInformation* self);
+};
+
+typedef enum {
+ LOGGING_FACILITY_SIGNAL_HANDLERS,
+ LOGGING_FACILITY_DEVELOPER_WARNINGS,
+ LOGGING_FACILITY_GRAPH,
+ LOGGING_FACILITY_LOADING,
+ LOGGING_FACILITY_IMPORT,
+ LOGGING_FACILITY_SINGLEDECODEBIN
+} LoggingFacility;
+
+typedef enum {
+ LOGGING_LEVEL_CRITICAL,
+ LOGGING_LEVEL_HIGH,
+ LOGGING_LEVEL_MEDIUM,
+ LOGGING_LEVEL_LOW,
+ LOGGING_LEVEL_INFO,
+ LOGGING_LEVEL_VERBOSE
+} LoggingLevel;
+
+struct _TimeCode {
+ gint hour;
+ gint minute;
+ gint second;
+ gint frame;
+ gboolean drop_code;
+};
+
+struct _ModelProject {
+ GObject parent_instance;
+ ModelProjectPrivate * priv;
+ GeeArrayList* tracks;
+ GeeArrayList* inactive_tracks;
+ GeeArrayList* clipfiles;
+ ViewMediaEngine* media_engine;
+ char* project_file;
+ ModelProjectLoader* loader;
+ ModelUndoManager* undo_manager;
+ ModelLibraryImporter* importer;
+ Fraction default_framerate;
+ gboolean click_during_play;
+ gboolean click_during_record;
+ double click_volume;
+ gboolean library_visible;
+ gint library_width;
+ gboolean snap_to_clip;
+};
+
+struct _ModelProjectClass {
+ GObjectClass parent_class;
+ void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result);
+ char* (*get_project_file) (ModelProject* self);
+ void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time);
+ void (*add_track) (ModelProject* self, ModelTrack* track);
+ void (*insert_track) (ModelProject* self, gint index, ModelTrack* track);
+ void (*load) (ModelProject* self, const char* fname);
+ void (*save) (ModelProject* self, const char* filename);
+ char* (*get_app_name) (ModelProject* self);
+ void (*load_complete) (ModelProject* self);
+};
+
+struct _ModelClipFile {
+ GObject parent_instance;
+ ModelClipFilePrivate * priv;
+ char* filename;
+ GstCaps* video_caps;
+ GstCaps* audio_caps;
+ GdkPixbuf* thumbnail;
+};
+
+struct _ModelClipFileClass {
+ GObjectClass parent_class;
+};
+
+typedef enum {
+ MODEL_MEDIA_TYPE_AUDIO,
+ MODEL_MEDIA_TYPE_VIDEO
+} ModelMediaType;
+
+
+extern GtkMenu* clip_library_view_context_menu;
+GtkMenu* clip_library_view_context_menu = NULL;
+static gpointer clip_library_view_parent_class = NULL;
+
+GType clip_library_view_get_type (void);
+GType model_project_get_type (void);
+static GType clip_library_view_sort_mode_get_type (void) G_GNUC_UNUSED;
+GType model_time_system_get_type (void);
+#define CLIP_LIBRARY_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CLIP_LIBRARY_VIEW, ClipLibraryViewPrivate))
+enum {
+ CLIP_LIBRARY_VIEW_DUMMY_PROPERTY
+};
+static GType clip_library_view_column_type_get_type (void) G_GNUC_UNUSED;
+static GtkTreeViewColumn* clip_library_view_add_column (ClipLibraryView* self, ClipLibraryViewColumnType c);
+static gint clip_library_view_name_sort (ClipLibraryView* self, GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b);
+static gint _clip_library_view_name_sort_gtk_tree_iter_compare_func (GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b, gpointer self);
+void parse_color (const char* color, GdkColor* result);
+GType model_clip_file_get_type (void);
+static void clip_library_view_on_clipfile_added (ClipLibraryView* self, ModelClipFile* f);
+static void _clip_library_view_on_clipfile_added_model_project_clipfile_added (ModelProject* _sender, ModelClipFile* c, gpointer self);
+void clip_library_view_on_clipfile_removed (ClipLibraryView* self, ModelClipFile* f);
+static void _clip_library_view_on_clipfile_removed_model_project_clipfile_removed (ModelProject* _sender, ModelClipFile* clip_file, gpointer self);
+static void clip_library_view_on_remove_all_rows (ClipLibraryView* self);
+static void _clip_library_view_on_remove_all_rows_model_project_cleared (ModelProject* _sender, gpointer self);
+GType fraction_get_type (void);
+Fraction* fraction_dup (const Fraction* self);
+void fraction_free (Fraction* self);
+GType model_tempo_information_get_type (void);
+static void clip_library_view_on_time_signature_changed (ClipLibraryView* self, Fraction* time_signature);
+static void _clip_library_view_on_time_signature_changed_model_tempo_information_time_signature_changed (ModelTempoInformation* _sender, Fraction* time_signature, gpointer self);
+static void clip_library_view_on_drag_begin (ClipLibraryView* self, GdkDragContext* c);
+static void _clip_library_view_on_drag_begin_gtk_widget_drag_begin (GtkWidget* _sender, GdkDragContext* context, gpointer self);
+static void clip_library_view_on_drag_data_get (ClipLibraryView* self, GdkDragContext* context, GtkSelectionData* data, guint info, guint time);
+static void _clip_library_view_on_drag_data_get_gtk_widget_drag_data_get (GtkWidget* _sender, GdkDragContext* context, GtkSelectionData* selection_data, guint info, guint time_, gpointer self);
+static void clip_library_view_on_cursor_changed (ClipLibraryView* self);
+static void _clip_library_view_on_cursor_changed_gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self);
+static gboolean clip_library_view_on_button_pressed (ClipLibraryView* self, GdkEventButton* b);
+static gboolean _clip_library_view_on_button_pressed_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
+static gboolean clip_library_view_on_button_released (ClipLibraryView* self, GdkEventButton* b);
+static gboolean _clip_library_view_on_button_released_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
+ClipLibraryView* clip_library_view_new (ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions);
+ClipLibraryView* clip_library_view_construct (GType object_type, ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions);
+static GtkTreePath* clip_library_view_find_first_selected (ClipLibraryView* self);
+GType logging_facility_get_type (void);
+GType logging_level_get_type (void);
+void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message);
+gboolean clip_library_view_has_selection (ClipLibraryView* self);
+void clip_library_view_unselect_all (ClipLibraryView* self);
+GType model_track_get_type (void);
+void model_project_create_clip_importer (ModelProject* self, ModelTrack* track, gboolean timeline_add, gint64 time_to_add, gboolean both_tracks, GtkWindow* progress_window_parent, gint number);
+GType time_code_get_type (void);
+TimeCode* time_code_dup (const TimeCode* self);
+void time_code_free (TimeCode* self);
+GType view_media_engine_get_type (void);
+GType model_project_loader_get_type (void);
+gpointer model_undo_manager_ref (gpointer instance);
+void model_undo_manager_unref (gpointer instance);
+GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void model_value_set_undo_manager (GValue* value, gpointer v_object);
+void model_value_take_undo_manager (GValue* value, gpointer v_object);
+gpointer model_value_get_undo_manager (const GValue* value);
+GType model_undo_manager_get_type (void);
+GType model_library_importer_get_type (void);
+void model_library_importer_add_file (ModelLibraryImporter* self, const char* filename, GError** error);
+void model_library_importer_start (ModelLibraryImporter* self, GError** error);
+static void clip_library_view_real_drag_data_received (GtkWidget* base, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time);
+static void _vala_array_add1 (char*** array, int* length, int* size, char* value);
+static void _g_list_free_gtk_tree_path_free (GList* self);
+static gint clip_library_view_get_selected_rows (ClipLibraryView* self, GList** paths);
+gboolean model_clip_file_is_online (ModelClipFile* self);
+GType model_media_type_get_type (void);
+gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t);
+char* isolate_filename (const char* path);
+char* model_time_system_get_time_duration (ModelTimeSystem* self, gint64 time);
+gint64 model_clip_file_get_length (ModelClipFile* self);
+static void clip_library_view_update_iter (ClipLibraryView* self, GtkTreeIter* it, ModelClipFile* clip_file);
+static gint clip_library_view_find_clipfile (ClipLibraryView* self, ModelClipFile* f, GtkTreeIter* iter);
+static gboolean clip_library_view_remove_row (ClipLibraryView* self, GtkTreeIter* it);
+ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename);
+gboolean model_project_clipfile_on_track (ModelProject* self, const char* filename);
+GtkResponseType dialog_utils_delete_cancel (const char* message);
+void model_project_remove_clipfile (ModelProject* self, const char* filename);
+char* model_project_get_audio_path (ModelProject* self);
+GtkResponseType dialog_utils_delete_keep (const char* message);
+void model_undo_manager_reset (ModelUndoManager* self);
+static void clip_library_view_delete_row (ClipLibraryView* self, GtkTreeModel* model, GtkTreePath* path);
+GeeArrayList* clip_library_view_get_selected_files (ClipLibraryView* self);
+void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description);
+void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description);
+void clip_library_view_delete_selection (ClipLibraryView* self);
+void clip_library_view_select_all (ClipLibraryView* self);
+gint stricmp (const char* str1, const char* str2);
+static void clip_library_view_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 int _vala_strcmp0 (const char * str1, const char * str2);
+
+extern const GtkTargetEntry drag_target_entries[1];
+
+
+static GType clip_library_view_sort_mode_get_type (void) {
+ static volatile gsize clip_library_view_sort_mode_type_id__volatile = 0;
+ if (g_once_init_enter (&clip_library_view_sort_mode_type_id__volatile)) {
+ static const GEnumValue values[] = {{CLIP_LIBRARY_VIEW_SORT_MODE_NONE, "CLIP_LIBRARY_VIEW_SORT_MODE_NONE", "none"}, {CLIP_LIBRARY_VIEW_SORT_MODE_ABC, "CLIP_LIBRARY_VIEW_SORT_MODE_ABC", "abc"}, {0, NULL, NULL}};
+ GType clip_library_view_sort_mode_type_id;
+ clip_library_view_sort_mode_type_id = g_enum_register_static ("ClipLibraryViewSortMode", values);
+ g_once_init_leave (&clip_library_view_sort_mode_type_id__volatile, clip_library_view_sort_mode_type_id);
+ }
+ return clip_library_view_sort_mode_type_id__volatile;
+}
+
+
+static GType clip_library_view_column_type_get_type (void) {
+ static volatile gsize clip_library_view_column_type_type_id__volatile = 0;
+ if (g_once_init_enter (&clip_library_view_column_type_type_id__volatile)) {
+ static const GEnumValue values[] = {{CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL", "thumbnail"}, {CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME", "name"}, {CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION", "duration"}, {CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, "CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME", "filename"}, {0, NULL, NULL}};
+ GType clip_library_view_column_type_type_id;
+ clip_library_view_column_type_type_id = g_enum_register_static ("ClipLibraryViewColumnType", values);
+ g_once_init_leave (&clip_library_view_column_type_type_id__volatile, clip_library_view_column_type_type_id);
+ }
+ return clip_library_view_column_type_type_id__volatile;
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+ return self ? g_object_ref (self) : NULL;
+}
+
+
+#line 480 "ClipLibraryView.vala"
+static gint _clip_library_view_name_sort_gtk_tree_iter_compare_func (GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b, gpointer self) {
+#line 422 "ClipLibraryView.c"
+ gint result;
+ result = clip_library_view_name_sort (self, model, a, b);
+ return result;
+}
+
+
+#line 332 "ClipLibraryView.vala"
+static void _clip_library_view_on_clipfile_added_model_project_clipfile_added (ModelProject* _sender, ModelClipFile* c, gpointer self) {
+#line 431 "ClipLibraryView.c"
+ clip_library_view_on_clipfile_added (self, c);
+}
+
+
+#line 372 "ClipLibraryView.vala"
+static void _clip_library_view_on_clipfile_removed_model_project_clipfile_removed (ModelProject* _sender, ModelClipFile* clip_file, gpointer self) {
+#line 438 "ClipLibraryView.c"
+ clip_library_view_on_clipfile_removed (self, clip_file);
+}
+
+
+#line 394 "ClipLibraryView.vala"
+static void _clip_library_view_on_remove_all_rows_model_project_cleared (ModelProject* _sender, gpointer self) {
+#line 445 "ClipLibraryView.c"
+ clip_library_view_on_remove_all_rows (self);
+}
+
+
+#line 406 "ClipLibraryView.vala"
+static void _clip_library_view_on_time_signature_changed_model_tempo_information_time_signature_changed (ModelTempoInformation* _sender, Fraction* time_signature, gpointer self) {
+#line 452 "ClipLibraryView.c"
+ clip_library_view_on_time_signature_changed (self, time_signature);
+}
+
+
+#line 264 "ClipLibraryView.vala"
+static void _clip_library_view_on_drag_begin_gtk_widget_drag_begin (GtkWidget* _sender, GdkDragContext* context, gpointer self) {
+#line 459 "ClipLibraryView.c"
+ clip_library_view_on_drag_begin (self, context);
+}
+
+
+#line 239 "ClipLibraryView.vala"
+static void _clip_library_view_on_drag_data_get_gtk_widget_drag_data_get (GtkWidget* _sender, GdkDragContext* context, GtkSelectionData* selection_data, guint info, guint time_, gpointer self) {
+#line 466 "ClipLibraryView.c"
+ clip_library_view_on_drag_data_get (self, context, selection_data, info, time_);
+}
+
+
+#line 205 "ClipLibraryView.vala"
+static void _clip_library_view_on_cursor_changed_gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) {
+#line 473 "ClipLibraryView.c"
+ clip_library_view_on_cursor_changed (self);
+}
+
+
+#line 124 "ClipLibraryView.vala"
+static gboolean _clip_library_view_on_button_pressed_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
+#line 480 "ClipLibraryView.c"
+ gboolean result;
+ result = clip_library_view_on_button_pressed (self, event);
+ return result;
+}
+
+
+#line 166 "ClipLibraryView.vala"
+static gboolean _clip_library_view_on_button_released_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
+#line 489 "ClipLibraryView.c"
+ gboolean result;
+ result = clip_library_view_on_button_released (self, event);
+ return result;
+}
+
+
+#line 42 "ClipLibraryView.vala"
+ClipLibraryView* clip_library_view_construct (GType object_type, ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions) {
+#line 498 "ClipLibraryView.c"
+ GError * _inner_error_;
+ ClipLibraryView * self;
+ ModelProject* _tmp0_;
+ ModelTimeSystem* _tmp1_;
+ GtkIconTheme* _tmp2_;
+ GtkListStore* _tmp3_;
+ GtkTreeView* _tmp4_;
+ GtkTreeViewColumn* _tmp5_;
+ GtkTreeViewColumn* name_column;
+ GtkTreeViewColumn* _tmp6_;
+ GdkColor _tmp11_;
+ GdkColor _tmp10_ = {0};
+ GdkColor _tmp13_;
+ GdkColor _tmp12_ = {0};
+ GtkTreeSelection* _tmp14_;
+#line 42 "ClipLibraryView.vala"
+ g_return_val_if_fail (MODEL_IS_PROJECT (p), NULL);
+#line 42 "ClipLibraryView.vala"
+ g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (time_provider), NULL);
+#line 518 "ClipLibraryView.c"
+ _inner_error_ = NULL;
+ self = g_object_newv (object_type, 0, NULL);
+#line 44 "ClipLibraryView.vala"
+ gtk_drag_dest_set (GTK_WIDGET (self), GTK_DEST_DEFAULT_ALL, drag_target_entries, G_N_ELEMENTS (drag_target_entries), GDK_ACTION_COPY);
+#line 45 "ClipLibraryView.vala"
+ self->priv->project = (_tmp0_ = _g_object_ref0 (p), _g_object_unref0 (self->priv->project), _tmp0_);
+#line 46 "ClipLibraryView.vala"
+ self->priv->time_provider = (_tmp1_ = _g_object_ref0 (time_provider), _g_object_unref0 (self->priv->time_provider), _tmp1_);
+#line 48 "ClipLibraryView.vala"
+ self->priv->icon_theme = (_tmp2_ = _g_object_ref0 (gtk_icon_theme_get_default ()), _g_object_unref0 (self->priv->icon_theme), _tmp2_);
+#line 50 "ClipLibraryView.vala"
+ self->priv->list_store = (_tmp3_ = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, -1, NULL), _g_object_unref0 (self->priv->list_store), _tmp3_);
+#line 53 "ClipLibraryView.vala"
+ self->priv->tree_view = (_tmp4_ = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new_with_model (GTK_TREE_MODEL (self->priv->list_store))), _g_object_unref0 (self->priv->tree_view), _tmp4_);
+#line 55 "ClipLibraryView.vala"
+ _tmp5_ = clip_library_view_add_column (self, CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL);
+#line 535 "ClipLibraryView.c"
+ _g_object_unref0 (_tmp5_);
+#line 56 "ClipLibraryView.vala"
+ name_column = clip_library_view_add_column (self, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME);
+#line 57 "ClipLibraryView.vala"
+ _tmp6_ = clip_library_view_add_column (self, CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION);
+#line 541 "ClipLibraryView.c"
+ _g_object_unref0 (_tmp6_);
+#line 58 "ClipLibraryView.vala"
+ gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (self->priv->list_store), _clip_library_view_name_sort_gtk_tree_iter_compare_func, g_object_ref (self), g_object_unref);
+#line 59 "ClipLibraryView.vala"
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (self->priv->list_store), gtk_tree_view_column_get_sort_column_id (name_column), GTK_SORT_ASCENDING);
+#line 61 "ClipLibraryView.vala"
+ self->priv->num_clipfiles = 0;
+#line 62 "ClipLibraryView.vala"
+ if (drag_message != NULL) {
+#line 551 "ClipLibraryView.c"
+ GtkLabel* _tmp7_;
+ GdkColor _tmp9_;
+ GdkColor _tmp8_ = {0};
+#line 63 "ClipLibraryView.vala"
+ self->priv->label = (_tmp7_ = g_object_ref_sink ((GtkLabel*) gtk_label_new (drag_message)), _g_object_unref0 (self->priv->label), _tmp7_);
+#line 64 "ClipLibraryView.vala"
+ gtk_widget_modify_fg (GTK_WIDGET (self->priv->label), GTK_STATE_NORMAL, (_tmp9_ = (parse_color ("#fff", &_tmp8_), _tmp8_), &_tmp9_));
+#line 559 "ClipLibraryView.c"
+ }
+#line 67 "ClipLibraryView.vala"
+ gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, (_tmp11_ = (parse_color ("#444", &_tmp10_), _tmp10_), &_tmp11_));
+#line 68 "ClipLibraryView.vala"
+ gtk_widget_modify_base (GTK_WIDGET (self->priv->tree_view), GTK_STATE_NORMAL, (_tmp13_ = (parse_color ("#444", &_tmp12_), _tmp12_), &_tmp13_));
+#line 70 "ClipLibraryView.vala"
+ gtk_tree_view_set_headers_visible (self->priv->tree_view, FALSE);
+#line 71 "ClipLibraryView.vala"
+ g_signal_connect_object (self->priv->project, "clipfile-added", (GCallback) _clip_library_view_on_clipfile_added_model_project_clipfile_added, self, 0);
+#line 72 "ClipLibraryView.vala"
+ g_signal_connect_object (self->priv->project, "clipfile-removed", (GCallback) _clip_library_view_on_clipfile_removed_model_project_clipfile_removed, self, 0);
+#line 73 "ClipLibraryView.vala"
+ g_signal_connect_object (self->priv->project, "cleared", (GCallback) _clip_library_view_on_remove_all_rows_model_project_cleared, self, 0);
+#line 74 "ClipLibraryView.vala"
+ g_signal_connect_object (MODEL_TEMPO_INFORMATION (self->priv->project), "time-signature-changed", (GCallback) _clip_library_view_on_time_signature_changed_model_tempo_information_time_signature_changed, self, 0);
+#line 76 "ClipLibraryView.vala"
+ gtk_drag_source_set (GTK_WIDGET (self->priv->tree_view), GDK_BUTTON1_MASK, drag_target_entries, G_N_ELEMENTS (drag_target_entries), actions);
+#line 77 "ClipLibraryView.vala"
+ g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "drag-begin", (GCallback) _clip_library_view_on_drag_begin_gtk_widget_drag_begin, self, 0);
+#line 78 "ClipLibraryView.vala"
+ g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "drag-data-get", (GCallback) _clip_library_view_on_drag_data_get_gtk_widget_drag_data_get, self, 0);
+#line 79 "ClipLibraryView.vala"
+ g_signal_connect_object (self->priv->tree_view, "cursor-changed", (GCallback) _clip_library_view_on_cursor_changed_gtk_tree_view_cursor_changed, self, 0);
+#line 81 "ClipLibraryView.vala"
+ self->priv->selection = (_tmp14_ = _g_object_ref0 (gtk_tree_view_get_selection (self->priv->tree_view)), _g_object_unref0 (self->priv->selection), _tmp14_);
+#line 82 "ClipLibraryView.vala"
+ gtk_tree_selection_set_mode (self->priv->selection, GTK_SELECTION_MULTIPLE);
+#line 83 "ClipLibraryView.vala"
+ if (self->priv->label != NULL) {
+#line 84 "ClipLibraryView.vala"
+ gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->label));
+#line 591 "ClipLibraryView.c"
+ }
+#line 92 "ClipLibraryView.vala"
+ g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "button-press-event", (GCallback) _clip_library_view_on_button_pressed_gtk_widget_button_press_event, self, 0);
+#line 93 "ClipLibraryView.vala"
+ g_signal_connect_object (GTK_WIDGET (self->priv->tree_view), "button-release-event", (GCallback) _clip_library_view_on_button_released_gtk_widget_button_release_event, self, 0);
+#line 597 "ClipLibraryView.c"
+ {
+ GdkPixbuf* _tmp15_;
+ GdkPixbuf* _tmp16_;
+ GdkPixbuf* _tmp17_;
+ GdkPixbuf* _tmp18_;
+ GdkPixbuf* _tmp19_;
+ GdkPixbuf* _tmp20_;
+#line 97 "ClipLibraryView.vala"
+ _tmp15_ = gtk_icon_theme_load_icon (self->priv->icon_theme, "audio-x-generic", 32, (GtkIconLookupFlags) 0, &_inner_error_);
+#line 607 "ClipLibraryView.c"
+ if (_inner_error_ != NULL) {
+ goto __catch0_g_error;
+ }
+#line 96 "ClipLibraryView.vala"
+ self->priv->default_audio_icon = (_tmp16_ = _g_object_ref0 (_tmp15_), _g_object_unref0 (self->priv->default_audio_icon), _tmp16_);
+#line 99 "ClipLibraryView.vala"
+ _tmp17_ = gtk_icon_theme_load_icon (self->priv->icon_theme, "video-x-generic", 32, (GtkIconLookupFlags) 0, &_inner_error_);
+#line 615 "ClipLibraryView.c"
+ if (_inner_error_ != NULL) {
+ goto __catch0_g_error;
+ }
+#line 98 "ClipLibraryView.vala"
+ self->priv->default_video_icon = (_tmp18_ = _g_object_ref0 (_tmp17_), _g_object_unref0 (self->priv->default_video_icon), _tmp18_);
+#line 101 "ClipLibraryView.vala"
+ _tmp19_ = gtk_icon_theme_load_icon (self->priv->icon_theme, "error", 32, (GtkIconLookupFlags) 0, &_inner_error_);
+#line 623 "ClipLibraryView.c"
+ if (_inner_error_ != NULL) {
+ goto __catch0_g_error;
+ }
+#line 100 "ClipLibraryView.vala"
+ self->priv->default_error_icon = (_tmp20_ = _g_object_ref0 (_tmp19_), _g_object_unref0 (self->priv->default_error_icon), _tmp20_);
+#line 629 "ClipLibraryView.c"
+ }
+ goto __finally0;
+ __catch0_g_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+ _g_error_free0 (e);
+ }
+ }
+ __finally0:
+ if (_inner_error_ != NULL) {
+ _g_object_unref0 (name_column);
+ 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;
+ }
+#line 106 "ClipLibraryView.vala"
+ self->priv->sort_mode = CLIP_LIBRARY_VIEW_SORT_MODE_ABC;
+#line 650 "ClipLibraryView.c"
+ _g_object_unref0 (name_column);
+ return self;
+}
+
+
+#line 42 "ClipLibraryView.vala"
+ClipLibraryView* clip_library_view_new (ModelProject* p, ModelTimeSystem* time_provider, const char* drag_message, GdkDragAction actions) {
+#line 42 "ClipLibraryView.vala"
+ return clip_library_view_construct (TYPE_CLIP_LIBRARY_VIEW, p, time_provider, drag_message, actions);
+#line 660 "ClipLibraryView.c"
+}
+
+
+#line 109 "ClipLibraryView.vala"
+static GtkTreePath* clip_library_view_find_first_selected (ClipLibraryView* self) {
+#line 666 "ClipLibraryView.c"
+ GtkTreePath* result = NULL;
+ GtkTreeIter it = {0};
+ GtkTreeModel* model;
+ gboolean b;
+#line 109 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), NULL);
+#line 111 "ClipLibraryView.vala"
+ model = _g_object_ref0 (gtk_tree_view_get_model (self->priv->tree_view));
+#line 113 "ClipLibraryView.vala"
+ b = gtk_tree_model_get_iter_first (model, &it);
+#line 114 "ClipLibraryView.vala"
+ while (TRUE) {
+#line 679 "ClipLibraryView.c"
+ GtkTreePath* path;
+#line 114 "ClipLibraryView.vala"
+ if (!b) {
+#line 114 "ClipLibraryView.vala"
+ break;
+#line 685 "ClipLibraryView.c"
+ }
+#line 115 "ClipLibraryView.vala"
+ path = gtk_tree_model_get_path (model, &it);
+#line 116 "ClipLibraryView.vala"
+ if (gtk_tree_selection_path_is_selected (self->priv->selection, path)) {
+#line 691 "ClipLibraryView.c"
+ result = path;
+ _g_object_unref0 (model);
+#line 117 "ClipLibraryView.vala"
+ return result;
+#line 696 "ClipLibraryView.c"
+ }
+#line 119 "ClipLibraryView.vala"
+ b = gtk_tree_model_iter_next (model, &it);
+#line 700 "ClipLibraryView.c"
+ _gtk_tree_path_free0 (path);
+ }
+ result = NULL;
+ _g_object_unref0 (model);
+#line 121 "ClipLibraryView.vala"
+ return result;
+#line 707 "ClipLibraryView.c"
+}
+
+
+#line 124 "ClipLibraryView.vala"
+static gboolean clip_library_view_on_button_pressed (ClipLibraryView* self, GdkEventButton* b) {
+#line 713 "ClipLibraryView.c"
+ gboolean result = FALSE;
+ GtkTreePath* path;
+ gint cell_x = 0;
+ gint cell_y = 0;
+ GtkTreePath* _tmp1_;
+ GtkTreePath* _tmp0_ = NULL;
+ gboolean shift_pressed;
+ gboolean control_pressed;
+ gboolean _tmp2_ = FALSE;
+#line 124 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE);
+#line 125 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_button_pressed");
+#line 727 "ClipLibraryView.c"
+ path = NULL;
+#line 131 "ClipLibraryView.vala"
+ gtk_tree_view_get_path_at_pos (self->priv->tree_view, (gint) (*b).x, (gint) (*b).y, &_tmp0_, NULL, &cell_x, &cell_y);
+#line 131 "ClipLibraryView.vala"
+ path = (_tmp1_ = _tmp0_, _gtk_tree_path_free0 (path), _tmp1_);
+#line 133 "ClipLibraryView.vala"
+ if (path == NULL) {
+#line 134 "ClipLibraryView.vala"
+ gtk_tree_selection_unselect_all (self->priv->selection);
+#line 737 "ClipLibraryView.c"
+ result = TRUE;
+ _gtk_tree_path_free0 (path);
+#line 135 "ClipLibraryView.vala"
+ return result;
+#line 742 "ClipLibraryView.c"
+ }
+#line 138 "ClipLibraryView.vala"
+ shift_pressed = ((*b).state & GDK_SHIFT_MASK) != 0;
+#line 139 "ClipLibraryView.vala"
+ control_pressed = ((*b).state & GDK_CONTROL_MASK) != 0;
+#line 141 "ClipLibraryView.vala"
+ if (!control_pressed) {
+#line 142 "ClipLibraryView.vala"
+ _tmp2_ = !shift_pressed;
+#line 752 "ClipLibraryView.c"
+ } else {
+#line 141 "ClipLibraryView.vala"
+ _tmp2_ = FALSE;
+#line 756 "ClipLibraryView.c"
+ }
+#line 141 "ClipLibraryView.vala"
+ if (_tmp2_) {
+#line 143 "ClipLibraryView.vala"
+ if (!gtk_tree_selection_path_is_selected (self->priv->selection, path)) {
+#line 144 "ClipLibraryView.vala"
+ gtk_tree_selection_unselect_all (self->priv->selection);
+#line 764 "ClipLibraryView.c"
+ }
+ } else {
+#line 146 "ClipLibraryView.vala"
+ if (shift_pressed) {
+#line 769 "ClipLibraryView.c"
+ GtkTreePath* first;
+#line 147 "ClipLibraryView.vala"
+ first = clip_library_view_find_first_selected (self);
+#line 149 "ClipLibraryView.vala"
+ if (first != NULL) {
+#line 150 "ClipLibraryView.vala"
+ gtk_tree_selection_select_range (self->priv->selection, first, path);
+#line 777 "ClipLibraryView.c"
+ }
+ _gtk_tree_path_free0 (first);
+ }
+ }
+#line 153 "ClipLibraryView.vala"
+ gtk_tree_selection_select_path (self->priv->selection, path);
+#line 155 "ClipLibraryView.vala"
+ if ((*b).button == 3) {
+#line 156 "ClipLibraryView.vala"
+ g_signal_emit_by_name (self, "selection-changed", TRUE);
+#line 157 "ClipLibraryView.vala"
+ gtk_menu_shell_select_first (GTK_MENU_SHELL (clip_library_view_context_menu), TRUE);
+#line 158 "ClipLibraryView.vala"
+ gtk_menu_popup (clip_library_view_context_menu, NULL, NULL, NULL, NULL, (guint) 0, (*b).time);
+#line 792 "ClipLibraryView.c"
+ } else {
+#line 160 "ClipLibraryView.vala"
+ gtk_menu_popdown (clip_library_view_context_menu);
+#line 796 "ClipLibraryView.c"
+ }
+ result = TRUE;
+ _gtk_tree_path_free0 (path);
+#line 163 "ClipLibraryView.vala"
+ return result;
+#line 802 "ClipLibraryView.c"
+}
+
+
+#line 166 "ClipLibraryView.vala"
+static gboolean clip_library_view_on_button_released (ClipLibraryView* self, GdkEventButton* b) {
+#line 808 "ClipLibraryView.c"
+ gboolean result = FALSE;
+ GtkTreePath* path;
+ GtkTreeViewColumn* column;
+ gint cell_x = 0;
+ gint cell_y = 0;
+ GtkTreeViewColumn* _tmp3_;
+ GtkTreeViewColumn* _tmp2_ = NULL;
+ GtkTreePath* _tmp1_;
+ GtkTreePath* _tmp0_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ gboolean shift_pressed;
+ gboolean control_pressed;
+ gboolean _tmp6_ = FALSE;
+#line 166 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE);
+#line 167 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_button_released");
+#line 826 "ClipLibraryView.c"
+ path = NULL;
+ column = NULL;
+#line 174 "ClipLibraryView.vala"
+ (gtk_tree_view_get_path_at_pos (self->priv->tree_view, (gint) (*b).x, (gint) (*b).y, &_tmp0_, &_tmp2_, &cell_x, &cell_y), path = (_tmp1_ = _tmp0_, _gtk_tree_path_free0 (path), _tmp1_));
+#line 174 "ClipLibraryView.vala"
+ column = (_tmp3_ = _g_object_ref0 (_tmp2_), _g_object_unref0 (column), _tmp3_);
+#line 185 "ClipLibraryView.vala"
+ if (path == NULL) {
+#line 185 "ClipLibraryView.vala"
+ _tmp4_ = TRUE;
+#line 837 "ClipLibraryView.c"
+ } else {
+ gboolean _tmp5_ = FALSE;
+#line 186 "ClipLibraryView.vala"
+ if (cell_x == 0) {
+#line 186 "ClipLibraryView.vala"
+ _tmp5_ = cell_y == 0;
+#line 844 "ClipLibraryView.c"
+ } else {
+#line 186 "ClipLibraryView.vala"
+ _tmp5_ = FALSE;
+#line 848 "ClipLibraryView.c"
+ }
+#line 186 "ClipLibraryView.vala"
+ _tmp4_ = _tmp5_;
+#line 852 "ClipLibraryView.c"
+ }
+#line 185 "ClipLibraryView.vala"
+ if (_tmp4_) {
+#line 187 "ClipLibraryView.vala"
+ g_signal_emit_by_name (self, "selection-changed", FALSE);
+#line 858 "ClipLibraryView.c"
+ result = TRUE;
+ _gtk_tree_path_free0 (path);
+ _g_object_unref0 (column);
+#line 188 "ClipLibraryView.vala"
+ return result;
+#line 864 "ClipLibraryView.c"
+ }
+#line 191 "ClipLibraryView.vala"
+ shift_pressed = ((*b).state & GDK_SHIFT_MASK) != 0;
+#line 192 "ClipLibraryView.vala"
+ control_pressed = ((*b).state & GDK_CONTROL_MASK) != 0;
+#line 194 "ClipLibraryView.vala"
+ if (!control_pressed) {
+#line 195 "ClipLibraryView.vala"
+ _tmp6_ = !shift_pressed;
+#line 874 "ClipLibraryView.c"
+ } else {
+#line 194 "ClipLibraryView.vala"
+ _tmp6_ = FALSE;
+#line 878 "ClipLibraryView.c"
+ }
+#line 194 "ClipLibraryView.vala"
+ if (_tmp6_) {
+#line 196 "ClipLibraryView.vala"
+ if (gtk_tree_selection_path_is_selected (self->priv->selection, path)) {
+#line 197 "ClipLibraryView.vala"
+ gtk_tree_selection_unselect_all (self->priv->selection);
+#line 886 "ClipLibraryView.c"
+ }
+ }
+#line 199 "ClipLibraryView.vala"
+ gtk_tree_selection_select_path (self->priv->selection, path);
+#line 200 "ClipLibraryView.vala"
+ g_signal_emit_by_name (self, "selection-changed", TRUE);
+#line 893 "ClipLibraryView.c"
+ result = TRUE;
+ _gtk_tree_path_free0 (path);
+ _g_object_unref0 (column);
+#line 202 "ClipLibraryView.vala"
+ return result;
+#line 899 "ClipLibraryView.c"
+}
+
+
+#line 205 "ClipLibraryView.vala"
+static void clip_library_view_on_cursor_changed (ClipLibraryView* self) {
+#line 205 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 206 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_cursor_changed");
+#line 207 "ClipLibraryView.vala"
+ g_signal_emit_by_name (self, "selection-changed", clip_library_view_has_selection (self));
+#line 911 "ClipLibraryView.c"
+}
+
+
+#line 210 "ClipLibraryView.vala"
+void clip_library_view_unselect_all (ClipLibraryView* self) {
+#line 210 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 211 "ClipLibraryView.vala"
+ gtk_tree_selection_unselect_all (self->priv->selection);
+#line 212 "ClipLibraryView.vala"
+ g_signal_emit_by_name (self, "selection-changed", FALSE);
+#line 923 "ClipLibraryView.c"
+}
+
+
+#line 215 "ClipLibraryView.vala"
+static void clip_library_view_real_drag_data_received (GtkWidget* base, GdkDragContext* context, gint x, gint y, GtkSelectionData* selection_data, guint drag_info, guint time) {
+#line 929 "ClipLibraryView.c"
+ ClipLibraryView * self;
+ GError * _inner_error_;
+ char** _tmp1_;
+ gint _a_size_;
+ gint a_length1;
+ char** _tmp0_;
+ char** a;
+ self = CLIP_LIBRARY_VIEW (base);
+#line 215 "ClipLibraryView.vala"
+ g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
+#line 215 "ClipLibraryView.vala"
+ g_return_if_fail (selection_data != NULL);
+#line 942 "ClipLibraryView.c"
+ _inner_error_ = NULL;
+#line 218 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drag_data_received");
+#line 946 "ClipLibraryView.c"
+ a = (_tmp1_ = _tmp0_ = gtk_selection_data_get_uris (selection_data), a_length1 = _vala_array_length (_tmp0_), _a_size_ = a_length1, _tmp1_);
+#line 220 "ClipLibraryView.vala"
+ gtk_drag_finish (context, TRUE, FALSE, (guint32) time);
+#line 222 "ClipLibraryView.vala"
+ model_project_create_clip_importer (self->priv->project, NULL, FALSE, (gint64) 0, FALSE, GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))), a_length1);
+#line 952 "ClipLibraryView.c"
+ {
+ {
+ char** s_collection;
+ int s_collection_length1;
+ int s_it;
+#line 225 "ClipLibraryView.vala"
+ s_collection = a;
+#line 960 "ClipLibraryView.c"
+ s_collection_length1 = a_length1;
+ for (s_it = 0; s_it < a_length1; s_it = s_it + 1) {
+ char* s;
+ s = g_strdup (s_collection[s_it]);
+ {
+ char* filename;
+ filename = NULL;
+ {
+ char* _tmp2_;
+ char* _tmp3_;
+#line 228 "ClipLibraryView.vala"
+ _tmp2_ = g_filename_from_uri (s, NULL, &_inner_error_);
+#line 973 "ClipLibraryView.c"
+ if (_inner_error_ != NULL) {
+ if (_inner_error_->domain == G_CONVERT_ERROR) {
+ goto __catch2_g_convert_error;
+ }
+ _g_free0 (s);
+ _g_free0 (filename);
+ a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL);
+ 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;
+ }
+#line 228 "ClipLibraryView.vala"
+ filename = (_tmp3_ = _tmp2_, _g_free0 (filename), _tmp3_);
+#line 987 "ClipLibraryView.c"
+ }
+ goto __finally2;
+ __catch2_g_convert_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+ _g_error_free0 (e);
+ _g_free0 (s);
+ _g_free0 (filename);
+#line 229 "ClipLibraryView.vala"
+ continue;
+#line 1001 "ClipLibraryView.c"
+ }
+ }
+ __finally2:
+ if (_inner_error_ != NULL) {
+ _g_free0 (s);
+ _g_free0 (filename);
+ goto __catch1_g_error;
+ }
+#line 230 "ClipLibraryView.vala"
+ model_library_importer_add_file (self->priv->project->importer, filename, &_inner_error_);
+#line 1012 "ClipLibraryView.c"
+ if (_inner_error_ != NULL) {
+ _g_free0 (s);
+ _g_free0 (filename);
+ goto __catch1_g_error;
+ }
+ _g_free0 (s);
+ _g_free0 (filename);
+ }
+ }
+ }
+#line 232 "ClipLibraryView.vala"
+ model_library_importer_start (self->priv->project->importer, &_inner_error_);
+#line 1025 "ClipLibraryView.c"
+ if (_inner_error_ != NULL) {
+ goto __catch1_g_error;
+ }
+ }
+ goto __finally1;
+ __catch1_g_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+#line 234 "ClipLibraryView.vala"
+ g_signal_emit_by_name (self->priv->project, "error-occurred", "Error importing", e->message);
+#line 1039 "ClipLibraryView.c"
+ _g_error_free0 (e);
+ }
+ }
+ __finally1:
+ if (_inner_error_ != NULL) {
+ a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), 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;
+ }
+ a = (_vala_array_free (a, a_length1, (GDestroyNotify) g_free), NULL);
+}
+
+
+static void _vala_array_add1 (char*** array, int* length, int* size, char* value) {
+ if ((*length) == (*size)) {
+ *size = (*size) ? (2 * (*size)) : 4;
+ *array = g_renew (char*, *array, (*size) + 1);
+ }
+ (*array)[(*length)++] = value;
+ (*array)[*length] = NULL;
+}
+
+
+#line 239 "ClipLibraryView.vala"
+static void clip_library_view_on_drag_data_get (ClipLibraryView* self, GdkDragContext* context, GtkSelectionData* data, guint info, guint time) {
+#line 1066 "ClipLibraryView.c"
+ GError * _inner_error_;
+ char* uri;
+ char** _tmp0_;
+ gint _uri_array_size_;
+ gint uri_array_length1;
+ char** uri_array;
+#line 239 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 239 "ClipLibraryView.vala"
+ g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
+#line 239 "ClipLibraryView.vala"
+ g_return_if_fail (data != NULL);
+#line 1079 "ClipLibraryView.c"
+ _inner_error_ = NULL;
+#line 241 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drag_data_get");
+#line 1083 "ClipLibraryView.c"
+ uri = NULL;
+ uri_array = (_tmp0_ = g_new0 (char*, 0 + 1), uri_array_length1 = 0, _uri_array_size_ = uri_array_length1, _tmp0_);
+ {
+ GeeIterator* _s_it;
+ _s_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->files_dragging));
+#line 245 "ClipLibraryView.vala"
+ while (TRUE) {
+#line 1091 "ClipLibraryView.c"
+ char* s;
+#line 245 "ClipLibraryView.vala"
+ if (!gee_iterator_next (_s_it)) {
+#line 245 "ClipLibraryView.vala"
+ break;
+#line 1097 "ClipLibraryView.c"
+ }
+#line 245 "ClipLibraryView.vala"
+ s = (char*) gee_iterator_get (_s_it);
+#line 1101 "ClipLibraryView.c"
+ {
+ char* _tmp1_;
+ char* _tmp2_;
+#line 247 "ClipLibraryView.vala"
+ _tmp1_ = g_filename_to_uri (s, NULL, &_inner_error_);
+#line 1107 "ClipLibraryView.c"
+ if (_inner_error_ != NULL) {
+ if (_inner_error_->domain == G_CONVERT_ERROR) {
+ goto __catch3_g_convert_error;
+ }
+ _g_free0 (s);
+ _g_object_unref0 (_s_it);
+ _g_free0 (uri);
+ uri_array = (_vala_array_free (uri_array, uri_array_length1, (GDestroyNotify) g_free), NULL);
+ 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;
+ }
+#line 247 "ClipLibraryView.vala"
+ uri = (_tmp2_ = _tmp1_, _g_free0 (uri), _tmp2_);
+#line 1122 "ClipLibraryView.c"
+ }
+ goto __finally3;
+ __catch3_g_convert_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+ char* _tmp3_;
+#line 249 "ClipLibraryView.vala"
+ uri = (_tmp3_ = g_strdup (s), _g_free0 (uri), _tmp3_);
+#line 250 "ClipLibraryView.vala"
+ g_warning ("ClipLibraryView.vala:250: Cannot get URI for %s! (%s)\n", s, e->message);
+#line 1136 "ClipLibraryView.c"
+ _g_error_free0 (e);
+ }
+ }
+ __finally3:
+ if (_inner_error_ != NULL) {
+ _g_free0 (s);
+ _g_object_unref0 (_s_it);
+ _g_free0 (uri);
+ uri_array = (_vala_array_free (uri_array, uri_array_length1, (GDestroyNotify) g_free), 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;
+ }
+#line 252 "ClipLibraryView.vala"
+ _vala_array_add1 (&uri_array, &uri_array_length1, &_uri_array_size_, g_strdup (uri));
+#line 1152 "ClipLibraryView.c"
+ _g_free0 (s);
+ }
+ _g_object_unref0 (_s_it);
+ }
+#line 254 "ClipLibraryView.vala"
+ gtk_selection_data_set_uris (data, uri_array);
+#line 256 "ClipLibraryView.vala"
+ gtk_drag_set_icon_default (context);
+#line 1161 "ClipLibraryView.c"
+ _g_free0 (uri);
+ uri_array = (_vala_array_free (uri_array, uri_array_length1, (GDestroyNotify) g_free), NULL);
+}
+
+
+static void _g_list_free_gtk_tree_path_free (GList* self) {
+ g_list_foreach (self, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (self);
+}
+
+
+#line 259 "ClipLibraryView.vala"
+static gint clip_library_view_get_selected_rows (ClipLibraryView* self, GList** paths) {
+#line 1175 "ClipLibraryView.c"
+ gint result = 0;
+ GList* _tmp0_;
+#line 259 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), 0);
+#line 1180 "ClipLibraryView.c"
+ if (paths != NULL) {
+ *paths = NULL;
+ }
+#line 260 "ClipLibraryView.vala"
+ *paths = (_tmp0_ = gtk_tree_selection_get_selected_rows (self->priv->selection, NULL), __g_list_free_gtk_tree_path_free0 (*paths), _tmp0_);
+#line 1186 "ClipLibraryView.c"
+ result = (gint) g_list_length (*paths);
+#line 261 "ClipLibraryView.vala"
+ return result;
+#line 1190 "ClipLibraryView.c"
+}
+
+
+static gpointer _gtk_tree_path_copy0 (gpointer self) {
+ return self ? gtk_tree_path_copy (self) : NULL;
+}
+
+
+#line 264 "ClipLibraryView.vala"
+static void clip_library_view_on_drag_begin (ClipLibraryView* self, GdkDragContext* c) {
+#line 1201 "ClipLibraryView.c"
+ GList* paths;
+ GList* _tmp2_;
+ gint _tmp1_;
+ GList* _tmp0_ = NULL;
+#line 264 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 264 "ClipLibraryView.vala"
+ g_return_if_fail (GDK_IS_DRAG_CONTEXT (c));
+#line 265 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_drag_begin");
+#line 1212 "ClipLibraryView.c"
+ paths = NULL;
+#line 267 "ClipLibraryView.vala"
+ if ((_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) > 0) {
+#line 1216 "ClipLibraryView.c"
+ gboolean set_pixbuf;
+#line 268 "ClipLibraryView.vala"
+ set_pixbuf = FALSE;
+#line 269 "ClipLibraryView.vala"
+ gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->priv->files_dragging));
+#line 1222 "ClipLibraryView.c"
+ {
+ GList* t_collection;
+ GList* t_it;
+#line 270 "ClipLibraryView.vala"
+ t_collection = paths;
+#line 1228 "ClipLibraryView.c"
+ for (t_it = t_collection; t_it != NULL; t_it = t_it->next) {
+ GtkTreePath* t;
+#line 270 "ClipLibraryView.vala"
+ t = _gtk_tree_path_copy0 ((GtkTreePath*) t_it->data);
+#line 1233 "ClipLibraryView.c"
+ {
+ GtkTreeIter iter = {0};
+ char* filename;
+#line 272 "ClipLibraryView.vala"
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (self->priv->list_store), &iter, t);
+#line 1239 "ClipLibraryView.c"
+ filename = NULL;
+#line 275 "ClipLibraryView.vala"
+ gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1, -1);
+#line 276 "ClipLibraryView.vala"
+ gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->files_dragging), filename);
+#line 278 "ClipLibraryView.vala"
+ if (!set_pixbuf) {
+#line 1247 "ClipLibraryView.c"
+ GdkPixbuf* pixbuf;
+ pixbuf = NULL;
+#line 280 "ClipLibraryView.vala"
+ gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL, &pixbuf, -1, -1);
+#line 282 "ClipLibraryView.vala"
+ gtk_drag_set_icon_pixbuf (c, pixbuf, 0, 0);
+#line 283 "ClipLibraryView.vala"
+ set_pixbuf = TRUE;
+#line 1256 "ClipLibraryView.c"
+ _g_object_unref0 (pixbuf);
+ }
+ _gtk_tree_path_free0 (t);
+ _g_free0 (filename);
+ }
+ }
+ }
+ }
+ __g_list_free_gtk_tree_path_free0 (paths);
+}
+
+
+#line 289 "ClipLibraryView.vala"
+static GtkTreeViewColumn* clip_library_view_add_column (ClipLibraryView* self, ClipLibraryViewColumnType c) {
+#line 1271 "ClipLibraryView.c"
+ GtkTreeViewColumn* result = NULL;
+ GtkTreeViewColumn* column;
+ GtkCellRenderer* renderer;
+#line 289 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), NULL);
+#line 290 "ClipLibraryView.vala"
+ column = g_object_ref_sink (gtk_tree_view_column_new ());
+#line 1279 "ClipLibraryView.c"
+ renderer = NULL;
+#line 293 "ClipLibraryView.vala"
+ if (c == CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL) {
+#line 1283 "ClipLibraryView.c"
+ GtkCellRenderer* _tmp0_;
+#line 294 "ClipLibraryView.vala"
+ renderer = (_tmp0_ = GTK_CELL_RENDERER (g_object_ref_sink ((GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ())), _g_object_unref0 (renderer), _tmp0_);
+#line 1287 "ClipLibraryView.c"
+ } else {
+ GtkCellRenderer* _tmp1_;
+ GdkColor _tmp2_ = {0};
+ GdkColor color;
+#line 296 "ClipLibraryView.vala"
+ renderer = (_tmp1_ = GTK_CELL_RENDERER (g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), _g_object_unref0 (renderer), _tmp1_);
+#line 297 "ClipLibraryView.vala"
+ color = (parse_color ("#FFF", &_tmp2_), _tmp2_);
+#line 298 "ClipLibraryView.vala"
+ g_object_set (G_OBJECT (renderer), "foreground-gdk", &color, NULL);
+#line 1298 "ClipLibraryView.c"
+ }
+#line 301 "ClipLibraryView.vala"
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), renderer, TRUE);
+#line 302 "ClipLibraryView.vala"
+ gtk_tree_view_column_set_resizable (column, TRUE);
+#line 304 "ClipLibraryView.vala"
+ if (c == CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL) {
+#line 305 "ClipLibraryView.vala"
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), renderer, "pixbuf", gtk_tree_view_append_column (self->priv->tree_view, column) - 1);
+#line 1308 "ClipLibraryView.c"
+ } else {
+#line 307 "ClipLibraryView.vala"
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), renderer, "text", gtk_tree_view_append_column (self->priv->tree_view, column) - 1);
+#line 1312 "ClipLibraryView.c"
+ }
+ result = column;
+ _g_object_unref0 (renderer);
+#line 309 "ClipLibraryView.vala"
+ return result;
+#line 1318 "ClipLibraryView.c"
+}
+
+
+#line 312 "ClipLibraryView.vala"
+static void clip_library_view_update_iter (ClipLibraryView* self, GtkTreeIter* it, ModelClipFile* clip_file) {
+#line 1324 "ClipLibraryView.c"
+ GdkPixbuf* icon;
+ char* _tmp5_;
+ char* _tmp4_;
+#line 312 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 312 "ClipLibraryView.vala"
+ g_return_if_fail (MODEL_IS_CLIP_FILE (clip_file));
+#line 1332 "ClipLibraryView.c"
+ icon = NULL;
+#line 315 "ClipLibraryView.vala"
+ if (model_clip_file_is_online (clip_file)) {
+#line 316 "ClipLibraryView.vala"
+ if (clip_file->thumbnail == NULL) {
+#line 1338 "ClipLibraryView.c"
+ GdkPixbuf* _tmp0_;
+ GdkPixbuf* _tmp1_;
+ _tmp0_ = NULL;
+#line 317 "ClipLibraryView.vala"
+ if (model_clip_file_is_of_type (clip_file, MODEL_MEDIA_TYPE_VIDEO)) {
+#line 318 "ClipLibraryView.vala"
+ _tmp0_ = self->priv->default_video_icon;
+#line 1346 "ClipLibraryView.c"
+ } else {
+#line 318 "ClipLibraryView.vala"
+ _tmp0_ = self->priv->default_audio_icon;
+#line 1350 "ClipLibraryView.c"
+ }
+#line 317 "ClipLibraryView.vala"
+ icon = (_tmp1_ = _g_object_ref0 (_tmp0_), _g_object_unref0 (icon), _tmp1_);
+#line 1354 "ClipLibraryView.c"
+ } else {
+ GdkPixbuf* _tmp2_;
+#line 320 "ClipLibraryView.vala"
+ icon = (_tmp2_ = _g_object_ref0 (clip_file->thumbnail), _g_object_unref0 (icon), _tmp2_);
+#line 1359 "ClipLibraryView.c"
+ }
+ } else {
+ GdkPixbuf* _tmp3_;
+#line 323 "ClipLibraryView.vala"
+ icon = (_tmp3_ = _g_object_ref0 (self->priv->default_error_icon), _g_object_unref0 (icon), _tmp3_);
+#line 1365 "ClipLibraryView.c"
+ }
+#line 326 "ClipLibraryView.vala"
+ gtk_list_store_set (self->priv->list_store, it, CLIP_LIBRARY_VIEW_COLUMN_TYPE_THUMBNAIL, icon, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, _tmp4_ = isolate_filename (clip_file->filename), CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION, _tmp5_ = model_time_system_get_time_duration (self->priv->time_provider, model_clip_file_get_length (clip_file)), CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, clip_file->filename, -1, -1);
+#line 1369 "ClipLibraryView.c"
+ _g_free0 (_tmp5_);
+ _g_free0 (_tmp4_);
+ _g_object_unref0 (icon);
+}
+
+
+#line 332 "ClipLibraryView.vala"
+static void clip_library_view_on_clipfile_added (ClipLibraryView* self, ModelClipFile* f) {
+#line 1378 "ClipLibraryView.c"
+ GtkTreeIter it = {0};
+#line 332 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 332 "ClipLibraryView.vala"
+ g_return_if_fail (MODEL_IS_CLIP_FILE (f));
+#line 333 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_file_added");
+#line 336 "ClipLibraryView.vala"
+ if (clip_library_view_find_clipfile (self, f, &it) >= 0) {
+#line 337 "ClipLibraryView.vala"
+ gtk_list_store_remove (self->priv->list_store, &it);
+#line 1390 "ClipLibraryView.c"
+ } else {
+#line 339 "ClipLibraryView.vala"
+ if (self->priv->num_clipfiles == 0) {
+#line 340 "ClipLibraryView.vala"
+ if (self->priv->label != NULL) {
+#line 341 "ClipLibraryView.vala"
+ gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (self->priv->label));
+#line 1398 "ClipLibraryView.c"
+ }
+#line 343 "ClipLibraryView.vala"
+ gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->tree_view));
+#line 344 "ClipLibraryView.vala"
+ gtk_widget_show (GTK_WIDGET (self->priv->tree_view));
+#line 1404 "ClipLibraryView.c"
+ }
+#line 346 "ClipLibraryView.vala"
+ self->priv->num_clipfiles++;
+#line 1408 "ClipLibraryView.c"
+ }
+#line 349 "ClipLibraryView.vala"
+ gtk_list_store_append (self->priv->list_store, &it);
+#line 350 "ClipLibraryView.vala"
+ clip_library_view_update_iter (self, &it, f);
+#line 1414 "ClipLibraryView.c"
+}
+
+
+#line 353 "ClipLibraryView.vala"
+static gint clip_library_view_find_clipfile (ClipLibraryView* self, ModelClipFile* f, GtkTreeIter* iter) {
+#line 1420 "ClipLibraryView.c"
+ gint result = 0;
+ GtkTreeModel* model;
+ gboolean b;
+ gint i;
+#line 353 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), 0);
+#line 353 "ClipLibraryView.vala"
+ g_return_val_if_fail (MODEL_IS_CLIP_FILE (f), 0);
+#line 354 "ClipLibraryView.vala"
+ model = _g_object_ref0 (gtk_tree_view_get_model (self->priv->tree_view));
+#line 356 "ClipLibraryView.vala"
+ b = gtk_tree_model_get_iter_first (model, iter);
+#line 358 "ClipLibraryView.vala"
+ i = 0;
+#line 359 "ClipLibraryView.vala"
+ while (TRUE) {
+#line 1437 "ClipLibraryView.c"
+ char* filename;
+#line 359 "ClipLibraryView.vala"
+ if (!b) {
+#line 359 "ClipLibraryView.vala"
+ break;
+#line 1443 "ClipLibraryView.c"
+ }
+ filename = NULL;
+#line 361 "ClipLibraryView.vala"
+ gtk_tree_model_get (model, iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1);
+#line 363 "ClipLibraryView.vala"
+ if (_vala_strcmp0 (filename, f->filename) == 0) {
+#line 1450 "ClipLibraryView.c"
+ result = i;
+ _g_free0 (filename);
+ _g_object_unref0 (model);
+#line 364 "ClipLibraryView.vala"
+ return result;
+#line 1456 "ClipLibraryView.c"
+ }
+#line 366 "ClipLibraryView.vala"
+ i++;
+#line 367 "ClipLibraryView.vala"
+ b = gtk_tree_model_iter_next (model, iter);
+#line 1462 "ClipLibraryView.c"
+ _g_free0 (filename);
+ }
+ result = -1;
+ _g_object_unref0 (model);
+#line 369 "ClipLibraryView.vala"
+ return result;
+#line 1469 "ClipLibraryView.c"
+}
+
+
+#line 372 "ClipLibraryView.vala"
+void clip_library_view_on_clipfile_removed (ClipLibraryView* self, ModelClipFile* f) {
+#line 1475 "ClipLibraryView.c"
+ GtkTreeIter it = {0};
+#line 372 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 372 "ClipLibraryView.vala"
+ g_return_if_fail (MODEL_IS_CLIP_FILE (f));
+#line 373 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_file_removed");
+#line 376 "ClipLibraryView.vala"
+ if (clip_library_view_find_clipfile (self, f, &it) >= 0) {
+#line 377 "ClipLibraryView.vala"
+ clip_library_view_remove_row (self, &it);
+#line 1487 "ClipLibraryView.c"
+ }
+}
+
+
+#line 381 "ClipLibraryView.vala"
+static gboolean clip_library_view_remove_row (ClipLibraryView* self, GtkTreeIter* it) {
+#line 1494 "ClipLibraryView.c"
+ gboolean result = FALSE;
+ gboolean b;
+#line 381 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE);
+#line 382 "ClipLibraryView.vala"
+ b = gtk_list_store_remove (self->priv->list_store, it);
+#line 383 "ClipLibraryView.vala"
+ self->priv->num_clipfiles--;
+#line 384 "ClipLibraryView.vala"
+ if (self->priv->num_clipfiles == 0) {
+#line 385 "ClipLibraryView.vala"
+ gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (self->priv->tree_view));
+#line 386 "ClipLibraryView.vala"
+ if (self->priv->label != NULL) {
+#line 387 "ClipLibraryView.vala"
+ gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->label));
+#line 388 "ClipLibraryView.vala"
+ gtk_widget_show (GTK_WIDGET (self->priv->label));
+#line 1513 "ClipLibraryView.c"
+ }
+ }
+ result = b;
+#line 391 "ClipLibraryView.vala"
+ return result;
+#line 1519 "ClipLibraryView.c"
+}
+
+
+#line 394 "ClipLibraryView.vala"
+static void clip_library_view_on_remove_all_rows (ClipLibraryView* self) {
+#line 1525 "ClipLibraryView.c"
+ GtkTreeModel* model;
+ GtkTreeIter iter = {0};
+ gboolean b;
+#line 394 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 395 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_remove_all_rows");
+#line 396 "ClipLibraryView.vala"
+ model = _g_object_ref0 (gtk_tree_view_get_model (self->priv->tree_view));
+#line 399 "ClipLibraryView.vala"
+ b = gtk_tree_model_get_iter_first (model, &iter);
+#line 401 "ClipLibraryView.vala"
+ while (TRUE) {
+#line 401 "ClipLibraryView.vala"
+ if (!b) {
+#line 401 "ClipLibraryView.vala"
+ break;
+#line 1543 "ClipLibraryView.c"
+ }
+#line 402 "ClipLibraryView.vala"
+ b = clip_library_view_remove_row (self, &iter);
+#line 1547 "ClipLibraryView.c"
+ }
+ _g_object_unref0 (model);
+}
+
+
+#line 406 "ClipLibraryView.vala"
+static void clip_library_view_on_time_signature_changed (ClipLibraryView* self, Fraction* time_signature) {
+#line 1555 "ClipLibraryView.c"
+ GtkTreeIter iter = {0};
+ gboolean more_items;
+#line 406 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 407 "ClipLibraryView.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_time_signature_changed");
+#line 409 "ClipLibraryView.vala"
+ more_items = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->list_store), &iter);
+#line 410 "ClipLibraryView.vala"
+ while (TRUE) {
+#line 1566 "ClipLibraryView.c"
+ char* filename;
+ ModelClipFile* clip_file;
+ char* _tmp0_;
+#line 410 "ClipLibraryView.vala"
+ if (!more_items) {
+#line 410 "ClipLibraryView.vala"
+ break;
+#line 1574 "ClipLibraryView.c"
+ }
+ filename = NULL;
+#line 412 "ClipLibraryView.vala"
+ gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1, -1);
+#line 413 "ClipLibraryView.vala"
+ clip_file = model_project_find_clipfile (self->priv->project, filename);
+#line 414 "ClipLibraryView.vala"
+ gtk_list_store_set (self->priv->list_store, &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_DURATION, _tmp0_ = model_time_system_get_time_duration (self->priv->time_provider, model_clip_file_get_length (clip_file)), -1, -1);
+#line 1583 "ClipLibraryView.c"
+ _g_free0 (_tmp0_);
+#line 416 "ClipLibraryView.vala"
+ more_items = gtk_tree_model_iter_next (GTK_TREE_MODEL (self->priv->list_store), &iter);
+#line 1587 "ClipLibraryView.c"
+ _g_free0 (filename);
+ _g_object_unref0 (clip_file);
+ }
+}
+
+
+#line 420 "ClipLibraryView.vala"
+static void clip_library_view_delete_row (ClipLibraryView* self, GtkTreeModel* model, GtkTreePath* path) {
+#line 1596 "ClipLibraryView.c"
+ GtkTreeIter it = {0};
+#line 420 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 420 "ClipLibraryView.vala"
+ g_return_if_fail (GTK_IS_TREE_MODEL (model));
+#line 420 "ClipLibraryView.vala"
+ g_return_if_fail (path != NULL);
+#line 422 "ClipLibraryView.vala"
+ if (gtk_tree_model_get_iter (GTK_TREE_MODEL (self->priv->list_store), &it, path)) {
+#line 1606 "ClipLibraryView.c"
+ char* filename;
+ char* _tmp1_;
+ char* _tmp0_;
+ gboolean _tmp2_;
+ filename = NULL;
+#line 424 "ClipLibraryView.vala"
+ gtk_tree_model_get (model, &it, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &filename, -1, -1);
+#line 425 "ClipLibraryView.vala"
+ if (model_project_clipfile_on_track (self->priv->project, filename)) {
+#line 426 "ClipLibraryView.vala"
+ if (dialog_utils_delete_cancel ("Clip is in use. Delete anyway?") != GTK_RESPONSE_YES) {
+#line 1618 "ClipLibraryView.c"
+ _g_free0 (filename);
+#line 428 "ClipLibraryView.vala"
+ return;
+#line 1622 "ClipLibraryView.c"
+ }
+ }
+#line 431 "ClipLibraryView.vala"
+ model_project_remove_clipfile (self->priv->project, filename);
+#line 433 "ClipLibraryView.vala"
+ if ((_tmp2_ = _vala_strcmp0 (_tmp0_ = g_path_get_dirname (filename), _tmp1_ = model_project_get_audio_path (self->priv->project)) == 0, _g_free0 (_tmp1_), _g_free0 (_tmp0_), _tmp2_)) {
+#line 434 "ClipLibraryView.vala"
+ if (dialog_utils_delete_keep ("Delete clip from disk? This action is not undoable.") == GTK_RESPONSE_YES) {
+#line 436 "ClipLibraryView.vala"
+ if (g_unlink (filename) != 0) {
+#line 437 "ClipLibraryView.vala"
+ g_signal_emit_by_name (self->priv->project, "error-occurred", "Could not delete %s", filename);
+#line 1635 "ClipLibraryView.c"
+ }
+#line 439 "ClipLibraryView.vala"
+ model_undo_manager_reset (self->priv->project->undo_manager);
+#line 1639 "ClipLibraryView.c"
+ }
+ }
+ _g_free0 (filename);
+ }
+}
+
+
+#line 445 "ClipLibraryView.vala"
+gboolean clip_library_view_has_selection (ClipLibraryView* self) {
+#line 1649 "ClipLibraryView.c"
+ gboolean result = FALSE;
+ GList* paths;
+ GList* _tmp2_;
+ gint _tmp1_;
+ GList* _tmp0_ = NULL;
+#line 445 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), FALSE);
+#line 1657 "ClipLibraryView.c"
+ paths = NULL;
+ result = (_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) != 0;
+ __g_list_free_gtk_tree_path_free0 (paths);
+#line 447 "ClipLibraryView.vala"
+ return result;
+#line 1663 "ClipLibraryView.c"
+ __g_list_free_gtk_tree_path_free0 (paths);
+}
+
+
+#line 450 "ClipLibraryView.vala"
+GeeArrayList* clip_library_view_get_selected_files (ClipLibraryView* self) {
+#line 1670 "ClipLibraryView.c"
+ GeeArrayList* result = NULL;
+ GList* paths;
+ GeeArrayList* return_value;
+ GList* _tmp2_;
+ gint _tmp1_;
+ GList* _tmp0_ = NULL;
+#line 450 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), NULL);
+#line 1679 "ClipLibraryView.c"
+ paths = NULL;
+#line 452 "ClipLibraryView.vala"
+ return_value = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL);
+#line 453 "ClipLibraryView.vala"
+ if ((_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) != 0) {
+#line 1685 "ClipLibraryView.c"
+ {
+ GList* path_collection;
+ GList* path_it;
+#line 454 "ClipLibraryView.vala"
+ path_collection = paths;
+#line 1691 "ClipLibraryView.c"
+ for (path_it = path_collection; path_it != NULL; path_it = path_it->next) {
+ GtkTreePath* path;
+#line 454 "ClipLibraryView.vala"
+ path = _gtk_tree_path_copy0 ((GtkTreePath*) path_it->data);
+#line 1696 "ClipLibraryView.c"
+ {
+ GtkTreeIter iter = {0};
+#line 456 "ClipLibraryView.vala"
+ if (gtk_tree_model_get_iter (GTK_TREE_MODEL (self->priv->list_store), &iter, path)) {
+#line 1701 "ClipLibraryView.c"
+ char* name;
+ name = NULL;
+#line 458 "ClipLibraryView.vala"
+ gtk_tree_model_get (GTK_TREE_MODEL (self->priv->list_store), &iter, CLIP_LIBRARY_VIEW_COLUMN_TYPE_FILENAME, &name, -1, -1);
+#line 459 "ClipLibraryView.vala"
+ gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (return_value), name);
+#line 1708 "ClipLibraryView.c"
+ _g_free0 (name);
+ }
+ _gtk_tree_path_free0 (path);
+ }
+ }
+ }
+ }
+ result = return_value;
+ __g_list_free_gtk_tree_path_free0 (paths);
+#line 463 "ClipLibraryView.vala"
+ return result;
+#line 1720 "ClipLibraryView.c"
+}
+
+
+#line 466 "ClipLibraryView.vala"
+void clip_library_view_delete_selection (ClipLibraryView* self) {
+#line 1726 "ClipLibraryView.c"
+ GList* paths;
+ GList* _tmp2_;
+ gint _tmp1_;
+ GList* _tmp0_ = NULL;
+#line 466 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 1733 "ClipLibraryView.c"
+ paths = NULL;
+#line 468 "ClipLibraryView.vala"
+ model_undo_manager_start_transaction (self->priv->project->undo_manager, "Delete Clips From Library");
+#line 469 "ClipLibraryView.vala"
+ if ((_tmp1_ = clip_library_view_get_selected_rows (self, &_tmp0_), paths = (_tmp2_ = _tmp0_, __g_list_free_gtk_tree_path_free0 (paths), _tmp2_), _tmp1_) > 0) {
+#line 1739 "ClipLibraryView.c"
+ {
+ gint i;
+#line 470 "ClipLibraryView.vala"
+ i = ((gint) g_list_length (paths)) - 1;
+#line 1744 "ClipLibraryView.c"
+ {
+ gboolean _tmp3_;
+#line 470 "ClipLibraryView.vala"
+ _tmp3_ = TRUE;
+#line 470 "ClipLibraryView.vala"
+ while (TRUE) {
+#line 470 "ClipLibraryView.vala"
+ if (!_tmp3_) {
+#line 470 "ClipLibraryView.vala"
+ i--;
+#line 1755 "ClipLibraryView.c"
+ }
+#line 470 "ClipLibraryView.vala"
+ _tmp3_ = FALSE;
+#line 470 "ClipLibraryView.vala"
+ if (!(i >= 0)) {
+#line 470 "ClipLibraryView.vala"
+ break;
+#line 1763 "ClipLibraryView.c"
+ }
+#line 471 "ClipLibraryView.vala"
+ clip_library_view_delete_row (self, GTK_TREE_MODEL (self->priv->list_store), (GtkTreePath*) g_list_nth_data (paths, (guint) i));
+#line 1767 "ClipLibraryView.c"
+ }
+ }
+ }
+ }
+#line 473 "ClipLibraryView.vala"
+ model_undo_manager_end_transaction (self->priv->project->undo_manager, "Delete Clips From Library");
+#line 1774 "ClipLibraryView.c"
+ __g_list_free_gtk_tree_path_free0 (paths);
+}
+
+
+#line 476 "ClipLibraryView.vala"
+void clip_library_view_select_all (ClipLibraryView* self) {
+#line 476 "ClipLibraryView.vala"
+ g_return_if_fail (IS_CLIP_LIBRARY_VIEW (self));
+#line 477 "ClipLibraryView.vala"
+ gtk_tree_selection_select_all (self->priv->selection);
+#line 1785 "ClipLibraryView.c"
+}
+
+
+#line 480 "ClipLibraryView.vala"
+static gint clip_library_view_name_sort (ClipLibraryView* self, GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b) {
+#line 1791 "ClipLibraryView.c"
+ gint result = 0;
+ char* left;
+ char* right;
+#line 480 "ClipLibraryView.vala"
+ g_return_val_if_fail (IS_CLIP_LIBRARY_VIEW (self), 0);
+#line 480 "ClipLibraryView.vala"
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (model), 0);
+#line 1799 "ClipLibraryView.c"
+ left = NULL;
+ right = NULL;
+#line 483 "ClipLibraryView.vala"
+ gtk_tree_model_get (model, a, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, &left, -1);
+#line 484 "ClipLibraryView.vala"
+ gtk_tree_model_get (model, b, CLIP_LIBRARY_VIEW_COLUMN_TYPE_NAME, &right, -1);
+#line 1806 "ClipLibraryView.c"
+ result = stricmp (left, right);
+ _g_free0 (left);
+ _g_free0 (right);
+#line 485 "ClipLibraryView.vala"
+ return result;
+#line 1812 "ClipLibraryView.c"
+}
+
+
+static void clip_library_view_class_init (ClipLibraryViewClass * klass) {
+ clip_library_view_parent_class = g_type_class_peek_parent (klass);
+ g_type_class_add_private (klass, sizeof (ClipLibraryViewPrivate));
+ GTK_WIDGET_CLASS (klass)->drag_data_received = clip_library_view_real_drag_data_received;
+ G_OBJECT_CLASS (klass)->finalize = clip_library_view_finalize;
+ g_signal_new ("selection_changed", TYPE_CLIP_LIBRARY_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+}
+
+
+static void clip_library_view_instance_init (ClipLibraryView * self) {
+ self->priv = CLIP_LIBRARY_VIEW_GET_PRIVATE (self);
+ self->priv->label = NULL;
+ self->priv->files_dragging = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL);
+}
+
+
+static void clip_library_view_finalize (GObject* obj) {
+ ClipLibraryView * self;
+ self = CLIP_LIBRARY_VIEW (obj);
+ _g_object_unref0 (self->priv->project);
+ _g_object_unref0 (self->priv->tree_view);
+ _g_object_unref0 (self->priv->selection);
+ _g_object_unref0 (self->priv->label);
+ _g_object_unref0 (self->priv->list_store);
+ _g_object_unref0 (self->priv->files_dragging);
+ _g_object_unref0 (self->priv->icon_theme);
+ _g_object_unref0 (self->priv->default_audio_icon);
+ _g_object_unref0 (self->priv->default_video_icon);
+ _g_object_unref0 (self->priv->default_error_icon);
+ _g_object_unref0 (self->priv->time_provider);
+ G_OBJECT_CLASS (clip_library_view_parent_class)->finalize (obj);
+}
+
+
+GType clip_library_view_get_type (void) {
+ static volatile gsize clip_library_view_type_id__volatile = 0;
+ if (g_once_init_enter (&clip_library_view_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ClipLibraryViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) clip_library_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ClipLibraryView), 0, (GInstanceInitFunc) clip_library_view_instance_init, NULL };
+ GType clip_library_view_type_id;
+ clip_library_view_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "ClipLibraryView", &g_define_type_info, 0);
+ g_once_init_leave (&clip_library_view_type_id__volatile, clip_library_view_type_id);
+ }
+ return clip_library_view_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;
+}
+
+
+static int _vala_strcmp0 (const char * str1, const char * str2) {
+ if (str1 == NULL) {
+ return -(str1 != str2);
+ }
+ if (str2 == NULL) {
+ return str1 != str2;
+ }
+ return strcmp (str1, str2);
+}
+
+
+
+