1 /* TrackView.c generated by valac, the Vala compiler
2 * generated from TrackView.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>
21 #define TYPE_TRACK_VIEW (track_view_get_type ())
22 #define TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW, TrackView))
23 #define IS_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW))
24 #define TRACK_VIEW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRACK_VIEW, TrackViewIface))
26 typedef struct _TrackView TrackView;
27 typedef struct _TrackViewIface TrackViewIface;
29 #define TYPE_CLIP_VIEW (clip_view_get_type ())
30 #define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView))
31 #define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass))
32 #define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW))
33 #define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW))
34 #define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass))
36 typedef struct _ClipView ClipView;
37 typedef struct _ClipViewClass ClipViewClass;
39 #define MODEL_TYPE_TRACK (model_track_get_type ())
40 #define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack))
41 #define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass))
42 #define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK))
43 #define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK))
44 #define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass))
46 typedef struct _ModelTrack ModelTrack;
47 typedef struct _ModelTrackClass ModelTrackClass;
49 #define TYPE_TRACK_VIEW_CONCRETE (track_view_concrete_get_type ())
50 #define TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcrete))
51 #define TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass))
52 #define IS_TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW_CONCRETE))
53 #define IS_TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_VIEW_CONCRETE))
54 #define TRACK_VIEW_CONCRETE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass))
56 typedef struct _TrackViewConcrete TrackViewConcrete;
57 typedef struct _TrackViewConcreteClass TrackViewConcreteClass;
58 typedef struct _TrackViewConcretePrivate TrackViewConcretePrivate;
60 #define TYPE_TIME_LINE (time_line_get_type ())
61 #define TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TIME_LINE, TimeLine))
62 #define TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TIME_LINE, TimeLineClass))
63 #define IS_TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TIME_LINE))
64 #define IS_TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TIME_LINE))
65 #define TIME_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TIME_LINE, TimeLineClass))
67 typedef struct _TimeLine TimeLine;
68 typedef struct _TimeLineClass TimeLineClass;
70 #define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ())
71 #define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate))
72 #define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE))
73 #define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface))
75 typedef struct _TransportDelegate TransportDelegate;
76 typedef struct _TransportDelegateIface TransportDelegateIface;
77 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
79 #define MODEL_TYPE_CLIP (model_clip_get_type ())
80 #define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip))
81 #define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass))
82 #define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP))
83 #define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP))
84 #define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass))
86 typedef struct _ModelClip ModelClip;
87 typedef struct _ModelClipClass ModelClipClass;
89 #define LOGGING_TYPE_FACILITY (logging_facility_get_type ())
91 #define LOGGING_TYPE_LEVEL (logging_level_get_type ())
92 typedef struct _TimeLinePrivate TimeLinePrivate;
94 #define MODEL_TYPE_PROJECT (model_project_get_type ())
95 #define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject))
96 #define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass))
97 #define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT))
98 #define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT))
99 #define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass))
101 typedef struct _ModelProject ModelProject;
102 typedef struct _ModelProjectClass ModelProjectClass;
104 #define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ())
105 #define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem))
106 #define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM))
107 #define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface))
109 typedef struct _ModelTimeSystem ModelTimeSystem;
110 typedef struct _ModelTimeSystemIface ModelTimeSystemIface;
112 #define VIEW_TYPE_RULER (view_ruler_get_type ())
113 #define VIEW_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_RULER, ViewRuler))
114 #define VIEW_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_RULER, ViewRulerClass))
115 #define VIEW_IS_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_RULER))
116 #define VIEW_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_RULER))
117 #define VIEW_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_RULER, ViewRulerClass))
119 typedef struct _ViewRuler ViewRuler;
120 typedef struct _ViewRulerClass ViewRulerClass;
122 #define TYPE_CLIPBOARD (clipboard_get_type ())
123 #define CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIPBOARD, Clipboard))
124 #define CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIPBOARD, ClipboardClass))
125 #define IS_CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIPBOARD))
126 #define IS_CLIPBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIPBOARD))
127 #define CLIPBOARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIPBOARD, ClipboardClass))
129 typedef struct _Clipboard Clipboard;
130 typedef struct _ClipboardClass ClipboardClass;
131 typedef struct _ClipViewPrivate ClipViewPrivate;
132 #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
134 struct _TrackViewIface {
135 GTypeInterface parent_iface;
136 void (*move_to_top) (TrackView* self, ClipView* clip_view);
137 void (*resize) (TrackView* self);
138 ModelTrack* (*get_track) (TrackView* self);
139 gint (*get_track_height) (TrackView* self);
140 GtkWidget* (*find_child) (TrackView* self, double x, double y);
141 void (*select_all) (TrackView* self);
144 struct _TrackViewConcrete {
145 GtkFixed parent_instance;
146 TrackViewConcretePrivate * priv;
149 struct _TrackViewConcreteClass {
150 GtkFixedClass parent_class;
153 struct _TransportDelegateIface {
154 GTypeInterface parent_iface;
155 gboolean (*is_playing) (TransportDelegate* self);
156 gboolean (*is_recording) (TransportDelegate* self);
157 gboolean (*is_stopped) (TransportDelegate* self);
160 struct _TrackViewConcretePrivate {
163 TransportDelegate* transport_delegate;
167 LOGGING_FACILITY_SIGNAL_HANDLERS,
168 LOGGING_FACILITY_DEVELOPER_WARNINGS,
169 LOGGING_FACILITY_GRAPH,
170 LOGGING_FACILITY_LOADING,
171 LOGGING_FACILITY_IMPORT,
172 LOGGING_FACILITY_SINGLEDECODEBIN
176 LOGGING_LEVEL_CRITICAL,
178 LOGGING_LEVEL_MEDIUM,
181 LOGGING_LEVEL_VERBOSE
184 struct _ModelTimeSystemIface {
185 GTypeInterface parent_iface;
186 void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div);
187 gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x);
188 gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x);
189 gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time);
190 gint64 (*get_pixel_snap_time) (ModelTimeSystem* self);
191 gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time);
192 float (*get_pixel_percentage) (ModelTimeSystem* self);
193 gint (*get_start_token) (ModelTimeSystem* self, gint xsize);
194 gint (*get_next_position) (ModelTimeSystem* self, gint token);
195 gint (*get_pixel_height) (ModelTimeSystem* self, gint token);
196 char* (*get_display_string) (ModelTimeSystem* self, gint token);
197 gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame);
198 gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize);
199 char* (*get_time_string) (ModelTimeSystem* self, gint64 time);
200 char* (*get_time_duration) (ModelTimeSystem* self, gint64 time);
204 GtkEventBox parent_instance;
205 TimeLinePrivate * priv;
206 ModelProject* project;
207 ModelTimeSystem* provider;
209 GeeArrayList* tracks;
210 GeeArrayList* selected_clips;
211 Clipboard* clipboard;
214 struct _TimeLineClass {
215 GtkEventBoxClass parent_class;
219 GtkDrawingArea parent_instance;
220 ClipViewPrivate * priv;
223 gboolean is_selected;
227 struct _ClipViewClass {
228 GtkDrawingAreaClass parent_class;
232 static gpointer track_view_concrete_parent_class = NULL;
233 static TrackViewIface* track_view_concrete_track_view_parent_iface = NULL;
235 GType clip_view_get_type (void);
236 GType model_track_get_type (void);
237 GType track_view_get_type (void);
238 GType track_view_concrete_get_type (void);
239 GType time_line_get_type (void);
240 GType transport_delegate_get_type (void);
241 #define TRACK_VIEW_CONCRETE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcretePrivate))
243 TRACK_VIEW_CONCRETE_DUMMY_PROPERTY
245 #define TRACK_VIEW_CONCRETE_clip_height 64
246 #define TIME_LINE_BORDER 4
247 #define TRACK_VIEW_CONCRETE_TrackHeight (TRACK_VIEW_CONCRETE_clip_height + (TIME_LINE_BORDER * 2))
248 GType model_clip_get_type (void);
249 static void track_view_concrete_on_clip_added (TrackViewConcrete* self, ModelTrack* t, ModelClip* clip, gboolean select);
250 static void _track_view_concrete_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self);
251 static void track_view_concrete_on_clip_removed (TrackViewConcrete* self, ModelClip* clip);
252 static void _track_view_concrete_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self);
253 TrackViewConcrete* track_view_concrete_new (TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline);
254 TrackViewConcrete* track_view_concrete_construct (GType object_type, TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline);
255 static void track_view_concrete_real_size_request (GtkWidget* base, GtkRequisition* requisition);
256 GType logging_facility_get_type (void);
257 GType logging_level_get_type (void);
258 void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message);
259 static void track_view_concrete_set_clip_pos (TrackViewConcrete* self, ClipView* view);
260 static void track_view_concrete_on_clip_moved (TrackViewConcrete* self, ClipView* clip);
261 void model_track_delete_clip (ModelTrack* self, ModelClip* clip);
262 static void track_view_concrete_clear_drag (TrackViewConcrete* self);
263 static void track_view_concrete_on_clip_deleted (TrackViewConcrete* self, ModelClip* clip);
264 GType model_project_get_type (void);
265 GType model_time_system_get_type (void);
266 GType view_ruler_get_type (void);
267 gpointer clipboard_ref (gpointer instance);
268 void clipboard_unref (gpointer instance);
269 GParamSpec* param_spec_clipboard (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
270 void value_set_clipboard (GValue* value, gpointer v_object);
271 void value_take_clipboard (GValue* value, gpointer v_object);
272 gpointer value_get_clipboard (const GValue* value);
273 GType clipboard_get_type (void);
274 ClipView* clip_view_new (TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height);
275 ClipView* clip_view_construct (GType object_type, TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height);
276 static void _track_view_concrete_on_clip_moved_clip_view_clip_moved (ClipView* _sender, ClipView* clip, gpointer self);
277 static void _track_view_concrete_on_clip_deleted_clip_view_clip_deleted (ClipView* _sender, ModelClip* clip, gpointer self);
278 static void track_view_concrete_on_move_begin (TrackViewConcrete* self, ClipView* clip_view, gboolean do_copy);
279 static void _track_view_concrete_on_move_begin_clip_view_move_begin (ClipView* _sender, ClipView* clip_view, gboolean copy, gpointer self);
280 static void track_view_concrete_on_trim_begin (TrackViewConcrete* self, ClipView* clip_view);
281 static void _track_view_concrete_on_trim_begin_clip_view_trim_begin (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self);
282 gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time);
283 gint64 model_clip_get_start (ModelClip* self);
284 static void track_view_concrete_real_move_to_top (TrackView* base, ClipView* clip_view);
285 void track_view_move_to_top (TrackView* self, ClipView* clip_view);
286 void clip_view_on_clip_moved (ClipView* self, ModelClip* clip);
287 static void track_view_concrete_real_resize (TrackView* base);
288 void time_line_deselect_all_clips (TimeLine* self);
289 static gboolean track_view_concrete_real_button_press_event (GtkWidget* base, GdkEventButton* e);
290 static ModelTrack* track_view_concrete_real_get_track (TrackView* base);
291 static gint track_view_concrete_real_get_track_height (TrackView* base);
292 static GtkWidget* track_view_concrete_real_find_child (TrackView* base, double x, double y);
293 void clip_view_select (ClipView* self);
294 static void track_view_concrete_real_select_all (TrackView* base);
295 static void track_view_concrete_finalize (GObject* obj);
299 static gpointer _g_object_ref0 (gpointer self) {
300 return self ? g_object_ref (self) : NULL;
304 #line 44 "TrackView.vala"
305 static void _track_view_concrete_on_clip_added_model_track_clip_added (ModelTrack* _sender, ModelClip* clip, gboolean select, gpointer self) {
306 #line 307 "TrackView.c"
307 track_view_concrete_on_clip_added (self, _sender, clip, select);
311 #line 101 "TrackView.vala"
312 static void _track_view_concrete_on_clip_removed_model_track_clip_removed (ModelTrack* _sender, ModelClip* clip, gpointer self) {
313 #line 314 "TrackView.c"
314 track_view_concrete_on_clip_removed (self, clip);
318 #line 17 "TrackView.vala"
319 TrackViewConcrete* track_view_concrete_construct (GType object_type, TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline) {
320 #line 321 "TrackView.c"
321 TrackViewConcrete * self;
324 TransportDelegate* _tmp2_;
325 #line 17 "TrackView.vala"
326 g_return_val_if_fail (IS_TRANSPORT_DELEGATE (transport_delegate), NULL);
327 #line 17 "TrackView.vala"
328 g_return_val_if_fail (MODEL_IS_TRACK (track), NULL);
329 #line 17 "TrackView.vala"
330 g_return_val_if_fail (IS_TIME_LINE (timeline), NULL);
331 #line 332 "TrackView.c"
332 self = g_object_newv (object_type, 0, NULL);
333 #line 19 "TrackView.vala"
334 self->priv->track = (_tmp0_ = _g_object_ref0 (track), _g_object_unref0 (self->priv->track), _tmp0_);
335 #line 20 "TrackView.vala"
336 self->priv->timeline = (_tmp1_ = _g_object_ref0 (timeline), _g_object_unref0 (self->priv->timeline), _tmp1_);
337 #line 21 "TrackView.vala"
338 self->priv->transport_delegate = (_tmp2_ = _g_object_ref0 (transport_delegate), _g_object_unref0 (self->priv->transport_delegate), _tmp2_);
339 #line 23 "TrackView.vala"
340 g_signal_connect_object (track, "clip-added", (GCallback) _track_view_concrete_on_clip_added_model_track_clip_added, self, 0);
341 #line 24 "TrackView.vala"
342 g_signal_connect_object (track, "clip-removed", (GCallback) _track_view_concrete_on_clip_removed_model_track_clip_removed, self, 0);
343 #line 344 "TrackView.c"
348 #line 17 "TrackView.vala"
349 TrackViewConcrete* track_view_concrete_new (TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline) {
350 #line 17 "TrackView.vala"
351 return track_view_concrete_construct (TYPE_TRACK_VIEW_CONCRETE, transport_delegate, track, timeline);
352 #line 353 "TrackView.c"
356 #line 27 "TrackView.vala"
357 static void track_view_concrete_real_size_request (GtkWidget* base, GtkRequisition* requisition) {
358 #line 359 "TrackView.c"
359 TrackViewConcrete * self;
360 self = TRACK_VIEW_CONCRETE (base);
361 #line 28 "TrackView.vala"
362 GTK_WIDGET_CLASS (track_view_concrete_parent_class)->size_request (GTK_WIDGET (GTK_FIXED (self)), requisition);
363 #line 29 "TrackView.vala"
364 (*requisition).height = TRACK_VIEW_CONCRETE_TrackHeight;
365 #line 30 "TrackView.vala"
366 (*requisition).width = (*requisition).width + TIME_LINE_BORDER;
367 #line 368 "TrackView.c"
371 #line 33 "TrackView.vala"
372 static void track_view_concrete_on_clip_moved (TrackViewConcrete* self, ClipView* clip) {
373 #line 33 "TrackView.vala"
374 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
375 #line 33 "TrackView.vala"
376 g_return_if_fail (IS_CLIP_VIEW (clip));
377 #line 34 "TrackView.vala"
378 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_moved");
379 #line 35 "TrackView.vala"
380 track_view_concrete_set_clip_pos (self, clip);
381 #line 382 "TrackView.c"
385 #line 38 "TrackView.vala"
386 static void track_view_concrete_on_clip_deleted (TrackViewConcrete* self, ModelClip* clip) {
387 #line 38 "TrackView.vala"
388 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
389 #line 38 "TrackView.vala"
390 g_return_if_fail (MODEL_IS_CLIP (clip));
391 #line 39 "TrackView.vala"
392 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_deleted");
393 #line 40 "TrackView.vala"
394 model_track_delete_clip (self->priv->track, clip);
395 #line 41 "TrackView.vala"
396 track_view_concrete_clear_drag (self);
397 #line 398 "TrackView.c"
401 #line 33 "TrackView.vala"
402 static void _track_view_concrete_on_clip_moved_clip_view_clip_moved (ClipView* _sender, ClipView* clip, gpointer self) {
403 #line 404 "TrackView.c"
404 track_view_concrete_on_clip_moved (self, clip);
408 #line 38 "TrackView.vala"
409 static void _track_view_concrete_on_clip_deleted_clip_view_clip_deleted (ClipView* _sender, ModelClip* clip, gpointer self) {
410 #line 411 "TrackView.c"
411 track_view_concrete_on_clip_deleted (self, clip);
415 #line 82 "TrackView.vala"
416 static void _track_view_concrete_on_move_begin_clip_view_move_begin (ClipView* _sender, ClipView* clip_view, gboolean copy, gpointer self) {
417 #line 418 "TrackView.c"
418 track_view_concrete_on_move_begin (self, clip_view, copy);
422 #line 77 "TrackView.vala"
423 static void _track_view_concrete_on_trim_begin_clip_view_trim_begin (ClipView* _sender, ClipView* clip_view, GdkWindowEdge edge, gpointer self) {
424 #line 425 "TrackView.c"
425 track_view_concrete_on_trim_begin (self, clip_view);
429 #line 44 "TrackView.vala"
430 static void track_view_concrete_on_clip_added (TrackViewConcrete* self, ModelTrack* t, ModelClip* clip, gboolean select) {
431 #line 432 "TrackView.c"
433 #line 44 "TrackView.vala"
434 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
435 #line 44 "TrackView.vala"
436 g_return_if_fail (MODEL_IS_TRACK (t));
437 #line 44 "TrackView.vala"
438 g_return_if_fail (MODEL_IS_CLIP (clip));
439 #line 45 "TrackView.vala"
440 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_added");
441 #line 46 "TrackView.vala"
442 view = g_object_ref_sink (clip_view_new (self->priv->transport_delegate, clip, self->priv->timeline->provider, TRACK_VIEW_CONCRETE_clip_height));
443 #line 47 "TrackView.vala"
444 g_signal_connect_object (view, "clip-moved", (GCallback) _track_view_concrete_on_clip_moved_clip_view_clip_moved, self, 0);
445 #line 48 "TrackView.vala"
446 g_signal_connect_object (view, "clip-deleted", (GCallback) _track_view_concrete_on_clip_deleted_clip_view_clip_deleted, self, 0);
447 #line 49 "TrackView.vala"
448 g_signal_connect_object (view, "move-begin", (GCallback) _track_view_concrete_on_move_begin_clip_view_move_begin, self, 0);
449 #line 50 "TrackView.vala"
450 g_signal_connect_object (view, "trim-begin", (GCallback) _track_view_concrete_on_trim_begin_clip_view_trim_begin, self, 0);
451 #line 52 "TrackView.vala"
452 gtk_fixed_put (GTK_FIXED (self), GTK_WIDGET (view), model_time_system_time_to_xpos (self->priv->timeline->provider, model_clip_get_start (clip)), TIME_LINE_BORDER);
453 #line 53 "TrackView.vala"
454 gtk_widget_show (GTK_WIDGET (view));
455 #line 55 "TrackView.vala"
456 g_signal_emit_by_name (self->priv->timeline, "track-changed");
457 #line 56 "TrackView.vala"
458 g_signal_emit_by_name (TRACK_VIEW (self), "clip-view-added", view);
459 #line 57 "TrackView.vala"
461 #line 58 "TrackView.vala"
462 g_signal_emit_by_name (view, "selection-request", view, FALSE);
463 #line 464 "TrackView.c"
465 _g_object_unref0 (view);
469 #line 64 "TrackView.vala"
470 static void track_view_concrete_real_move_to_top (TrackView* base, ClipView* clip_view) {
471 #line 472 "TrackView.c"
472 TrackViewConcrete * self;
473 self = TRACK_VIEW_CONCRETE (base);
474 #line 64 "TrackView.vala"
475 g_return_if_fail (IS_CLIP_VIEW (clip_view));
476 #line 70 "TrackView.vala"
477 gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (clip_view));
478 #line 71 "TrackView.vala"
479 gtk_fixed_put (GTK_FIXED (self), GTK_WIDGET (clip_view), model_time_system_time_to_xpos (self->priv->timeline->provider, model_clip_get_start (clip_view->clip)), TIME_LINE_BORDER);
480 #line 74 "TrackView.vala"
481 gtk_widget_show (GTK_WIDGET (clip_view));
482 #line 483 "TrackView.c"
486 #line 77 "TrackView.vala"
487 static void track_view_concrete_on_trim_begin (TrackViewConcrete* self, ClipView* clip_view) {
488 #line 77 "TrackView.vala"
489 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
490 #line 77 "TrackView.vala"
491 g_return_if_fail (IS_CLIP_VIEW (clip_view));
492 #line 78 "TrackView.vala"
493 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_trim_begin");
494 #line 79 "TrackView.vala"
495 track_view_move_to_top (TRACK_VIEW (self), clip_view);
496 #line 497 "TrackView.c"
500 #line 82 "TrackView.vala"
501 static void track_view_concrete_on_move_begin (TrackViewConcrete* self, ClipView* clip_view, gboolean do_copy) {
502 #line 82 "TrackView.vala"
503 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
504 #line 82 "TrackView.vala"
505 g_return_if_fail (IS_CLIP_VIEW (clip_view));
506 #line 83 "TrackView.vala"
507 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_move_begin");
508 #line 84 "TrackView.vala"
509 track_view_move_to_top (TRACK_VIEW (self), clip_view);
510 #line 511 "TrackView.c"
514 #line 87 "TrackView.vala"
515 static void track_view_concrete_set_clip_pos (TrackViewConcrete* self, ClipView* view) {
516 #line 87 "TrackView.vala"
517 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
518 #line 87 "TrackView.vala"
519 g_return_if_fail (IS_CLIP_VIEW (view));
520 #line 88 "TrackView.vala"
521 gtk_fixed_move (GTK_FIXED (self), GTK_WIDGET (view), model_time_system_time_to_xpos (self->priv->timeline->provider, model_clip_get_start (view->clip)), TIME_LINE_BORDER);
522 #line 89 "TrackView.vala"
523 gtk_widget_queue_draw (GTK_WIDGET (self));
524 #line 525 "TrackView.c"
528 #line 92 "TrackView.vala"
529 static void track_view_concrete_real_resize (TrackView* base) {
530 #line 531 "TrackView.c"
531 TrackViewConcrete * self;
532 self = TRACK_VIEW_CONCRETE (base);
536 #line 93 "TrackView.vala"
537 w_collection = gtk_container_get_children (GTK_CONTAINER (self));
538 #line 539 "TrackView.c"
539 for (w_it = w_collection; w_it != NULL; w_it = w_it->next) {
541 #line 93 "TrackView.vala"
542 w = _g_object_ref0 ((GtkWidget*) w_it->data);
543 #line 544 "TrackView.c"
547 #line 94 "TrackView.vala"
548 view = _g_object_ref0 ((_tmp0_ = w, IS_CLIP_VIEW (_tmp0_) ? ((ClipView*) _tmp0_) : NULL));
549 #line 95 "TrackView.vala"
551 #line 96 "TrackView.vala"
552 clip_view_on_clip_moved (view, view->clip);
553 #line 554 "TrackView.c"
555 _g_object_unref0 (w);
556 _g_object_unref0 (view);
559 #line 93 "TrackView.vala"
560 _g_list_free0 (w_collection);
561 #line 562 "TrackView.c"
566 #line 101 "TrackView.vala"
567 static void track_view_concrete_on_clip_removed (TrackViewConcrete* self, ModelClip* clip) {
568 #line 101 "TrackView.vala"
569 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
570 #line 101 "TrackView.vala"
571 g_return_if_fail (MODEL_IS_CLIP (clip));
572 #line 102 "TrackView.vala"
573 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_removed");
574 #line 575 "TrackView.c"
578 #line 103 "TrackView.vala"
579 w_collection = gtk_container_get_children (GTK_CONTAINER (self));
580 #line 581 "TrackView.c"
581 for (w_it = w_collection; w_it != NULL; w_it = w_it->next) {
583 #line 103 "TrackView.vala"
584 w = _g_object_ref0 ((GtkWidget*) w_it->data);
585 #line 586 "TrackView.c"
589 #line 104 "TrackView.vala"
590 view = _g_object_ref0 ((_tmp0_ = w, IS_CLIP_VIEW (_tmp0_) ? ((ClipView*) _tmp0_) : NULL));
591 #line 105 "TrackView.vala"
592 if (view->clip == clip) {
593 #line 594 "TrackView.c"
595 #line 106 "TrackView.vala"
596 g_signal_parse_name ("clip-moved", TYPE_CLIP_VIEW, &_tmp1_, NULL, FALSE);
597 #line 106 "TrackView.vala"
598 g_signal_handlers_disconnect_matched (view, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _track_view_concrete_on_clip_moved_clip_view_clip_moved, self);
599 #line 107 "TrackView.vala"
600 gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (view));
601 #line 108 "TrackView.vala"
602 g_signal_emit_by_name (self->priv->timeline, "track-changed");
603 #line 604 "TrackView.c"
604 _g_object_unref0 (w);
605 _g_object_unref0 (view);
606 _g_list_free0 (w_collection);
607 #line 109 "TrackView.vala"
609 #line 610 "TrackView.c"
611 _g_object_unref0 (w);
612 _g_object_unref0 (view);
615 #line 103 "TrackView.vala"
616 _g_list_free0 (w_collection);
617 #line 618 "TrackView.c"
622 #line 124 "TrackView.vala"
623 static gboolean track_view_concrete_real_button_press_event (GtkWidget* base, GdkEventButton* e) {
624 #line 625 "TrackView.c"
625 TrackViewConcrete * self;
626 gboolean result = FALSE;
627 gboolean _tmp0_ = FALSE;
628 gboolean _tmp1_ = FALSE;
629 gboolean _tmp2_ = FALSE;
630 self = TRACK_VIEW_CONCRETE (base);
631 #line 125 "TrackView.vala"
632 if ((*e).type != GDK_BUTTON_PRESS) {
633 #line 126 "TrackView.vala"
634 _tmp1_ = (*e).type != GDK_2BUTTON_PRESS;
635 #line 636 "TrackView.c"
637 #line 125 "TrackView.vala"
639 #line 640 "TrackView.c"
641 #line 125 "TrackView.vala"
643 #line 127 "TrackView.vala"
644 _tmp0_ = (*e).type != GDK_3BUTTON_PRESS;
645 #line 646 "TrackView.c"
647 #line 125 "TrackView.vala"
649 #line 650 "TrackView.c"
651 #line 125 "TrackView.vala"
653 #line 654 "TrackView.c"
655 #line 128 "TrackView.vala"
657 #line 658 "TrackView.c"
659 #line 130 "TrackView.vala"
660 if ((*e).button == 1) {
661 #line 130 "TrackView.vala"
663 #line 664 "TrackView.c"
665 #line 131 "TrackView.vala"
666 _tmp2_ = (*e).button == 3;
667 #line 668 "TrackView.c"
669 #line 130 "TrackView.vala"
671 #line 150 "TrackView.vala"
672 time_line_deselect_all_clips (self->priv->timeline);
673 #line 674 "TrackView.c"
676 #line 155 "TrackView.vala"
678 #line 679 "TrackView.c"
682 #line 169 "TrackView.vala"
683 static void track_view_concrete_clear_drag (TrackViewConcrete* self) {
684 #line 169 "TrackView.vala"
685 g_return_if_fail (IS_TRACK_VIEW_CONCRETE (self));
686 #line 170 "TrackView.vala"
687 gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL);
688 #line 171 "TrackView.vala"
689 gtk_widget_queue_draw (GTK_WIDGET (self));
690 #line 691 "TrackView.c"
694 #line 174 "TrackView.vala"
695 static ModelTrack* track_view_concrete_real_get_track (TrackView* base) {
696 #line 697 "TrackView.c"
697 TrackViewConcrete * self;
698 ModelTrack* result = NULL;
699 self = TRACK_VIEW_CONCRETE (base);
700 result = _g_object_ref0 (self->priv->track);
701 #line 175 "TrackView.vala"
703 #line 704 "TrackView.c"
707 #line 178 "TrackView.vala"
708 static gint track_view_concrete_real_get_track_height (TrackView* base) {
709 #line 710 "TrackView.c"
710 TrackViewConcrete * self;
712 self = TRACK_VIEW_CONCRETE (base);
713 result = TRACK_VIEW_CONCRETE_TrackHeight;
714 #line 179 "TrackView.vala"
716 #line 717 "TrackView.c"
720 #line 182 "TrackView.vala"
721 static GtkWidget* track_view_concrete_real_find_child (TrackView* base, double x, double y) {
722 #line 723 "TrackView.c"
723 TrackViewConcrete * self;
724 GtkWidget* result = NULL;
725 self = TRACK_VIEW_CONCRETE (base);
729 #line 183 "TrackView.vala"
730 w_collection = gtk_container_get_children (GTK_CONTAINER (self));
731 #line 732 "TrackView.c"
732 for (w_it = w_collection; w_it != NULL; w_it = w_it->next) {
734 #line 183 "TrackView.vala"
735 w = _g_object_ref0 ((GtkWidget*) w_it->data);
736 #line 737 "TrackView.c"
738 gboolean _tmp0_ = FALSE;
739 #line 184 "TrackView.vala"
740 if (w->allocation.x <= x) {
741 #line 184 "TrackView.vala"
742 _tmp0_ = x < (w->allocation.x + w->allocation.width);
743 #line 744 "TrackView.c"
745 #line 184 "TrackView.vala"
747 #line 748 "TrackView.c"
749 #line 184 "TrackView.vala"
751 #line 752 "TrackView.c"
753 _g_list_free0 (w_collection);
754 #line 185 "TrackView.vala"
756 #line 757 "TrackView.c"
758 _g_object_unref0 (w);
761 #line 183 "TrackView.vala"
762 _g_list_free0 (w_collection);
763 #line 764 "TrackView.c"
766 #line 188 "TrackView.vala"
768 #line 769 "TrackView.c"
772 #line 191 "TrackView.vala"
773 static void track_view_concrete_real_select_all (TrackView* base) {
774 #line 775 "TrackView.c"
775 TrackViewConcrete * self;
776 self = TRACK_VIEW_CONCRETE (base);
778 GList* child_collection;
780 #line 192 "TrackView.vala"
781 child_collection = gtk_container_get_children (GTK_CONTAINER (self));
782 #line 783 "TrackView.c"
783 for (child_it = child_collection; child_it != NULL; child_it = child_it->next) {
785 #line 192 "TrackView.vala"
786 child = _g_object_ref0 ((GtkWidget*) child_it->data);
787 #line 788 "TrackView.c"
791 #line 193 "TrackView.vala"
792 clip_view = _g_object_ref0 ((_tmp0_ = child, IS_CLIP_VIEW (_tmp0_) ? ((ClipView*) _tmp0_) : NULL));
793 #line 194 "TrackView.vala"
794 if (clip_view != NULL) {
795 #line 195 "TrackView.vala"
796 clip_view_select (clip_view);
797 #line 798 "TrackView.c"
799 _g_object_unref0 (child);
800 _g_object_unref0 (clip_view);
803 #line 192 "TrackView.vala"
804 _g_list_free0 (child_collection);
805 #line 806 "TrackView.c"
810 static void track_view_concrete_class_init (TrackViewConcreteClass * klass) {
811 track_view_concrete_parent_class = g_type_class_peek_parent (klass);
812 g_type_class_add_private (klass, sizeof (TrackViewConcretePrivate));
813 GTK_WIDGET_CLASS (klass)->size_request = track_view_concrete_real_size_request;
814 GTK_WIDGET_CLASS (klass)->button_press_event = track_view_concrete_real_button_press_event;
815 G_OBJECT_CLASS (klass)->finalize = track_view_concrete_finalize;
819 static void track_view_concrete_track_view_interface_init (TrackViewIface * iface) {
820 track_view_concrete_track_view_parent_iface = g_type_interface_peek_parent (iface);
821 iface->move_to_top = track_view_concrete_real_move_to_top;
822 iface->resize = track_view_concrete_real_resize;
823 iface->get_track = track_view_concrete_real_get_track;
824 iface->get_track_height = track_view_concrete_real_get_track_height;
825 iface->find_child = track_view_concrete_real_find_child;
826 iface->select_all = track_view_concrete_real_select_all;
830 static void track_view_concrete_instance_init (TrackViewConcrete * self) {
831 self->priv = TRACK_VIEW_CONCRETE_GET_PRIVATE (self);
835 static void track_view_concrete_finalize (GObject* obj) {
836 TrackViewConcrete * self;
837 self = TRACK_VIEW_CONCRETE (obj);
838 _g_object_unref0 (self->priv->track);
839 _g_object_unref0 (self->priv->timeline);
840 _g_object_unref0 (self->priv->transport_delegate);
841 G_OBJECT_CLASS (track_view_concrete_parent_class)->finalize (obj);
845 GType track_view_concrete_get_type (void) {
846 static volatile gsize track_view_concrete_type_id__volatile = 0;
847 if (g_once_init_enter (&track_view_concrete_type_id__volatile)) {
848 static const GTypeInfo g_define_type_info = { sizeof (TrackViewConcreteClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) track_view_concrete_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackViewConcrete), 0, (GInstanceInitFunc) track_view_concrete_instance_init, NULL };
849 static const GInterfaceInfo track_view_info = { (GInterfaceInitFunc) track_view_concrete_track_view_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
850 GType track_view_concrete_type_id;
851 track_view_concrete_type_id = g_type_register_static (GTK_TYPE_FIXED, "TrackViewConcrete", &g_define_type_info, 0);
852 g_type_add_interface_static (track_view_concrete_type_id, TYPE_TRACK_VIEW, &track_view_info);
853 g_once_init_leave (&track_view_concrete_type_id__volatile, track_view_concrete_type_id);
855 return track_view_concrete_type_id__volatile;