1 /* ui_clip.c generated by valac, the Vala compiler
2 * generated from ui_clip.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 <pango/pango.h>
21 #define TYPE_GAP_VIEW (gap_view_get_type ())
22 #define GAP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GAP_VIEW, GapView))
23 #define GAP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GAP_VIEW, GapViewClass))
24 #define IS_GAP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GAP_VIEW))
25 #define IS_GAP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GAP_VIEW))
26 #define GAP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_GAP_VIEW, GapViewClass))
28 typedef struct _GapView GapView;
29 typedef struct _GapViewClass GapViewClass;
30 typedef struct _GapViewPrivate GapViewPrivate;
32 #define MODEL_TYPE_GAP (model_gap_get_type ())
33 #define MODEL_GAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_GAP, ModelGap))
34 #define MODEL_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_GAP, ModelGapClass))
35 #define MODEL_IS_GAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_GAP))
36 #define MODEL_IS_GAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_GAP))
37 #define MODEL_GAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_GAP, ModelGapClass))
39 typedef struct _ModelGap ModelGap;
40 typedef struct _ModelGapClass ModelGapClass;
41 #define _model_gap_unref0(var) ((var == NULL) ? NULL : (var = (model_gap_unref (var), NULL)))
43 #define TYPE_CLIP_VIEW (clip_view_get_type ())
44 #define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView))
45 #define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass))
46 #define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW))
47 #define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW))
48 #define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass))
50 typedef struct _ClipView ClipView;
51 typedef struct _ClipViewClass ClipViewClass;
52 typedef struct _ClipViewPrivate ClipViewPrivate;
54 #define MODEL_TYPE_CLIP (model_clip_get_type ())
55 #define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip))
56 #define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass))
57 #define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP))
58 #define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP))
59 #define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass))
61 typedef struct _ModelClip ModelClip;
62 typedef struct _ModelClipClass ModelClipClass;
64 #define MODEL_TYPE_TIME_SYSTEM (model_time_system_get_type ())
65 #define MODEL_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystem))
66 #define MODEL_IS_TIME_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TIME_SYSTEM))
67 #define MODEL_TIME_SYSTEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TIME_SYSTEM, ModelTimeSystemIface))
69 typedef struct _ModelTimeSystem ModelTimeSystem;
70 typedef struct _ModelTimeSystemIface ModelTimeSystemIface;
72 #define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ())
73 #define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate))
74 #define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE))
75 #define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface))
77 typedef struct _TransportDelegate TransportDelegate;
78 typedef struct _TransportDelegateIface TransportDelegateIface;
80 #define CLIP_VIEW_TYPE_MOTION_MODE (clip_view_motion_mode_get_type ())
81 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
82 typedef struct _ModelClipPrivate ModelClipPrivate;
84 #define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ())
85 #define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile))
86 #define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
87 #define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE))
88 #define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE))
89 #define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
91 typedef struct _ModelClipFile ModelClipFile;
92 typedef struct _ModelClipFileClass ModelClipFileClass;
94 #define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ())
96 #define LOGGING_TYPE_FACILITY (logging_facility_get_type ())
98 #define LOGGING_TYPE_LEVEL (logging_level_get_type ())
99 #define _g_free0(var) (var = (g_free (var), NULL))
102 GtkDrawingArea parent_instance;
103 GapViewPrivate * priv;
107 struct _GapViewClass {
108 GtkDrawingAreaClass parent_class;
111 struct _GapViewPrivate {
116 GtkDrawingArea parent_instance;
117 ClipViewPrivate * priv;
120 gboolean is_selected;
124 struct _ClipViewClass {
125 GtkDrawingAreaClass parent_class;
128 struct _ModelTimeSystemIface {
129 GTypeInterface parent_iface;
130 void (*calculate_pixel_step) (ModelTimeSystem* self, float inc, float pixel_min, float pixel_div);
131 gint64 (*xpos_to_time) (ModelTimeSystem* self, gint x);
132 gint64 (*xsize_to_time) (ModelTimeSystem* self, gint x);
133 gint (*time_to_xpos) (ModelTimeSystem* self, gint64 time);
134 gint64 (*get_pixel_snap_time) (ModelTimeSystem* self);
135 gint (*time_to_xsize) (ModelTimeSystem* self, gint64 time);
136 float (*get_pixel_percentage) (ModelTimeSystem* self);
137 gint (*get_start_token) (ModelTimeSystem* self, gint xsize);
138 gint (*get_next_position) (ModelTimeSystem* self, gint token);
139 gint (*get_pixel_height) (ModelTimeSystem* self, gint token);
140 char* (*get_display_string) (ModelTimeSystem* self, gint token);
141 gint (*frame_to_xsize) (ModelTimeSystem* self, gint frame);
142 gint (*xsize_to_frame) (ModelTimeSystem* self, gint xsize);
143 char* (*get_time_string) (ModelTimeSystem* self, gint64 time);
144 char* (*get_time_duration) (ModelTimeSystem* self, gint64 time);
147 struct _TransportDelegateIface {
148 GTypeInterface parent_iface;
149 gboolean (*is_playing) (TransportDelegate* self);
150 gboolean (*is_recording) (TransportDelegate* self);
151 gboolean (*is_stopped) (TransportDelegate* self);
155 CLIP_VIEW_MOTION_MODE_NONE,
156 CLIP_VIEW_MOTION_MODE_DRAGGING,
157 CLIP_VIEW_MOTION_MODE_LEFT_TRIM,
158 CLIP_VIEW_MOTION_MODE_RIGHT_TRIM
159 } ClipViewMotionMode;
161 struct _ClipViewPrivate {
162 ModelTimeSystem* time_provider;
163 TransportDelegate* transport_delegate;
164 GdkColor color_black;
165 GdkColor color_normal;
166 GdkColor color_selected;
170 ClipViewMotionMode motion_mode;
171 gboolean button_down;
172 gboolean pending_selection;
176 MODEL_MEDIA_TYPE_AUDIO,
177 MODEL_MEDIA_TYPE_VIDEO
181 GObject parent_instance;
182 ModelClipPrivate * priv;
183 ModelClipFile* clipfile;
185 gboolean is_recording;
189 struct _ModelClipClass {
190 GObjectClass parent_class;
194 LOGGING_FACILITY_SIGNAL_HANDLERS,
195 LOGGING_FACILITY_DEVELOPER_WARNINGS,
196 LOGGING_FACILITY_GRAPH,
197 LOGGING_FACILITY_LOADING,
198 LOGGING_FACILITY_IMPORT,
199 LOGGING_FACILITY_SINGLEDECODEBIN
203 LOGGING_LEVEL_CRITICAL,
205 LOGGING_LEVEL_MEDIUM,
208 LOGGING_LEVEL_VERBOSE
212 static gpointer gap_view_parent_class = NULL;
213 extern GtkMenu* clip_view_context_menu;
214 GtkMenu* clip_view_context_menu = NULL;
215 static GdkCursor* clip_view_left_trim_cursor;
216 static GdkCursor* clip_view_left_trim_cursor = NULL;
217 static GdkCursor* clip_view_right_trim_cursor;
218 static GdkCursor* clip_view_right_trim_cursor = NULL;
219 static GdkCursor* clip_view_hand_cursor;
220 static GdkCursor* clip_view_hand_cursor = NULL;
221 static GdkCursor* clip_view_plus_cursor;
222 static GdkCursor* clip_view_plus_cursor = NULL;
223 static gpointer clip_view_parent_class = NULL;
225 GType gap_view_get_type (void);
226 gpointer model_gap_ref (gpointer instance);
227 void model_gap_unref (gpointer instance);
228 GParamSpec* model_param_spec_gap (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
229 void model_value_set_gap (GValue* value, gpointer v_object);
230 void model_value_take_gap (GValue* value, gpointer v_object);
231 gpointer model_value_get_gap (const GValue* value);
232 GType model_gap_get_type (void);
233 #define GAP_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_GAP_VIEW, GapViewPrivate))
235 GAP_VIEW_DUMMY_PROPERTY
237 ModelGap* model_gap_new (gint64 start, gint64 end);
238 ModelGap* model_gap_construct (GType object_type, gint64 start, gint64 end);
239 GapView* gap_view_new (gint64 start, gint64 length, gint width, gint height);
240 GapView* gap_view_construct (GType object_type, gint64 start, gint64 length, gint width, gint height);
241 void gap_view_remove (GapView* self);
242 void gap_view_unselect (GapView* self);
243 void draw_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height);
244 static gboolean gap_view_real_expose_event (GtkWidget* base, GdkEventExpose* e);
245 static void gap_view_finalize (GObject* obj);
246 GType clip_view_get_type (void);
247 GType model_clip_get_type (void);
248 GType model_time_system_get_type (void);
249 GType transport_delegate_get_type (void);
250 static GType clip_view_motion_mode_get_type (void) G_GNUC_UNUSED;
251 #define CLIP_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CLIP_VIEW, ClipViewPrivate))
253 CLIP_VIEW_DUMMY_PROPERTY
255 #define CLIP_VIEW_MIN_DRAG 5
256 #define CLIP_VIEW_TRIM_WIDTH 10
257 #define CLIP_VIEW_SNAP_DELTA 10
258 void clip_view_on_clip_moved (ClipView* self, ModelClip* clip);
259 static void _clip_view_on_clip_moved_model_clip_moved (ModelClip* _sender, ModelClip* clip, gpointer self);
260 static void clip_view_on_clip_updated (ClipView* self);
261 static void _clip_view_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self);
262 static void clip_view_get_clip_colors (ClipView* self);
263 void clip_view_adjust_size (ClipView* self, gint height);
264 ClipView* clip_view_new (TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height);
265 ClipView* clip_view_construct (GType object_type, TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height);
266 GType model_clip_file_get_type (void);
267 GType model_media_type_get_type (void);
268 gboolean model_clip_file_is_online (ModelClipFile* self);
269 GType logging_facility_get_type (void);
270 GType logging_level_get_type (void);
271 void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message);
272 gint model_time_system_time_to_xpos (ModelTimeSystem* self, gint64 time);
273 gint64 model_clip_get_start (ModelClip* self);
274 gint64 model_clip_get_duration (ModelClip* self);
275 void clip_view_delete_clip (ClipView* self);
276 gint64 model_clip_get_media_start (ModelClip* self);
277 gint64 model_clip_file_get_length (ModelClipFile* self);
278 void draw_left_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height);
279 void draw_right_rounded_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x0, gint y0, gint width, gint height);
280 void draw_square_rectangle (GdkWindow* window, GdkColor* color, gboolean filled, gint x, gint y, gint width, gint height);
281 void clip_view_draw (ClipView* self);
282 static gboolean clip_view_real_expose_event (GtkWidget* base, GdkEventExpose* event);
283 gboolean transport_delegate_is_stopped (TransportDelegate* self);
284 static gboolean clip_view_is_left_trim (ClipView* self, double x, double y);
285 static gboolean clip_view_is_right_trim (ClipView* self, double x, double y);
286 static gboolean clip_view_real_button_press_event (GtkWidget* base, GdkEventButton* event);
287 gint64 model_time_system_xsize_to_time (ModelTimeSystem* self, gint x);
288 static gboolean clip_view_real_button_release_event (GtkWidget* base, GdkEventButton* event);
289 void model_clip_trim (ModelClip* self, gint64 delta, GdkWindowEdge edge);
290 static gboolean clip_view_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event);
291 static gboolean clip_view_is_trim_height (ClipView* self, double y);
292 void clip_view_select (ClipView* self);
293 gint model_time_system_time_to_xsize (ModelTimeSystem* self, gint64 time);
294 void clip_view_snap (ClipView* self, gint64 amount);
295 static void clip_view_finalize (GObject* obj);
298 static void g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
299 static void g_cclosure_user_marshal_VOID__OBJECT_INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
300 static void g_cclosure_user_marshal_VOID__OBJECT_ENUM (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
302 #line 13 "ui_clip.vala"
303 GapView* gap_view_construct (GType object_type, gint64 start, gint64 length, gint width, gint height) {
304 #line 305 "ui_clip.c"
307 self = g_object_newv (object_type, 0, NULL);
308 #line 15 "ui_clip.vala"
309 self->gap = (_tmp0_ = model_gap_new (start, start + length), _model_gap_unref0 (self->gap), _tmp0_);
310 #line 17 "ui_clip.vala"
311 gdk_color_parse ("#777", &self->priv->fill_color);
312 #line 19 "ui_clip.vala"
313 GTK_WIDGET_SET_FLAGS (GTK_WIDGET (self), GTK_NO_WINDOW);
314 #line 21 "ui_clip.vala"
315 gtk_widget_set_size_request (GTK_WIDGET (self), width, height);
316 #line 317 "ui_clip.c"
321 #line 13 "ui_clip.vala"
322 GapView* gap_view_new (gint64 start, gint64 length, gint width, gint height) {
323 #line 13 "ui_clip.vala"
324 return gap_view_construct (TYPE_GAP_VIEW, start, length, width, height);
325 #line 326 "ui_clip.c"
329 #line 27 "ui_clip.vala"
330 void gap_view_remove (GapView* self) {
331 #line 27 "ui_clip.vala"
332 g_return_if_fail (IS_GAP_VIEW (self));
333 #line 28 "ui_clip.vala"
334 g_signal_emit_by_name (self, "removed", self);
335 #line 336 "ui_clip.c"
339 #line 31 "ui_clip.vala"
340 void gap_view_unselect (GapView* self) {
341 #line 31 "ui_clip.vala"
342 g_return_if_fail (IS_GAP_VIEW (self));
343 #line 32 "ui_clip.vala"
344 g_signal_emit_by_name (self, "unselected", self);
345 #line 346 "ui_clip.c"
349 #line 35 "ui_clip.vala"
350 static gboolean gap_view_real_expose_event (GtkWidget* base, GdkEventExpose* e) {
351 #line 352 "ui_clip.c"
353 gboolean result = FALSE;
354 self = GAP_VIEW (base);
355 #line 36 "ui_clip.vala"
356 draw_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->fill_color, TRUE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1);
357 #line 358 "ui_clip.c"
359 #line 38 "ui_clip.vala"
361 #line 362 "ui_clip.c"
365 static void gap_view_class_init (GapViewClass * klass) {
366 gap_view_parent_class = g_type_class_peek_parent (klass);
367 g_type_class_add_private (klass, sizeof (GapViewPrivate));
368 GTK_WIDGET_CLASS (klass)->expose_event = gap_view_real_expose_event;
369 G_OBJECT_CLASS (klass)->finalize = gap_view_finalize;
370 g_signal_new ("removed", TYPE_GAP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_GAP_VIEW);
371 g_signal_new ("unselected", TYPE_GAP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_GAP_VIEW);
375 static void gap_view_instance_init (GapView * self) {
376 self->priv = GAP_VIEW_GET_PRIVATE (self);
380 static void gap_view_finalize (GObject* obj) {
382 self = GAP_VIEW (obj);
383 _model_gap_unref0 (self->gap);
384 G_OBJECT_CLASS (gap_view_parent_class)->finalize (obj);
388 GType gap_view_get_type (void) {
389 static volatile gsize gap_view_type_id__volatile = 0;
390 if (g_once_init_enter (&gap_view_type_id__volatile)) {
391 static const GTypeInfo g_define_type_info = { sizeof (GapViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gap_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GapView), 0, (GInstanceInitFunc) gap_view_instance_init, NULL };
392 GType gap_view_type_id;
393 gap_view_type_id = g_type_register_static (GTK_TYPE_DRAWING_AREA, "GapView", &g_define_type_info, 0);
394 g_once_init_leave (&gap_view_type_id__volatile, gap_view_type_id);
396 return gap_view_type_id__volatile;
400 static GType clip_view_motion_mode_get_type (void) {
401 static volatile gsize clip_view_motion_mode_type_id__volatile = 0;
402 if (g_once_init_enter (&clip_view_motion_mode_type_id__volatile)) {
403 static const GEnumValue values[] = {{CLIP_VIEW_MOTION_MODE_NONE, "CLIP_VIEW_MOTION_MODE_NONE", "none"}, {CLIP_VIEW_MOTION_MODE_DRAGGING, "CLIP_VIEW_MOTION_MODE_DRAGGING", "dragging"}, {CLIP_VIEW_MOTION_MODE_LEFT_TRIM, "CLIP_VIEW_MOTION_MODE_LEFT_TRIM", "left-trim"}, {CLIP_VIEW_MOTION_MODE_RIGHT_TRIM, "CLIP_VIEW_MOTION_MODE_RIGHT_TRIM", "right-trim"}, {0, NULL, NULL}};
404 GType clip_view_motion_mode_type_id;
405 clip_view_motion_mode_type_id = g_enum_register_static ("ClipViewMotionMode", values);
406 g_once_init_leave (&clip_view_motion_mode_type_id__volatile, clip_view_motion_mode_type_id);
408 return clip_view_motion_mode_type_id__volatile;
412 static gpointer _g_object_ref0 (gpointer self) {
413 return self ? g_object_ref (self) : NULL;
417 #line 132 "ui_clip.vala"
418 static void _clip_view_on_clip_moved_model_clip_moved (ModelClip* _sender, ModelClip* clip, gpointer self) {
419 #line 420 "ui_clip.c"
420 clip_view_on_clip_moved (self, clip);
424 #line 117 "ui_clip.vala"
425 static void _clip_view_on_clip_updated_model_clip_updated (ModelClip* _sender, ModelClip* clip, gpointer self) {
426 #line 427 "ui_clip.c"
427 clip_view_on_clip_updated (self);
431 #line 86 "ui_clip.vala"
432 ClipView* clip_view_construct (GType object_type, TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height) {
433 #line 434 "ui_clip.c"
435 TransportDelegate* _tmp0_;
437 #line 86 "ui_clip.vala"
438 g_return_val_if_fail (IS_TRANSPORT_DELEGATE (transport_delegate), NULL);
439 #line 86 "ui_clip.vala"
440 g_return_val_if_fail (MODEL_IS_CLIP (clip), NULL);
441 #line 86 "ui_clip.vala"
442 g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (time_provider), NULL);
443 #line 444 "ui_clip.c"
444 self = g_object_newv (object_type, 0, NULL);
445 #line 88 "ui_clip.vala"
446 self->priv->transport_delegate = (_tmp0_ = _g_object_ref0 (transport_delegate), _g_object_unref0 (self->priv->transport_delegate), _tmp0_);
447 #line 89 "ui_clip.vala"
448 self->clip = (_tmp1_ = _g_object_ref0 (clip), _g_object_unref0 (self->clip), _tmp1_);
449 #line 90 "ui_clip.vala"
450 self->priv->time_provider = time_provider;
451 #line 91 "ui_clip.vala"
452 self->height = height;
453 #line 92 "ui_clip.vala"
454 self->is_selected = FALSE;
455 #line 94 "ui_clip.vala"
456 g_signal_connect_object (clip, "moved", (GCallback) _clip_view_on_clip_moved_model_clip_moved, self, 0);
457 #line 95 "ui_clip.vala"
458 g_signal_connect_object (clip, "updated", (GCallback) _clip_view_on_clip_updated_model_clip_updated, self, 0);
459 #line 97 "ui_clip.vala"
460 gdk_color_parse ("000", &self->priv->color_black);
461 #line 98 "ui_clip.vala"
462 clip_view_get_clip_colors (self);
463 #line 100 "ui_clip.vala"
464 GTK_WIDGET_SET_FLAGS (GTK_WIDGET (self), GTK_NO_WINDOW);
465 #line 102 "ui_clip.vala"
466 clip_view_adjust_size (self, height);
467 #line 468 "ui_clip.c"
472 #line 86 "ui_clip.vala"
473 ClipView* clip_view_new (TransportDelegate* transport_delegate, ModelClip* clip, ModelTimeSystem* time_provider, gint height) {
474 #line 86 "ui_clip.vala"
475 return clip_view_construct (TYPE_CLIP_VIEW, transport_delegate, clip, time_provider, height);
476 #line 477 "ui_clip.c"
480 #line 105 "ui_clip.vala"
481 static void clip_view_get_clip_colors (ClipView* self) {
482 #line 105 "ui_clip.vala"
483 g_return_if_fail (IS_CLIP_VIEW (self));
484 #line 106 "ui_clip.vala"
485 if (model_clip_file_is_online (self->clip->clipfile)) {
486 #line 487 "ui_clip.c"
490 #line 107 "ui_clip.vala"
491 if (self->clip->type == MODEL_MEDIA_TYPE_VIDEO) {
492 #line 107 "ui_clip.vala"
494 #line 495 "ui_clip.c"
496 #line 107 "ui_clip.vala"
498 #line 499 "ui_clip.c"
500 #line 107 "ui_clip.vala"
501 gdk_color_parse (_tmp0_, &self->priv->color_selected);
502 #line 503 "ui_clip.c"
504 #line 109 "ui_clip.vala"
505 if (self->clip->type == MODEL_MEDIA_TYPE_VIDEO) {
506 #line 109 "ui_clip.vala"
508 #line 509 "ui_clip.c"
510 #line 109 "ui_clip.vala"
512 #line 513 "ui_clip.c"
514 #line 109 "ui_clip.vala"
515 gdk_color_parse (_tmp1_, &self->priv->color_normal);
516 #line 517 "ui_clip.c"
518 #line 112 "ui_clip.vala"
519 gdk_color_parse ("red", &self->priv->color_selected);
520 #line 113 "ui_clip.vala"
521 gdk_color_parse ("#AA0000", &self->priv->color_normal);
522 #line 523 "ui_clip.c"
527 #line 117 "ui_clip.vala"
528 static void clip_view_on_clip_updated (ClipView* self) {
529 #line 117 "ui_clip.vala"
530 g_return_if_fail (IS_CLIP_VIEW (self));
531 #line 118 "ui_clip.vala"
532 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_updated");
533 #line 119 "ui_clip.vala"
534 clip_view_get_clip_colors (self);
535 #line 120 "ui_clip.vala"
536 gtk_widget_queue_draw (GTK_WIDGET (self));
537 #line 538 "ui_clip.c"
541 #line 126 "ui_clip.vala"
542 void clip_view_adjust_size (ClipView* self, gint height) {
543 #line 544 "ui_clip.c"
545 #line 126 "ui_clip.vala"
546 g_return_if_fail (IS_CLIP_VIEW (self));
547 #line 127 "ui_clip.vala"
548 width = model_time_system_time_to_xpos (self->priv->time_provider, model_clip_get_start (self->clip) + model_clip_get_duration (self->clip)) - model_time_system_time_to_xpos (self->priv->time_provider, model_clip_get_start (self->clip));
549 #line 129 "ui_clip.vala"
550 gtk_widget_set_size_request (GTK_WIDGET (self), width + 1, height);
551 #line 552 "ui_clip.c"
555 #line 132 "ui_clip.vala"
556 void clip_view_on_clip_moved (ClipView* self, ModelClip* clip) {
557 #line 132 "ui_clip.vala"
558 g_return_if_fail (IS_CLIP_VIEW (self));
559 #line 132 "ui_clip.vala"
560 g_return_if_fail (MODEL_IS_CLIP (clip));
561 #line 133 "ui_clip.vala"
562 logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_clip_moved");
563 #line 134 "ui_clip.vala"
564 clip_view_adjust_size (self, self->height);
565 #line 135 "ui_clip.vala"
566 g_signal_emit_by_name (self, "clip-moved", self);
567 #line 568 "ui_clip.c"
571 #line 138 "ui_clip.vala"
572 void clip_view_delete_clip (ClipView* self) {
573 #line 138 "ui_clip.vala"
574 g_return_if_fail (IS_CLIP_VIEW (self));
575 #line 139 "ui_clip.vala"
576 g_signal_emit_by_name (self, "clip-deleted", self->clip);
577 #line 578 "ui_clip.c"
581 #line 142 "ui_clip.vala"
582 void clip_view_draw (ClipView* self) {
583 #line 584 "ui_clip.c"
584 GdkColor _tmp0_ = {0};
586 gboolean _tmp1_ = FALSE;
587 gboolean left_trimmed;
588 gboolean _tmp2_ = FALSE;
589 gboolean right_trimmed;
590 gboolean _tmp3_ = FALSE;
592 GdkRectangle _tmp6_ = {0};
597 #line 142 "ui_clip.vala"
598 g_return_if_fail (IS_CLIP_VIEW (self));
599 #line 143 "ui_clip.vala"
600 if (self->is_selected) {
601 #line 143 "ui_clip.vala"
602 _tmp0_ = self->priv->color_selected;
603 #line 604 "ui_clip.c"
605 #line 143 "ui_clip.vala"
606 _tmp0_ = self->priv->color_normal;
607 #line 608 "ui_clip.c"
609 #line 143 "ui_clip.vala"
611 #line 145 "ui_clip.vala"
612 if (model_clip_get_media_start (self->clip) != 0) {
613 #line 145 "ui_clip.vala"
614 _tmp1_ = !self->clip->is_recording;
615 #line 616 "ui_clip.c"
617 #line 145 "ui_clip.vala"
619 #line 620 "ui_clip.c"
621 #line 145 "ui_clip.vala"
622 left_trimmed = _tmp1_;
623 #line 147 "ui_clip.vala"
624 if (model_clip_file_is_online (self->clip->clipfile)) {
625 #line 148 "ui_clip.vala"
626 _tmp2_ = (model_clip_get_media_start (self->clip) + model_clip_get_duration (self->clip)) != model_clip_file_get_length (self->clip->clipfile);
627 #line 628 "ui_clip.c"
629 #line 148 "ui_clip.vala"
631 #line 632 "ui_clip.c"
633 #line 147 "ui_clip.vala"
634 right_trimmed = _tmp2_;
635 #line 150 "ui_clip.vala"
637 #line 150 "ui_clip.vala"
638 _tmp3_ = !right_trimmed;
639 #line 640 "ui_clip.c"
641 #line 150 "ui_clip.vala"
643 #line 644 "ui_clip.c"
645 #line 150 "ui_clip.vala"
647 #line 151 "ui_clip.vala"
648 draw_rounded_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2);
649 #line 153 "ui_clip.vala"
650 draw_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1);
651 #line 652 "ui_clip.c"
653 gboolean _tmp4_ = FALSE;
654 #line 156 "ui_clip.vala"
656 #line 156 "ui_clip.vala"
657 _tmp4_ = right_trimmed;
658 #line 659 "ui_clip.c"
660 #line 156 "ui_clip.vala"
662 #line 663 "ui_clip.c"
664 #line 156 "ui_clip.vala"
666 #line 157 "ui_clip.vala"
667 draw_left_rounded_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2);
668 #line 159 "ui_clip.vala"
669 draw_left_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1);
670 #line 671 "ui_clip.c"
672 gboolean _tmp5_ = FALSE;
673 #line 162 "ui_clip.vala"
675 #line 162 "ui_clip.vala"
676 _tmp5_ = !right_trimmed;
677 #line 678 "ui_clip.c"
679 #line 162 "ui_clip.vala"
681 #line 682 "ui_clip.c"
683 #line 162 "ui_clip.vala"
685 #line 163 "ui_clip.vala"
686 draw_right_rounded_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2);
687 #line 165 "ui_clip.vala"
688 draw_right_rounded_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1);
689 #line 690 "ui_clip.c"
691 #line 169 "ui_clip.vala"
692 draw_square_rectangle (GTK_WIDGET (self)->window, &fill, TRUE, GTK_WIDGET (self)->allocation.x + 1, GTK_WIDGET (self)->allocation.y + 1, GTK_WIDGET (self)->allocation.width - 2, GTK_WIDGET (self)->allocation.height - 2);
693 #line 171 "ui_clip.vala"
694 draw_square_rectangle (GTK_WIDGET (self)->window, &self->priv->color_black, FALSE, GTK_WIDGET (self)->allocation.x, GTK_WIDGET (self)->allocation.y, GTK_WIDGET (self)->allocation.width - 1, GTK_WIDGET (self)->allocation.height - 1);
695 #line 696 "ui_clip.c"
699 #line 175 "ui_clip.vala"
700 gc = gdk_gc_new (GDK_DRAWABLE (GTK_WIDGET (self)->window));
701 #line 176 "ui_clip.vala"
702 r = (_tmp6_.x = 0, _tmp6_.y = 0, _tmp6_.width = 0, _tmp6_.height = 0, _tmp6_);
703 #line 179 "ui_clip.vala"
704 r.x = GTK_WIDGET (self)->allocation.x;
705 #line 180 "ui_clip.vala"
706 r.y = GTK_WIDGET (self)->allocation.y;
707 #line 181 "ui_clip.vala"
708 r.width = GTK_WIDGET (self)->allocation.width;
709 #line 182 "ui_clip.vala"
710 r.height = GTK_WIDGET (self)->allocation.height;
711 #line 184 "ui_clip.vala"
712 gdk_gc_set_clip_rectangle (gc, &r);
713 #line 714 "ui_clip.c"
715 #line 187 "ui_clip.vala"
716 if (self->clip->is_recording) {
717 #line 718 "ui_clip.c"
719 #line 188 "ui_clip.vala"
720 layout = (_tmp7_ = gtk_widget_create_pango_layout (GTK_WIDGET (self), "Recording"), _g_object_unref0 (layout), _tmp7_);
721 #line 722 "ui_clip.c"
723 #line 189 "ui_clip.vala"
724 if (!model_clip_file_is_online (self->clip->clipfile)) {
725 #line 726 "ui_clip.c"
728 #line 190 "ui_clip.vala"
729 layout = (_tmp9_ = gtk_widget_create_pango_layout (GTK_WIDGET (self), _tmp8_ = g_strdup_printf ("%s (Offline)", self->clip->name)), _g_object_unref0 (layout), _tmp9_);
730 #line 731 "ui_clip.c"
733 PangoLayout* _tmp11_;
735 #line 193 "ui_clip.vala"
736 layout = (_tmp11_ = gtk_widget_create_pango_layout (GTK_WIDGET (self), _tmp10_ = g_strdup_printf ("%s", self->clip->name)), _g_object_unref0 (layout), _tmp11_);
737 #line 738 "ui_clip.c"
741 #line 196 "ui_clip.vala"
742 pango_layout_get_pixel_size (layout, &width, &height);
743 #line 197 "ui_clip.vala"
744 gdk_draw_layout (GDK_DRAWABLE (GTK_WIDGET (self)->window), gc, GTK_WIDGET (self)->allocation.x + 10, GTK_WIDGET (self)->allocation.y + height, layout);
745 #line 746 "ui_clip.c"
746 _g_object_unref0 (gc);
747 _g_object_unref0 (layout);
751 #line 200 "ui_clip.vala"
752 static gboolean clip_view_real_expose_event (GtkWidget* base, GdkEventExpose* event) {
753 #line 754 "ui_clip.c"
755 gboolean result = FALSE;
756 self = CLIP_VIEW (base);
757 #line 201 "ui_clip.vala"
758 clip_view_draw (self);
759 #line 760 "ui_clip.c"
761 #line 202 "ui_clip.vala"
763 #line 764 "ui_clip.c"
767 #line 205 "ui_clip.vala"
768 static gboolean clip_view_real_button_press_event (GtkWidget* base, GdkEventButton* event) {
769 #line 770 "ui_clip.c"
771 gboolean result = FALSE;
772 gboolean primary_press;
773 gboolean extend_selection;
774 self = CLIP_VIEW (base);
775 #line 206 "ui_clip.vala"
776 if (!transport_delegate_is_stopped (self->priv->transport_delegate)) {
777 #line 778 "ui_clip.c"
779 #line 207 "ui_clip.vala"
781 #line 782 "ui_clip.c"
783 #line 210 "ui_clip.vala"
784 (*event).x = (*event).x - ((double) GTK_WIDGET (self)->allocation.x);
785 #line 211 "ui_clip.vala"
786 primary_press = (*event).button == 1;
787 #line 212 "ui_clip.vala"
789 #line 213 "ui_clip.vala"
790 self->priv->button_down = TRUE;
791 #line 214 "ui_clip.vala"
792 self->priv->drag_point = (gint) (*event).x;
793 #line 215 "ui_clip.vala"
794 self->priv->snap_amount = 0;
795 #line 216 "ui_clip.vala"
796 self->priv->snapped = FALSE;
797 #line 798 "ui_clip.c"
799 #line 219 "ui_clip.vala"
800 extend_selection = ((*event).state & GDK_CONTROL_MASK) != 0;
801 #line 223 "ui_clip.vala"
802 if (clip_view_is_left_trim (self, (*event).x, (*event).y)) {
803 #line 224 "ui_clip.vala"
804 g_signal_emit_by_name (self, "selection-request", self, FALSE);
805 #line 225 "ui_clip.vala"
807 #line 226 "ui_clip.vala"
808 g_signal_emit_by_name (self, "trim-begin", self, GDK_WINDOW_EDGE_WEST);
809 #line 227 "ui_clip.vala"
810 self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_LEFT_TRIM;
811 #line 812 "ui_clip.c"
814 #line 229 "ui_clip.vala"
815 if (clip_view_is_right_trim (self, (*event).x, (*event).y)) {
816 #line 230 "ui_clip.vala"
817 g_signal_emit_by_name (self, "selection-request", self, FALSE);
818 #line 231 "ui_clip.vala"
820 #line 232 "ui_clip.vala"
821 g_signal_emit_by_name (self, "trim-begin", self, GDK_WINDOW_EDGE_EAST);
822 #line 233 "ui_clip.vala"
823 self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_RIGHT_TRIM;
824 #line 825 "ui_clip.c"
827 #line 236 "ui_clip.vala"
828 if (!self->is_selected) {
829 #line 237 "ui_clip.vala"
830 self->priv->pending_selection = FALSE;
831 #line 238 "ui_clip.vala"
832 g_signal_emit_by_name (self, "selection-request", self, extend_selection);
833 #line 834 "ui_clip.c"
835 #line 240 "ui_clip.vala"
836 self->priv->pending_selection = TRUE;
837 #line 838 "ui_clip.c"
841 #line 244 "ui_clip.vala"
842 if ((*event).button == 3) {
843 #line 245 "ui_clip.vala"
844 gtk_menu_shell_select_first (GTK_MENU_SHELL (clip_view_context_menu), TRUE);
845 #line 246 "ui_clip.vala"
846 gtk_menu_popup (clip_view_context_menu, NULL, NULL, NULL, NULL, (*event).button, (*event).time);
847 #line 848 "ui_clip.c"
849 #line 248 "ui_clip.vala"
850 gtk_menu_popdown (clip_view_context_menu);
851 #line 852 "ui_clip.c"
854 #line 251 "ui_clip.vala"
856 #line 857 "ui_clip.c"
860 #line 254 "ui_clip.vala"
861 static gboolean clip_view_real_button_release_event (GtkWidget* base, GdkEventButton* event) {
862 #line 863 "ui_clip.c"
864 gboolean result = FALSE;
865 self = CLIP_VIEW (base);
866 #line 255 "ui_clip.vala"
867 if (!transport_delegate_is_stopped (self->priv->transport_delegate)) {
868 #line 869 "ui_clip.c"
870 #line 256 "ui_clip.vala"
872 #line 873 "ui_clip.c"
874 #line 259 "ui_clip.vala"
875 (*event).x = (*event).x - ((double) GTK_WIDGET (self)->allocation.x);
876 #line 260 "ui_clip.vala"
877 self->priv->button_down = FALSE;
878 #line 261 "ui_clip.vala"
879 if ((*event).button == 1) {
880 #line 262 "ui_clip.vala"
881 switch (self->priv->motion_mode) {
882 #line 883 "ui_clip.c"
883 case CLIP_VIEW_MOTION_MODE_NONE:
886 #line 264 "ui_clip.vala"
887 if (self->priv->pending_selection) {
888 #line 265 "ui_clip.vala"
889 g_signal_emit_by_name (self, "selection-request", self, TRUE);
890 #line 891 "ui_clip.c"
893 #line 268 "ui_clip.vala"
895 #line 896 "ui_clip.c"
897 case CLIP_VIEW_MOTION_MODE_DRAGGING:
901 #line 270 "ui_clip.vala"
902 delta = model_time_system_xsize_to_time (self->priv->time_provider, ((gint) (*event).x) - self->priv->drag_point);
903 #line 271 "ui_clip.vala"
904 if (self->priv->motion_mode == CLIP_VIEW_MOTION_MODE_DRAGGING) {
905 #line 272 "ui_clip.vala"
906 g_signal_emit_by_name (self, "move-commit", self, delta);
907 #line 908 "ui_clip.c"
910 #line 275 "ui_clip.vala"
912 #line 913 "ui_clip.c"
914 case CLIP_VIEW_MOTION_MODE_LEFT_TRIM:
916 #line 277 "ui_clip.vala"
917 g_signal_emit_by_name (self, "trim-commit", self, GDK_WINDOW_EDGE_WEST);
918 #line 278 "ui_clip.vala"
920 #line 921 "ui_clip.c"
922 case CLIP_VIEW_MOTION_MODE_RIGHT_TRIM:
924 #line 280 "ui_clip.vala"
925 g_signal_emit_by_name (self, "trim-commit", self, GDK_WINDOW_EDGE_EAST);
926 #line 281 "ui_clip.vala"
928 #line 929 "ui_clip.c"
932 #line 284 "ui_clip.vala"
933 self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_NONE;
934 #line 935 "ui_clip.c"
936 #line 285 "ui_clip.vala"
938 #line 939 "ui_clip.c"
942 #line 288 "ui_clip.vala"
943 static gboolean clip_view_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) {
944 #line 945 "ui_clip.c"
946 gboolean result = FALSE;
949 self = CLIP_VIEW (base);
950 #line 289 "ui_clip.vala"
951 if (!transport_delegate_is_stopped (self->priv->transport_delegate)) {
952 #line 953 "ui_clip.c"
954 #line 290 "ui_clip.vala"
956 #line 957 "ui_clip.c"
958 #line 293 "ui_clip.vala"
959 (*event).x = (*event).x - ((double) GTK_WIDGET (self)->allocation.x);
960 #line 294 "ui_clip.vala"
961 delta_pixels = ((gint) ((*event).x - self->priv->drag_point)) - self->priv->snap_amount;
962 #line 295 "ui_clip.vala"
963 if (self->priv->snapped) {
964 #line 296 "ui_clip.vala"
965 self->priv->snap_amount = self->priv->snap_amount + delta_pixels;
966 #line 297 "ui_clip.vala"
967 if (abs (self->priv->snap_amount) < CLIP_VIEW_SNAP_DELTA) {
968 #line 969 "ui_clip.c"
970 #line 298 "ui_clip.vala"
972 #line 973 "ui_clip.c"
974 #line 300 "ui_clip.vala"
975 delta_pixels = delta_pixels + self->priv->snap_amount;
976 #line 301 "ui_clip.vala"
977 self->priv->snap_amount = 0;
978 #line 302 "ui_clip.vala"
979 self->priv->snapped = FALSE;
980 #line 981 "ui_clip.c"
982 #line 305 "ui_clip.vala"
983 delta_time = model_time_system_xsize_to_time (self->priv->time_provider, delta_pixels);
984 #line 307 "ui_clip.vala"
985 switch (self->priv->motion_mode) {
986 #line 987 "ui_clip.c"
987 case CLIP_VIEW_MOTION_MODE_NONE:
989 gboolean _tmp0_ = FALSE;
990 #line 309 "ui_clip.vala"
991 if (!self->priv->button_down) {
992 #line 309 "ui_clip.vala"
993 _tmp0_ = clip_view_is_left_trim (self, (*event).x, (*event).y);
994 #line 995 "ui_clip.c"
996 #line 309 "ui_clip.vala"
998 #line 999 "ui_clip.c"
1000 #line 309 "ui_clip.vala"
1002 #line 310 "ui_clip.vala"
1003 gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_left_trim_cursor);
1004 #line 1005 "ui_clip.c"
1006 gboolean _tmp1_ = FALSE;
1007 #line 311 "ui_clip.vala"
1008 if (!self->priv->button_down) {
1009 #line 311 "ui_clip.vala"
1010 _tmp1_ = clip_view_is_right_trim (self, (*event).x, (*event).y);
1011 #line 1012 "ui_clip.c"
1013 #line 311 "ui_clip.vala"
1015 #line 1016 "ui_clip.c"
1017 #line 311 "ui_clip.vala"
1019 #line 312 "ui_clip.vala"
1020 gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_right_trim_cursor);
1021 #line 1022 "ui_clip.c"
1023 gboolean _tmp2_ = FALSE;
1024 #line 313 "ui_clip.vala"
1025 if (self->is_selected) {
1026 #line 313 "ui_clip.vala"
1027 _tmp2_ = self->priv->button_down;
1028 #line 1029 "ui_clip.c"
1030 #line 313 "ui_clip.vala"
1032 #line 1033 "ui_clip.c"
1034 #line 313 "ui_clip.vala"
1036 #line 314 "ui_clip.vala"
1037 if (abs (delta_pixels) > CLIP_VIEW_MIN_DRAG) {
1038 #line 1039 "ui_clip.c"
1040 #line 315 "ui_clip.vala"
1041 do_copy = ((*event).state & GDK_CONTROL_MASK) != 0;
1042 #line 316 "ui_clip.vala"
1044 #line 317 "ui_clip.vala"
1045 gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_plus_cursor);
1046 #line 1047 "ui_clip.c"
1048 #line 319 "ui_clip.vala"
1049 gdk_window_set_cursor (GTK_WIDGET (self)->window, clip_view_hand_cursor);
1050 #line 1051 "ui_clip.c"
1052 #line 321 "ui_clip.vala"
1053 self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_DRAGGING;
1054 #line 322 "ui_clip.vala"
1055 g_signal_emit_by_name (self, "move-begin", self, do_copy);
1056 #line 1057 "ui_clip.c"
1059 #line 325 "ui_clip.vala"
1060 gdk_window_set_cursor (GTK_WIDGET (self)->window, NULL);
1061 #line 1062 "ui_clip.c"
1065 #line 327 "ui_clip.vala"
1067 #line 1068 "ui_clip.c"
1069 case CLIP_VIEW_MOTION_MODE_RIGHT_TRIM:
1070 case CLIP_VIEW_MOTION_MODE_LEFT_TRIM:
1072 #line 330 "ui_clip.vala"
1073 if (self->priv->button_down) {
1074 #line 331 "ui_clip.vala"
1075 if (self->priv->motion_mode == CLIP_VIEW_MOTION_MODE_LEFT_TRIM) {
1076 #line 332 "ui_clip.vala"
1077 model_clip_trim (self->clip, delta_time, GDK_WINDOW_EDGE_WEST);
1078 #line 1079 "ui_clip.c"
1081 #line 334 "ui_clip.vala"
1082 duration = model_clip_get_duration (self->clip);
1083 #line 335 "ui_clip.vala"
1084 model_clip_trim (self->clip, delta_time, GDK_WINDOW_EDGE_EAST);
1085 #line 336 "ui_clip.vala"
1086 if (duration != model_clip_get_duration (self->clip)) {
1087 #line 337 "ui_clip.vala"
1088 self->priv->drag_point = self->priv->drag_point + ((gint) delta_pixels);
1089 #line 1090 "ui_clip.c"
1094 #line 341 "ui_clip.vala"
1096 #line 1097 "ui_clip.c"
1098 case CLIP_VIEW_MOTION_MODE_DRAGGING:
1100 #line 343 "ui_clip.vala"
1101 g_signal_emit_by_name (self, "move-request", self, delta_time);
1102 #line 1103 "ui_clip.c"
1104 #line 344 "ui_clip.vala"
1106 #line 1107 "ui_clip.c"
1110 #line 346 "ui_clip.vala"
1112 #line 1113 "ui_clip.c"
1116 #line 349 "ui_clip.vala"
1117 static gboolean clip_view_is_trim_height (ClipView* self, double y) {
1118 #line 1119 "ui_clip.c"
1119 gboolean result = FALSE;
1120 #line 349 "ui_clip.vala"
1121 g_return_val_if_fail (IS_CLIP_VIEW (self), FALSE);
1122 #line 1123 "ui_clip.c"
1123 result = (y - GTK_WIDGET (self)->allocation.y) > (GTK_WIDGET (self)->allocation.height / 2);
1124 #line 350 "ui_clip.vala"
1126 #line 1127 "ui_clip.c"
1130 #line 353 "ui_clip.vala"
1131 static gboolean clip_view_is_left_trim (ClipView* self, double x, double y) {
1132 #line 1133 "ui_clip.c"
1133 gboolean result = FALSE;
1134 gboolean _tmp0_ = FALSE;
1135 gboolean _tmp1_ = FALSE;
1136 #line 353 "ui_clip.vala"
1137 g_return_val_if_fail (IS_CLIP_VIEW (self), FALSE);
1138 #line 354 "ui_clip.vala"
1139 if (clip_view_is_trim_height (self, y)) {
1140 #line 354 "ui_clip.vala"
1142 #line 1143 "ui_clip.c"
1144 #line 354 "ui_clip.vala"
1146 #line 1147 "ui_clip.c"
1148 #line 354 "ui_clip.vala"
1150 #line 354 "ui_clip.vala"
1151 _tmp0_ = x < CLIP_VIEW_TRIM_WIDTH;
1152 #line 1153 "ui_clip.c"
1154 #line 354 "ui_clip.vala"
1156 #line 1157 "ui_clip.c"
1159 #line 354 "ui_clip.vala"
1161 #line 1162 "ui_clip.c"
1165 #line 357 "ui_clip.vala"
1166 static gboolean clip_view_is_right_trim (ClipView* self, double x, double y) {
1167 #line 1168 "ui_clip.c"
1168 gboolean result = FALSE;
1169 gboolean _tmp0_ = FALSE;
1170 gboolean _tmp1_ = FALSE;
1171 #line 357 "ui_clip.vala"
1172 g_return_val_if_fail (IS_CLIP_VIEW (self), FALSE);
1173 #line 358 "ui_clip.vala"
1174 if (clip_view_is_trim_height (self, y)) {
1175 #line 358 "ui_clip.vala"
1176 _tmp1_ = x > (GTK_WIDGET (self)->allocation.width - CLIP_VIEW_TRIM_WIDTH);
1177 #line 1178 "ui_clip.c"
1179 #line 358 "ui_clip.vala"
1181 #line 1182 "ui_clip.c"
1183 #line 358 "ui_clip.vala"
1185 #line 359 "ui_clip.vala"
1186 _tmp0_ = x < GTK_WIDGET (self)->allocation.width;
1187 #line 1188 "ui_clip.c"
1189 #line 358 "ui_clip.vala"
1191 #line 1192 "ui_clip.c"
1194 #line 358 "ui_clip.vala"
1196 #line 1197 "ui_clip.c"
1200 #line 362 "ui_clip.vala"
1201 void clip_view_select (ClipView* self) {
1202 #line 362 "ui_clip.vala"
1203 g_return_if_fail (IS_CLIP_VIEW (self));
1204 #line 363 "ui_clip.vala"
1205 if (!self->is_selected) {
1206 #line 364 "ui_clip.vala"
1207 g_signal_emit_by_name (self, "selection-request", self, TRUE);
1208 #line 1209 "ui_clip.c"
1213 #line 368 "ui_clip.vala"
1214 void clip_view_snap (ClipView* self, gint64 amount) {
1215 #line 368 "ui_clip.vala"
1216 g_return_if_fail (IS_CLIP_VIEW (self));
1217 #line 369 "ui_clip.vala"
1218 self->priv->snap_amount = model_time_system_time_to_xsize (self->priv->time_provider, amount);
1219 #line 370 "ui_clip.vala"
1220 self->priv->snapped = TRUE;
1221 #line 1222 "ui_clip.c"
1225 static void clip_view_class_init (ClipViewClass * klass) {
1226 clip_view_parent_class = g_type_class_peek_parent (klass);
1227 g_type_class_add_private (klass, sizeof (ClipViewPrivate));
1228 GTK_WIDGET_CLASS (klass)->expose_event = clip_view_real_expose_event;
1229 GTK_WIDGET_CLASS (klass)->button_press_event = clip_view_real_button_press_event;
1230 GTK_WIDGET_CLASS (klass)->button_release_event = clip_view_real_button_release_event;
1231 GTK_WIDGET_CLASS (klass)->motion_notify_event = clip_view_real_motion_notify_event;
1232 G_OBJECT_CLASS (klass)->finalize = clip_view_finalize;
1233 g_signal_new ("clip_deleted", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, MODEL_TYPE_CLIP);
1234 g_signal_new ("clip_moved", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_CLIP_VIEW);
1235 g_signal_new ("selection_request", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_BOOLEAN);
1236 g_signal_new ("move_request", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_INT64, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_INT64);
1237 g_signal_new ("move_commit", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_INT64, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_INT64);
1238 g_signal_new ("move_begin", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, G_TYPE_BOOLEAN);
1239 g_signal_new ("trim_begin", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_ENUM, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, GDK_TYPE_WINDOW_EDGE);
1240 g_signal_new ("trim_commit", TYPE_CLIP_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_ENUM, G_TYPE_NONE, 2, TYPE_CLIP_VIEW, GDK_TYPE_WINDOW_EDGE);
1241 clip_view_left_trim_cursor = gdk_cursor_new (GDK_LEFT_SIDE);
1242 clip_view_right_trim_cursor = gdk_cursor_new (GDK_RIGHT_SIDE);
1243 clip_view_hand_cursor = gdk_cursor_new_from_name (gdk_display_get_default (), "dnd-none");
1244 clip_view_plus_cursor = gdk_cursor_new_from_name (gdk_display_get_default (), "dnd-copy");
1248 static void clip_view_instance_init (ClipView * self) {
1249 self->priv = CLIP_VIEW_GET_PRIVATE (self);
1250 self->priv->motion_mode = CLIP_VIEW_MOTION_MODE_NONE;
1251 self->priv->button_down = FALSE;
1255 static void clip_view_finalize (GObject* obj) {
1257 self = CLIP_VIEW (obj);
1258 _g_object_unref0 (self->clip);
1259 _g_object_unref0 (self->priv->transport_delegate);
1260 G_OBJECT_CLASS (clip_view_parent_class)->finalize (obj);
1264 GType clip_view_get_type (void) {
1265 static volatile gsize clip_view_type_id__volatile = 0;
1266 if (g_once_init_enter (&clip_view_type_id__volatile)) {
1267 static const GTypeInfo g_define_type_info = { sizeof (ClipViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) clip_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ClipView), 0, (GInstanceInitFunc) clip_view_instance_init, NULL };
1268 GType clip_view_type_id;
1269 clip_view_type_id = g_type_register_static (GTK_TYPE_DRAWING_AREA, "ClipView", &g_define_type_info, 0);
1270 g_once_init_leave (&clip_view_type_id__volatile, clip_view_type_id);
1272 return clip_view_type_id__volatile;
1277 static void g_cclosure_user_marshal_VOID__OBJECT_BOOLEAN (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
1278 typedef void (*GMarshalFunc_VOID__OBJECT_BOOLEAN) (gpointer data1, gpointer arg_1, gboolean arg_2, gpointer data2);
1279 register GMarshalFunc_VOID__OBJECT_BOOLEAN callback;
1280 register GCClosure * cc;
1281 register gpointer data1, data2;
1282 cc = (GCClosure *) closure;
1283 g_return_if_fail (n_param_values == 3);
1284 if (G_CCLOSURE_SWAP_DATA (closure)) {
1285 data1 = closure->data;
1286 data2 = param_values->data[0].v_pointer;
1288 data1 = param_values->data[0].v_pointer;
1289 data2 = closure->data;
1291 callback = (GMarshalFunc_VOID__OBJECT_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
1292 callback (data1, g_value_get_object (param_values + 1), g_value_get_boolean (param_values + 2), data2);
1296 static void g_cclosure_user_marshal_VOID__OBJECT_INT64 (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
1297 typedef void (*GMarshalFunc_VOID__OBJECT_INT64) (gpointer data1, gpointer arg_1, gint64 arg_2, gpointer data2);
1298 register GMarshalFunc_VOID__OBJECT_INT64 callback;
1299 register GCClosure * cc;
1300 register gpointer data1, data2;
1301 cc = (GCClosure *) closure;
1302 g_return_if_fail (n_param_values == 3);
1303 if (G_CCLOSURE_SWAP_DATA (closure)) {
1304 data1 = closure->data;
1305 data2 = param_values->data[0].v_pointer;
1307 data1 = param_values->data[0].v_pointer;
1308 data2 = closure->data;
1310 callback = (GMarshalFunc_VOID__OBJECT_INT64) (marshal_data ? marshal_data : cc->callback);
1311 callback (data1, g_value_get_object (param_values + 1), g_value_get_int64 (param_values + 2), data2);
1315 static void g_cclosure_user_marshal_VOID__OBJECT_ENUM (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
1316 typedef void (*GMarshalFunc_VOID__OBJECT_ENUM) (gpointer data1, gpointer arg_1, gint arg_2, gpointer data2);
1317 register GMarshalFunc_VOID__OBJECT_ENUM callback;
1318 register GCClosure * cc;
1319 register gpointer data1, data2;
1320 cc = (GCClosure *) closure;
1321 g_return_if_fail (n_param_values == 3);
1322 if (G_CCLOSURE_SWAP_DATA (closure)) {
1323 data1 = closure->data;
1324 data2 = param_values->data[0].v_pointer;
1326 data1 = param_values->data[0].v_pointer;
1327 data2 = closure->data;
1329 callback = (GMarshalFunc_VOID__OBJECT_ENUM) (marshal_data ? marshal_data : cc->callback);
1330 callback (data1, g_value_get_object (param_values + 1), g_value_get_enum (param_values + 2), data2);