1 /* project.c generated by valac, the Vala compiler
2 * generated from project.vala, do not modify */
4 /* Copyright 2009-2010 Yorba Foundation
6 * This software is licensed under the GNU Lesser General Public License
7 * (version 2.1 or later). See the COPYING file in this distribution.
11 #include <glib-object.h>
18 #include <gdk-pixbuf/gdk-pixdata.h>
25 #define MODEL_TYPE_LOADER_HANDLER (model_loader_handler_get_type ())
26 #define MODEL_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandler))
27 #define MODEL_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass))
28 #define MODEL_IS_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LOADER_HANDLER))
29 #define MODEL_IS_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LOADER_HANDLER))
30 #define MODEL_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass))
32 typedef struct _ModelLoaderHandler ModelLoaderHandler;
33 typedef struct _ModelLoaderHandlerClass ModelLoaderHandlerClass;
34 typedef struct _ModelLoaderHandlerPrivate ModelLoaderHandlerPrivate;
36 #define MODEL_TYPE_MEDIA_LOADER_HANDLER (model_media_loader_handler_get_type ())
37 #define MODEL_MEDIA_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandler))
38 #define MODEL_MEDIA_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerClass))
39 #define MODEL_IS_MEDIA_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER))
40 #define MODEL_IS_MEDIA_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_MEDIA_LOADER_HANDLER))
41 #define MODEL_MEDIA_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerClass))
43 typedef struct _ModelMediaLoaderHandler ModelMediaLoaderHandler;
44 typedef struct _ModelMediaLoaderHandlerClass ModelMediaLoaderHandlerClass;
45 typedef struct _ModelMediaLoaderHandlerPrivate ModelMediaLoaderHandlerPrivate;
47 #define MODEL_TYPE_PROJECT (model_project_get_type ())
48 #define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject))
49 #define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass))
50 #define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT))
51 #define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT))
52 #define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass))
54 typedef struct _ModelProject ModelProject;
55 typedef struct _ModelProjectClass ModelProjectClass;
57 #define MODEL_TYPE_TRACK (model_track_get_type ())
58 #define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack))
59 #define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass))
60 #define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK))
61 #define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK))
62 #define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass))
64 typedef struct _ModelTrack ModelTrack;
65 typedef struct _ModelTrackClass ModelTrackClass;
67 #define MODEL_TYPE_FETCHER (model_fetcher_get_type ())
68 #define MODEL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER, ModelFetcher))
69 #define MODEL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER, ModelFetcherClass))
70 #define MODEL_IS_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER))
71 #define MODEL_IS_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER))
72 #define MODEL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER, ModelFetcherClass))
74 typedef struct _ModelFetcher ModelFetcher;
75 typedef struct _ModelFetcherClass ModelFetcherClass;
77 #define MODEL_TYPE_CLIP_FETCHER (model_clip_fetcher_get_type ())
78 #define MODEL_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcher))
79 #define MODEL_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass))
80 #define MODEL_IS_CLIP_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FETCHER))
81 #define MODEL_IS_CLIP_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FETCHER))
82 #define MODEL_CLIP_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FETCHER, ModelClipFetcherClass))
84 typedef struct _ModelClipFetcher ModelClipFetcher;
85 typedef struct _ModelClipFetcherClass ModelClipFetcherClass;
86 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
87 #define _g_free0(var) (var = (g_free (var), NULL))
89 #define TYPE_FRACTION (fraction_get_type ())
90 typedef struct _Fraction Fraction;
92 #define MODEL_TYPE_AUDIO_TRACK (model_audio_track_get_type ())
93 #define MODEL_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrack))
94 #define MODEL_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass))
95 #define MODEL_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_TRACK))
96 #define MODEL_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_TRACK))
97 #define MODEL_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_TRACK, ModelAudioTrackClass))
99 typedef struct _ModelAudioTrack ModelAudioTrack;
100 typedef struct _ModelAudioTrackClass ModelAudioTrackClass;
102 #define MODEL_TYPE_VIDEO_TRACK (model_video_track_get_type ())
103 #define MODEL_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrack))
104 #define MODEL_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass))
105 #define MODEL_IS_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_TRACK))
106 #define MODEL_IS_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_TRACK))
107 #define MODEL_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass))
109 typedef struct _ModelVideoTrack ModelVideoTrack;
110 typedef struct _ModelVideoTrackClass ModelVideoTrackClass;
111 typedef struct _ModelFetcherPrivate ModelFetcherPrivate;
113 #define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ())
114 #define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile))
115 #define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
116 #define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE))
117 #define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE))
118 #define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
120 typedef struct _ModelClipFile ModelClipFile;
121 typedef struct _ModelClipFileClass ModelClipFileClass;
123 #define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ())
125 #define MODEL_TYPE_CLIP (model_clip_get_type ())
126 #define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip))
127 #define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass))
128 #define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP))
129 #define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP))
130 #define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass))
132 typedef struct _ModelClip ModelClip;
133 typedef struct _ModelClipClass ModelClipClass;
135 #define LOGGING_TYPE_FACILITY (logging_facility_get_type ())
137 #define LOGGING_TYPE_LEVEL (logging_level_get_type ())
138 typedef struct _ModelClipFilePrivate ModelClipFilePrivate;
139 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
141 #define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ())
142 #define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation))
143 #define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION))
144 #define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface))
146 typedef struct _ModelTempoInformation ModelTempoInformation;
147 typedef struct _ModelTempoInformationIface ModelTempoInformationIface;
148 typedef struct _ModelProjectPrivate ModelProjectPrivate;
150 #define TYPE_TIME_CODE (time_code_get_type ())
151 typedef struct _TimeCode TimeCode;
153 #define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ())
154 #define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine))
155 #define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
156 #define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE))
157 #define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE))
158 #define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
160 typedef struct _ViewMediaEngine ViewMediaEngine;
161 typedef struct _ViewMediaEngineClass ViewMediaEngineClass;
163 #define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ())
164 #define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader))
165 #define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
166 #define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER))
167 #define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER))
168 #define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
170 typedef struct _ModelProjectLoader ModelProjectLoader;
171 typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass;
173 #define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ())
174 #define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager))
175 #define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
176 #define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER))
177 #define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER))
178 #define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
180 typedef struct _ModelUndoManager ModelUndoManager;
181 typedef struct _ModelUndoManagerClass ModelUndoManagerClass;
183 #define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ())
184 #define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter))
185 #define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
186 #define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER))
187 #define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER))
188 #define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
190 typedef struct _ModelLibraryImporter ModelLibraryImporter;
191 typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass;
193 #define MODEL_TYPE_THUMBNAIL_FETCHER (model_thumbnail_fetcher_get_type ())
194 #define MODEL_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcher))
195 #define MODEL_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass))
196 #define MODEL_IS_THUMBNAIL_FETCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_THUMBNAIL_FETCHER))
197 #define MODEL_IS_THUMBNAIL_FETCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_THUMBNAIL_FETCHER))
198 #define MODEL_THUMBNAIL_FETCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_THUMBNAIL_FETCHER, ModelThumbnailFetcherClass))
200 typedef struct _ModelThumbnailFetcher ModelThumbnailFetcher;
201 typedef struct _ModelThumbnailFetcherClass ModelThumbnailFetcherClass;
203 #define MODEL_TYPE_FETCHER_COMPLETION (model_fetcher_completion_get_type ())
204 #define MODEL_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletion))
205 #define MODEL_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass))
206 #define MODEL_IS_FETCHER_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_FETCHER_COMPLETION))
207 #define MODEL_IS_FETCHER_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_FETCHER_COMPLETION))
208 #define MODEL_FETCHER_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_FETCHER_COMPLETION, ModelFetcherCompletionClass))
210 typedef struct _ModelFetcherCompletion ModelFetcherCompletion;
211 typedef struct _ModelFetcherCompletionClass ModelFetcherCompletionClass;
212 #define _model_fetcher_completion_unref0(var) ((var == NULL) ? NULL : (var = (model_fetcher_completion_unref (var), NULL)))
213 #define _model_undo_manager_unref0(var) ((var == NULL) ? NULL : (var = (model_undo_manager_unref (var), NULL)))
215 #define TYPE_PLAY_STATE (play_state_get_type ())
216 typedef struct _ModelTrackPrivate ModelTrackPrivate;
218 #define MODEL_TYPE_GAP (model_gap_get_type ())
219 #define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap))
220 #define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass))
221 #define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP))
222 #define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP))
223 #define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass))
225 typedef struct _ModelGap ModelGap;
226 typedef struct _ModelGapClass ModelGapClass;
227 typedef struct _ModelGapPrivate ModelGapPrivate;
228 #define _model_gap_unref0(var) ((var == NULL) ? NULL : (var = (model_gap_unref (var), NULL)))
230 #define TYPE_MULTI_FILE_PROGRESS_INTERFACE (multi_file_progress_interface_get_type ())
231 #define MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterface))
232 #define IS_MULTI_FILE_PROGRESS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE))
233 #define MULTI_FILE_PROGRESS_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MULTI_FILE_PROGRESS_INTERFACE, MultiFileProgressInterfaceIface))
235 typedef struct _MultiFileProgressInterface MultiFileProgressInterface;
236 typedef struct _MultiFileProgressInterfaceIface MultiFileProgressInterfaceIface;
237 typedef struct _ViewMediaEnginePrivate ViewMediaEnginePrivate;
239 #define MODEL_TYPE_COMMAND (model_command_get_type ())
240 #define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand))
241 #define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass))
242 #define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND))
243 #define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND))
244 #define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass))
246 typedef struct _ModelCommand ModelCommand;
247 typedef struct _ModelCommandClass ModelCommandClass;
249 #define MODEL_TYPE_ADD_CLIP_COMMAND (model_add_clip_command_get_type ())
250 #define MODEL_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommand))
251 #define MODEL_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass))
252 #define MODEL_IS_ADD_CLIP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_ADD_CLIP_COMMAND))
253 #define MODEL_IS_ADD_CLIP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_ADD_CLIP_COMMAND))
254 #define MODEL_ADD_CLIP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_ADD_CLIP_COMMAND, ModelAddClipCommandClass))
256 typedef struct _ModelAddClipCommand ModelAddClipCommand;
257 typedef struct _ModelAddClipCommandClass ModelAddClipCommandClass;
258 #define _model_command_unref0(var) ((var == NULL) ? NULL : (var = (model_command_unref (var), NULL)))
259 typedef struct _ModelClipPrivate ModelClipPrivate;
261 #define MODEL_TYPE_CLIP_FILE_DELETE_COMMAND (model_clip_file_delete_command_get_type ())
262 #define MODEL_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommand))
263 #define MODEL_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass))
264 #define MODEL_IS_CLIP_FILE_DELETE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND))
265 #define MODEL_IS_CLIP_FILE_DELETE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND))
266 #define MODEL_CLIP_FILE_DELETE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE_DELETE_COMMAND, ModelClipFileDeleteCommandClass))
268 typedef struct _ModelClipFileDeleteCommand ModelClipFileDeleteCommand;
269 typedef struct _ModelClipFileDeleteCommandClass ModelClipFileDeleteCommandClass;
270 #define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL)))
272 #define MODEL_TYPE_TIMELINE_IMPORTER (model_timeline_importer_get_type ())
273 #define MODEL_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporter))
274 #define MODEL_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass))
275 #define MODEL_IS_TIMELINE_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIMELINE_IMPORTER))
276 #define MODEL_IS_TIMELINE_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIMELINE_IMPORTER))
277 #define MODEL_TIMELINE_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIMELINE_IMPORTER, ModelTimelineImporterClass))
279 typedef struct _ModelTimelineImporter ModelTimelineImporter;
280 typedef struct _ModelTimelineImporterClass ModelTimelineImporterClass;
281 typedef struct _ModelLibraryImporterPrivate ModelLibraryImporterPrivate;
283 #define MODEL_TYPE_CLIP_IMPORTER (model_clip_importer_get_type ())
284 #define MODEL_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporter))
285 #define MODEL_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass))
286 #define MODEL_IS_CLIP_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_IMPORTER))
287 #define MODEL_IS_CLIP_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_IMPORTER))
288 #define MODEL_CLIP_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_IMPORTER, ModelClipImporterClass))
290 typedef struct _ModelClipImporter ModelClipImporter;
291 typedef struct _ModelClipImporterClass ModelClipImporterClass;
293 #define TYPE_MULTI_FILE_PROGRESS (multi_file_progress_get_type ())
294 #define MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgress))
295 #define MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass))
296 #define IS_MULTI_FILE_PROGRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_FILE_PROGRESS))
297 #define IS_MULTI_FILE_PROGRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTI_FILE_PROGRESS))
298 #define MULTI_FILE_PROGRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTI_FILE_PROGRESS, MultiFileProgressClass))
300 typedef struct _MultiFileProgress MultiFileProgress;
301 typedef struct _MultiFileProgressClass MultiFileProgressClass;
303 #define MODEL_TYPE_TIME_SIGNATURE_COMMAND (model_time_signature_command_get_type ())
304 #define MODEL_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommand))
305 #define MODEL_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass))
306 #define MODEL_IS_TIME_SIGNATURE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND))
307 #define MODEL_IS_TIME_SIGNATURE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TIME_SIGNATURE_COMMAND))
308 #define MODEL_TIME_SIGNATURE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TIME_SIGNATURE_COMMAND, ModelTimeSignatureCommandClass))
310 typedef struct _ModelTimeSignatureCommand ModelTimeSignatureCommand;
311 typedef struct _ModelTimeSignatureCommandClass ModelTimeSignatureCommandClass;
313 #define MODEL_TYPE_BPM_COMMAND (model_bpm_command_get_type ())
314 #define MODEL_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommand))
315 #define MODEL_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass))
316 #define MODEL_IS_BPM_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_BPM_COMMAND))
317 #define MODEL_IS_BPM_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_BPM_COMMAND))
318 #define MODEL_BPM_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_BPM_COMMAND, ModelBpmCommandClass))
320 typedef struct _ModelBpmCommand ModelBpmCommand;
321 typedef struct _ModelBpmCommandClass ModelBpmCommandClass;
323 struct _ModelLoaderHandler {
324 GObject parent_instance;
325 ModelLoaderHandlerPrivate * priv;
328 struct _ModelLoaderHandlerClass {
329 GObjectClass parent_class;
330 gboolean (*commit_library) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
331 gboolean (*commit_marina) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
332 gboolean (*commit_track) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
333 gboolean (*commit_clip) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
334 gboolean (*commit_clipfile) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
335 gboolean (*commit_time_signature_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
336 gboolean (*commit_tempo_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
337 gboolean (*commit_click) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
338 gboolean (*commit_library_preference) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
339 void (*leave_library) (ModelLoaderHandler* self);
340 void (*leave_marina) (ModelLoaderHandler* self);
341 void (*leave_track) (ModelLoaderHandler* self);
342 void (*leave_clip) (ModelLoaderHandler* self);
343 void (*leave_clipfile) (ModelLoaderHandler* self);
346 struct _ModelMediaLoaderHandler {
347 ModelLoaderHandler parent_instance;
348 ModelMediaLoaderHandlerPrivate * priv;
349 ModelProject* the_project;
350 ModelTrack* current_track;
353 struct _ModelMediaLoaderHandlerClass {
354 ModelLoaderHandlerClass parent_class;
357 struct _ModelMediaLoaderHandlerPrivate {
358 GeeArrayList* clipfetchers;
359 gint num_clipfiles_complete;
367 struct _ModelFetcher {
368 GObject parent_instance;
369 ModelFetcherPrivate * priv;
371 GstElement* decodebin;
372 GstPipeline* pipeline;
373 ModelClipFile* clipfile;
377 struct _ModelFetcherClass {
378 GObjectClass parent_class;
379 void (*on_pad_added) (ModelFetcher* self, GstPad* pad);
380 void (*on_state_change) (ModelFetcher* self, GstBus* bus, GstMessage* message);
384 MODEL_MEDIA_TYPE_AUDIO,
385 MODEL_MEDIA_TYPE_VIDEO
389 LOGGING_FACILITY_SIGNAL_HANDLERS,
390 LOGGING_FACILITY_DEVELOPER_WARNINGS,
391 LOGGING_FACILITY_GRAPH,
392 LOGGING_FACILITY_LOADING,
393 LOGGING_FACILITY_IMPORT,
394 LOGGING_FACILITY_SINGLEDECODEBIN
398 LOGGING_LEVEL_CRITICAL,
400 LOGGING_LEVEL_MEDIUM,
403 LOGGING_LEVEL_VERBOSE
406 struct _ModelClipFile {
407 GObject parent_instance;
408 ModelClipFilePrivate * priv;
412 GdkPixbuf* thumbnail;
415 struct _ModelClipFileClass {
416 GObjectClass parent_class;
419 struct _ModelTempoInformationIface {
420 GTypeInterface parent_iface;
421 void (*get_time_signature) (ModelTempoInformation* self, Fraction* result);
422 gint (*get_bpm) (ModelTempoInformation* self);
433 struct _ModelProject {
434 GObject parent_instance;
435 ModelProjectPrivate * priv;
436 GeeArrayList* tracks;
437 GeeArrayList* inactive_tracks;
438 GeeArrayList* clipfiles;
439 ViewMediaEngine* media_engine;
441 ModelProjectLoader* loader;
442 ModelUndoManager* undo_manager;
443 ModelLibraryImporter* importer;
444 Fraction default_framerate;
445 gboolean click_during_play;
446 gboolean click_during_record;
448 gboolean library_visible;
450 gboolean snap_to_clip;
453 struct _ModelProjectClass {
454 GObjectClass parent_class;
455 void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result);
456 char* (*get_project_file) (ModelProject* self);
457 void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time);
458 void (*add_track) (ModelProject* self, ModelTrack* track);
459 void (*insert_track) (ModelProject* self, gint index, ModelTrack* track);
460 void (*load) (ModelProject* self, const char* fname);
461 void (*save) (ModelProject* self, const char* filename);
462 char* (*get_app_name) (ModelProject* self);
463 void (*load_complete) (ModelProject* self);
466 struct _ModelProjectPrivate {
468 GeeArrayList* pending_thumbs;
469 ModelFetcherCompletion* fetcher_completion;
471 Fraction time_signature;
478 PLAY_STATE_PRE_RECORD_NULL,
479 PLAY_STATE_PRE_RECORD,
480 PLAY_STATE_RECORDING,
481 PLAY_STATE_POST_RECORD,
482 PLAY_STATE_PRE_EXPORT,
483 PLAY_STATE_EXPORTING,
484 PLAY_STATE_CANCEL_EXPORT,
491 GObject parent_instance;
492 ModelTrackPrivate * priv;
493 ModelProject* project;
498 struct _ModelTrackClass {
499 GObjectClass parent_class;
500 char* (*name) (ModelTrack* self);
501 ModelMediaType (*media_type) (ModelTrack* self);
502 gboolean (*check) (ModelTrack* self, ModelClip* clip);
503 void (*on_clip_updated) (ModelTrack* self, ModelClip* clip);
504 void (*write_attributes) (ModelTrack* self, FILE* f);
508 GTypeInstance parent_instance;
509 volatile int ref_count;
510 ModelGapPrivate * priv;
515 struct _ModelGapClass {
516 GTypeClass parent_class;
517 void (*finalize) (ModelGap *self);
520 struct _MultiFileProgressInterfaceIface {
521 GTypeInterface parent_iface;
522 void (*cancel) (MultiFileProgressInterface* self);
523 void (*complete) (MultiFileProgressInterface* self);
526 struct _ViewMediaEngine {
527 GObject parent_instance;
528 ViewMediaEnginePrivate * priv;
529 GstPipeline* pipeline;
531 GstElement* converter;
534 PlayState play_state;
537 ModelAudioTrack* record_track;
538 ModelClip* record_region;
541 struct _ViewMediaEngineClass {
542 GObjectClass parent_class;
543 void (*do_null_state_export) (ViewMediaEngine* self, gint64 length);
544 void (*pause) (ViewMediaEngine* self);
548 GObject parent_instance;
549 ModelClipPrivate * priv;
550 ModelClipFile* clipfile;
552 gboolean is_recording;
556 struct _ModelClipClass {
557 GObjectClass parent_class;
560 struct _ModelLibraryImporter {
561 GObject parent_instance;
562 ModelLibraryImporterPrivate * priv;
563 ModelProject* project;
564 ModelClipImporter* importer;
567 struct _ModelLibraryImporterClass {
568 GObjectClass parent_class;
569 void (*append_existing_clipfile) (ModelLibraryImporter* self, ModelClipFile* f);
570 void (*on_clip_complete) (ModelLibraryImporter* self, ModelClipFile* f);
574 static gpointer model_media_loader_handler_parent_class = NULL;
575 extern Fraction model_project_INVALID_FRAME_RATE;
576 Fraction model_project_INVALID_FRAME_RATE = {0};
577 static gpointer model_project_parent_class = NULL;
578 static ModelTempoInformationIface* model_project_model_tempo_information_parent_iface = NULL;
580 GType model_loader_handler_get_type (void);
581 GType model_media_loader_handler_get_type (void);
582 GType model_project_get_type (void);
583 GType model_track_get_type (void);
584 GType model_fetcher_get_type (void);
585 GType model_clip_fetcher_get_type (void);
586 #define MODEL_MEDIA_LOADER_HANDLER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_MEDIA_LOADER_HANDLER, ModelMediaLoaderHandlerPrivate))
588 MODEL_MEDIA_LOADER_HANDLER_DUMMY_PROPERTY
590 ModelLoaderHandler* model_loader_handler_new (void);
591 ModelLoaderHandler* model_loader_handler_construct (GType object_type);
592 ModelMediaLoaderHandler* model_media_loader_handler_new (ModelProject* the_project);
593 ModelMediaLoaderHandler* model_media_loader_handler_construct (GType object_type, ModelProject* the_project);
594 gint model_project_get_file_version (ModelProject* self);
595 static gboolean model_media_loader_handler_real_commit_marina (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
596 GType fraction_get_type (void);
597 Fraction* fraction_dup (const Fraction* self);
598 void fraction_free (Fraction* self);
599 void model_project_set_default_framerate (ModelProject* self, Fraction* rate);
600 void fraction_init (Fraction *self, gint numerator, gint denominator);
601 static gboolean model_media_loader_handler_real_commit_library (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
602 ModelAudioTrack* model_audio_track_new (ModelProject* project, const char* display_name);
603 ModelAudioTrack* model_audio_track_construct (GType object_type, ModelProject* project, const char* display_name);
604 GType model_audio_track_get_type (void);
605 void model_project_add_track (ModelProject* self, ModelTrack* track);
606 void _model_audio_track_set_pan (ModelAudioTrack* self, double new_value);
607 void _model_audio_track_set_volume (ModelAudioTrack* self, double new_volume);
608 void model_audio_track_set_default_num_channels (ModelAudioTrack* self, gint num);
609 ModelVideoTrack* model_video_track_new (ModelProject* project);
610 ModelVideoTrack* model_video_track_construct (GType object_type, ModelProject* project);
611 GType model_video_track_get_type (void);
612 gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
613 static gboolean model_media_loader_handler_real_commit_track (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
614 static void model_media_loader_handler_real_leave_track (ModelLoaderHandler* base);
615 GType model_clip_file_get_type (void);
616 GType model_media_type_get_type (void);
617 ModelMediaType model_track_media_type (ModelTrack* self);
618 ModelClip* model_clip_new (ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording);
619 ModelClip* model_clip_construct (GType object_type, ModelClipFile* clipfile, ModelMediaType t, const char* name, gint64 start, gint64 media_start, gint64 duration, gboolean is_recording);
620 GType model_clip_get_type (void);
621 void model_track_add (ModelTrack* self, ModelClip* c, gint64 pos, gboolean select);
622 static gboolean model_media_loader_handler_real_commit_clip (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
623 GType logging_facility_get_type (void);
624 GType logging_level_get_type (void);
625 void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message);
626 void model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile);
627 static void model_media_loader_handler_fetcher_ready (ModelMediaLoaderHandler* self, ModelFetcher* f);
628 ModelClipFetcher* model_clip_fetcher_new (const char* filename, GError** error);
629 ModelClipFetcher* model_clip_fetcher_construct (GType object_type, const char* filename, GError** error);
630 static void _model_media_loader_handler_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self);
631 static gboolean model_media_loader_handler_real_commit_clipfile (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
632 void _model_project_set_bpm (ModelProject* self, gint bpm);
633 static gboolean model_media_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
634 void _model_project_set_time_signature (ModelProject* self, Fraction* time_signature);
635 void fraction_init_from_string (Fraction *self, const char* s);
636 static gboolean model_media_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
637 GType model_tempo_information_get_type (void);
638 GType time_code_get_type (void);
639 TimeCode* time_code_dup (const TimeCode* self);
640 void time_code_free (TimeCode* self);
641 GType view_media_engine_get_type (void);
642 GType model_project_loader_get_type (void);
643 gpointer model_undo_manager_ref (gpointer instance);
644 void model_undo_manager_unref (gpointer instance);
645 GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
646 void model_value_set_undo_manager (GValue* value, gpointer v_object);
647 void model_value_take_undo_manager (GValue* value, gpointer v_object);
648 gpointer model_value_get_undo_manager (const GValue* value);
649 GType model_undo_manager_get_type (void);
650 GType model_library_importer_get_type (void);
651 static gboolean model_media_loader_handler_real_commit_click (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
652 static gboolean model_media_loader_handler_real_commit_library_preference (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
653 static void model_media_loader_handler_real_leave_library (ModelLoaderHandler* base);
654 static void model_media_loader_handler_finalize (GObject* obj);
655 GType model_thumbnail_fetcher_get_type (void);
656 gpointer model_fetcher_completion_ref (gpointer instance);
657 void model_fetcher_completion_unref (gpointer instance);
658 GParamSpec* model_param_spec_fetcher_completion (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
659 void model_value_set_fetcher_completion (GValue* value, gpointer v_object);
660 void model_value_take_fetcher_completion (GValue* value, gpointer v_object);
661 gpointer model_value_get_fetcher_completion (const GValue* value);
662 GType model_fetcher_completion_get_type (void);
663 #define MODEL_PROJECT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT, ModelProjectPrivate))
665 MODEL_PROJECT_DUMMY_PROPERTY
667 #define MODEL_PROJECT_FILLMORE_FILE_EXTENSION "fill"
668 #define MODEL_PROJECT_FILLMORE_FILE_FILTER "*." MODEL_PROJECT_FILLMORE_FILE_EXTENSION
669 #define MODEL_PROJECT_LOMBARD_FILE_EXTENSION "lom"
670 #define MODEL_PROJECT_LOMBARD_FILE_FILTER "*." MODEL_PROJECT_LOMBARD_FILE_EXTENSION
671 #define MODEL_PROJECT_license "\n" \
672 "%s is free software; you can redistribute it and/or modify it under th" \
674 "terms of the GNU Lesser General Public License as published by the Fre" \
676 "Software Foundation; either version 2.1 of the License, or (at your op" \
678 "any later version.\n" \
680 "%s is distributed in the hope that it will be useful, but WITHOUT \n" \
681 "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " \
683 "FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License f" \
687 "You should have received a copy of the GNU Lesser General Public Licen" \
689 "along with %s; if not, write to the Free Software Foundation, Inc., \n" \
690 "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
691 void model_project_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result);
692 static void model_project_real_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result);
693 ModelUndoManager* model_undo_manager_new (void);
694 ModelUndoManager* model_undo_manager_construct (GType object_type);
695 ViewMediaEngine* view_media_engine_new (ModelProject* project, gboolean include_video, GError** error);
696 ViewMediaEngine* view_media_engine_construct (GType object_type, ModelProject* project, gboolean include_video, GError** error);
697 void view_media_engine_on_track_added (ViewMediaEngine* self, ModelTrack* track);
698 static void _view_media_engine_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self);
699 void model_project_on_playstate_changed (ModelProject* self);
700 static void _model_project_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self);
701 void model_project_on_error_occurred (ModelProject* self, const char* major_error, const char* minor_error);
702 static void _model_project_on_error_occurred_view_media_engine_error_occurred (ViewMediaEngine* _sender, const char* major_message, const char* minor_message, gpointer self);
703 ModelProject* model_project_construct (GType object_type, const char* filename, gboolean include_video, GError** error);
704 GType play_state_get_type (void);
705 PlayState view_media_engine_get_play_state (ViewMediaEngine* self);
706 static void model_project_ClearTrackMeters (ModelProject* self);
707 char* model_project_get_project_file (ModelProject* self);
708 static char* model_project_real_get_project_file (ModelProject* self);
709 ModelClipFile* model_project_get_clipfile (ModelProject* self, gint index);
710 gint model_project_get_clipfile_index (ModelProject* self, ModelClipFile* find);
711 ModelTrack* model_project_track_from_clip (ModelProject* self, ModelClip* clip);
712 void model_project_print_graph (ModelProject* self, GstBin* bin, const char* file_name);
713 gint64 model_track_get_length (ModelTrack* self);
714 gint64 model_project_get_length (ModelProject* self);
715 gint64 model_track_snap_clip (ModelTrack* self, ModelClip* c, gint64 span);
716 gint64 model_clip_get_start (ModelClip* self);
717 gint64 model_project_snap_clip (ModelProject* self, ModelClip* c, gint64 span);
718 gboolean model_track_snap_coord (ModelTrack* self, gint64* coord, gint64 span);
719 void model_project_snap_coord (ModelProject* self, gint64* coord, gint64 span);
720 gpointer model_gap_ref (gpointer instance);
721 void model_gap_unref (gpointer instance);
722 GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
723 void model_value_set_gap (GValue* value, gpointer v_object);
724 void model_value_take_gap (GValue* value, gpointer v_object);
725 gpointer model_value_get_gap (const GValue* value);
726 GType model_gap_get_type (void);
727 ModelGap* model_gap_intersect (ModelGap* self, ModelGap* g);
728 ModelGap* model_track_find_first_gap (ModelTrack* self, gint64 start);
729 static ModelGap* model_project_get_gap_intersection (ModelProject* self, ModelGap* gap);
730 gboolean model_gap_is_empty (ModelGap* self);
731 gboolean model_project_can_delete_gap (ModelProject* self, ModelGap* gap);
732 void model_track_delete_gap (ModelTrack* self, ModelGap* g);
733 void model_project_delete_gap (ModelProject* self, ModelGap* gap);
734 gint64 model_clip_file_get_length (ModelClipFile* self);
735 void model_track_append_at_time (ModelTrack* self, ModelClip* c, gint64 time, gboolean select);
736 void model_project_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time);
737 static void model_project_real_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time);
738 char* isolate_filename (const char* path);
739 void model_project_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile);
740 void model_project_add (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, gint64 time);
741 void model_project_reseek (ModelProject* self);
742 void model_project_on_clip_removed (ModelProject* self, ModelTrack* t, ModelClip* clip);
743 void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description);
744 ModelClip* model_track_get_clip_by_position (ModelTrack* self, gint64 pos);
745 gint64 model_project_transport_get_position (ModelProject* self);
746 void model_track_split_at (ModelTrack* self, gint64 position);
747 void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description);
748 void model_project_split_at_playhead (ModelProject* self);
749 gint64 model_clip_get_end (ModelClip* self);
750 gint64 model_clip_get_duration (ModelClip* self);
751 gboolean model_project_can_trim (ModelProject* self, gboolean* left);
752 void model_track_trim (ModelTrack* self, ModelClip* clip, gint64 delta, GdkWindowEdge edge);
753 void model_project_transport_go (ModelProject* self, gint64 position);
754 void model_project_trim_to_playhead (ModelProject* self);
755 void view_media_engine_go (ViewMediaEngine* self, gint64 pos);
756 GType multi_file_progress_interface_get_type (void);
757 gboolean model_project_transport_is_playing (ModelProject* self);
758 gboolean model_project_transport_is_recording (ModelProject* self);
759 gboolean model_project_playhead_on_clip (ModelProject* self);
760 gboolean model_track_are_contiguous_clips (ModelTrack* self, gint64 position);
761 gboolean model_project_playhead_on_contiguous_clip (ModelProject* self);
762 char* model_track_get_display_name (ModelTrack* self);
763 gboolean model_project_is_duplicate_track_name (ModelProject* self, ModelTrack* track, const char* new_name);
764 static void _model_project_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self);
765 static void _model_project_on_error_occurred_model_track_error_occurred (ModelTrack* _sender, const char* major_error, const char* minor_error, gpointer self);
766 static void model_project_real_add_track (ModelProject* self, ModelTrack* track);
767 void model_project_insert_track (ModelProject* self, gint index, ModelTrack* track);
768 static void model_project_real_insert_track (ModelProject* self, gint index, ModelTrack* track);
769 void model_track_hide (ModelTrack* self);
770 void model_project_add_inactive_track (ModelProject* self, ModelTrack* track);
771 void model_project_remove_track (ModelProject* self, ModelTrack* track);
772 void model_project_remove_track_at (ModelProject* self, gint index);
773 ModelAddClipCommand* model_add_clip_command_new (ModelProject* project, ModelClipFile* clip_file);
774 ModelAddClipCommand* model_add_clip_command_construct (GType object_type, ModelProject* project, ModelClipFile* clip_file);
775 gpointer model_command_ref (gpointer instance);
776 void model_command_unref (gpointer instance);
777 GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
778 void model_value_set_command (GValue* value, gpointer v_object);
779 void model_value_take_command (GValue* value, gpointer v_object);
780 gpointer model_value_get_command (const GValue* value);
781 GType model_command_get_type (void);
782 GType model_add_clip_command_get_type (void);
783 void model_project_do_command (ModelProject* self, ModelCommand* the_command);
784 gboolean model_clip_file_is_online (ModelClipFile* self);
785 gboolean model_clip_file_is_of_type (ModelClipFile* self, ModelMediaType t);
786 ModelThumbnailFetcher* model_thumbnail_fetcher_new (ModelClipFile* f, gint64 time, GError** error);
787 ModelThumbnailFetcher* model_thumbnail_fetcher_construct (GType object_type, ModelClipFile* f, gint64 time, GError** error);
788 static void model_project_on_thumbnail_ready (ModelProject* self, ModelFetcher* f);
789 static void _model_project_on_thumbnail_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self);
790 void _model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile, GError** error);
791 ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename);
792 gboolean model_project_clipfile_on_track (ModelProject* self, const char* filename);
793 void model_track_delete_clip (ModelTrack* self, ModelClip* clip);
794 static void model_project_delete_clipfile_from_tracks (ModelProject* self, ModelClipFile* cf);
795 void _model_project_remove_clipfile (ModelProject* self, ModelClipFile* cf);
796 ModelClipFileDeleteCommand* model_clip_file_delete_command_new (ModelProject* p, ModelClipFile* cf);
797 ModelClipFileDeleteCommand* model_clip_file_delete_command_construct (GType object_type, ModelProject* p, ModelClipFile* cf);
798 GType model_clip_file_delete_command_get_type (void);
799 void model_project_remove_clipfile (ModelProject* self, const char* filename);
800 void model_project_go_start (ModelProject* self);
801 void model_project_go_end (ModelProject* self);
802 gint64 model_track_previous_edit (ModelTrack* self, gint64 pos);
803 void model_project_go_previous (ModelProject* self);
804 gint64 model_track_next_edit (ModelTrack* self, gint64 pos);
805 void model_project_go_next (ModelProject* self);
806 void model_project_set_name (ModelProject* self, const char* filename);
807 char* model_project_get_app_name (ModelProject* self);
808 char* model_project_get_file_display_name (ModelProject* self);
809 void view_media_engine_set_gst_state (ViewMediaEngine* self, GstState state);
810 void model_track_delete_all_clips (ModelTrack* self);
811 void model_project_clear (ModelProject* self);
812 gboolean model_project_can_export (ModelProject* self);
813 void model_project_on_load_started (ModelProject* self, const char* filename);
814 static void model_project_on_load_error (ModelProject* self, const char* _error_);
815 void model_undo_manager_reset (ModelUndoManager* self);
816 static void model_project_on_load_complete (ModelProject* self);
817 ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name);
818 ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name);
819 static void _model_project_on_load_started_model_project_loader_load_started (ModelProjectLoader* _sender, const char* filename, gpointer self);
820 static void _model_project_on_load_error_model_project_loader_load_error (ModelProjectLoader* _sender, const char* _error_, gpointer self);
821 static void _model_project_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self);
822 void view_media_engine_on_load_complete (ViewMediaEngine* self);
823 static void _view_media_engine_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self);
824 void view_media_engine_set_play_state (ViewMediaEngine* self, PlayState play_state);
825 void model_project_loader_load (ModelProjectLoader* self);
826 void model_project_load (ModelProject* self, const char* fname);
827 static void model_project_real_load (ModelProject* self, const char* fname);
828 gboolean model_video_track_get_framerate (ModelVideoTrack* self, Fraction* rate);
829 gboolean fraction_equal (Fraction *self, Fraction* f);
830 void model_project_save_library (ModelProject* self, FILE* f);
831 void model_track_save (ModelTrack* self, FILE* f);
832 char* fraction_to_string (Fraction *self);
833 void model_undo_manager_mark_clean (ModelUndoManager* self);
834 void model_project_save (ModelProject* self, const char* filename);
835 static void model_project_real_save (ModelProject* self, const char* filename);
836 void view_media_engine_close (ViewMediaEngine* self);
837 void model_project_close (ModelProject* self);
838 void model_fetcher_completion_complete (ModelFetcherCompletion* self, ModelFetcher* fetcher);
839 void model_project_on_importer_clip_complete (ModelProject* self, ModelClipFetcher* fetcher);
840 static void model_project_on_fetcher_ready (ModelProject* self, ModelFetcher* fetcher);
841 static void _model_project_on_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self);
842 void model_project_create_clip_fetcher (ModelProject* self, ModelFetcherCompletion* fetcher_completion, const char* filename, GError** error);
843 char* get_file_extension (const char* path);
844 gboolean model_project_is_project_extension (ModelProject* self, const char* filename);
845 void model_undo_manager_do_command (ModelUndoManager* self, ModelCommand* the_command);
846 void model_undo_manager_undo (ModelUndoManager* self);
847 void model_project_undo (ModelProject* self);
848 ModelTimelineImporter* model_timeline_importer_new (ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks);
849 ModelTimelineImporter* model_timeline_importer_construct (GType object_type, ModelTrack* track, ModelProject* p, gint64 time_to_add, gboolean both_tracks);
850 GType model_timeline_importer_get_type (void);
851 ModelLibraryImporter* model_library_importer_new (ModelProject* p);
852 ModelLibraryImporter* model_library_importer_construct (GType object_type, ModelProject* p);
853 GType model_clip_importer_get_type (void);
854 MultiFileProgress* multi_file_progress_new (GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider);
855 MultiFileProgress* multi_file_progress_construct (GType object_type, GtkWindow* parent, gint num_files, const char* dialog_title, MultiFileProgressInterface* provider);
856 GType multi_file_progress_get_type (void);
857 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);
858 char* model_project_get_version (ModelProject* self);
859 static char* model_project_real_get_app_name (ModelProject* self);
860 char* model_project_get_license (ModelProject* self);
861 ModelTimeSignatureCommand* model_time_signature_command_new (ModelProject* project, Fraction* new_time_signature);
862 ModelTimeSignatureCommand* model_time_signature_command_construct (GType object_type, ModelProject* project, Fraction* new_time_signature);
863 GType model_time_signature_command_get_type (void);
864 void model_project_set_time_signature (ModelProject* self, Fraction* time_signature);
865 static void model_project_real_get_time_signature (ModelTempoInformation* base, Fraction* result);
866 ModelBpmCommand* model_bpm_command_new (ModelProject* project, gint new_bpm);
867 ModelBpmCommand* model_bpm_command_construct (GType object_type, ModelProject* project, gint new_bpm);
868 GType model_bpm_command_get_type (void);
869 void model_project_set_bpm (ModelProject* self, gint bpm);
870 static gint model_project_real_get_bpm (ModelTempoInformation* base);
871 static char* model_project_get_path (ModelProject* self);
872 char* model_project_get_audio_path (ModelProject* self);
873 ModelVideoTrack* model_project_find_video_track (ModelProject* self);
874 ModelAudioTrack* model_project_find_audio_track (ModelProject* self);
875 void model_project_load_complete (ModelProject* self);
876 static void model_project_real_load_complete (ModelProject* self);
877 static void model_project_finalize (GObject* obj);
878 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
879 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
880 static gint _vala_array_length (gpointer array);
881 static int _vala_strcmp0 (const char * str1, const char * str2);
883 const char* MODEL_PROJECT_authors[5] = {"Robert Powell <rob@yorba.org>", "Adam Dingle <adam@yorba.org>", "Andrew O'Mahony <andrew.omahony@att.net>", "Dru Moore <usr@dru-id.co.uk>", NULL};
885 static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
887 #line 19 "project.vala"
888 ModelMediaLoaderHandler* model_media_loader_handler_construct (GType object_type, ModelProject* the_project) {
889 #line 871 "project.c"
890 ModelMediaLoaderHandler * self;
892 #line 19 "project.vala"
893 g_return_val_if_fail (MODEL_IS_PROJECT (the_project), NULL);
894 #line 19 "project.vala"
895 self = (ModelMediaLoaderHandler*) model_loader_handler_construct (object_type);
896 #line 20 "project.vala"
897 self->the_project = the_project;
898 #line 21 "project.vala"
899 self->current_track = (_tmp0_ = NULL, _g_object_unref0 (self->current_track), _tmp0_);
900 #line 882 "project.c"
905 #line 19 "project.vala"
906 ModelMediaLoaderHandler* model_media_loader_handler_new (ModelProject* the_project) {
907 #line 19 "project.vala"
908 return model_media_loader_handler_construct (MODEL_TYPE_MEDIA_LOADER_HANDLER, the_project);
909 #line 891 "project.c"
913 #line 24 "project.vala"
914 static gboolean model_media_loader_handler_real_commit_marina (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
915 #line 897 "project.c"
916 ModelMediaLoaderHandler * self;
917 gboolean result = FALSE;
918 gint number_of_attributes;
919 gboolean _tmp0_ = FALSE;
920 self = MODEL_MEDIA_LOADER_HANDLER (base);
921 #line 25 "project.vala"
922 number_of_attributes = attr_names_length1;
923 #line 26 "project.vala"
924 if (number_of_attributes != 1) {
925 #line 26 "project.vala"
927 #line 909 "project.c"
929 #line 27 "project.vala"
930 _tmp0_ = _vala_strcmp0 (attr_names[0], "version") != 0;
931 #line 913 "project.c"
933 #line 26 "project.vala"
935 #line 28 "project.vala"
936 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing version information");
937 #line 919 "project.c"
939 #line 29 "project.vala"
941 #line 923 "project.c"
943 #line 32 "project.vala"
944 if (model_project_get_file_version (self->the_project) < atoi (attr_values[0])) {
945 #line 927 "project.c"
947 #line 33 "project.vala"
948 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp1_ = g_strdup_printf ("Version mismatch! (File Version: %d, App Version: %d)", model_project_get_file_version (self->the_project), atoi (attr_values[0])));
949 #line 931 "project.c"
952 #line 35 "project.vala"
954 #line 936 "project.c"
956 #line 38 "project.vala"
957 self->priv->num_clipfiles_complete = 0;
958 #line 940 "project.c"
960 #line 39 "project.vala"
962 #line 944 "project.c"
966 #line 42 "project.vala"
967 static gboolean model_media_loader_handler_real_commit_library (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
968 #line 950 "project.c"
969 ModelMediaLoaderHandler * self;
970 gboolean result = FALSE;
977 Fraction _tmp2_ = {0};
978 self = MODEL_MEDIA_LOADER_HANDLER (base);
979 #line 44 "project.vala"
980 if (attr_names_length1 != 1) {
981 #line 963 "project.c"
983 #line 45 "project.vala"
985 #line 967 "project.c"
987 #line 47 "project.vala"
988 if (_vala_strcmp0 (attr_names[0], "framerate") != 0) {
989 #line 48 "project.vala"
990 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing framerate tag");
991 #line 973 "project.c"
993 #line 49 "project.vala"
995 #line 977 "project.c"
997 arr = (_tmp1_ = _tmp0_ = g_strsplit (attr_values[0], "/", 0), arr_length1 = _vala_array_length (_tmp0_), _arr_size_ = arr_length1, _tmp1_);
998 #line 53 "project.vala"
999 if (arr_length1 != 2) {
1000 #line 54 "project.vala"
1001 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid framerate attribute");
1002 #line 984 "project.c"
1004 arr = (_vala_array_free (arr, arr_length1, (GDestroyNotify) g_free), NULL);
1005 #line 55 "project.vala"
1007 #line 989 "project.c"
1009 #line 58 "project.vala"
1010 model_project_set_default_framerate (self->the_project, (_tmp3_ = (fraction_init (&_tmp2_, atoi (arr[0]), atoi (arr[1])), _tmp2_), &_tmp3_));
1011 #line 993 "project.c"
1013 arr = (_vala_array_free (arr, arr_length1, (GDestroyNotify) g_free), NULL);
1014 #line 59 "project.vala"
1016 #line 998 "project.c"
1020 static gpointer _g_object_ref0 (gpointer self) {
1021 return self ? g_object_ref (self) : NULL;
1025 #line 62 "project.vala"
1026 static gboolean model_media_loader_handler_real_commit_track (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
1027 #line 1009 "project.c"
1028 ModelMediaLoaderHandler * self;
1029 gboolean result = FALSE;
1030 gint number_of_attributes;
1033 self = MODEL_MEDIA_LOADER_HANDLER (base);
1034 #line 63 "project.vala"
1035 g_assert (self->current_track == NULL);
1036 #line 65 "project.vala"
1037 number_of_attributes = attr_names_length1;
1038 #line 66 "project.vala"
1040 #line 67 "project.vala"
1042 #line 1024 "project.c"
1045 #line 68 "project.vala"
1047 #line 1029 "project.c"
1050 #line 68 "project.vala"
1052 #line 68 "project.vala"
1054 #line 1036 "project.c"
1057 static GQuark _tmp4__label0 = 0;
1058 static GQuark _tmp4__label1 = 0;
1059 #line 68 "project.vala"
1061 #line 68 "project.vala"
1063 #line 1045 "project.c"
1065 #line 68 "project.vala"
1067 #line 68 "project.vala"
1068 if (!(i < number_of_attributes)) {
1069 #line 68 "project.vala"
1071 #line 1053 "project.c"
1073 _tmp3_ = attr_names[i];
1074 _tmp4_ = (NULL == _tmp3_) ? 0 : g_quark_from_string (_tmp3_);
1075 if (_tmp4_ == ((0 != _tmp4__label0) ? _tmp4__label0 : (_tmp4__label0 = g_quark_from_static_string ("type"))))
1080 #line 71 "project.vala"
1081 type = (_tmp1_ = g_strdup (attr_values[i]), _g_free0 (type), _tmp1_);
1082 #line 72 "project.vala"
1084 #line 1066 "project.c"
1086 } else if (_tmp4_ == ((0 != _tmp4__label1) ? _tmp4__label1 : (_tmp4__label1 = g_quark_from_static_string ("name"))))
1091 #line 74 "project.vala"
1092 name = (_tmp2_ = g_strdup (attr_values[i]), _g_free0 (name), _tmp2_);
1093 #line 75 "project.vala"
1095 #line 1077 "project.c"
1101 #line 77 "project.vala"
1103 #line 1085 "project.c"
1109 #line 81 "project.vala"
1111 #line 82 "project.vala"
1112 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing track name");
1113 #line 1095 "project.c"
1117 #line 83 "project.vala"
1119 #line 1101 "project.c"
1121 #line 86 "project.vala"
1123 #line 87 "project.vala"
1124 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Missing track type");
1125 #line 1107 "project.c"
1129 #line 88 "project.vala"
1131 #line 1113 "project.c"
1133 #line 91 "project.vala"
1134 if (_vala_strcmp0 (type, "audio") == 0) {
1135 #line 1117 "project.c"
1136 ModelAudioTrack* audio_track;
1138 #line 92 "project.vala"
1139 audio_track = model_audio_track_new (self->the_project, name);
1140 #line 93 "project.vala"
1141 self->current_track = (_tmp5_ = _g_object_ref0 (MODEL_TRACK (audio_track)), _g_object_unref0 (self->current_track), _tmp5_);
1142 #line 94 "project.vala"
1143 model_project_add_track (self->the_project, self->current_track);
1144 #line 1126 "project.c"
1147 #line 96 "project.vala"
1149 #line 1131 "project.c"
1152 #line 96 "project.vala"
1154 #line 96 "project.vala"
1156 #line 1138 "project.c"
1159 static GQuark _tmp8__label0 = 0;
1160 static GQuark _tmp8__label1 = 0;
1161 static GQuark _tmp8__label2 = 0;
1162 #line 96 "project.vala"
1164 #line 96 "project.vala"
1166 #line 1148 "project.c"
1168 #line 96 "project.vala"
1170 #line 96 "project.vala"
1171 if (!(i < number_of_attributes)) {
1172 #line 96 "project.vala"
1174 #line 1156 "project.c"
1176 _tmp7_ = attr_names[i];
1177 _tmp8_ = (NULL == _tmp7_) ? 0 : g_quark_from_string (_tmp7_);
1178 if (_tmp8_ == ((0 != _tmp8__label0) ? _tmp8__label0 : (_tmp8__label0 = g_quark_from_static_string ("panorama"))))
1182 #line 99 "project.vala"
1183 _model_audio_track_set_pan (audio_track, g_ascii_strtod (attr_values[i], NULL));
1184 #line 100 "project.vala"
1186 #line 1168 "project.c"
1188 } else if (_tmp8_ == ((0 != _tmp8__label1) ? _tmp8__label1 : (_tmp8__label1 = g_quark_from_static_string ("volume"))))
1192 #line 102 "project.vala"
1193 _model_audio_track_set_volume (audio_track, g_ascii_strtod (attr_values[i], NULL));
1194 #line 103 "project.vala"
1196 #line 1178 "project.c"
1198 } else if (_tmp8_ == ((0 != _tmp8__label2) ? _tmp8__label2 : (_tmp8__label2 = g_quark_from_static_string ("channels"))))
1202 #line 105 "project.vala"
1203 model_audio_track_set_default_num_channels (audio_track, atoi (attr_values[i]));
1204 #line 106 "project.vala"
1206 #line 1188 "project.c"
1212 #line 108 "project.vala"
1214 #line 1196 "project.c"
1221 _g_object_unref0 (audio_track);
1224 #line 111 "project.vala"
1226 #line 1208 "project.c"
1228 #line 112 "project.vala"
1229 if (_vala_strcmp0 (type, "video") == 0) {
1230 #line 1212 "project.c"
1232 #line 113 "project.vala"
1233 self->current_track = (_tmp9_ = MODEL_TRACK (model_video_track_new (self->the_project)), _g_object_unref0 (self->current_track), _tmp9_);
1234 #line 114 "project.vala"
1235 model_project_add_track (self->the_project, self->current_track);
1236 #line 1218 "project.c"
1239 result = MODEL_LOADER_HANDLER_CLASS (model_media_loader_handler_parent_class)->commit_track (MODEL_LOADER_HANDLER (self), attr_names, attr_names_length1, attr_values, attr_values_length1);
1242 #line 117 "project.vala"
1244 #line 1226 "project.c"
1248 #line 120 "project.vala"
1249 static void model_media_loader_handler_real_leave_track (ModelLoaderHandler* base) {
1250 #line 1232 "project.c"
1251 ModelMediaLoaderHandler * self;
1253 self = MODEL_MEDIA_LOADER_HANDLER (base);
1254 #line 121 "project.vala"
1255 g_assert (self->current_track != NULL);
1256 #line 122 "project.vala"
1257 self->current_track = (_tmp0_ = NULL, _g_object_unref0 (self->current_track), _tmp0_);
1258 #line 1240 "project.c"
1262 #line 125 "project.vala"
1263 static gboolean model_media_loader_handler_real_commit_clip (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
1264 #line 1246 "project.c"
1265 ModelMediaLoaderHandler * self;
1266 gboolean result = FALSE;
1267 gint number_of_attributes;
1273 ModelClipFetcher* _tmp6_;
1276 self = MODEL_MEDIA_LOADER_HANDLER (base);
1277 #line 126 "project.vala"
1278 g_assert (self->current_track != NULL);
1279 #line 128 "project.vala"
1280 number_of_attributes = attr_names_length1;
1281 #line 129 "project.vala"
1283 #line 130 "project.vala"
1285 #line 131 "project.vala"
1286 start = (gint64) (-1);
1287 #line 132 "project.vala"
1288 media_start = (gint64) (-1);
1289 #line 133 "project.vala"
1290 duration = (gint64) (-1);
1291 #line 1273 "project.c"
1294 #line 134 "project.vala"
1296 #line 1278 "project.c"
1299 #line 134 "project.vala"
1301 #line 134 "project.vala"
1303 #line 1285 "project.c"
1306 static GQuark _tmp4__label0 = 0;
1307 static GQuark _tmp4__label1 = 0;
1308 static GQuark _tmp4__label2 = 0;
1309 static GQuark _tmp4__label3 = 0;
1310 static GQuark _tmp4__label4 = 0;
1311 #line 134 "project.vala"
1313 #line 134 "project.vala"
1315 #line 1297 "project.c"
1317 #line 134 "project.vala"
1319 #line 134 "project.vala"
1320 if (!(i < number_of_attributes)) {
1321 #line 134 "project.vala"
1323 #line 1305 "project.c"
1325 _tmp3_ = attr_names[i];
1326 _tmp4_ = (NULL == _tmp3_) ? 0 : g_quark_from_string (_tmp3_);
1327 if (_tmp4_ == ((0 != _tmp4__label0) ? _tmp4__label0 : (_tmp4__label0 = g_quark_from_static_string ("id"))))
1331 #line 137 "project.vala"
1332 id = atoi (attr_values[i]);
1333 #line 138 "project.vala"
1335 #line 1317 "project.c"
1337 } else if (_tmp4_ == ((0 != _tmp4__label1) ? _tmp4__label1 : (_tmp4__label1 = g_quark_from_static_string ("name"))))
1342 #line 140 "project.vala"
1343 clip_name = (_tmp1_ = g_strdup (attr_values[i]), _g_free0 (clip_name), _tmp1_);
1344 #line 141 "project.vala"
1346 #line 1328 "project.c"
1348 } else if (_tmp4_ == ((0 != _tmp4__label2) ? _tmp4__label2 : (_tmp4__label2 = g_quark_from_static_string ("start"))))
1352 #line 143 "project.vala"
1353 start = g_ascii_strtoll (attr_values[i], NULL, 0);
1354 #line 144 "project.vala"
1356 #line 1338 "project.c"
1358 } else if (_tmp4_ == ((0 != _tmp4__label3) ? _tmp4__label3 : (_tmp4__label3 = g_quark_from_static_string ("media-start"))))
1362 #line 146 "project.vala"
1363 media_start = g_ascii_strtoll (attr_values[i], NULL, 0);
1364 #line 147 "project.vala"
1366 #line 1348 "project.c"
1368 } else if (_tmp4_ == ((0 != _tmp4__label4) ? _tmp4__label4 : (_tmp4__label4 = g_quark_from_static_string ("duration"))))
1372 #line 149 "project.vala"
1373 duration = g_ascii_strtoll (attr_values[i], NULL, 0);
1374 #line 150 "project.vala"
1376 #line 1358 "project.c"
1383 #line 153 "project.vala"
1384 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp2_ = g_strdup_printf ("Unknown attribute %s", attr_names[i]));
1385 #line 1367 "project.c"
1388 _g_free0 (clip_name);
1389 #line 154 "project.vala"
1391 #line 1373 "project.c"
1397 #line 158 "project.vala"
1399 #line 159 "project.vala"
1400 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing clip id");
1401 #line 1383 "project.c"
1403 _g_free0 (clip_name);
1404 #line 160 "project.vala"
1406 #line 1388 "project.c"
1408 #line 163 "project.vala"
1409 if (clip_name == NULL) {
1410 #line 164 "project.vala"
1411 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing clip_name");
1412 #line 1394 "project.c"
1414 _g_free0 (clip_name);
1415 #line 165 "project.vala"
1417 #line 1399 "project.c"
1419 #line 168 "project.vala"
1420 if (start == (-1)) {
1421 #line 169 "project.vala"
1422 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing start time");
1423 #line 1405 "project.c"
1425 _g_free0 (clip_name);
1426 #line 170 "project.vala"
1428 #line 1410 "project.c"
1430 #line 173 "project.vala"
1431 if (media_start == (-1)) {
1432 #line 174 "project.vala"
1433 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing media_start");
1434 #line 1416 "project.c"
1436 _g_free0 (clip_name);
1437 #line 175 "project.vala"
1439 #line 1421 "project.c"
1441 #line 178 "project.vala"
1442 if (duration == (-1)) {
1443 #line 179 "project.vala"
1444 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "missing duration");
1445 #line 1427 "project.c"
1447 _g_free0 (clip_name);
1448 #line 180 "project.vala"
1450 #line 1432 "project.c"
1452 #line 183 "project.vala"
1453 if (id >= gee_collection_get_size (GEE_COLLECTION (self->priv->clipfetchers))) {
1454 #line 1436 "project.c"
1456 #line 184 "project.vala"
1457 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp5_ = g_strdup_printf ("clip file id %s was not loaded", clip_name));
1458 #line 1440 "project.c"
1461 _g_free0 (clip_name);
1462 #line 185 "project.vala"
1464 #line 1446 "project.c"
1466 #line 188 "project.vala"
1467 clip = (_tmp7_ = model_clip_new (MODEL_FETCHER (_tmp6_ = (ModelClipFetcher*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->clipfetchers), id))->clipfile, model_track_media_type (self->current_track), clip_name, start, media_start, duration, FALSE), _g_object_unref0 (_tmp6_), _tmp7_);
1468 #line 190 "project.vala"
1469 model_track_add (self->current_track, clip, start, FALSE);
1470 #line 1452 "project.c"
1472 _g_free0 (clip_name);
1473 _g_object_unref0 (clip);
1474 #line 191 "project.vala"
1476 #line 1458 "project.c"
1480 #line 194 "project.vala"
1481 static void model_media_loader_handler_fetcher_ready (ModelMediaLoaderHandler* self, ModelFetcher* f) {
1482 #line 194 "project.vala"
1483 g_return_if_fail (MODEL_IS_MEDIA_LOADER_HANDLER (self));
1484 #line 194 "project.vala"
1485 g_return_if_fail (MODEL_IS_FETCHER (f));
1486 #line 195 "project.vala"
1487 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "fetcher_ready");
1488 #line 196 "project.vala"
1489 if (f->error_string != NULL) {
1490 #line 1472 "project.c"
1492 #line 197 "project.vala"
1493 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp0_ = g_strdup_printf ("Could not load %s.", f->clipfile->filename));
1494 #line 1476 "project.c"
1496 #line 198 "project.vala"
1497 g_warning ("project.vala:198: Could not load %s: %s", f->clipfile->filename, f->error_string);
1498 #line 1480 "project.c"
1500 #line 200 "project.vala"
1501 model_project_add_clipfile (self->the_project, f->clipfile);
1502 #line 201 "project.vala"
1503 self->priv->num_clipfiles_complete++;
1504 #line 202 "project.vala"
1505 if (self->priv->num_clipfiles_complete == gee_collection_get_size (GEE_COLLECTION (self->priv->clipfetchers))) {
1506 #line 203 "project.vala"
1507 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "complete");
1508 #line 1490 "project.c"
1513 #line 194 "project.vala"
1514 static void _model_media_loader_handler_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self) {
1515 #line 1497 "project.c"
1516 model_media_loader_handler_fetcher_ready (self, fetcher);
1520 #line 207 "project.vala"
1521 static gboolean model_media_loader_handler_real_commit_clipfile (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
1522 #line 1504 "project.c"
1523 ModelMediaLoaderHandler * self;
1524 gboolean result = FALSE;
1525 GError * _inner_error_;
1528 self = MODEL_MEDIA_LOADER_HANDLER (base);
1529 _inner_error_ = NULL;
1530 #line 208 "project.vala"
1532 #line 209 "project.vala"
1534 #line 1516 "project.c"
1537 #line 211 "project.vala"
1539 #line 1521 "project.c"
1542 #line 211 "project.vala"
1544 #line 211 "project.vala"
1546 #line 211 "project.vala"
1548 #line 211 "project.vala"
1550 #line 1532 "project.c"
1552 #line 211 "project.vala"
1554 #line 211 "project.vala"
1555 if (!(i < attr_names_length1)) {
1556 #line 211 "project.vala"
1558 #line 1540 "project.c"
1560 #line 212 "project.vala"
1561 if (_vala_strcmp0 (attr_names[i], "filename") == 0) {
1562 #line 1544 "project.c"
1564 #line 213 "project.vala"
1565 filename = (_tmp1_ = g_strdup (attr_values[i]), _g_free0 (filename), _tmp1_);
1566 #line 1548 "project.c"
1568 #line 214 "project.vala"
1569 if (_vala_strcmp0 (attr_names[i], "id") == 0) {
1570 #line 215 "project.vala"
1571 id = atoi (attr_values[i]);
1572 #line 1554 "project.c"
1578 #line 219 "project.vala"
1579 if (filename == NULL) {
1580 #line 220 "project.vala"
1581 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid clipfile filename");
1582 #line 1564 "project.c"
1584 _g_free0 (filename);
1585 #line 221 "project.vala"
1587 #line 1569 "project.c"
1589 #line 224 "project.vala"
1591 #line 225 "project.vala"
1592 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid clipfile id");
1593 #line 1575 "project.c"
1595 _g_free0 (filename);
1596 #line 226 "project.vala"
1598 #line 1580 "project.c"
1601 ModelClipFetcher* fetcher;
1602 #line 230 "project.vala"
1603 fetcher = model_clip_fetcher_new (filename, &_inner_error_);
1604 #line 1586 "project.c"
1605 if (_inner_error_ != NULL) {
1606 goto __catch14_g_error;
1608 #line 231 "project.vala"
1609 g_signal_connect_object (MODEL_FETCHER (fetcher), "ready", (GCallback) _model_media_loader_handler_fetcher_ready_model_fetcher_ready, self, 0);
1610 #line 232 "project.vala"
1611 gee_abstract_list_insert (GEE_ABSTRACT_LIST (self->priv->clipfetchers), id, fetcher);
1612 #line 1594 "project.c"
1613 _g_object_unref0 (fetcher);
1620 _inner_error_ = NULL;
1622 #line 234 "project.vala"
1623 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", e->message);
1624 #line 1606 "project.c"
1627 _g_free0 (filename);
1628 #line 235 "project.vala"
1630 #line 1612 "project.c"
1634 if (_inner_error_ != NULL) {
1635 _g_free0 (filename);
1636 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);
1637 g_clear_error (&_inner_error_);
1641 _g_free0 (filename);
1642 #line 237 "project.vala"
1644 #line 1626 "project.c"
1648 #line 240 "project.vala"
1649 static gboolean model_media_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
1650 #line 1632 "project.c"
1651 ModelMediaLoaderHandler * self;
1652 gboolean result = FALSE;
1653 self = MODEL_MEDIA_LOADER_HANDLER (base);
1654 #line 241 "project.vala"
1655 if (_vala_strcmp0 (attr_names[0], "tempo") != 0) {
1656 #line 242 "project.vala"
1657 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid attribute on tempo entry");
1658 #line 1640 "project.c"
1660 #line 243 "project.vala"
1662 #line 1644 "project.c"
1664 #line 246 "project.vala"
1665 _model_project_set_bpm (self->the_project, atoi (attr_values[0]));
1666 #line 1648 "project.c"
1668 #line 247 "project.vala"
1670 #line 1652 "project.c"
1674 #line 250 "project.vala"
1675 static gboolean model_media_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
1676 #line 1658 "project.c"
1677 ModelMediaLoaderHandler * self;
1678 gboolean result = FALSE;
1680 Fraction _tmp0_ = {0};
1681 self = MODEL_MEDIA_LOADER_HANDLER (base);
1682 #line 251 "project.vala"
1683 if (_vala_strcmp0 (attr_names[0], "signature") != 0) {
1684 #line 252 "project.vala"
1685 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", "Invalid attribute on time signature");
1686 #line 1668 "project.c"
1688 #line 253 "project.vala"
1690 #line 1672 "project.c"
1692 #line 256 "project.vala"
1693 _model_project_set_time_signature (self->the_project, (_tmp1_ = (fraction_init_from_string (&_tmp0_, attr_values[0]), _tmp0_), &_tmp1_));
1694 #line 1676 "project.c"
1696 #line 257 "project.vala"
1698 #line 1680 "project.c"
1702 #line 260 "project.vala"
1703 static gboolean model_media_loader_handler_real_commit_click (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
1704 #line 1686 "project.c"
1705 ModelMediaLoaderHandler * self;
1706 gboolean result = FALSE;
1707 self = MODEL_MEDIA_LOADER_HANDLER (base);
1710 #line 261 "project.vala"
1712 #line 1694 "project.c"
1715 #line 261 "project.vala"
1717 #line 261 "project.vala"
1719 #line 1701 "project.c"
1722 static GQuark _tmp3__label0 = 0;
1723 static GQuark _tmp3__label1 = 0;
1724 static GQuark _tmp3__label2 = 0;
1725 #line 261 "project.vala"
1727 #line 261 "project.vala"
1729 #line 1711 "project.c"
1731 #line 261 "project.vala"
1733 #line 261 "project.vala"
1734 if (!(i < attr_names_length1)) {
1735 #line 261 "project.vala"
1737 #line 1719 "project.c"
1739 _tmp2_ = attr_names[i];
1740 _tmp3_ = (NULL == _tmp2_) ? 0 : g_quark_from_string (_tmp2_);
1741 if (_tmp3_ == ((0 != _tmp3__label0) ? _tmp3__label0 : (_tmp3__label0 = g_quark_from_static_string ("on_play"))))
1745 #line 264 "project.vala"
1746 self->the_project->click_during_play = _vala_strcmp0 (attr_values[i], "true") == 0;
1747 #line 265 "project.vala"
1749 #line 1731 "project.c"
1751 } else if (_tmp3_ == ((0 != _tmp3__label1) ? _tmp3__label1 : (_tmp3__label1 = g_quark_from_static_string ("on_record"))))
1755 #line 267 "project.vala"
1756 self->the_project->click_during_record = _vala_strcmp0 (attr_values[i], "true") == 0;
1757 #line 268 "project.vala"
1759 #line 1741 "project.c"
1761 } else if (_tmp3_ == ((0 != _tmp3__label2) ? _tmp3__label2 : (_tmp3__label2 = g_quark_from_static_string ("volume"))))
1765 #line 270 "project.vala"
1766 self->the_project->click_volume = g_ascii_strtod (attr_values[i], NULL);
1767 #line 271 "project.vala"
1769 #line 1751 "project.c"
1776 #line 273 "project.vala"
1777 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp1_ = g_strdup_printf ("unknown attribute for click '%s'", attr_names[i]));
1778 #line 1760 "project.c"
1781 #line 274 "project.vala"
1783 #line 1765 "project.c"
1790 #line 277 "project.vala"
1792 #line 1774 "project.c"
1796 #line 280 "project.vala"
1797 static gboolean model_media_loader_handler_real_commit_library_preference (ModelLoaderHandler* base, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
1798 #line 1780 "project.c"
1799 ModelMediaLoaderHandler * self;
1800 gboolean result = FALSE;
1801 self = MODEL_MEDIA_LOADER_HANDLER (base);
1804 #line 281 "project.vala"
1806 #line 1788 "project.c"
1809 #line 281 "project.vala"
1811 #line 281 "project.vala"
1813 #line 1795 "project.c"
1816 static GQuark _tmp3__label0 = 0;
1817 static GQuark _tmp3__label1 = 0;
1818 #line 281 "project.vala"
1820 #line 281 "project.vala"
1822 #line 1804 "project.c"
1824 #line 281 "project.vala"
1826 #line 281 "project.vala"
1827 if (!(i < attr_names_length1)) {
1828 #line 281 "project.vala"
1830 #line 1812 "project.c"
1832 _tmp2_ = attr_names[i];
1833 _tmp3_ = (NULL == _tmp2_) ? 0 : g_quark_from_string (_tmp2_);
1834 if (_tmp3_ == ((0 != _tmp3__label0) ? _tmp3__label0 : (_tmp3__label0 = g_quark_from_static_string ("width"))))
1838 #line 284 "project.vala"
1839 self->the_project->library_width = atoi (attr_values[i]);
1840 #line 285 "project.vala"
1842 #line 1824 "project.c"
1844 } else if (_tmp3_ == ((0 != _tmp3__label1) ? _tmp3__label1 : (_tmp3__label1 = g_quark_from_static_string ("visible"))))
1848 #line 287 "project.vala"
1849 self->the_project->library_visible = _vala_strcmp0 (attr_values[i], "true") == 0;
1850 #line 288 "project.vala"
1852 #line 1834 "project.c"
1859 #line 290 "project.vala"
1860 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "load-error", _tmp1_ = g_strdup_printf ("unknown attribute for library '%s'", attr_names[i]));
1861 #line 1843 "project.c"
1864 #line 291 "project.vala"
1866 #line 1848 "project.c"
1873 #line 294 "project.vala"
1875 #line 1857 "project.c"
1879 #line 297 "project.vala"
1880 static void model_media_loader_handler_real_leave_library (ModelLoaderHandler* base) {
1881 #line 1863 "project.c"
1882 ModelMediaLoaderHandler * self;
1883 self = MODEL_MEDIA_LOADER_HANDLER (base);
1884 #line 298 "project.vala"
1885 if (gee_collection_get_size (GEE_COLLECTION (self->priv->clipfetchers)) == 0) {
1886 #line 299 "project.vala"
1887 g_signal_emit_by_name (MODEL_LOADER_HANDLER (self), "complete");
1888 #line 1870 "project.c"
1893 static void model_media_loader_handler_class_init (ModelMediaLoaderHandlerClass * klass) {
1894 model_media_loader_handler_parent_class = g_type_class_peek_parent (klass);
1895 g_type_class_add_private (klass, sizeof (ModelMediaLoaderHandlerPrivate));
1896 MODEL_LOADER_HANDLER_CLASS (klass)->commit_marina = model_media_loader_handler_real_commit_marina;
1897 MODEL_LOADER_HANDLER_CLASS (klass)->commit_library = model_media_loader_handler_real_commit_library;
1898 MODEL_LOADER_HANDLER_CLASS (klass)->commit_track = model_media_loader_handler_real_commit_track;
1899 MODEL_LOADER_HANDLER_CLASS (klass)->leave_track = model_media_loader_handler_real_leave_track;
1900 MODEL_LOADER_HANDLER_CLASS (klass)->commit_clip = model_media_loader_handler_real_commit_clip;
1901 MODEL_LOADER_HANDLER_CLASS (klass)->commit_clipfile = model_media_loader_handler_real_commit_clipfile;
1902 MODEL_LOADER_HANDLER_CLASS (klass)->commit_tempo_entry = model_media_loader_handler_real_commit_tempo_entry;
1903 MODEL_LOADER_HANDLER_CLASS (klass)->commit_time_signature_entry = model_media_loader_handler_real_commit_time_signature_entry;
1904 MODEL_LOADER_HANDLER_CLASS (klass)->commit_click = model_media_loader_handler_real_commit_click;
1905 MODEL_LOADER_HANDLER_CLASS (klass)->commit_library_preference = model_media_loader_handler_real_commit_library_preference;
1906 MODEL_LOADER_HANDLER_CLASS (klass)->leave_library = model_media_loader_handler_real_leave_library;
1907 G_OBJECT_CLASS (klass)->finalize = model_media_loader_handler_finalize;
1911 static void model_media_loader_handler_instance_init (ModelMediaLoaderHandler * self) {
1912 self->priv = MODEL_MEDIA_LOADER_HANDLER_GET_PRIVATE (self);
1913 self->priv->clipfetchers = gee_array_list_new (MODEL_TYPE_CLIP_FETCHER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
1917 static void model_media_loader_handler_finalize (GObject* obj) {
1918 ModelMediaLoaderHandler * self;
1919 self = MODEL_MEDIA_LOADER_HANDLER (obj);
1920 _g_object_unref0 (self->current_track);
1921 _g_object_unref0 (self->priv->clipfetchers);
1922 G_OBJECT_CLASS (model_media_loader_handler_parent_class)->finalize (obj);
1926 GType model_media_loader_handler_get_type (void) {
1927 static volatile gsize model_media_loader_handler_type_id__volatile = 0;
1928 if (g_once_init_enter (&model_media_loader_handler_type_id__volatile)) {
1929 static const GTypeInfo g_define_type_info = { sizeof (ModelMediaLoaderHandlerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_media_loader_handler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelMediaLoaderHandler), 0, (GInstanceInitFunc) model_media_loader_handler_instance_init, NULL };
1930 GType model_media_loader_handler_type_id;
1931 model_media_loader_handler_type_id = g_type_register_static (MODEL_TYPE_LOADER_HANDLER, "ModelMediaLoaderHandler", &g_define_type_info, 0);
1932 g_once_init_leave (&model_media_loader_handler_type_id__volatile, model_media_loader_handler_type_id);
1934 return model_media_loader_handler_type_id__volatile;
1938 #line 383 "project.vala"
1939 static void model_project_real_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result) {
1940 #line 1922 "project.c"
1941 g_return_if_fail (MODEL_IS_PROJECT (self));
1942 g_critical ("Type `%s' does not implement abstract method `model_project_get_clip_time'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
1947 #line 383 "project.vala"
1948 void model_project_get_clip_time (ModelProject* self, ModelClipFile* f, TimeCode* result) {
1949 #line 383 "project.vala"
1950 MODEL_PROJECT_GET_CLASS (self)->get_clip_time (self, f, result);
1951 #line 1933 "project.c"
1955 #line 1145 "MediaEngine.vala"
1956 static void _view_media_engine_on_track_added_model_project_track_added (ModelProject* _sender, ModelTrack* track, gpointer self) {
1957 #line 1939 "project.c"
1958 view_media_engine_on_track_added (self, track);
1962 #line 397 "project.vala"
1963 static void _model_project_on_playstate_changed_view_media_engine_playstate_changed (ViewMediaEngine* _sender, gpointer self) {
1964 #line 1946 "project.c"
1965 model_project_on_playstate_changed (self);
1969 #line 924 "project.vala"
1970 static void _model_project_on_error_occurred_view_media_engine_error_occurred (ViewMediaEngine* _sender, const char* major_message, const char* minor_message, gpointer self) {
1971 #line 1953 "project.c"
1972 model_project_on_error_occurred (self, major_message, minor_message);
1976 #line 385 "project.vala"
1977 ModelProject* model_project_construct (GType object_type, const char* filename, gboolean include_video, GError** error) {
1978 #line 1960 "project.c"
1979 GError * _inner_error_;
1980 ModelProject * self;
1981 ModelUndoManager* _tmp0_;
1983 ViewMediaEngine* _tmp2_;
1984 ViewMediaEngine* _tmp3_;
1985 _inner_error_ = NULL;
1986 #line 385 "project.vala"
1987 self = (ModelProject*) g_object_new (object_type, NULL);
1988 #line 386 "project.vala"
1989 self->undo_manager = (_tmp0_ = model_undo_manager_new (), _model_undo_manager_unref0 (self->undo_manager), _tmp0_);
1990 #line 387 "project.vala"
1991 self->project_file = (_tmp1_ = g_strdup (filename), _g_free0 (self->project_file), _tmp1_);
1992 #line 389 "project.vala"
1993 _tmp2_ = view_media_engine_new (self, include_video, &_inner_error_);
1994 #line 1976 "project.c"
1995 if (_inner_error_ != NULL) {
1996 g_propagate_error (error, _inner_error_);
1997 g_object_unref (self);
2000 #line 389 "project.vala"
2001 self->media_engine = (_tmp3_ = _tmp2_, _g_object_unref0 (self->media_engine), _tmp3_);
2002 #line 390 "project.vala"
2003 g_signal_connect_object (self, "track-added", (GCallback) _view_media_engine_on_track_added_model_project_track_added, self->media_engine, 0);
2004 #line 391 "project.vala"
2005 g_signal_connect_object (self->media_engine, "playstate-changed", (GCallback) _model_project_on_playstate_changed_view_media_engine_playstate_changed, self, 0);
2006 #line 392 "project.vala"
2007 g_signal_connect_object (self->media_engine, "error-occurred", (GCallback) _model_project_on_error_occurred_view_media_engine_error_occurred, self, 0);
2008 #line 394 "project.vala"
2009 model_project_set_default_framerate (self, &model_project_INVALID_FRAME_RATE);
2010 #line 1992 "project.c"
2015 #line 397 "project.vala"
2016 void model_project_on_playstate_changed (ModelProject* self) {
2017 #line 397 "project.vala"
2018 g_return_if_fail (MODEL_IS_PROJECT (self));
2019 #line 398 "project.vala"
2020 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_playstate_changed");
2021 #line 399 "project.vala"
2022 switch (view_media_engine_get_play_state (self->media_engine)) {
2023 #line 2005 "project.c"
2024 case PLAY_STATE_STOPPED:
2026 #line 401 "project.vala"
2027 model_project_ClearTrackMeters (self);
2028 #line 402 "project.vala"
2030 #line 2012 "project.c"
2032 case PLAY_STATE_CLOSED:
2034 #line 404 "project.vala"
2035 g_signal_emit_by_name (self, "closed");
2036 #line 405 "project.vala"
2038 #line 2020 "project.c"
2041 #line 407 "project.vala"
2042 g_signal_emit_by_name (self, "playstate-changed", view_media_engine_get_play_state (self->media_engine));
2043 #line 2025 "project.c"
2047 #line 410 "project.vala"
2048 static char* model_project_real_get_project_file (ModelProject* self) {
2049 #line 2031 "project.c"
2050 char* result = NULL;
2051 #line 410 "project.vala"
2052 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
2053 #line 2035 "project.c"
2054 result = g_strdup (self->project_file);
2055 #line 411 "project.vala"
2057 #line 2039 "project.c"
2061 #line 410 "project.vala"
2062 char* model_project_get_project_file (ModelProject* self) {
2063 #line 410 "project.vala"
2064 return MODEL_PROJECT_GET_CLASS (self)->get_project_file (self);
2065 #line 2047 "project.c"
2069 #line 414 "project.vala"
2070 ModelClipFile* model_project_get_clipfile (ModelProject* self, gint index) {
2071 #line 2053 "project.c"
2072 ModelClipFile* result = NULL;
2073 gboolean _tmp0_ = FALSE;
2074 #line 414 "project.vala"
2075 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
2076 #line 415 "project.vala"
2078 #line 415 "project.vala"
2080 #line 2062 "project.c"
2082 #line 416 "project.vala"
2083 _tmp0_ = index >= gee_collection_get_size (GEE_COLLECTION (self->clipfiles));
2084 #line 2066 "project.c"
2086 #line 415 "project.vala"
2088 #line 2070 "project.c"
2090 #line 417 "project.vala"
2092 #line 2074 "project.c"
2094 result = (ModelClipFile*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clipfiles), index);
2095 #line 418 "project.vala"
2097 #line 2079 "project.c"
2101 #line 421 "project.vala"
2102 gint model_project_get_clipfile_index (ModelProject* self, ModelClipFile* find) {
2103 #line 2085 "project.c"
2106 #line 421 "project.vala"
2107 g_return_val_if_fail (MODEL_IS_PROJECT (self), 0);
2108 #line 421 "project.vala"
2109 g_return_val_if_fail (MODEL_IS_CLIP_FILE (find), 0);
2110 #line 422 "project.vala"
2112 #line 2094 "project.c"
2115 _f_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clipfiles));
2116 #line 423 "project.vala"
2118 #line 2100 "project.c"
2120 #line 423 "project.vala"
2121 if (!gee_iterator_next (_f_it)) {
2122 #line 423 "project.vala"
2124 #line 2106 "project.c"
2126 #line 423 "project.vala"
2127 f = (ModelClipFile*) gee_iterator_get (_f_it);
2128 #line 424 "project.vala"
2130 #line 2112 "project.c"
2132 _g_object_unref0 (f);
2133 _g_object_unref0 (_f_it);
2134 #line 425 "project.vala"
2136 #line 2118 "project.c"
2138 #line 426 "project.vala"
2140 #line 2122 "project.c"
2141 _g_object_unref0 (f);
2143 _g_object_unref0 (_f_it);
2146 #line 428 "project.vala"
2148 #line 2130 "project.c"
2152 #line 431 "project.vala"
2153 ModelTrack* model_project_track_from_clip (ModelProject* self, ModelClip* clip) {
2154 #line 2136 "project.c"
2155 ModelTrack* result = NULL;
2156 #line 431 "project.vala"
2157 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
2158 #line 431 "project.vala"
2159 g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL);
2160 #line 2142 "project.c"
2162 GeeIterator* _track_it;
2163 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2164 #line 432 "project.vala"
2166 #line 2148 "project.c"
2168 #line 432 "project.vala"
2169 if (!gee_iterator_next (_track_it)) {
2170 #line 432 "project.vala"
2172 #line 2154 "project.c"
2174 #line 432 "project.vala"
2175 track = (ModelTrack*) gee_iterator_get (_track_it);
2176 #line 2158 "project.c"
2178 GeeIterator* _match_it;
2179 _match_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (track->clips));
2180 #line 433 "project.vala"
2182 #line 2164 "project.c"
2184 #line 433 "project.vala"
2185 if (!gee_iterator_next (_match_it)) {
2186 #line 433 "project.vala"
2188 #line 2170 "project.c"
2190 #line 433 "project.vala"
2191 match = (ModelClip*) gee_iterator_get (_match_it);
2192 #line 434 "project.vala"
2193 if (match == clip) {
2194 #line 2176 "project.c"
2196 _g_object_unref0 (match);
2197 _g_object_unref0 (_match_it);
2198 _g_object_unref0 (_track_it);
2199 #line 435 "project.vala"
2201 #line 2183 "project.c"
2203 _g_object_unref0 (match);
2205 _g_object_unref0 (_match_it);
2207 _g_object_unref0 (track);
2209 _g_object_unref0 (_track_it);
2212 #line 439 "project.vala"
2214 #line 2196 "project.c"
2218 #line 442 "project.vala"
2219 void model_project_print_graph (ModelProject* self, GstBin* bin, const char* file_name) {
2220 #line 442 "project.vala"
2221 g_return_if_fail (MODEL_IS_PROJECT (self));
2222 #line 442 "project.vala"
2223 g_return_if_fail (GST_IS_BIN (bin));
2224 #line 442 "project.vala"
2225 g_return_if_fail (file_name != NULL);
2226 #line 443 "project.vala"
2227 GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (bin, GST_DEBUG_GRAPH_SHOW_ALL, file_name);
2228 #line 2210 "project.c"
2232 #line 446 "project.vala"
2233 gint64 model_project_get_length (ModelProject* self) {
2234 #line 2216 "project.c"
2235 gint64 result = 0LL;
2237 #line 446 "project.vala"
2238 g_return_val_if_fail (MODEL_IS_PROJECT (self), 0LL);
2239 #line 447 "project.vala"
2241 #line 2223 "project.c"
2243 GeeIterator* _track_it;
2244 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2245 #line 448 "project.vala"
2247 #line 2229 "project.c"
2249 #line 448 "project.vala"
2250 if (!gee_iterator_next (_track_it)) {
2251 #line 448 "project.vala"
2253 #line 2235 "project.c"
2255 #line 448 "project.vala"
2256 track = (ModelTrack*) gee_iterator_get (_track_it);
2257 #line 449 "project.vala"
2258 max = MAX (max, model_track_get_length (track));
2259 #line 2241 "project.c"
2260 _g_object_unref0 (track);
2262 _g_object_unref0 (_track_it);
2265 #line 451 "project.vala"
2267 #line 2249 "project.c"
2271 #line 454 "project.vala"
2272 gint64 model_project_snap_clip (ModelProject* self, ModelClip* c, gint64 span) {
2273 #line 2255 "project.c"
2274 gint64 result = 0LL;
2275 #line 454 "project.vala"
2276 g_return_val_if_fail (MODEL_IS_PROJECT (self), 0LL);
2277 #line 454 "project.vala"
2278 g_return_val_if_fail (MODEL_IS_CLIP (c), 0LL);
2279 #line 2261 "project.c"
2281 GeeIterator* _track_it;
2282 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2283 #line 455 "project.vala"
2285 #line 2267 "project.c"
2288 #line 455 "project.vala"
2289 if (!gee_iterator_next (_track_it)) {
2290 #line 455 "project.vala"
2292 #line 2274 "project.c"
2294 #line 455 "project.vala"
2295 track = (ModelTrack*) gee_iterator_get (_track_it);
2296 #line 456 "project.vala"
2297 new_start = model_track_snap_clip (track, c, span);
2298 #line 457 "project.vala"
2299 if (new_start != model_clip_get_start (c)) {
2300 #line 2282 "project.c"
2302 _g_object_unref0 (track);
2303 _g_object_unref0 (_track_it);
2304 #line 458 "project.vala"
2306 #line 2288 "project.c"
2308 _g_object_unref0 (track);
2310 _g_object_unref0 (_track_it);
2312 result = model_clip_get_start (c);
2313 #line 461 "project.vala"
2315 #line 2297 "project.c"
2319 #line 464 "project.vala"
2320 void model_project_snap_coord (ModelProject* self, gint64* coord, gint64 span) {
2321 #line 464 "project.vala"
2322 g_return_if_fail (MODEL_IS_PROJECT (self));
2323 #line 2305 "project.c"
2325 GeeIterator* _track_it;
2326 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2327 #line 465 "project.vala"
2329 #line 2311 "project.c"
2331 #line 465 "project.vala"
2332 if (!gee_iterator_next (_track_it)) {
2333 #line 465 "project.vala"
2335 #line 2317 "project.c"
2337 #line 465 "project.vala"
2338 track = (ModelTrack*) gee_iterator_get (_track_it);
2339 #line 466 "project.vala"
2340 if (model_track_snap_coord (track, coord, span)) {
2341 #line 2323 "project.c"
2342 _g_object_unref0 (track);
2343 #line 467 "project.vala"
2345 #line 2327 "project.c"
2347 _g_object_unref0 (track);
2349 _g_object_unref0 (_track_it);
2354 static gpointer _model_gap_ref0 (gpointer self) {
2355 return self ? model_gap_ref (self) : NULL;
2359 #line 472 "project.vala"
2360 static ModelGap* model_project_get_gap_intersection (ModelProject* self, ModelGap* gap) {
2361 #line 2343 "project.c"
2362 ModelGap* result = NULL;
2363 ModelGap* intersection;
2364 #line 472 "project.vala"
2365 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
2366 #line 472 "project.vala"
2367 g_return_val_if_fail (MODEL_IS_GAP (gap), NULL);
2368 #line 473 "project.vala"
2369 intersection = _model_gap_ref0 (gap);
2370 #line 2352 "project.c"
2372 GeeIterator* _track_it;
2373 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2374 #line 475 "project.vala"
2376 #line 2358 "project.c"
2380 #line 475 "project.vala"
2381 if (!gee_iterator_next (_track_it)) {
2382 #line 475 "project.vala"
2384 #line 2366 "project.c"
2386 #line 475 "project.vala"
2387 track = (ModelTrack*) gee_iterator_get (_track_it);
2388 #line 476 "project.vala"
2389 intersection = (_tmp1_ = model_gap_intersect (intersection, _tmp0_ = model_track_find_first_gap (track, intersection->start)), _model_gap_unref0 (intersection), _tmp1_);
2390 #line 2372 "project.c"
2391 _model_gap_unref0 (_tmp0_);
2392 _g_object_unref0 (track);
2394 _g_object_unref0 (_track_it);
2396 result = intersection;
2397 #line 479 "project.vala"
2399 #line 2381 "project.c"
2403 #line 482 "project.vala"
2404 gboolean model_project_can_delete_gap (ModelProject* self, ModelGap* gap) {
2405 #line 2387 "project.c"
2406 gboolean result = FALSE;
2407 ModelGap* intersection;
2408 #line 482 "project.vala"
2409 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
2410 #line 482 "project.vala"
2411 g_return_val_if_fail (MODEL_IS_GAP (gap), FALSE);
2412 #line 483 "project.vala"
2413 intersection = model_project_get_gap_intersection (self, gap);
2414 #line 2396 "project.c"
2415 result = !model_gap_is_empty (intersection);
2416 _model_gap_unref0 (intersection);
2417 #line 484 "project.vala"
2419 #line 2401 "project.c"
2423 #line 487 "project.vala"
2424 void model_project_delete_gap (ModelProject* self, ModelGap* gap) {
2425 #line 2407 "project.c"
2426 ModelGap* intersection;
2427 #line 487 "project.vala"
2428 g_return_if_fail (MODEL_IS_PROJECT (self));
2429 #line 487 "project.vala"
2430 g_return_if_fail (MODEL_IS_GAP (gap));
2431 #line 488 "project.vala"
2432 intersection = model_project_get_gap_intersection (self, gap);
2433 #line 489 "project.vala"
2434 g_assert (!model_gap_is_empty (intersection));
2435 #line 2417 "project.c"
2437 GeeIterator* _track_it;
2438 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2439 #line 491 "project.vala"
2441 #line 2423 "project.c"
2443 #line 491 "project.vala"
2444 if (!gee_iterator_next (_track_it)) {
2445 #line 491 "project.vala"
2447 #line 2429 "project.c"
2449 #line 491 "project.vala"
2450 track = (ModelTrack*) gee_iterator_get (_track_it);
2451 #line 492 "project.vala"
2452 model_track_delete_gap (track, intersection);
2453 #line 2435 "project.c"
2454 _g_object_unref0 (track);
2456 _g_object_unref0 (_track_it);
2458 _model_gap_unref0 (intersection);
2462 #line 496 "project.vala"
2463 static void model_project_real_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time) {
2464 #line 2446 "project.c"
2466 #line 496 "project.vala"
2467 g_return_if_fail (MODEL_IS_PROJECT (self));
2468 #line 496 "project.vala"
2469 g_return_if_fail (MODEL_IS_TRACK (track));
2470 #line 496 "project.vala"
2471 g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile));
2472 #line 496 "project.vala"
2473 g_return_if_fail (name != NULL);
2474 #line 498 "project.vala"
2475 switch (model_track_media_type (track)) {
2476 #line 2458 "project.c"
2477 case MODEL_MEDIA_TYPE_AUDIO:
2479 #line 500 "project.vala"
2480 if (clipfile->audio_caps == NULL) {
2481 #line 501 "project.vala"
2483 #line 2465 "project.c"
2485 #line 503 "project.vala"
2487 #line 2469 "project.c"
2489 case MODEL_MEDIA_TYPE_VIDEO:
2491 #line 505 "project.vala"
2492 if (clipfile->video_caps == NULL) {
2493 #line 506 "project.vala"
2495 #line 2477 "project.c"
2497 #line 508 "project.vala"
2499 #line 2481 "project.c"
2502 #line 511 "project.vala"
2503 clip = model_clip_new (clipfile, model_track_media_type (track), name, (gint64) 0, (gint64) 0, model_clip_file_get_length (clipfile), FALSE);
2504 #line 512 "project.vala"
2505 model_track_append_at_time (track, clip, insert_time, TRUE);
2506 #line 2488 "project.c"
2507 _g_object_unref0 (clip);
2511 #line 496 "project.vala"
2512 void model_project_do_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time) {
2513 #line 496 "project.vala"
2514 MODEL_PROJECT_GET_CLASS (self)->do_append (self, track, clipfile, name, insert_time);
2515 #line 2497 "project.c"
2519 #line 515 "project.vala"
2520 void model_project_append (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile) {
2521 #line 2503 "project.c"
2524 #line 515 "project.vala"
2525 g_return_if_fail (MODEL_IS_PROJECT (self));
2526 #line 515 "project.vala"
2527 g_return_if_fail (MODEL_IS_TRACK (track));
2528 #line 515 "project.vala"
2529 g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile));
2530 #line 516 "project.vala"
2531 name = isolate_filename (clipfile->filename);
2532 #line 517 "project.vala"
2533 insert_time = (gint64) 0;
2534 #line 2516 "project.c"
2536 GeeIterator* _temp_track_it;
2537 _temp_track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2538 #line 519 "project.vala"
2540 #line 2522 "project.c"
2541 ModelTrack* temp_track;
2542 #line 519 "project.vala"
2543 if (!gee_iterator_next (_temp_track_it)) {
2544 #line 519 "project.vala"
2546 #line 2528 "project.c"
2548 #line 519 "project.vala"
2549 temp_track = (ModelTrack*) gee_iterator_get (_temp_track_it);
2550 #line 520 "project.vala"
2551 insert_time = MAX (insert_time, model_track_get_length (temp_track));
2552 #line 2534 "project.c"
2553 _g_object_unref0 (temp_track);
2555 _g_object_unref0 (_temp_track_it);
2557 #line 522 "project.vala"
2558 model_project_do_append (self, track, clipfile, name, insert_time);
2559 #line 2541 "project.c"
2564 #line 525 "project.vala"
2565 void model_project_add (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, gint64 time) {
2566 #line 2548 "project.c"
2568 #line 525 "project.vala"
2569 g_return_if_fail (MODEL_IS_PROJECT (self));
2570 #line 525 "project.vala"
2571 g_return_if_fail (MODEL_IS_TRACK (track));
2572 #line 525 "project.vala"
2573 g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile));
2574 #line 526 "project.vala"
2575 name = isolate_filename (clipfile->filename);
2576 #line 527 "project.vala"
2577 model_project_do_append (self, track, clipfile, name, time);
2578 #line 2560 "project.c"
2583 #line 530 "project.vala"
2584 void model_project_on_clip_removed (ModelProject* self, ModelTrack* t, ModelClip* clip) {
2585 #line 530 "project.vala"
2586 g_return_if_fail (MODEL_IS_PROJECT (self));
2587 #line 530 "project.vala"
2588 g_return_if_fail (MODEL_IS_TRACK (t));
2589 #line 530 "project.vala"
2590 g_return_if_fail (MODEL_IS_CLIP (clip));
2591 #line 531 "project.vala"
2592 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_removed");
2593 #line 532 "project.vala"
2594 model_project_reseek (self);
2595 #line 2577 "project.c"
2599 #line 535 "project.vala"
2600 void model_project_split_at_playhead (ModelProject* self) {
2601 #line 2583 "project.c"
2603 #line 535 "project.vala"
2604 g_return_if_fail (MODEL_IS_PROJECT (self));
2605 #line 536 "project.vala"
2606 description = g_strdup ("Split At Playhead");
2607 #line 537 "project.vala"
2608 model_undo_manager_start_transaction (self->undo_manager, description);
2609 #line 2591 "project.c"
2611 GeeIterator* _track_it;
2612 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2613 #line 538 "project.vala"
2615 #line 2597 "project.c"
2619 #line 538 "project.vala"
2620 if (!gee_iterator_next (_track_it)) {
2621 #line 538 "project.vala"
2623 #line 2605 "project.c"
2625 #line 538 "project.vala"
2626 track = (ModelTrack*) gee_iterator_get (_track_it);
2627 #line 539 "project.vala"
2628 if ((_tmp1_ = (_tmp0_ = model_track_get_clip_by_position (track, model_project_transport_get_position (self))) != NULL, _g_object_unref0 (_tmp0_), _tmp1_)) {
2629 #line 540 "project.vala"
2630 model_track_split_at (track, model_project_transport_get_position (self));
2631 #line 2613 "project.c"
2633 _g_object_unref0 (track);
2635 _g_object_unref0 (_track_it);
2637 #line 543 "project.vala"
2638 model_undo_manager_end_transaction (self->undo_manager, description);
2639 #line 2621 "project.c"
2640 _g_free0 (description);
2644 #line 546 "project.vala"
2645 gboolean model_project_can_trim (ModelProject* self, gboolean* left) {
2646 #line 2628 "project.c"
2647 gboolean result = FALSE;
2648 ModelClip* first_clip;
2651 gboolean start_same;
2653 gboolean _tmp4_ = FALSE;
2654 gboolean _tmp5_ = FALSE;
2655 #line 546 "project.vala"
2656 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
2657 #line 547 "project.vala"
2659 #line 553 "project.vala"
2661 #line 554 "project.vala"
2663 #line 555 "project.vala"
2665 #line 556 "project.vala"
2667 #line 2649 "project.c"
2669 GeeIterator* _track_it;
2670 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2671 #line 557 "project.vala"
2673 #line 2655 "project.c"
2676 gboolean _tmp0_ = FALSE;
2677 #line 557 "project.vala"
2678 if (!gee_iterator_next (_track_it)) {
2679 #line 557 "project.vala"
2681 #line 2663 "project.c"
2683 #line 557 "project.vala"
2684 track = (ModelTrack*) gee_iterator_get (_track_it);
2685 #line 558 "project.vala"
2686 clip = model_track_get_clip_by_position (track, model_project_transport_get_position (self));
2687 #line 559 "project.vala"
2688 if (first_clip != NULL) {
2689 #line 559 "project.vala"
2690 _tmp0_ = clip != NULL;
2691 #line 2673 "project.c"
2693 #line 559 "project.vala"
2695 #line 2677 "project.c"
2697 #line 559 "project.vala"
2699 #line 2681 "project.c"
2700 gboolean _tmp1_ = FALSE;
2701 gboolean _tmp2_ = FALSE;
2702 #line 560 "project.vala"
2704 #line 560 "project.vala"
2705 _tmp1_ = start == model_clip_get_start (clip);
2706 #line 2688 "project.c"
2708 #line 560 "project.vala"
2710 #line 2692 "project.c"
2712 #line 560 "project.vala"
2713 start_same = _tmp1_;
2714 #line 561 "project.vala"
2716 #line 561 "project.vala"
2717 _tmp2_ = end == model_clip_get_end (clip);
2718 #line 2700 "project.c"
2720 #line 561 "project.vala"
2722 #line 2704 "project.c"
2724 #line 561 "project.vala"
2726 #line 2708 "project.c"
2728 #line 562 "project.vala"
2730 #line 2712 "project.c"
2732 #line 563 "project.vala"
2733 first_clip = (_tmp3_ = _g_object_ref0 (clip), _g_object_unref0 (first_clip), _tmp3_);
2734 #line 564 "project.vala"
2735 start = model_clip_get_start (first_clip);
2736 #line 565 "project.vala"
2737 end = model_clip_get_end (first_clip);
2738 #line 2720 "project.c"
2741 _g_object_unref0 (track);
2742 _g_object_unref0 (clip);
2744 _g_object_unref0 (_track_it);
2746 #line 569 "project.vala"
2747 if (first_clip == NULL) {
2748 #line 2730 "project.c"
2750 _g_object_unref0 (first_clip);
2751 #line 570 "project.vala"
2753 #line 2735 "project.c"
2755 #line 573 "project.vala"
2757 #line 573 "project.vala"
2759 #line 2741 "project.c"
2761 #line 573 "project.vala"
2763 #line 2745 "project.c"
2765 #line 573 "project.vala"
2767 #line 574 "project.vala"
2769 #line 2751 "project.c"
2771 _g_object_unref0 (first_clip);
2772 #line 575 "project.vala"
2774 #line 2756 "project.c"
2776 #line 578 "project.vala"
2778 #line 578 "project.vala"
2780 #line 2762 "project.c"
2782 #line 578 "project.vala"
2784 #line 2766 "project.c"
2786 #line 578 "project.vala"
2788 #line 579 "project.vala"
2790 #line 2772 "project.c"
2792 _g_object_unref0 (first_clip);
2793 #line 580 "project.vala"
2795 #line 2777 "project.c"
2797 #line 584 "project.vala"
2798 *left = (model_project_transport_get_position (self) - model_clip_get_start (first_clip)) < (model_clip_get_duration (first_clip) / 2);
2799 #line 2781 "project.c"
2801 _g_object_unref0 (first_clip);
2802 #line 585 "project.vala"
2804 #line 2786 "project.c"
2808 #line 588 "project.vala"
2809 void model_project_trim_to_playhead (ModelProject* self) {
2810 #line 2792 "project.c"
2811 gboolean left = FALSE;
2813 ModelClip* first_clip;
2814 gboolean _tmp1_ = FALSE;
2815 #line 588 "project.vala"
2816 g_return_if_fail (MODEL_IS_PROJECT (self));
2817 #line 590 "project.vala"
2818 if (!model_project_can_trim (self, &left)) {
2819 #line 591 "project.vala"
2821 #line 2803 "project.c"
2823 #line 593 "project.vala"
2824 description = g_strdup ("Trim To Playhead");
2825 #line 594 "project.vala"
2827 #line 595 "project.vala"
2828 model_undo_manager_start_transaction (self->undo_manager, description);
2829 #line 2811 "project.c"
2831 GeeIterator* _track_it;
2832 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2833 #line 596 "project.vala"
2835 #line 2817 "project.c"
2838 #line 596 "project.vala"
2839 if (!gee_iterator_next (_track_it)) {
2840 #line 596 "project.vala"
2842 #line 2824 "project.c"
2844 #line 596 "project.vala"
2845 track = (ModelTrack*) gee_iterator_get (_track_it);
2846 #line 597 "project.vala"
2847 clip = model_track_get_clip_by_position (track, model_project_transport_get_position (self));
2848 #line 598 "project.vala"
2850 #line 2832 "project.c"
2852 GdkWindowEdge _tmp0_ = 0;
2853 #line 600 "project.vala"
2855 #line 601 "project.vala"
2856 delta = model_project_transport_get_position (self) - model_clip_get_start (clip);
2857 #line 2839 "project.c"
2859 #line 603 "project.vala"
2860 delta = model_project_transport_get_position (self) - model_clip_get_end (clip);
2861 #line 2843 "project.c"
2863 #line 605 "project.vala"
2865 #line 605 "project.vala"
2866 _tmp0_ = GDK_WINDOW_EDGE_WEST;
2867 #line 2849 "project.c"
2869 #line 605 "project.vala"
2870 _tmp0_ = GDK_WINDOW_EDGE_EAST;
2871 #line 2853 "project.c"
2873 #line 605 "project.vala"
2874 model_track_trim (track, clip, delta, _tmp0_);
2875 #line 2857 "project.c"
2877 _g_object_unref0 (track);
2878 _g_object_unref0 (clip);
2880 _g_object_unref0 (_track_it);
2882 #line 608 "project.vala"
2883 model_undo_manager_end_transaction (self->undo_manager, description);
2884 #line 610 "project.vala"
2886 #line 610 "project.vala"
2887 _tmp1_ = first_clip != NULL;
2888 #line 2870 "project.c"
2890 #line 610 "project.vala"
2892 #line 2874 "project.c"
2894 #line 610 "project.vala"
2896 #line 611 "project.vala"
2897 model_project_transport_go (self, model_clip_get_start (first_clip));
2898 #line 2880 "project.c"
2900 _g_free0 (description);
2901 _g_object_unref0 (first_clip);
2905 #line 615 "project.vala"
2906 void model_project_transport_go (ModelProject* self, gint64 position) {
2907 #line 615 "project.vala"
2908 g_return_if_fail (MODEL_IS_PROJECT (self));
2909 #line 616 "project.vala"
2910 view_media_engine_go (self->media_engine, position);
2911 #line 2893 "project.c"
2915 #line 619 "project.vala"
2916 gboolean model_project_transport_is_playing (ModelProject* self) {
2917 #line 2899 "project.c"
2918 gboolean result = FALSE;
2919 #line 619 "project.vala"
2920 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
2921 #line 2903 "project.c"
2922 result = self->media_engine->playing;
2923 #line 620 "project.vala"
2925 #line 2907 "project.c"
2929 #line 623 "project.vala"
2930 gboolean model_project_transport_is_recording (ModelProject* self) {
2931 #line 2913 "project.c"
2932 gboolean result = FALSE;
2933 gboolean _tmp0_ = FALSE;
2934 #line 623 "project.vala"
2935 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
2936 #line 624 "project.vala"
2937 if (view_media_engine_get_play_state (self->media_engine) == PLAY_STATE_PRE_RECORD) {
2938 #line 624 "project.vala"
2940 #line 2922 "project.c"
2942 #line 625 "project.vala"
2943 _tmp0_ = view_media_engine_get_play_state (self->media_engine) == PLAY_STATE_RECORDING;
2944 #line 2926 "project.c"
2947 #line 624 "project.vala"
2949 #line 2931 "project.c"
2953 #line 628 "project.vala"
2954 gboolean model_project_playhead_on_clip (ModelProject* self) {
2955 #line 2937 "project.c"
2956 gboolean result = FALSE;
2957 #line 628 "project.vala"
2958 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
2959 #line 2941 "project.c"
2961 GeeIterator* _track_it;
2962 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
2963 #line 629 "project.vala"
2965 #line 2947 "project.c"
2969 #line 629 "project.vala"
2970 if (!gee_iterator_next (_track_it)) {
2971 #line 629 "project.vala"
2973 #line 2955 "project.c"
2975 #line 629 "project.vala"
2976 track = (ModelTrack*) gee_iterator_get (_track_it);
2977 #line 630 "project.vala"
2978 if ((_tmp1_ = (_tmp0_ = model_track_get_clip_by_position (track, model_project_transport_get_position (self))) != NULL, _g_object_unref0 (_tmp0_), _tmp1_)) {
2979 #line 2961 "project.c"
2981 _g_object_unref0 (track);
2982 _g_object_unref0 (_track_it);
2983 #line 631 "project.vala"
2985 #line 2967 "project.c"
2987 _g_object_unref0 (track);
2989 _g_object_unref0 (_track_it);
2992 #line 634 "project.vala"
2994 #line 2976 "project.c"
2998 #line 637 "project.vala"
2999 gboolean model_project_playhead_on_contiguous_clip (ModelProject* self) {
3000 #line 2982 "project.c"
3001 gboolean result = FALSE;
3002 #line 637 "project.vala"
3003 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
3004 #line 2986 "project.c"
3006 GeeIterator* _track_it;
3007 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
3008 #line 638 "project.vala"
3010 #line 2992 "project.c"
3012 #line 638 "project.vala"
3013 if (!gee_iterator_next (_track_it)) {
3014 #line 638 "project.vala"
3016 #line 2998 "project.c"
3018 #line 638 "project.vala"
3019 track = (ModelTrack*) gee_iterator_get (_track_it);
3020 #line 639 "project.vala"
3021 if (model_track_are_contiguous_clips (track, model_project_transport_get_position (self))) {
3022 #line 3004 "project.c"
3024 _g_object_unref0 (track);
3025 _g_object_unref0 (_track_it);
3026 #line 640 "project.vala"
3028 #line 3010 "project.c"
3030 _g_object_unref0 (track);
3032 _g_object_unref0 (_track_it);
3035 #line 643 "project.vala"
3037 #line 3019 "project.c"
3041 #line 646 "project.vala"
3042 gboolean model_project_is_duplicate_track_name (ModelProject* self, ModelTrack* track, const char* new_name) {
3043 #line 3025 "project.c"
3044 gboolean result = FALSE;
3045 #line 646 "project.vala"
3046 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
3047 #line 646 "project.vala"
3048 g_return_val_if_fail ((track == NULL) || MODEL_IS_TRACK (track), FALSE);
3049 #line 646 "project.vala"
3050 g_return_val_if_fail (new_name != NULL, FALSE);
3051 #line 647 "project.vala"
3052 g_assert (_vala_strcmp0 (new_name, "") != 0);
3053 #line 3035 "project.c"
3055 GeeIterator* _this_track_it;
3056 _this_track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
3057 #line 648 "project.vala"
3059 #line 3041 "project.c"
3060 ModelTrack* this_track;
3061 #line 648 "project.vala"
3062 if (!gee_iterator_next (_this_track_it)) {
3063 #line 648 "project.vala"
3065 #line 3047 "project.c"
3067 #line 648 "project.vala"
3068 this_track = (ModelTrack*) gee_iterator_get (_this_track_it);
3069 #line 649 "project.vala"
3070 if (track != this_track) {
3071 #line 3053 "project.c"
3074 #line 650 "project.vala"
3075 if ((_tmp1_ = _vala_strcmp0 (_tmp0_ = model_track_get_display_name (this_track), new_name) == 0, _g_free0 (_tmp0_), _tmp1_)) {
3076 #line 3058 "project.c"
3078 _g_object_unref0 (this_track);
3079 _g_object_unref0 (_this_track_it);
3080 #line 651 "project.vala"
3082 #line 3064 "project.c"
3085 _g_object_unref0 (this_track);
3087 _g_object_unref0 (_this_track_it);
3090 GeeIterator* _this_track_it;
3091 _this_track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks));
3092 #line 656 "project.vala"
3094 #line 3076 "project.c"
3095 ModelTrack* this_track;
3096 #line 656 "project.vala"
3097 if (!gee_iterator_next (_this_track_it)) {
3098 #line 656 "project.vala"
3100 #line 3082 "project.c"
3102 #line 656 "project.vala"
3103 this_track = (ModelTrack*) gee_iterator_get (_this_track_it);
3104 #line 657 "project.vala"
3105 if (track != this_track) {
3106 #line 3088 "project.c"
3109 #line 658 "project.vala"
3110 if ((_tmp3_ = _vala_strcmp0 (_tmp2_ = model_track_get_display_name (this_track), new_name) == 0, _g_free0 (_tmp2_), _tmp3_)) {
3111 #line 3093 "project.c"
3113 _g_object_unref0 (this_track);
3114 _g_object_unref0 (_this_track_it);
3115 #line 659 "project.vala"
3117 #line 3099 "project.c"
3120 _g_object_unref0 (this_track);
3122 _g_object_unref0 (_this_track_it);
3125 #line 663 "project.vala"
3127 #line 3109 "project.c"
3131 #line 530 "project.vala"
3132 static void _model_project_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self) {
3133 #line 3115 "project.c"
3134 model_project_on_clip_removed (self, _sender, clip);
3138 #line 924 "project.vala"
3139 static void _model_project_on_error_occurred_model_track_error_occurred (ModelTrack* _sender, const char* major_error, const char* minor_error, gpointer self) {
3140 #line 3122 "project.c"
3141 model_project_on_error_occurred (self, major_error, minor_error);
3145 #line 666 "project.vala"
3146 static void model_project_real_add_track (ModelProject* self, ModelTrack* track) {
3147 #line 666 "project.vala"
3148 g_return_if_fail (MODEL_IS_PROJECT (self));
3149 #line 666 "project.vala"
3150 g_return_if_fail (MODEL_IS_TRACK (track));
3151 #line 667 "project.vala"
3152 g_signal_connect_object (track, "clip-removed", (GCallback) _model_project_on_clip_removed_model_track_clip_removed, self, 0);
3153 #line 668 "project.vala"
3154 g_signal_connect_object (track, "error-occurred", (GCallback) _model_project_on_error_occurred_model_track_error_occurred, self, 0);
3155 #line 669 "project.vala"
3156 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->tracks), track);
3157 #line 670 "project.vala"
3158 g_signal_emit_by_name (self, "track-added", track);
3159 #line 3141 "project.c"
3163 #line 666 "project.vala"
3164 void model_project_add_track (ModelProject* self, ModelTrack* track) {
3165 #line 666 "project.vala"
3166 MODEL_PROJECT_GET_CLASS (self)->add_track (self, track);
3167 #line 3149 "project.c"
3171 #line 672 "project.vala"
3172 static void model_project_real_insert_track (ModelProject* self, gint index, ModelTrack* track) {
3173 #line 672 "project.vala"
3174 g_return_if_fail (MODEL_IS_PROJECT (self));
3175 #line 672 "project.vala"
3176 g_return_if_fail (MODEL_IS_TRACK (track));
3177 #line 673 "project.vala"
3179 #line 673 "project.vala"
3181 #line 3163 "project.c"
3183 #line 674 "project.vala"
3184 if (gee_collection_get_size (GEE_COLLECTION (self->tracks)) <= index) {
3185 #line 675 "project.vala"
3186 model_project_add_track (self, track);
3187 #line 3169 "project.c"
3189 #line 678 "project.vala"
3190 g_signal_connect_object (track, "clip-removed", (GCallback) _model_project_on_clip_removed_model_track_clip_removed, self, 0);
3191 #line 679 "project.vala"
3192 g_signal_connect_object (track, "error-occurred", (GCallback) _model_project_on_error_occurred_model_track_error_occurred, self, 0);
3193 #line 680 "project.vala"
3194 gee_abstract_list_insert (GEE_ABSTRACT_LIST (self->tracks), index, track);
3195 #line 681 "project.vala"
3196 g_signal_emit_by_name (self, "track-added", track);
3197 #line 3179 "project.c"
3202 #line 672 "project.vala"
3203 void model_project_insert_track (ModelProject* self, gint index, ModelTrack* track) {
3204 #line 672 "project.vala"
3205 MODEL_PROJECT_GET_CLASS (self)->insert_track (self, index, track);
3206 #line 3188 "project.c"
3210 #line 685 "project.vala"
3211 void model_project_add_inactive_track (ModelProject* self, ModelTrack* track) {
3212 #line 685 "project.vala"
3213 g_return_if_fail (MODEL_IS_PROJECT (self));
3214 #line 685 "project.vala"
3215 g_return_if_fail (MODEL_IS_TRACK (track));
3216 #line 686 "project.vala"
3217 model_track_hide (track);
3218 #line 687 "project.vala"
3219 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->inactive_tracks), track);
3220 #line 3202 "project.c"
3224 #line 690 "project.vala"
3225 void model_project_remove_track (ModelProject* self, ModelTrack* track) {
3226 #line 690 "project.vala"
3227 g_return_if_fail (MODEL_IS_PROJECT (self));
3228 #line 690 "project.vala"
3229 g_return_if_fail (MODEL_IS_TRACK (track));
3230 #line 691 "project.vala"
3231 gst_element_set_state (GST_ELEMENT (self->media_engine->pipeline), GST_STATE_NULL);
3232 #line 692 "project.vala"
3233 g_signal_emit_by_name (track, "track-removed", track);
3234 #line 693 "project.vala"
3235 gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->tracks), track);
3236 #line 694 "project.vala"
3237 g_signal_emit_by_name (self, "track-removed", track);
3238 #line 3220 "project.c"
3242 #line 697 "project.vala"
3243 void model_project_remove_track_at (ModelProject* self, gint index) {
3244 #line 3226 "project.c"
3246 #line 697 "project.vala"
3247 g_return_if_fail (MODEL_IS_PROJECT (self));
3248 #line 698 "project.vala"
3249 model_project_remove_track (self, _tmp0_ = (ModelTrack*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->tracks), index));
3250 #line 3232 "project.c"
3251 _g_object_unref0 (_tmp0_);
3255 #line 701 "project.vala"
3256 void model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile) {
3257 #line 3239 "project.c"
3258 ModelCommand* command;
3259 #line 701 "project.vala"
3260 g_return_if_fail (MODEL_IS_PROJECT (self));
3261 #line 701 "project.vala"
3262 g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile));
3263 #line 702 "project.vala"
3264 command = MODEL_COMMAND (model_add_clip_command_new (self, clipfile));
3265 #line 703 "project.vala"
3266 model_project_do_command (self, command);
3267 #line 3249 "project.c"
3268 _model_command_unref0 (command);
3272 #line 717 "project.vala"
3273 static void _model_project_on_thumbnail_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self) {
3274 #line 3256 "project.c"
3275 model_project_on_thumbnail_ready (self, fetcher);
3279 #line 706 "project.vala"
3280 void _model_project_add_clipfile (ModelProject* self, ModelClipFile* clipfile, GError** error) {
3281 #line 3263 "project.c"
3282 GError * _inner_error_;
3283 gboolean _tmp0_ = FALSE;
3284 #line 706 "project.vala"
3285 g_return_if_fail (MODEL_IS_PROJECT (self));
3286 #line 706 "project.vala"
3287 g_return_if_fail (MODEL_IS_CLIP_FILE (clipfile));
3288 #line 3270 "project.c"
3289 _inner_error_ = NULL;
3290 #line 707 "project.vala"
3291 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->clipfiles), clipfile);
3292 #line 708 "project.vala"
3293 if (model_clip_file_is_online (clipfile)) {
3294 #line 708 "project.vala"
3295 _tmp0_ = model_clip_file_is_of_type (clipfile, MODEL_MEDIA_TYPE_VIDEO);
3296 #line 3278 "project.c"
3298 #line 708 "project.vala"
3300 #line 3282 "project.c"
3302 #line 708 "project.vala"
3304 #line 3286 "project.c"
3305 ModelThumbnailFetcher* fetcher;
3306 #line 709 "project.vala"
3307 fetcher = model_thumbnail_fetcher_new (clipfile, (gint64) 0, &_inner_error_);
3308 #line 3290 "project.c"
3309 if (_inner_error_ != NULL) {
3310 g_propagate_error (error, _inner_error_);
3313 #line 710 "project.vala"
3314 g_signal_connect_object (MODEL_FETCHER (fetcher), "ready", (GCallback) _model_project_on_thumbnail_ready_model_fetcher_ready, self, 0);
3315 #line 711 "project.vala"
3316 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->pending_thumbs), fetcher);
3317 #line 3299 "project.c"
3318 _g_object_unref0 (fetcher);
3320 #line 713 "project.vala"
3321 g_signal_emit_by_name (self, "clipfile-added", clipfile);
3322 #line 3304 "project.c"
3327 #line 717 "project.vala"
3328 static void model_project_on_thumbnail_ready (ModelProject* self, ModelFetcher* f) {
3329 #line 3311 "project.c"
3330 ModelFetcher* _tmp0_;
3331 #line 717 "project.vala"
3332 g_return_if_fail (MODEL_IS_PROJECT (self));
3333 #line 717 "project.vala"
3334 g_return_if_fail (MODEL_IS_FETCHER (f));
3335 #line 718 "project.vala"
3336 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_thumbnail_ready");
3337 #line 719 "project.vala"
3338 g_signal_emit_by_name (self, "clipfile-added", f->clipfile);
3339 #line 720 "project.vala"
3340 gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->pending_thumbs), (_tmp0_ = f, MODEL_IS_THUMBNAIL_FETCHER (_tmp0_) ? ((ModelThumbnailFetcher*) _tmp0_) : NULL));
3341 #line 3323 "project.c"
3345 #line 723 "project.vala"
3346 gboolean model_project_clipfile_on_track (ModelProject* self, const char* filename) {
3347 #line 3329 "project.c"
3348 gboolean result = FALSE;
3350 #line 723 "project.vala"
3351 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
3352 #line 723 "project.vala"
3353 g_return_val_if_fail (filename != NULL, FALSE);
3354 #line 724 "project.vala"
3355 cf = model_project_find_clipfile (self, filename);
3356 #line 3338 "project.c"
3359 _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
3360 #line 726 "project.vala"
3362 #line 3344 "project.c"
3364 #line 726 "project.vala"
3365 if (!gee_iterator_next (_t_it)) {
3366 #line 726 "project.vala"
3368 #line 3350 "project.c"
3370 #line 726 "project.vala"
3371 t = (ModelTrack*) gee_iterator_get (_t_it);
3372 #line 3354 "project.c"
3375 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (t->clips));
3376 #line 727 "project.vala"
3378 #line 3360 "project.c"
3380 #line 727 "project.vala"
3381 if (!gee_iterator_next (_c_it)) {
3382 #line 727 "project.vala"
3384 #line 3366 "project.c"
3386 #line 727 "project.vala"
3387 c = (ModelClip*) gee_iterator_get (_c_it);
3388 #line 728 "project.vala"
3389 if (c->clipfile == cf) {
3390 #line 3372 "project.c"
3392 _g_object_unref0 (c);
3393 _g_object_unref0 (_c_it);
3394 _g_object_unref0 (t);
3395 _g_object_unref0 (_t_it);
3396 _g_object_unref0 (cf);
3397 #line 729 "project.vala"
3399 #line 3381 "project.c"
3401 _g_object_unref0 (c);
3403 _g_object_unref0 (_c_it);
3405 _g_object_unref0 (t);
3407 _g_object_unref0 (_t_it);
3411 _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks));
3412 #line 733 "project.vala"
3414 #line 3396 "project.c"
3416 #line 733 "project.vala"
3417 if (!gee_iterator_next (_t_it)) {
3418 #line 733 "project.vala"
3420 #line 3402 "project.c"
3422 #line 733 "project.vala"
3423 t = (ModelTrack*) gee_iterator_get (_t_it);
3424 #line 3406 "project.c"
3427 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (t->clips));
3428 #line 734 "project.vala"
3430 #line 3412 "project.c"
3432 #line 734 "project.vala"
3433 if (!gee_iterator_next (_c_it)) {
3434 #line 734 "project.vala"
3436 #line 3418 "project.c"
3438 #line 734 "project.vala"
3439 c = (ModelClip*) gee_iterator_get (_c_it);
3440 #line 735 "project.vala"
3441 if (c->clipfile == cf) {
3442 #line 3424 "project.c"
3444 _g_object_unref0 (c);
3445 _g_object_unref0 (_c_it);
3446 _g_object_unref0 (t);
3447 _g_object_unref0 (_t_it);
3448 _g_object_unref0 (cf);
3449 #line 736 "project.vala"
3451 #line 3433 "project.c"
3453 _g_object_unref0 (c);
3455 _g_object_unref0 (_c_it);
3457 _g_object_unref0 (t);
3459 _g_object_unref0 (_t_it);
3462 _g_object_unref0 (cf);
3463 #line 740 "project.vala"
3465 #line 3447 "project.c"
3469 #line 743 "project.vala"
3470 static void model_project_delete_clipfile_from_tracks (ModelProject* self, ModelClipFile* cf) {
3471 #line 743 "project.vala"
3472 g_return_if_fail (MODEL_IS_PROJECT (self));
3473 #line 743 "project.vala"
3474 g_return_if_fail (MODEL_IS_CLIP_FILE (cf));
3475 #line 3457 "project.c"
3478 _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
3479 #line 744 "project.vala"
3481 #line 3463 "project.c"
3483 #line 744 "project.vala"
3484 if (!gee_iterator_next (_t_it)) {
3485 #line 744 "project.vala"
3487 #line 3469 "project.c"
3489 #line 744 "project.vala"
3490 t = (ModelTrack*) gee_iterator_get (_t_it);
3491 #line 3473 "project.c"
3494 #line 745 "project.vala"
3496 #line 3478 "project.c"
3499 #line 745 "project.vala"
3501 #line 745 "project.vala"
3503 #line 3485 "project.c"
3506 #line 745 "project.vala"
3508 #line 745 "project.vala"
3510 #line 3492 "project.c"
3512 #line 745 "project.vala"
3514 #line 745 "project.vala"
3515 if (!(i < gee_collection_get_size (GEE_COLLECTION (t->clips)))) {
3516 #line 745 "project.vala"
3518 #line 3500 "project.c"
3520 #line 746 "project.vala"
3521 if ((_tmp2_ = (_tmp1_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i))->clipfile == cf, _g_object_unref0 (_tmp1_), _tmp2_)) {
3522 #line 3504 "project.c"
3524 #line 747 "project.vala"
3525 model_track_delete_clip (t, _tmp3_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i));
3526 #line 3508 "project.c"
3527 _g_object_unref0 (_tmp3_);
3528 #line 748 "project.vala"
3530 #line 3512 "project.c"
3535 _g_object_unref0 (t);
3537 _g_object_unref0 (_t_it);
3541 _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks));
3542 #line 753 "project.vala"
3544 #line 3526 "project.c"
3546 #line 753 "project.vala"
3547 if (!gee_iterator_next (_t_it)) {
3548 #line 753 "project.vala"
3550 #line 3532 "project.c"
3552 #line 753 "project.vala"
3553 t = (ModelTrack*) gee_iterator_get (_t_it);
3554 #line 3536 "project.c"
3557 #line 754 "project.vala"
3559 #line 3541 "project.c"
3562 #line 754 "project.vala"
3564 #line 754 "project.vala"
3566 #line 3548 "project.c"
3569 #line 754 "project.vala"
3571 #line 754 "project.vala"
3573 #line 3555 "project.c"
3575 #line 754 "project.vala"
3577 #line 754 "project.vala"
3578 if (!(i < gee_collection_get_size (GEE_COLLECTION (t->clips)))) {
3579 #line 754 "project.vala"
3581 #line 3563 "project.c"
3583 #line 755 "project.vala"
3584 if ((_tmp6_ = (_tmp5_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i))->clipfile == cf, _g_object_unref0 (_tmp5_), _tmp6_)) {
3585 #line 3567 "project.c"
3587 #line 756 "project.vala"
3588 model_track_delete_clip (t, _tmp7_ = (ModelClip*) gee_abstract_list_get (GEE_ABSTRACT_LIST (t->clips), i));
3589 #line 3571 "project.c"
3590 _g_object_unref0 (_tmp7_);
3591 #line 757 "project.vala"
3593 #line 3575 "project.c"
3598 _g_object_unref0 (t);
3600 _g_object_unref0 (_t_it);
3605 #line 763 "project.vala"
3606 void _model_project_remove_clipfile (ModelProject* self, ModelClipFile* cf) {
3607 #line 763 "project.vala"
3608 g_return_if_fail (MODEL_IS_PROJECT (self));
3609 #line 763 "project.vala"
3610 g_return_if_fail (MODEL_IS_CLIP_FILE (cf));
3611 #line 764 "project.vala"
3612 gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->clipfiles), cf);
3613 #line 765 "project.vala"
3614 g_signal_emit_by_name (self, "clipfile-removed", cf);
3615 #line 3597 "project.c"
3619 #line 768 "project.vala"
3620 void model_project_remove_clipfile (ModelProject* self, const char* filename) {
3621 #line 3603 "project.c"
3623 #line 768 "project.vala"
3624 g_return_if_fail (MODEL_IS_PROJECT (self));
3625 #line 768 "project.vala"
3626 g_return_if_fail (filename != NULL);
3627 #line 769 "project.vala"
3628 cf = model_project_find_clipfile (self, filename);
3629 #line 770 "project.vala"
3631 #line 3613 "project.c"
3633 ModelCommand* clipfile_delete;
3634 #line 771 "project.vala"
3635 description = g_strdup ("Delete From Library");
3636 #line 772 "project.vala"
3637 model_undo_manager_start_transaction (self->undo_manager, description);
3638 #line 774 "project.vala"
3639 model_project_delete_clipfile_from_tracks (self, cf);
3640 #line 776 "project.vala"
3641 clipfile_delete = MODEL_COMMAND (model_clip_file_delete_command_new (self, cf));
3642 #line 777 "project.vala"
3643 model_project_do_command (self, clipfile_delete);
3644 #line 779 "project.vala"
3645 model_undo_manager_end_transaction (self->undo_manager, description);
3646 #line 3628 "project.c"
3647 _g_free0 (description);
3648 _model_command_unref0 (clipfile_delete);
3650 _g_object_unref0 (cf);
3654 #line 783 "project.vala"
3655 ModelClipFile* model_project_find_clipfile (ModelProject* self, const char* filename) {
3656 #line 3638 "project.c"
3657 ModelClipFile* result = NULL;
3658 #line 783 "project.vala"
3659 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
3660 #line 783 "project.vala"
3661 g_return_val_if_fail (filename != NULL, NULL);
3662 #line 3644 "project.c"
3664 GeeIterator* _cf_it;
3665 _cf_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->clipfiles));
3666 #line 784 "project.vala"
3668 #line 3650 "project.c"
3670 #line 784 "project.vala"
3671 if (!gee_iterator_next (_cf_it)) {
3672 #line 784 "project.vala"
3674 #line 3656 "project.c"
3676 #line 784 "project.vala"
3677 cf = (ModelClipFile*) gee_iterator_get (_cf_it);
3678 #line 785 "project.vala"
3679 if (_vala_strcmp0 (cf->filename, filename) == 0) {
3680 #line 3662 "project.c"
3682 _g_object_unref0 (_cf_it);
3683 #line 786 "project.vala"
3685 #line 3667 "project.c"
3687 _g_object_unref0 (cf);
3689 _g_object_unref0 (_cf_it);
3692 #line 787 "project.vala"
3694 #line 3676 "project.c"
3698 #line 790 "project.vala"
3699 void model_project_reseek (ModelProject* self) {
3700 #line 790 "project.vala"
3701 g_return_if_fail (MODEL_IS_PROJECT (self));
3702 #line 790 "project.vala"
3703 model_project_transport_go (self, model_project_transport_get_position (self));
3704 #line 3686 "project.c"
3708 #line 792 "project.vala"
3709 void model_project_go_start (ModelProject* self) {
3710 #line 792 "project.vala"
3711 g_return_if_fail (MODEL_IS_PROJECT (self));
3712 #line 792 "project.vala"
3713 model_project_transport_go (self, (gint64) 0);
3714 #line 3696 "project.c"
3718 #line 794 "project.vala"
3719 void model_project_go_end (ModelProject* self) {
3720 #line 794 "project.vala"
3721 g_return_if_fail (MODEL_IS_PROJECT (self));
3722 #line 794 "project.vala"
3723 model_project_transport_go (self, model_project_get_length (self));
3724 #line 3706 "project.c"
3728 #line 796 "project.vala"
3729 void model_project_go_previous (ModelProject* self) {
3730 #line 3712 "project.c"
3732 gint64 new_position;
3733 #line 796 "project.vala"
3734 g_return_if_fail (MODEL_IS_PROJECT (self));
3735 #line 797 "project.vala"
3736 start_pos = model_project_transport_get_position (self);
3737 #line 801 "project.vala"
3738 if (model_project_transport_is_playing (self)) {
3739 #line 802 "project.vala"
3740 start_pos = start_pos - ((gint64) (1 * GST_SECOND));
3741 #line 3723 "project.c"
3743 #line 804 "project.vala"
3744 new_position = (gint64) 0;
3745 #line 3727 "project.c"
3747 GeeIterator* _track_it;
3748 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
3749 #line 805 "project.vala"
3751 #line 3733 "project.c"
3753 #line 805 "project.vala"
3754 if (!gee_iterator_next (_track_it)) {
3755 #line 805 "project.vala"
3757 #line 3739 "project.c"
3759 #line 805 "project.vala"
3760 track = (ModelTrack*) gee_iterator_get (_track_it);
3761 #line 806 "project.vala"
3762 new_position = MAX (new_position, model_track_previous_edit (track, start_pos));
3763 #line 3745 "project.c"
3764 _g_object_unref0 (track);
3766 _g_object_unref0 (_track_it);
3768 #line 808 "project.vala"
3769 model_project_transport_go (self, new_position);
3770 #line 3752 "project.c"
3774 #line 812 "project.vala"
3775 void model_project_go_next (ModelProject* self) {
3776 #line 3758 "project.c"
3778 gint64 new_position;
3779 #line 812 "project.vala"
3780 g_return_if_fail (MODEL_IS_PROJECT (self));
3781 #line 813 "project.vala"
3782 start_pos = model_project_transport_get_position (self);
3783 #line 814 "project.vala"
3784 new_position = model_project_get_length (self);
3785 #line 3767 "project.c"
3787 GeeIterator* _track_it;
3788 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
3789 #line 815 "project.vala"
3791 #line 3773 "project.c"
3793 #line 815 "project.vala"
3794 if (!gee_iterator_next (_track_it)) {
3795 #line 815 "project.vala"
3797 #line 3779 "project.c"
3799 #line 815 "project.vala"
3800 track = (ModelTrack*) gee_iterator_get (_track_it);
3801 #line 816 "project.vala"
3802 if (model_track_get_length (track) > start_pos) {
3803 #line 817 "project.vala"
3804 new_position = MIN (new_position, model_track_next_edit (track, start_pos));
3805 #line 3787 "project.c"
3807 _g_object_unref0 (track);
3809 _g_object_unref0 (_track_it);
3811 #line 820 "project.vala"
3812 model_project_transport_go (self, new_position);
3813 #line 3795 "project.c"
3817 #line 823 "project.vala"
3818 gint64 model_project_transport_get_position (ModelProject* self) {
3819 #line 3801 "project.c"
3820 gint64 result = 0LL;
3821 #line 823 "project.vala"
3822 g_return_val_if_fail (MODEL_IS_PROJECT (self), 0LL);
3823 #line 3805 "project.c"
3824 result = self->media_engine->position;
3825 #line 824 "project.vala"
3827 #line 3809 "project.c"
3831 #line 827 "project.vala"
3832 void model_project_set_name (ModelProject* self, const char* filename) {
3833 #line 827 "project.vala"
3834 g_return_if_fail (MODEL_IS_PROJECT (self));
3835 #line 828 "project.vala"
3836 if (filename != NULL) {
3837 #line 3819 "project.c"
3839 #line 829 "project.vala"
3840 self->project_file = (_tmp0_ = g_strdup (filename), _g_free0 (self->project_file), _tmp0_);
3841 #line 3823 "project.c"
3843 #line 831 "project.vala"
3844 g_signal_emit_by_name (self, "name-changed", filename);
3845 #line 3827 "project.c"
3849 #line 834 "project.vala"
3850 void model_project_set_default_framerate (ModelProject* self, Fraction* rate) {
3851 #line 834 "project.vala"
3852 g_return_if_fail (MODEL_IS_PROJECT (self));
3853 #line 835 "project.vala"
3854 self->default_framerate = *rate;
3855 #line 3837 "project.c"
3859 #line 1077 "glib-2.0.vapi"
3860 static char* string_substring (const char* self, glong offset, glong len) {
3861 #line 3843 "project.c"
3862 char* result = NULL;
3863 glong string_length;
3865 #line 1077 "glib-2.0.vapi"
3866 g_return_val_if_fail (self != NULL, NULL);
3867 #line 1078 "glib-2.0.vapi"
3868 string_length = g_utf8_strlen (self, -1);
3869 #line 1079 "glib-2.0.vapi"
3871 #line 1080 "glib-2.0.vapi"
3872 offset = string_length + offset;
3873 #line 1081 "glib-2.0.vapi"
3874 g_return_val_if_fail (offset >= 0, NULL);
3875 #line 3857 "project.c"
3877 #line 1083 "glib-2.0.vapi"
3878 g_return_val_if_fail (offset <= string_length, NULL);
3879 #line 3861 "project.c"
3881 #line 1085 "glib-2.0.vapi"
3883 #line 1086 "glib-2.0.vapi"
3884 len = string_length - offset;
3885 #line 3867 "project.c"
3887 #line 1088 "glib-2.0.vapi"
3888 g_return_val_if_fail ((offset + len) <= string_length, NULL);
3889 #line 1089 "glib-2.0.vapi"
3890 start = g_utf8_offset_to_pointer (self, offset);
3891 #line 3873 "project.c"
3892 result = g_strndup (start, ((gchar*) g_utf8_offset_to_pointer (start, len)) - ((gchar*) start));
3893 #line 1090 "glib-2.0.vapi"
3895 #line 3877 "project.c"
3899 static glong string_get_length (const char* self) {
3901 g_return_val_if_fail (self != NULL, 0L);
3902 result = g_utf8_strlen (self, -1);
3903 #line 1158 "glib-2.0.vapi"
3905 #line 3887 "project.c"
3909 #line 838 "project.vala"
3910 char* model_project_get_file_display_name (ModelProject* self) {
3911 #line 3893 "project.c"
3912 char* result = NULL;
3914 #line 838 "project.vala"
3915 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
3916 #line 839 "project.vala"
3917 filename = model_project_get_project_file (self);
3918 #line 840 "project.vala"
3919 if (filename == NULL) {
3920 #line 3902 "project.c"
3923 result = (_tmp1_ = g_strdup_printf ("Unsaved Project - %s", _tmp0_ = model_project_get_app_name (self)), _g_free0 (_tmp0_), _tmp1_);
3924 _g_free0 (filename);
3925 #line 841 "project.vala"
3927 #line 3909 "project.c"
3934 #line 844 "project.vala"
3935 dir = g_path_get_dirname (filename);
3936 #line 845 "project.vala"
3937 name = g_path_get_basename (filename);
3938 #line 846 "project.vala"
3939 home_path = g_strdup (g_get_home_dir ());
3940 #line 848 "project.vala"
3941 if (_vala_strcmp0 (dir, ".") == 0) {
3942 #line 3924 "project.c"
3944 #line 849 "project.vala"
3945 dir = (_tmp2_ = g_get_current_dir (), _g_free0 (dir), _tmp2_);
3946 #line 3928 "project.c"
3948 #line 851 "project.vala"
3949 if (g_str_has_prefix (dir, home_path)) {
3950 #line 3932 "project.c"
3953 #line 852 "project.vala"
3954 dir = (_tmp4_ = g_strconcat ("~", _tmp3_ = string_substring (dir, string_get_length (home_path), -1), NULL), _g_free0 (dir), _tmp4_);
3955 #line 3937 "project.c"
3958 result = (_tmp6_ = g_strdup_printf ("%s (%s) - %s", name, dir, _tmp5_ = model_project_get_app_name (self)), _g_free0 (_tmp5_), _tmp6_);
3961 _g_free0 (home_path);
3962 _g_free0 (filename);
3963 #line 853 "project.vala"
3965 #line 3947 "project.c"
3968 _g_free0 (home_path);
3970 _g_free0 (filename);
3974 #line 857 "project.vala"
3975 void model_project_clear (ModelProject* self) {
3976 #line 857 "project.vala"
3977 g_return_if_fail (MODEL_IS_PROJECT (self));
3978 #line 858 "project.vala"
3979 view_media_engine_set_gst_state (self->media_engine, GST_STATE_NULL);
3980 #line 3962 "project.c"
3982 GeeIterator* _track_it;
3983 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
3984 #line 860 "project.vala"
3986 #line 3968 "project.c"
3988 #line 860 "project.vala"
3989 if (!gee_iterator_next (_track_it)) {
3990 #line 860 "project.vala"
3992 #line 3974 "project.c"
3994 #line 860 "project.vala"
3995 track = (ModelTrack*) gee_iterator_get (_track_it);
3996 #line 861 "project.vala"
3997 model_track_delete_all_clips (track);
3998 #line 862 "project.vala"
3999 g_signal_emit_by_name (track, "track-removed", track);
4000 #line 863 "project.vala"
4001 g_signal_emit_by_name (self, "track-removed", track);
4002 #line 3984 "project.c"
4003 _g_object_unref0 (track);
4005 _g_object_unref0 (_track_it);
4007 #line 866 "project.vala"
4008 gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->tracks));
4009 #line 868 "project.vala"
4010 gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->clipfiles));
4011 #line 869 "project.vala"
4012 model_project_set_name (self, NULL);
4013 #line 870 "project.vala"
4014 g_signal_emit_by_name (self, "cleared");
4015 #line 3997 "project.c"
4019 #line 873 "project.vala"
4020 gboolean model_project_can_export (ModelProject* self) {
4021 #line 4003 "project.c"
4022 gboolean result = FALSE;
4023 #line 873 "project.vala"
4024 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
4025 #line 874 "project.vala"
4026 if (view_media_engine_get_play_state (self->media_engine) != PLAY_STATE_STOPPED) {
4027 #line 4009 "project.c"
4029 #line 875 "project.vala"
4031 #line 4013 "project.c"
4034 GeeIterator* _track_it;
4035 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
4036 #line 877 "project.vala"
4038 #line 4020 "project.c"
4040 #line 877 "project.vala"
4041 if (!gee_iterator_next (_track_it)) {
4042 #line 877 "project.vala"
4044 #line 4026 "project.c"
4046 #line 877 "project.vala"
4047 track = (ModelTrack*) gee_iterator_get (_track_it);
4048 #line 878 "project.vala"
4049 if (model_track_get_length (track) > 0) {
4050 #line 4032 "project.c"
4052 _g_object_unref0 (track);
4053 _g_object_unref0 (_track_it);
4054 #line 879 "project.vala"
4056 #line 4038 "project.c"
4058 _g_object_unref0 (track);
4060 _g_object_unref0 (_track_it);
4063 #line 882 "project.vala"
4065 #line 4047 "project.c"
4069 #line 885 "project.vala"
4070 void model_project_on_load_started (ModelProject* self, const char* filename) {
4071 #line 4053 "project.c"
4073 #line 885 "project.vala"
4074 g_return_if_fail (MODEL_IS_PROJECT (self));
4075 #line 885 "project.vala"
4076 g_return_if_fail (filename != NULL);
4077 #line 886 "project.vala"
4078 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_started");
4079 #line 887 "project.vala"
4080 self->project_file = (_tmp0_ = g_strdup (filename), _g_free0 (self->project_file), _tmp0_);
4081 #line 4063 "project.c"
4085 #line 890 "project.vala"
4086 static void model_project_on_load_error (ModelProject* self, const char* _error_) {
4087 #line 890 "project.vala"
4088 g_return_if_fail (MODEL_IS_PROJECT (self));
4089 #line 890 "project.vala"
4090 g_return_if_fail (_error_ != NULL);
4091 #line 891 "project.vala"
4092 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_error");
4093 #line 892 "project.vala"
4094 g_signal_emit_by_name (self, "load-error", _error_);
4095 #line 4077 "project.c"
4099 #line 895 "project.vala"
4100 static void model_project_on_load_complete (ModelProject* self) {
4101 #line 895 "project.vala"
4102 g_return_if_fail (MODEL_IS_PROJECT (self));
4103 #line 896 "project.vala"
4104 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_complete");
4105 #line 897 "project.vala"
4106 model_undo_manager_reset (self->undo_manager);
4107 #line 898 "project.vala"
4108 model_project_set_name (self, self->project_file);
4109 #line 899 "project.vala"
4110 g_signal_emit_by_name (self, "load-complete");
4111 #line 4093 "project.c"
4115 #line 885 "project.vala"
4116 static void _model_project_on_load_started_model_project_loader_load_started (ModelProjectLoader* _sender, const char* filename, gpointer self) {
4117 #line 4099 "project.c"
4118 model_project_on_load_started (self, filename);
4122 #line 890 "project.vala"
4123 static void _model_project_on_load_error_model_project_loader_load_error (ModelProjectLoader* _sender, const char* _error_, gpointer self) {
4124 #line 4106 "project.c"
4125 model_project_on_load_error (self, _error_);
4129 #line 895 "project.vala"
4130 static void _model_project_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self) {
4131 #line 4113 "project.c"
4132 model_project_on_load_complete (self);
4136 #line 1041 "MediaEngine.vala"
4137 static void _view_media_engine_on_load_complete_model_project_loader_load_complete (ModelProjectLoader* _sender, gpointer self) {
4138 #line 4120 "project.c"
4139 view_media_engine_on_load_complete (self);
4143 #line 905 "project.vala"
4144 static void model_project_real_load (ModelProject* self, const char* fname) {
4145 #line 4127 "project.c"
4146 ModelProjectLoader* _tmp1_;
4147 ModelMediaLoaderHandler* _tmp0_;
4148 #line 905 "project.vala"
4149 g_return_if_fail (MODEL_IS_PROJECT (self));
4150 #line 906 "project.vala"
4151 logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_INFO, "loading project");
4152 #line 907 "project.vala"
4153 model_project_clear (self);
4154 #line 908 "project.vala"
4155 model_project_set_name (self, NULL);
4156 #line 909 "project.vala"
4157 if (fname == NULL) {
4158 #line 910 "project.vala"
4160 #line 4142 "project.c"
4162 #line 913 "project.vala"
4163 self->loader = (_tmp1_ = model_project_loader_new (MODEL_LOADER_HANDLER (_tmp0_ = model_media_loader_handler_new (self)), fname), _g_object_unref0 (self->loader), _tmp1_);
4164 #line 4146 "project.c"
4165 _g_object_unref0 (_tmp0_);
4166 #line 915 "project.vala"
4167 g_signal_connect_object (self->loader, "load-started", (GCallback) _model_project_on_load_started_model_project_loader_load_started, self, 0);
4168 #line 916 "project.vala"
4169 g_signal_connect_object (self->loader, "load-error", (GCallback) _model_project_on_load_error_model_project_loader_load_error, self, 0);
4170 #line 917 "project.vala"
4171 g_signal_connect_object (self->loader, "load-complete", (GCallback) _model_project_on_load_complete_model_project_loader_load_complete, self, 0);
4172 #line 918 "project.vala"
4173 g_signal_connect_object (self->loader, "load-complete", (GCallback) _view_media_engine_on_load_complete_model_project_loader_load_complete, self->media_engine, 0);
4174 #line 919 "project.vala"
4175 view_media_engine_set_play_state (self->media_engine, PLAY_STATE_LOADING);
4176 #line 920 "project.vala"
4177 gst_element_set_state (GST_ELEMENT (self->media_engine->pipeline), GST_STATE_NULL);
4178 #line 921 "project.vala"
4179 model_project_loader_load (self->loader);
4180 #line 4162 "project.c"
4184 #line 905 "project.vala"
4185 void model_project_load (ModelProject* self, const char* fname) {
4186 #line 905 "project.vala"
4187 MODEL_PROJECT_GET_CLASS (self)->load (self, fname);
4188 #line 4170 "project.c"
4192 #line 924 "project.vala"
4193 void model_project_on_error_occurred (ModelProject* self, const char* major_error, const char* minor_error) {
4194 #line 924 "project.vala"
4195 g_return_if_fail (MODEL_IS_PROJECT (self));
4196 #line 924 "project.vala"
4197 g_return_if_fail (major_error != NULL);
4198 #line 925 "project.vala"
4199 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_error_occurred");
4200 #line 926 "project.vala"
4201 g_signal_emit_by_name (self, "error-occurred", major_error, minor_error);
4202 #line 4184 "project.c"
4206 #line 929 "project.vala"
4207 gint model_project_get_file_version (ModelProject* self) {
4208 #line 4190 "project.c"
4210 #line 929 "project.vala"
4211 g_return_val_if_fail (MODEL_IS_PROJECT (self), 0);
4212 #line 4194 "project.c"
4214 #line 930 "project.vala"
4216 #line 4198 "project.c"
4220 #line 933 "project.vala"
4221 void model_project_save_library (ModelProject* self, FILE* f) {
4222 #line 4204 "project.c"
4224 #line 933 "project.vala"
4225 g_return_if_fail (MODEL_IS_PROJECT (self));
4226 #line 933 "project.vala"
4227 g_return_if_fail (f != NULL);
4228 #line 934 "project.vala"
4229 fprintf (f, " <library");
4230 #line 936 "project.vala"
4231 r = self->default_framerate;
4232 #line 4214 "project.c"
4235 _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
4236 #line 938 "project.vala"
4238 #line 4220 "project.c"
4240 #line 938 "project.vala"
4241 if (!gee_iterator_next (_t_it)) {
4242 #line 938 "project.vala"
4244 #line 4226 "project.c"
4246 #line 938 "project.vala"
4247 t = (ModelTrack*) gee_iterator_get (_t_it);
4248 #line 939 "project.vala"
4249 if (model_track_media_type (t) == MODEL_MEDIA_TYPE_VIDEO) {
4250 #line 4232 "project.c"
4252 ModelVideoTrack* video_track;
4253 #line 940 "project.vala"
4254 video_track = _g_object_ref0 ((_tmp0_ = t, MODEL_IS_VIDEO_TRACK (_tmp0_) ? ((ModelVideoTrack*) _tmp0_) : NULL));
4255 #line 941 "project.vala"
4256 if (model_video_track_get_framerate (video_track, &r)) {
4257 #line 4239 "project.c"
4258 _g_object_unref0 (video_track);
4259 _g_object_unref0 (t);
4260 #line 942 "project.vala"
4262 #line 4244 "project.c"
4264 _g_object_unref0 (video_track);
4266 _g_object_unref0 (t);
4268 _g_object_unref0 (_t_it);
4270 #line 945 "project.vala"
4271 if (!fraction_equal (&r, &model_project_INVALID_FRAME_RATE)) {
4272 #line 946 "project.vala"
4273 fprintf (f, " framerate=\"%d/%d\"", r.numerator, r.denominator);
4274 #line 4256 "project.c"
4276 #line 948 "project.vala"
4278 #line 4260 "project.c"
4281 #line 950 "project.vala"
4283 #line 4265 "project.c"
4286 #line 950 "project.vala"
4288 #line 950 "project.vala"
4290 #line 4272 "project.c"
4291 ModelClipFile* _tmp2_;
4292 #line 950 "project.vala"
4294 #line 950 "project.vala"
4296 #line 4278 "project.c"
4298 #line 950 "project.vala"
4300 #line 950 "project.vala"
4301 if (!(i < gee_collection_get_size (GEE_COLLECTION (self->clipfiles)))) {
4302 #line 950 "project.vala"
4304 #line 4286 "project.c"
4306 #line 951 "project.vala"
4307 fprintf (f, " <clipfile filename=\"%s\" id=\"%d\"/>\n", (_tmp2_ = (ModelClipFile*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->clipfiles), i))->filename, i);
4308 #line 4290 "project.c"
4309 _g_object_unref0 (_tmp2_);
4313 #line 954 "project.vala"
4314 fprintf (f, " </library>\n");
4315 #line 4297 "project.c"
4319 #line 957 "project.vala"
4320 static void model_project_real_save (ModelProject* self, const char* filename) {
4321 #line 4303 "project.c"
4327 #line 957 "project.vala"
4328 g_return_if_fail (MODEL_IS_PROJECT (self));
4329 #line 958 "project.vala"
4330 if (filename != NULL) {
4331 #line 959 "project.vala"
4332 model_project_set_name (self, filename);
4333 #line 4315 "project.c"
4335 #line 962 "project.vala"
4336 f = fopen (self->project_file, "w");
4337 #line 963 "project.vala"
4339 #line 4321 "project.c"
4341 #line 964 "project.vala"
4342 g_signal_emit_by_name (self, "error-occurred", "Could not save project", _tmp0_ = g_strdup_printf ("%s: %s", self->project_file, g_strerror (errno)));
4343 #line 4325 "project.c"
4346 #line 966 "project.vala"
4348 #line 4330 "project.c"
4350 #line 968 "project.vala"
4351 fprintf (f, "<marina version=\"%d\">\n", model_project_get_file_version (self));
4352 #line 970 "project.vala"
4353 model_project_save_library (self, f);
4354 #line 972 "project.vala"
4355 fprintf (f, " <tracks>\n");
4356 #line 4338 "project.c"
4358 GeeIterator* _track_it;
4359 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
4360 #line 973 "project.vala"
4362 #line 4344 "project.c"
4364 #line 973 "project.vala"
4365 if (!gee_iterator_next (_track_it)) {
4366 #line 973 "project.vala"
4368 #line 4350 "project.c"
4370 #line 973 "project.vala"
4371 track = (ModelTrack*) gee_iterator_get (_track_it);
4372 #line 974 "project.vala"
4373 model_track_save (track, f);
4374 #line 4356 "project.c"
4375 _g_object_unref0 (track);
4377 _g_object_unref0 (_track_it);
4380 GeeIterator* _track_it;
4381 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->inactive_tracks));
4382 #line 977 "project.vala"
4384 #line 4366 "project.c"
4386 #line 977 "project.vala"
4387 if (!gee_iterator_next (_track_it)) {
4388 #line 977 "project.vala"
4390 #line 4372 "project.c"
4392 #line 977 "project.vala"
4393 track = (ModelTrack*) gee_iterator_get (_track_it);
4394 #line 978 "project.vala"
4395 model_track_save (track, f);
4396 #line 4378 "project.c"
4397 _g_object_unref0 (track);
4399 _g_object_unref0 (_track_it);
4401 #line 980 "project.vala"
4402 fprintf (f, " </tracks>\n");
4403 #line 981 "project.vala"
4404 fprintf (f, " <preferences>\n");
4405 #line 4387 "project.c"
4407 #line 983 "project.vala"
4408 if (self->click_during_play) {
4409 #line 983 "project.vala"
4411 #line 4393 "project.c"
4413 #line 983 "project.vala"
4415 #line 4397 "project.c"
4418 #line 984 "project.vala"
4419 if (self->click_during_record) {
4420 #line 984 "project.vala"
4422 #line 4404 "project.c"
4424 #line 984 "project.vala"
4426 #line 4408 "project.c"
4428 #line 982 "project.vala"
4429 fprintf (f, " <click on_play=\"%s\" on_record=\"%s\" volume=\"%lf\"/>\n", _tmp1_, _tmp2_, self->click_volume);
4430 #line 4412 "project.c"
4432 #line 987 "project.vala"
4433 if (self->library_visible) {
4434 #line 987 "project.vala"
4436 #line 4418 "project.c"
4438 #line 987 "project.vala"
4440 #line 4422 "project.c"
4442 #line 986 "project.vala"
4443 fprintf (f, " <library width=\"%d\" visible=\"%s\" />\n", self->library_width, _tmp3_);
4444 #line 988 "project.vala"
4445 fprintf (f, " </preferences>\n");
4446 #line 989 "project.vala"
4447 fprintf (f, " <maps>\n");
4448 #line 990 "project.vala"
4449 fprintf (f, " <tempo>\n");
4450 #line 991 "project.vala"
4451 fprintf (f, " <entry tempo=\"%d\" />\n", self->priv->tempo);
4452 #line 992 "project.vala"
4453 fprintf (f, " </tempo>\n");
4454 #line 993 "project.vala"
4455 fprintf (f, " <time_signature>\n");
4456 #line 994 "project.vala"
4457 fprintf (f, " <entry signature=\"%s\" />\n", _tmp4_ = fraction_to_string (&self->priv->time_signature));
4458 #line 4440 "project.c"
4460 #line 995 "project.vala"
4461 fprintf (f, " </time_signature>\n");
4462 #line 996 "project.vala"
4463 fprintf (f, " </maps>\n");
4464 #line 998 "project.vala"
4465 fprintf (f, "</marina>\n");
4466 #line 999 "project.vala"
4468 #line 1002 "project.vala"
4469 model_undo_manager_mark_clean (self->undo_manager);
4470 #line 4452 "project.c"
4475 #line 957 "project.vala"
4476 void model_project_save (ModelProject* self, const char* filename) {
4477 #line 957 "project.vala"
4478 MODEL_PROJECT_GET_CLASS (self)->save (self, filename);
4479 #line 4461 "project.c"
4483 #line 1005 "project.vala"
4484 void model_project_close (ModelProject* self) {
4485 #line 1005 "project.vala"
4486 g_return_if_fail (MODEL_IS_PROJECT (self));
4487 #line 1006 "project.vala"
4488 view_media_engine_close (self->media_engine);
4489 #line 4471 "project.c"
4493 #line 1009 "project.vala"
4494 void model_project_on_importer_clip_complete (ModelProject* self, ModelClipFetcher* fetcher) {
4495 #line 1009 "project.vala"
4496 g_return_if_fail (MODEL_IS_PROJECT (self));
4497 #line 1009 "project.vala"
4498 g_return_if_fail (MODEL_IS_CLIP_FETCHER (fetcher));
4499 #line 1010 "project.vala"
4500 if (MODEL_FETCHER (fetcher)->error_string != NULL) {
4501 #line 1011 "project.vala"
4502 g_signal_emit_by_name (self, "error-occurred", "Error importing clip", MODEL_FETCHER (fetcher)->error_string);
4503 #line 4485 "project.c"
4505 #line 1013 "project.vala"
4506 model_fetcher_completion_complete (self->priv->fetcher_completion, MODEL_FETCHER (fetcher));
4507 #line 4489 "project.c"
4512 static gpointer _model_fetcher_completion_ref0 (gpointer self) {
4513 return self ? model_fetcher_completion_ref (self) : NULL;
4517 #line 1026 "project.vala"
4518 static void _model_project_on_fetcher_ready_model_fetcher_ready (ModelFetcher* _sender, ModelFetcher* fetcher, gpointer self) {
4519 #line 4501 "project.c"
4520 model_project_on_fetcher_ready (self, fetcher);
4524 #line 1017 "project.vala"
4525 void model_project_create_clip_fetcher (ModelProject* self, ModelFetcherCompletion* fetcher_completion, const char* filename, GError** error) {
4526 #line 4508 "project.c"
4527 GError * _inner_error_;
4528 ModelClipFetcher* fetcher;
4529 ModelFetcherCompletion* _tmp0_;
4530 #line 1017 "project.vala"
4531 g_return_if_fail (MODEL_IS_PROJECT (self));
4532 #line 1017 "project.vala"
4533 g_return_if_fail (MODEL_IS_FETCHER_COMPLETION (fetcher_completion));
4534 #line 1017 "project.vala"
4535 g_return_if_fail (filename != NULL);
4536 #line 4518 "project.c"
4537 _inner_error_ = NULL;
4538 #line 1019 "project.vala"
4539 fetcher = model_clip_fetcher_new (filename, &_inner_error_);
4540 #line 4522 "project.c"
4541 if (_inner_error_ != NULL) {
4542 g_propagate_error (error, _inner_error_);
4545 #line 1020 "project.vala"
4546 self->priv->fetcher_completion = (_tmp0_ = _model_fetcher_completion_ref0 (fetcher_completion), _model_fetcher_completion_unref0 (self->priv->fetcher_completion), _tmp0_);
4547 #line 1021 "project.vala"
4548 g_signal_connect_object (MODEL_FETCHER (fetcher), "ready", (GCallback) _model_project_on_fetcher_ready_model_fetcher_ready, self, 0);
4549 #line 1022 "project.vala"
4550 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->pending), fetcher);
4551 #line 4533 "project.c"
4552 _g_object_unref0 (fetcher);
4556 #line 1026 "project.vala"
4557 static void model_project_on_fetcher_ready (ModelProject* self, ModelFetcher* fetcher) {
4558 #line 4540 "project.c"
4559 ModelFetcher* _tmp0_;
4560 #line 1026 "project.vala"
4561 g_return_if_fail (MODEL_IS_PROJECT (self));
4562 #line 1026 "project.vala"
4563 g_return_if_fail (MODEL_IS_FETCHER (fetcher));
4564 #line 1027 "project.vala"
4565 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_fetcher_ready");
4566 #line 1028 "project.vala"
4567 gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->pending), (_tmp0_ = fetcher, MODEL_IS_CLIP_FETCHER (_tmp0_) ? ((ModelClipFetcher*) _tmp0_) : NULL));
4568 #line 1029 "project.vala"
4569 if (fetcher->error_string != NULL) {
4570 #line 1030 "project.vala"
4571 logging_emit (G_OBJECT (self), LOGGING_FACILITY_DEVELOPER_WARNINGS, LOGGING_LEVEL_INFO, fetcher->error_string);
4572 #line 1031 "project.vala"
4573 g_signal_emit_by_name (self, "error-occurred", "Error retrieving clip", fetcher->error_string);
4574 #line 4556 "project.c"
4576 #line 1033 "project.vala"
4577 if (model_project_get_clipfile_index (self, fetcher->clipfile) == (-1)) {
4578 #line 1034 "project.vala"
4579 model_project_add_clipfile (self, fetcher->clipfile);
4580 #line 4562 "project.c"
4582 #line 1036 "project.vala"
4583 model_fetcher_completion_complete (self->priv->fetcher_completion, fetcher);
4584 #line 4566 "project.c"
4589 #line 1040 "project.vala"
4590 gboolean model_project_is_project_extension (ModelProject* self, const char* filename) {
4591 #line 4573 "project.c"
4592 gboolean result = FALSE;
4594 gboolean _tmp0_ = FALSE;
4595 #line 1040 "project.vala"
4596 g_return_val_if_fail (MODEL_IS_PROJECT (self), FALSE);
4597 #line 1040 "project.vala"
4598 g_return_val_if_fail (filename != NULL, FALSE);
4599 #line 1041 "project.vala"
4600 extension = get_file_extension (filename);
4601 #line 1042 "project.vala"
4602 if (_vala_strcmp0 (extension, MODEL_PROJECT_LOMBARD_FILE_EXTENSION) == 0) {
4603 #line 1042 "project.vala"
4605 #line 4587 "project.c"
4607 #line 1042 "project.vala"
4608 _tmp0_ = _vala_strcmp0 (extension, MODEL_PROJECT_FILLMORE_FILE_EXTENSION) == 0;
4609 #line 4591 "project.c"
4612 _g_free0 (extension);
4613 #line 1042 "project.vala"
4615 #line 4597 "project.c"
4619 #line 1045 "project.vala"
4620 void model_project_do_command (ModelProject* self, ModelCommand* the_command) {
4621 #line 1045 "project.vala"
4622 g_return_if_fail (MODEL_IS_PROJECT (self));
4623 #line 1045 "project.vala"
4624 g_return_if_fail (MODEL_IS_COMMAND (the_command));
4625 #line 1046 "project.vala"
4626 model_undo_manager_do_command (self->undo_manager, the_command);
4627 #line 4609 "project.c"
4631 #line 1049 "project.vala"
4632 void model_project_undo (ModelProject* self) {
4633 #line 1049 "project.vala"
4634 g_return_if_fail (MODEL_IS_PROJECT (self));
4635 #line 1050 "project.vala"
4636 model_undo_manager_undo (self->undo_manager);
4637 #line 4619 "project.c"
4641 #line 1053 "project.vala"
4642 static void model_project_ClearTrackMeters (ModelProject* self) {
4643 #line 1053 "project.vala"
4644 g_return_if_fail (MODEL_IS_PROJECT (self));
4645 #line 4627 "project.c"
4647 GeeIterator* _track_it;
4648 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
4649 #line 1054 "project.vala"
4651 #line 4633 "project.c"
4654 ModelAudioTrack* audio_track;
4655 #line 1054 "project.vala"
4656 if (!gee_iterator_next (_track_it)) {
4657 #line 1054 "project.vala"
4659 #line 4641 "project.c"
4661 #line 1054 "project.vala"
4662 track = (ModelTrack*) gee_iterator_get (_track_it);
4663 #line 1055 "project.vala"
4664 audio_track = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL));
4665 #line 1056 "project.vala"
4666 if (audio_track != NULL) {
4667 #line 1057 "project.vala"
4668 g_signal_emit_by_name (audio_track, "level-changed", (double) (-100), (double) (-100));
4669 #line 4651 "project.c"
4671 _g_object_unref0 (track);
4672 _g_object_unref0 (audio_track);
4674 _g_object_unref0 (_track_it);
4679 #line 1062 "project.vala"
4680 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) {
4681 #line 1062 "project.vala"
4682 g_return_if_fail (MODEL_IS_PROJECT (self));
4683 #line 1062 "project.vala"
4684 g_return_if_fail ((track == NULL) || MODEL_IS_TRACK (track));
4685 #line 1062 "project.vala"
4686 g_return_if_fail ((progress_window_parent == NULL) || GTK_IS_WINDOW (progress_window_parent));
4687 #line 1064 "project.vala"
4689 #line 4671 "project.c"
4690 ModelLibraryImporter* _tmp0_;
4691 #line 1065 "project.vala"
4692 g_assert (track != NULL);
4693 #line 1066 "project.vala"
4694 self->importer = (_tmp0_ = MODEL_LIBRARY_IMPORTER (model_timeline_importer_new (track, self, time_to_add, both_tracks)), _g_object_unref0 (self->importer), _tmp0_);
4695 #line 4677 "project.c"
4697 ModelLibraryImporter* _tmp1_;
4698 #line 1068 "project.vala"
4699 self->importer = (_tmp1_ = model_library_importer_new (self), _g_object_unref0 (self->importer), _tmp1_);
4700 #line 4682 "project.c"
4702 #line 1070 "project.vala"
4703 if (progress_window_parent != NULL) {
4704 #line 4686 "project.c"
4705 MultiFileProgress* _tmp2_;
4706 #line 1071 "project.vala"
4707 _tmp2_ = g_object_ref_sink (multi_file_progress_new (progress_window_parent, number, "Import", MULTI_FILE_PROGRESS_INTERFACE (self->importer->importer)));
4708 #line 4690 "project.c"
4709 _g_object_unref0 (_tmp2_);
4714 #line 1077 "project.vala"
4715 char* model_project_get_version (ModelProject* self) {
4716 #line 4698 "project.c"
4717 char* result = NULL;
4718 #line 1077 "project.vala"
4719 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
4720 #line 4702 "project.c"
4721 result = g_strdup (_VERSION);
4722 #line 1078 "project.vala"
4724 #line 4706 "project.c"
4728 #line 1081 "project.vala"
4729 static char* model_project_real_get_app_name (ModelProject* self) {
4730 #line 4712 "project.c"
4731 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
4732 g_critical ("Type `%s' does not implement abstract method `model_project_get_app_name'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
4737 #line 1081 "project.vala"
4738 char* model_project_get_app_name (ModelProject* self) {
4739 #line 1081 "project.vala"
4740 return MODEL_PROJECT_GET_CLASS (self)->get_app_name (self);
4741 #line 4723 "project.c"
4745 #line 1083 "project.vala"
4746 char* model_project_get_license (ModelProject* self) {
4747 #line 4729 "project.c"
4748 char* result = NULL;
4753 #line 1083 "project.vala"
4754 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
4755 #line 4737 "project.c"
4756 result = (_tmp3_ = g_strdup_printf (MODEL_PROJECT_license, _tmp0_ = model_project_get_app_name (self), _tmp1_ = model_project_get_app_name (self), _tmp2_ = model_project_get_app_name (self)), _g_free0 (_tmp2_), _g_free0 (_tmp1_), _g_free0 (_tmp0_), _tmp3_);
4757 #line 1084 "project.vala"
4759 #line 4741 "project.c"
4763 #line 1087 "project.vala"
4764 void model_project_set_time_signature (ModelProject* self, Fraction* time_signature) {
4765 #line 4747 "project.c"
4766 ModelTimeSignatureCommand* command;
4767 #line 1087 "project.vala"
4768 g_return_if_fail (MODEL_IS_PROJECT (self));
4769 #line 1088 "project.vala"
4770 command = model_time_signature_command_new (self, time_signature);
4771 #line 1089 "project.vala"
4772 model_undo_manager_do_command (self->undo_manager, MODEL_COMMAND (command));
4773 #line 4755 "project.c"
4774 _model_command_unref0 (command);
4778 #line 1092 "project.vala"
4779 void _model_project_set_time_signature (ModelProject* self, Fraction* time_signature) {
4780 #line 1092 "project.vala"
4781 g_return_if_fail (MODEL_IS_PROJECT (self));
4782 #line 1093 "project.vala"
4783 self->priv->time_signature = *time_signature;
4784 #line 1094 "project.vala"
4785 g_signal_emit_by_name (MODEL_TEMPO_INFORMATION (self), "time-signature-changed", time_signature);
4786 #line 4768 "project.c"
4790 #line 1097 "project.vala"
4791 static void model_project_real_get_time_signature (ModelTempoInformation* base, Fraction* result) {
4792 #line 4774 "project.c"
4793 ModelProject * self;
4794 self = MODEL_PROJECT (base);
4795 *result = self->priv->time_signature;
4796 #line 1098 "project.vala"
4798 #line 4780 "project.c"
4802 #line 1101 "project.vala"
4803 void model_project_set_bpm (ModelProject* self, gint bpm) {
4804 #line 4786 "project.c"
4805 ModelBpmCommand* command;
4806 #line 1101 "project.vala"
4807 g_return_if_fail (MODEL_IS_PROJECT (self));
4808 #line 1102 "project.vala"
4809 command = model_bpm_command_new (self, bpm);
4810 #line 1103 "project.vala"
4811 model_undo_manager_do_command (self->undo_manager, MODEL_COMMAND (command));
4812 #line 4794 "project.c"
4813 _model_command_unref0 (command);
4817 #line 1106 "project.vala"
4818 void _model_project_set_bpm (ModelProject* self, gint bpm) {
4819 #line 1106 "project.vala"
4820 g_return_if_fail (MODEL_IS_PROJECT (self));
4821 #line 1107 "project.vala"
4822 self->priv->tempo = bpm;
4823 #line 1108 "project.vala"
4824 g_signal_emit_by_name (MODEL_TEMPO_INFORMATION (self), "bpm-changed", bpm);
4825 #line 4807 "project.c"
4829 #line 1111 "project.vala"
4830 static gint model_project_real_get_bpm (ModelTempoInformation* base) {
4831 #line 4813 "project.c"
4832 ModelProject * self;
4834 self = MODEL_PROJECT (base);
4835 result = self->priv->tempo;
4836 #line 1112 "project.vala"
4838 #line 4820 "project.c"
4842 #line 1115 "project.vala"
4843 char* model_project_get_audio_path (ModelProject* self) {
4844 #line 4826 "project.c"
4845 char* result = NULL;
4848 #line 1115 "project.vala"
4849 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
4850 #line 1116 "project.vala"
4851 path = model_project_get_path (self);
4852 #line 4834 "project.c"
4854 #line 1117 "project.vala"
4856 #line 4838 "project.c"
4858 #line 1117 "project.vala"
4859 _tmp0_ = (_tmp1_ = NULL, _g_free0 (_tmp0_), _tmp1_);
4860 #line 4842 "project.c"
4863 #line 1117 "project.vala"
4864 _tmp0_ = (_tmp2_ = g_build_filename (path, "audio files", NULL), _g_free0 (_tmp0_), _tmp2_);
4865 #line 4847 "project.c"
4869 #line 1117 "project.vala"
4871 #line 4853 "project.c"
4875 #line 1120 "project.vala"
4876 static char* model_project_get_path (ModelProject* self) {
4877 #line 4859 "project.c"
4878 char* result = NULL;
4880 #line 1120 "project.vala"
4881 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
4882 #line 4864 "project.c"
4884 #line 1121 "project.vala"
4885 if (self->project_file == NULL) {
4886 #line 4868 "project.c"
4888 #line 1121 "project.vala"
4889 _tmp0_ = (_tmp1_ = NULL, _g_free0 (_tmp0_), _tmp1_);
4890 #line 4872 "project.c"
4893 #line 1121 "project.vala"
4894 _tmp0_ = (_tmp2_ = g_path_get_dirname (self->project_file), _g_free0 (_tmp0_), _tmp2_);
4895 #line 4877 "project.c"
4898 #line 1121 "project.vala"
4900 #line 4882 "project.c"
4904 #line 1124 "project.vala"
4905 ModelVideoTrack* model_project_find_video_track (ModelProject* self) {
4906 #line 4888 "project.c"
4907 ModelVideoTrack* result = NULL;
4908 #line 1124 "project.vala"
4909 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
4910 #line 4892 "project.c"
4912 GeeIterator* _track_it;
4913 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
4914 #line 1125 "project.vala"
4916 #line 4898 "project.c"
4918 #line 1125 "project.vala"
4919 if (!gee_iterator_next (_track_it)) {
4920 #line 1125 "project.vala"
4922 #line 4904 "project.c"
4924 #line 1125 "project.vala"
4925 track = (ModelTrack*) gee_iterator_get (_track_it);
4926 #line 1126 "project.vala"
4927 if (MODEL_IS_VIDEO_TRACK (track)) {
4928 #line 4910 "project.c"
4930 result = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_VIDEO_TRACK (_tmp0_) ? ((ModelVideoTrack*) _tmp0_) : NULL));
4931 _g_object_unref0 (track);
4932 _g_object_unref0 (_track_it);
4933 #line 1127 "project.vala"
4935 #line 4917 "project.c"
4937 _g_object_unref0 (track);
4939 _g_object_unref0 (_track_it);
4942 #line 1130 "project.vala"
4944 #line 4926 "project.c"
4948 #line 1133 "project.vala"
4949 ModelAudioTrack* model_project_find_audio_track (ModelProject* self) {
4950 #line 4932 "project.c"
4951 ModelAudioTrack* result = NULL;
4952 #line 1133 "project.vala"
4953 g_return_val_if_fail (MODEL_IS_PROJECT (self), NULL);
4954 #line 4936 "project.c"
4956 GeeIterator* _track_it;
4957 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->tracks));
4958 #line 1134 "project.vala"
4960 #line 4942 "project.c"
4962 #line 1134 "project.vala"
4963 if (!gee_iterator_next (_track_it)) {
4964 #line 1134 "project.vala"
4966 #line 4948 "project.c"
4968 #line 1134 "project.vala"
4969 track = (ModelTrack*) gee_iterator_get (_track_it);
4970 #line 1135 "project.vala"
4971 if (MODEL_IS_AUDIO_TRACK (track)) {
4972 #line 4954 "project.c"
4974 result = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL));
4975 _g_object_unref0 (track);
4976 _g_object_unref0 (_track_it);
4977 #line 1136 "project.vala"
4979 #line 4961 "project.c"
4981 _g_object_unref0 (track);
4983 _g_object_unref0 (_track_it);
4986 #line 1139 "project.vala"
4988 #line 4970 "project.c"
4992 #line 370 "project.vala"
4993 static void model_project_real_load_complete (ModelProject* self) {
4994 #line 370 "project.vala"
4995 g_return_if_fail (MODEL_IS_PROJECT (self));
4996 #line 4978 "project.c"
5000 static void model_project_class_init (ModelProjectClass * klass) {
5001 Fraction _tmp1_ = {0};
5002 model_project_parent_class = g_type_class_peek_parent (klass);
5003 g_type_class_add_private (klass, sizeof (ModelProjectPrivate));
5004 MODEL_PROJECT_CLASS (klass)->get_clip_time = model_project_real_get_clip_time;
5005 MODEL_PROJECT_CLASS (klass)->get_project_file = model_project_real_get_project_file;
5006 MODEL_PROJECT_CLASS (klass)->do_append = model_project_real_do_append;
5007 MODEL_PROJECT_CLASS (klass)->add_track = model_project_real_add_track;
5008 MODEL_PROJECT_CLASS (klass)->insert_track = model_project_real_insert_track;
5009 MODEL_PROJECT_CLASS (klass)->load = model_project_real_load;
5010 MODEL_PROJECT_CLASS (klass)->save = model_project_real_save;
5011 MODEL_PROJECT_CLASS (klass)->get_app_name = model_project_real_get_app_name;
5012 MODEL_PROJECT_CLASS (klass)->load_complete = model_project_real_load_complete;
5013 G_OBJECT_CLASS (klass)->finalize = model_project_finalize;
5014 g_signal_new ("playstate_changed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__ENUM, G_TYPE_NONE, 1, TYPE_PLAY_STATE);
5015 g_signal_new ("name_changed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
5016 g_signal_new ("load_error", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
5017 g_signal_new ("load_complete", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ModelProjectClass, load_complete), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
5018 g_signal_new ("closed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
5019 g_signal_new ("track_added", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK);
5020 g_signal_new ("track_removed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_TRACK);
5021 g_signal_new ("error_occurred", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
5022 g_signal_new ("clipfile_added", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP_FILE);
5023 g_signal_new ("clipfile_removed", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP_FILE);
5024 g_signal_new ("cleared", MODEL_TYPE_PROJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
5025 model_project_INVALID_FRAME_RATE = (fraction_init (&_tmp1_, -1, 1), _tmp1_);
5029 static void model_project_model_tempo_information_interface_init (ModelTempoInformationIface * iface) {
5030 model_project_model_tempo_information_parent_iface = g_type_interface_peek_parent (iface);
5031 iface->get_time_signature = model_project_real_get_time_signature;
5032 iface->get_bpm = model_project_real_get_bpm;
5036 static void model_project_instance_init (ModelProject * self) {
5037 Fraction _tmp0_ = {0};
5038 self->priv = MODEL_PROJECT_GET_PRIVATE (self);
5039 self->tracks = gee_array_list_new (MODEL_TYPE_TRACK, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
5040 self->inactive_tracks = gee_array_list_new (MODEL_TYPE_TRACK, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
5041 self->priv->pending = gee_hash_set_new (MODEL_TYPE_CLIP_FETCHER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
5042 self->priv->pending_thumbs = gee_array_list_new (MODEL_TYPE_THUMBNAIL_FETCHER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
5043 self->clipfiles = gee_array_list_new (MODEL_TYPE_CLIP_FILE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
5044 self->priv->tempo = 120;
5045 self->priv->time_signature = (fraction_init (&_tmp0_, 4, 4), _tmp0_);
5046 self->click_during_play = FALSE;
5047 self->click_during_record = TRUE;
5048 self->click_volume = 0.8;
5049 self->library_visible = TRUE;
5050 self->library_width = 600;
5054 static void model_project_finalize (GObject* obj) {
5055 ModelProject * self;
5056 self = MODEL_PROJECT (obj);
5057 _g_object_unref0 (self->tracks);
5058 _g_object_unref0 (self->inactive_tracks);
5059 _g_object_unref0 (self->priv->pending);
5060 _g_object_unref0 (self->priv->pending_thumbs);
5061 _g_object_unref0 (self->clipfiles);
5062 _g_object_unref0 (self->media_engine);
5063 _g_free0 (self->project_file);
5064 _g_object_unref0 (self->loader);
5065 _model_fetcher_completion_unref0 (self->priv->fetcher_completion);
5066 _model_undo_manager_unref0 (self->undo_manager);
5067 _g_object_unref0 (self->importer);
5068 G_OBJECT_CLASS (model_project_parent_class)->finalize (obj);
5072 GType model_project_get_type (void) {
5073 static volatile gsize model_project_type_id__volatile = 0;
5074 if (g_once_init_enter (&model_project_type_id__volatile)) {
5075 static const GTypeInfo g_define_type_info = { sizeof (ModelProjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProject), 0, (GInstanceInitFunc) model_project_instance_init, NULL };
5076 static const GInterfaceInfo model_tempo_information_info = { (GInterfaceInitFunc) model_project_model_tempo_information_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
5077 GType model_project_type_id;
5078 model_project_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProject", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
5079 g_type_add_interface_static (model_project_type_id, MODEL_TYPE_TEMPO_INFORMATION, &model_tempo_information_info);
5080 g_once_init_leave (&model_project_type_id__volatile, model_project_type_id);
5082 return model_project_type_id__volatile;
5086 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
5087 if ((array != NULL) && (destroy_func != NULL)) {
5089 for (i = 0; i < array_length; i = i + 1) {
5090 if (((gpointer*) array)[i] != NULL) {
5091 destroy_func (((gpointer*) array)[i]);
5098 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
5099 _vala_array_destroy (array, array_length, destroy_func);
5104 static gint _vala_array_length (gpointer array) {
5108 while (((gpointer*) array)[length]) {
5116 static int _vala_strcmp0 (const char * str1, const char * str2) {
5118 return -(str1 != str2);
5121 return str1 != str2;
5123 return strcmp (str1, str2);
5128 static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
5129 typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2);
5130 register GMarshalFunc_VOID__STRING_STRING callback;
5131 register GCClosure * cc;
5132 register gpointer data1, data2;
5133 cc = (GCClosure *) closure;
5134 g_return_if_fail (n_param_values == 3);
5135 if (G_CCLOSURE_SWAP_DATA (closure)) {
5136 data1 = closure->data;
5137 data2 = param_values->data[0].v_pointer;
5139 data1 = param_values->data[0].v_pointer;
5140 data2 = closure->data;
5142 callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
5143 callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2);