--- /dev/null
+/* header_area.c generated by valac, the Vala compiler
+ * generated from header_area.vala, do not modify */
+
+/* Copyright 2009-2010 Yorba Foundation
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later). See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <marina.h>
+#include <gdk/gdk.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+#include <gio/gio.h>
+#include <float.h>
+#include <math.h>
+#include <pango/pango.h>
+#include <hildon/hildon.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+
+#define TYPE_TRACK_HEADER (track_header_get_type ())
+#define TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_HEADER, TrackHeader))
+#define TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_HEADER, TrackHeaderClass))
+#define IS_TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_HEADER))
+#define IS_TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_HEADER))
+#define TRACK_HEADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_HEADER, TrackHeaderClass))
+
+typedef struct _TrackHeader TrackHeader;
+typedef struct _TrackHeaderClass TrackHeaderClass;
+typedef struct _TrackHeaderPrivate TrackHeaderPrivate;
+
+#define TYPE_HEADER_AREA (header_area_get_type ())
+#define HEADER_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HEADER_AREA, HeaderArea))
+#define HEADER_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HEADER_AREA, HeaderAreaClass))
+#define IS_HEADER_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HEADER_AREA))
+#define IS_HEADER_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HEADER_AREA))
+#define HEADER_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HEADER_AREA, HeaderAreaClass))
+
+typedef struct _HeaderArea HeaderArea;
+typedef struct _HeaderAreaClass HeaderAreaClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+typedef struct _HeaderAreaPrivate HeaderAreaPrivate;
+
+#define TYPE_SLIDER_BASE (slider_base_get_type ())
+#define SLIDER_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SLIDER_BASE, SliderBase))
+#define SLIDER_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SLIDER_BASE, SliderBaseClass))
+#define IS_SLIDER_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SLIDER_BASE))
+#define IS_SLIDER_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SLIDER_BASE))
+#define SLIDER_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SLIDER_BASE, SliderBaseClass))
+
+typedef struct _SliderBase SliderBase;
+typedef struct _SliderBaseClass SliderBaseClass;
+typedef struct _SliderBasePrivate SliderBasePrivate;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+#define TYPE_PAN_SLIDER (pan_slider_get_type ())
+#define PAN_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PAN_SLIDER, PanSlider))
+#define PAN_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PAN_SLIDER, PanSliderClass))
+#define IS_PAN_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PAN_SLIDER))
+#define IS_PAN_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PAN_SLIDER))
+#define PAN_SLIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PAN_SLIDER, PanSliderClass))
+
+typedef struct _PanSlider PanSlider;
+typedef struct _PanSliderClass PanSliderClass;
+typedef struct _PanSliderPrivate PanSliderPrivate;
+
+#define TYPE_VOLUME_SLIDER (volume_slider_get_type ())
+#define VOLUME_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VOLUME_SLIDER, VolumeSlider))
+#define VOLUME_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VOLUME_SLIDER, VolumeSliderClass))
+#define IS_VOLUME_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VOLUME_SLIDER))
+#define IS_VOLUME_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VOLUME_SLIDER))
+#define VOLUME_SLIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VOLUME_SLIDER, VolumeSliderClass))
+
+typedef struct _VolumeSlider VolumeSlider;
+typedef struct _VolumeSliderClass VolumeSliderClass;
+typedef struct _VolumeSliderPrivate VolumeSliderPrivate;
+
+#define TYPE_AUDIO_TRACK_HEADER (audio_track_header_get_type ())
+#define AUDIO_TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_AUDIO_TRACK_HEADER, AudioTrackHeader))
+#define AUDIO_TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_AUDIO_TRACK_HEADER, AudioTrackHeaderClass))
+#define IS_AUDIO_TRACK_HEADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_AUDIO_TRACK_HEADER))
+#define IS_AUDIO_TRACK_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_AUDIO_TRACK_HEADER))
+#define AUDIO_TRACK_HEADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_AUDIO_TRACK_HEADER, AudioTrackHeaderClass))
+
+typedef struct _AudioTrackHeader AudioTrackHeader;
+typedef struct _AudioTrackHeaderClass AudioTrackHeaderClass;
+typedef struct _AudioTrackHeaderPrivate AudioTrackHeaderPrivate;
+#define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL)))
+
+#define ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP (id_works_volume_and_pan_pop_up_get_type ())
+#define ID_WORKS_VOLUME_AND_PAN_POP_UP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUp))
+#define ID_WORKS_VOLUME_AND_PAN_POP_UP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUpClass))
+#define ID_WORKS_IS_VOLUME_AND_PAN_POP_UP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP))
+#define ID_WORKS_IS_VOLUME_AND_PAN_POP_UP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP))
+#define ID_WORKS_VOLUME_AND_PAN_POP_UP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ID_WORKS_TYPE_VOLUME_AND_PAN_POP_UP, IdWorksVolumeAndPanPopUpClass))
+
+typedef struct _IdWorksVolumeAndPanPopUp IdWorksVolumeAndPanPopUp;
+typedef struct _IdWorksVolumeAndPanPopUpClass IdWorksVolumeAndPanPopUpClass;
+
+#define TYPE_RECORDER (recorder_get_type ())
+#define RECORDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RECORDER, Recorder))
+#define RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RECORDER, RecorderClass))
+#define IS_RECORDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RECORDER))
+#define IS_RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RECORDER))
+#define RECORDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RECORDER, RecorderClass))
+
+typedef struct _Recorder Recorder;
+typedef struct _RecorderClass RecorderClass;
+typedef struct _RecorderPrivate RecorderPrivate;
+
+#define MODEL_TYPE_AUDIO_PROJECT (model_audio_project_get_type ())
+#define MODEL_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProject))
+#define MODEL_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass))
+#define MODEL_IS_AUDIO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_AUDIO_PROJECT))
+#define MODEL_IS_AUDIO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_AUDIO_PROJECT))
+#define MODEL_AUDIO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_AUDIO_PROJECT, ModelAudioProjectClass))
+
+typedef struct _ModelAudioProject ModelAudioProject;
+typedef struct _ModelAudioProjectClass ModelAudioProjectClass;
+
+#define TYPE_TRACK_SEPARATOR (track_separator_get_type ())
+#define TRACK_SEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_SEPARATOR, TrackSeparator))
+#define TRACK_SEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_SEPARATOR, TrackSeparatorClass))
+#define IS_TRACK_SEPARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_SEPARATOR))
+#define IS_TRACK_SEPARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_SEPARATOR))
+#define TRACK_SEPARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_SEPARATOR, TrackSeparatorClass))
+
+typedef struct _TrackSeparator TrackSeparator;
+typedef struct _TrackSeparatorClass TrackSeparatorClass;
+#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
+
+struct _TrackHeader {
+ GtkEventBox parent_instance;
+ TrackHeaderPrivate * priv;
+ ModelTrack* track;
+ HeaderArea* header_area;
+ GtkLabel* track_label;
+};
+
+struct _TrackHeaderClass {
+ GtkEventBoxClass parent_class;
+};
+
+struct _HeaderArea {
+ GtkEventBox parent_instance;
+ HeaderAreaPrivate * priv;
+ GdkColor background_color;
+};
+
+struct _HeaderAreaClass {
+ GtkEventBoxClass parent_class;
+};
+
+struct _SliderBase {
+ GtkHScrollbar parent_instance;
+ SliderBasePrivate * priv;
+};
+
+struct _SliderBaseClass {
+ GtkHScrollbarClass parent_class;
+};
+
+struct _SliderBasePrivate {
+ GdkPixbuf* slider_image;
+};
+
+struct _PanSlider {
+ SliderBase parent_instance;
+ PanSliderPrivate * priv;
+};
+
+struct _PanSliderClass {
+ SliderBaseClass parent_class;
+};
+
+struct _VolumeSlider {
+ SliderBase parent_instance;
+ VolumeSliderPrivate * priv;
+};
+
+struct _VolumeSliderClass {
+ SliderBaseClass parent_class;
+};
+
+struct _AudioTrackHeader {
+ TrackHeader parent_instance;
+ AudioTrackHeaderPrivate * priv;
+ double panorama;
+ double volume;
+};
+
+struct _AudioTrackHeaderClass {
+ TrackHeaderClass parent_class;
+};
+
+struct _HeaderAreaPrivate {
+ ModelProject* project;
+ GtkVBox* vbox;
+};
+
+struct _Recorder {
+ GtkWindow parent_instance;
+ RecorderPrivate * priv;
+ ModelAudioProject* project;
+ TimeLine* timeline;
+};
+
+struct _RecorderClass {
+ GtkWindowClass parent_class;
+};
+
+
+static gpointer track_header_parent_class = NULL;
+static gpointer slider_base_parent_class = NULL;
+static gpointer pan_slider_parent_class = NULL;
+static gpointer volume_slider_parent_class = NULL;
+static gpointer audio_track_header_parent_class = NULL;
+static gpointer header_area_parent_class = NULL;
+
+GType track_header_get_type (void);
+GType header_area_get_type (void);
+enum {
+ TRACK_HEADER_DUMMY_PROPERTY
+};
+#define TRACK_HEADER_width 100
+static void track_header_on_track_renamed (TrackHeader* self);
+static void _track_header_on_track_renamed_model_track_track_renamed (ModelTrack* _sender, ModelTrack* track, gpointer self);
+static void track_header_on_track_selection_changed (TrackHeader* self, ModelTrack* track);
+static void _track_header_on_track_selection_changed_model_track_track_selection_changed (ModelTrack* _sender, ModelTrack* track, gpointer self);
+TrackHeader* track_header_new (ModelTrack* track, HeaderArea* area, gint height);
+TrackHeader* track_header_construct (GType object_type, ModelTrack* track, HeaderArea* area, gint height);
+void header_area_select (HeaderArea* self, ModelTrack* track);
+static gboolean track_header_real_button_press_event (GtkWidget* base, GdkEventButton* event);
+ModelTrack* track_header_get_track (TrackHeader* self);
+static void track_header_finalize (GObject* obj);
+GType slider_base_get_type (void);
+#define SLIDER_BASE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SLIDER_BASE, SliderBasePrivate))
+enum {
+ SLIDER_BASE_DUMMY_PROPERTY
+};
+static gboolean slider_base_real_expose_event (GtkWidget* base, GdkEventExpose* event);
+SliderBase* slider_base_new (void);
+SliderBase* slider_base_construct (GType object_type);
+static GObject * slider_base_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
+static void slider_base_finalize (GObject* obj);
+GType pan_slider_get_type (void);
+enum {
+ PAN_SLIDER_DUMMY_PROPERTY
+};
+PanSlider* pan_slider_new (void);
+PanSlider* pan_slider_construct (GType object_type);
+static GObject * pan_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
+GType volume_slider_get_type (void);
+enum {
+ VOLUME_SLIDER_DUMMY_PROPERTY
+};
+VolumeSlider* volume_slider_new (void);
+VolumeSlider* volume_slider_construct (GType object_type);
+static GObject * volume_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
+GType audio_track_header_get_type (void);
+enum {
+ AUDIO_TRACK_HEADER_DUMMY_PROPERTY
+};
+static void audio_track_header_on_parameter_changed (AudioTrackHeader* self, ModelParameter parameter, double new_value);
+static void _audio_track_header_on_parameter_changed_model_audio_track_parameter_changed (ModelAudioTrack* _sender, ModelParameter parameter, double new_value, gpointer self);
+static void audio_track_header_do_volpan_popup (AudioTrackHeader* self);
+static void _audio_track_header_do_volpan_popup_gtk_button_clicked (GtkButton* _sender, gpointer self);
+AudioTrackHeader* audio_track_header_new (ModelAudioTrack* track, HeaderArea* header, gint height);
+AudioTrackHeader* audio_track_header_construct (GType object_type, ModelAudioTrack* track, HeaderArea* header, gint height);
+IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_new (GtkWidget* parent, const char* title);
+IdWorksVolumeAndPanPopUp* id_works_volume_and_pan_pop_up_construct (GType object_type, GtkWidget* parent, const char* title);
+GType id_works_volume_and_pan_pop_up_get_type (void);
+void id_works_volume_and_pan_pop_up_set_volume (IdWorksVolumeAndPanPopUp* self, double volume);
+void id_works_volume_and_pan_pop_up_set_panorama (IdWorksVolumeAndPanPopUp* self, double panorama);
+static void audio_track_header_on_volume_updated (AudioTrackHeader* self, double val);
+static void _audio_track_header_on_volume_updated_id_works_volume_and_pan_pop_up_volume_updated (IdWorksVolumeAndPanPopUp* _sender, double volume, gpointer self);
+static void audio_track_header_on_panorama_updated (AudioTrackHeader* self, double val);
+static void _audio_track_header_on_panorama_updated_id_works_volume_and_pan_pop_up_panorama_updated (IdWorksVolumeAndPanPopUp* _sender, double panorama, gpointer self);
+static void audio_track_header_finalize (GObject* obj);
+#define HEADER_AREA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_HEADER_AREA, HeaderAreaPrivate))
+enum {
+ HEADER_AREA_DUMMY_PROPERTY
+};
+GType recorder_get_type (void);
+GType model_audio_project_get_type (void);
+void header_area_on_trackview_removed (HeaderArea* self, TrackView* trackview);
+static void _header_area_on_trackview_removed_time_line_trackview_removed (TimeLine* _sender, TrackView* trackview, gpointer self);
+void header_area_on_trackview_added (HeaderArea* self, TrackView* trackview);
+static void _header_area_on_trackview_added_time_line_trackview_added (TimeLine* _sender, TrackView* trackview, gpointer self);
+TrackSeparator* track_separator_new (void);
+TrackSeparator* track_separator_construct (GType object_type);
+GType track_separator_get_type (void);
+HeaderArea* header_area_new (Recorder* recorder, ModelTimeSystem* provider, gint height);
+HeaderArea* header_area_construct (GType object_type, Recorder* recorder, ModelTimeSystem* provider, gint height);
+static void header_area_finalize (GObject* obj);
+
+
+
+#line 30 "header_area.vala"
+static void _track_header_on_track_renamed_model_track_track_renamed (ModelTrack* _sender, ModelTrack* track, gpointer self) {
+#line 308 "header_area.c"
+ track_header_on_track_renamed (self);
+}
+
+
+#line 35 "header_area.vala"
+static void _track_header_on_track_selection_changed_model_track_track_selection_changed (ModelTrack* _sender, ModelTrack* track, gpointer self) {
+#line 315 "header_area.c"
+ track_header_on_track_selection_changed (self, track);
+}
+
+
+#line 16 "header_area.vala"
+TrackHeader* track_header_construct (GType object_type, ModelTrack* track, HeaderArea* area, gint height) {
+#line 322 "header_area.c"
+ TrackHeader * self;
+ GdkColor _tmp1_;
+ GdkColor _tmp0_ = {0};
+ GtkLabel* _tmp2_;
+ GdkColor _tmp4_;
+ GdkColor _tmp3_ = {0};
+#line 16 "header_area.vala"
+ g_return_val_if_fail (MODEL_IS_TRACK (track), NULL);
+#line 16 "header_area.vala"
+ g_return_val_if_fail (IS_HEADER_AREA (area), NULL);
+#line 333 "header_area.c"
+ self = g_object_newv (object_type, 0, NULL);
+#line 17 "header_area.vala"
+ self->track = track;
+#line 18 "header_area.vala"
+ self->header_area = area;
+#line 20 "header_area.vala"
+ g_signal_connect_object (track, "track-renamed", (GCallback) _track_header_on_track_renamed_model_track_track_renamed, self, 0);
+#line 21 "header_area.vala"
+ g_signal_connect_object (track, "track-selection-changed", (GCallback) _track_header_on_track_selection_changed_model_track_track_selection_changed, self, 0);
+#line 22 "header_area.vala"
+ gtk_widget_set_size_request (GTK_WIDGET (self), TRACK_HEADER_width, height);
+#line 23 "header_area.vala"
+ gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, &self->header_area->background_color);
+#line 24 "header_area.vala"
+ gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_SELECTED, (_tmp1_ = (parse_color ("#68a", &_tmp0_), _tmp0_), &_tmp1_));
+#line 26 "header_area.vala"
+ self->track_label = (_tmp2_ = g_object_ref_sink ((GtkLabel*) gtk_label_new (track->display_name)), _g_object_unref0 (self->track_label), _tmp2_);
+#line 27 "header_area.vala"
+ gtk_widget_modify_fg (GTK_WIDGET (self->track_label), GTK_STATE_NORMAL, (_tmp4_ = (parse_color ("#fff", &_tmp3_), _tmp3_), &_tmp4_));
+#line 353 "header_area.c"
+ return self;
+}
+
+
+#line 16 "header_area.vala"
+TrackHeader* track_header_new (ModelTrack* track, HeaderArea* area, gint height) {
+#line 16 "header_area.vala"
+ return track_header_construct (TYPE_TRACK_HEADER, track, area, height);
+#line 362 "header_area.c"
+}
+
+
+#line 30 "header_area.vala"
+static void track_header_on_track_renamed (TrackHeader* self) {
+#line 30 "header_area.vala"
+ g_return_if_fail (IS_TRACK_HEADER (self));
+#line 31 "header_area.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_renamed");
+#line 32 "header_area.vala"
+ gtk_label_set_text (self->track_label, self->track->display_name);
+#line 374 "header_area.c"
+}
+
+
+#line 35 "header_area.vala"
+static void track_header_on_track_selection_changed (TrackHeader* self, ModelTrack* track) {
+#line 380 "header_area.c"
+ GtkStateType _tmp0_ = 0;
+#line 35 "header_area.vala"
+ g_return_if_fail (IS_TRACK_HEADER (self));
+#line 35 "header_area.vala"
+ g_return_if_fail (MODEL_IS_TRACK (track));
+#line 36 "header_area.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_track_selection_changed");
+#line 37 "header_area.vala"
+ if (model_track_get_is_selected (track)) {
+#line 37 "header_area.vala"
+ _tmp0_ = GTK_STATE_SELECTED;
+#line 392 "header_area.c"
+ } else {
+#line 37 "header_area.vala"
+ _tmp0_ = GTK_STATE_NORMAL;
+#line 396 "header_area.c"
+ }
+#line 37 "header_area.vala"
+ gtk_widget_set_state (GTK_WIDGET (self), _tmp0_);
+#line 400 "header_area.c"
+}
+
+
+#line 40 "header_area.vala"
+static gboolean track_header_real_button_press_event (GtkWidget* base, GdkEventButton* event) {
+#line 406 "header_area.c"
+ TrackHeader * self;
+ gboolean result = FALSE;
+ self = TRACK_HEADER (base);
+#line 41 "header_area.vala"
+ header_area_select (self->header_area, self->track);
+#line 412 "header_area.c"
+ result = TRUE;
+#line 42 "header_area.vala"
+ return result;
+#line 416 "header_area.c"
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+ return self ? g_object_ref (self) : NULL;
+}
+
+
+#line 45 "header_area.vala"
+ModelTrack* track_header_get_track (TrackHeader* self) {
+#line 427 "header_area.c"
+ ModelTrack* result = NULL;
+#line 45 "header_area.vala"
+ g_return_val_if_fail (IS_TRACK_HEADER (self), NULL);
+#line 431 "header_area.c"
+ result = _g_object_ref0 (self->track);
+#line 46 "header_area.vala"
+ return result;
+#line 435 "header_area.c"
+}
+
+
+static void track_header_class_init (TrackHeaderClass * klass) {
+ track_header_parent_class = g_type_class_peek_parent (klass);
+ GTK_WIDGET_CLASS (klass)->button_press_event = track_header_real_button_press_event;
+ G_OBJECT_CLASS (klass)->finalize = track_header_finalize;
+}
+
+
+static void track_header_instance_init (TrackHeader * self) {
+}
+
+
+static void track_header_finalize (GObject* obj) {
+ TrackHeader * self;
+ self = TRACK_HEADER (obj);
+ _g_object_unref0 (self->track_label);
+ G_OBJECT_CLASS (track_header_parent_class)->finalize (obj);
+}
+
+
+GType track_header_get_type (void) {
+ static volatile gsize track_header_type_id__volatile = 0;
+ if (g_once_init_enter (&track_header_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (TrackHeaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) track_header_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackHeader), 0, (GInstanceInitFunc) track_header_instance_init, NULL };
+ GType track_header_type_id;
+ track_header_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "TrackHeader", &g_define_type_info, 0);
+ g_once_init_leave (&track_header_type_id__volatile, track_header_type_id);
+ }
+ return track_header_type_id__volatile;
+}
+
+
+#line 62 "header_area.vala"
+static gboolean slider_base_real_expose_event (GtkWidget* base, GdkEventExpose* event) {
+#line 472 "header_area.c"
+ SliderBase * self;
+ gboolean result = FALSE;
+ GdkGC* gc;
+ gint radius;
+ gint center;
+ gint height;
+ self = SLIDER_BASE (base);
+#line 63 "header_area.vala"
+ gc = _g_object_ref0 (gtk_widget_get_style (GTK_WIDGET (self))->fg_gc[(gint) GTK_STATE_NORMAL]);
+#line 64 "header_area.vala"
+ radius = (GTK_RANGE (self)->slider_end - GTK_RANGE (self)->slider_start) / 2;
+#line 65 "header_area.vala"
+ center = (GTK_WIDGET (self)->allocation.x + GTK_RANGE (self)->slider_start) + radius;
+#line 66 "header_area.vala"
+ height = GTK_WIDGET (self)->allocation.y + (GTK_WIDGET (self)->allocation.height / 2);
+#line 68 "header_area.vala"
+ gdk_draw_rectangle (GDK_DRAWABLE ((*event).window), gc, FALSE, GTK_WIDGET (self)->allocation.x + radius, height - 2, GTK_WIDGET (self)->allocation.width - (2 * radius), 1);
+#line 71 "header_area.vala"
+ gdk_draw_pixbuf (GDK_DRAWABLE ((*event).window), gc, self->priv->slider_image, 0, 0, center - radius, GTK_WIDGET (self)->allocation.y + 2, gdk_pixbuf_get_width (self->priv->slider_image), gdk_pixbuf_get_height (self->priv->slider_image), GDK_RGB_DITHER_NORMAL, 0, 0);
+#line 492 "header_area.c"
+ result = TRUE;
+ _g_object_unref0 (gc);
+#line 73 "header_area.vala"
+ return result;
+#line 497 "header_area.c"
+}
+
+
+#line 50 "header_area.vala"
+SliderBase* slider_base_construct (GType object_type) {
+#line 503 "header_area.c"
+ SliderBase * self;
+ self = g_object_newv (object_type, 0, NULL);
+ return self;
+}
+
+
+#line 50 "header_area.vala"
+SliderBase* slider_base_new (void) {
+#line 50 "header_area.vala"
+ return slider_base_construct (TYPE_SLIDER_BASE);
+#line 514 "header_area.c"
+}
+
+
+static GObject * slider_base_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+ GObject * obj;
+ GObjectClass * parent_class;
+ SliderBase * self;
+ GError * _inner_error_;
+ parent_class = G_OBJECT_CLASS (slider_base_parent_class);
+ obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+ self = SLIDER_BASE (obj);
+ _inner_error_ = NULL;
+ {
+#line 53 "header_area.vala"
+ g_object_set (GTK_WIDGET (self), "can-focus", TRUE, NULL);
+#line 530 "header_area.c"
+ {
+ char* _tmp2_;
+ GFile* _tmp1_;
+ GFile* _tmp0_;
+ GdkPixbuf* _tmp3_;
+ GdkPixbuf* _tmp4_;
+ GdkPixbuf* _tmp5_;
+#line 55 "header_area.vala"
+ _tmp4_ = (_tmp3_ = gdk_pixbuf_new_from_file (_tmp2_ = g_file_get_path (_tmp1_ = g_file_get_child (_tmp0_ = app_dirs_get_resources_dir (), "dot.png")), &_inner_error_), _g_free0 (_tmp2_), _g_object_unref0 (_tmp1_), _g_object_unref0 (_tmp0_), _tmp3_);
+#line 540 "header_area.c"
+ if (_inner_error_ != NULL) {
+ goto __catch14_g_error;
+ }
+#line 55 "header_area.vala"
+ self->priv->slider_image = (_tmp5_ = _tmp4_, _g_object_unref0 (self->priv->slider_image), _tmp5_);
+#line 546 "header_area.c"
+ }
+ goto __finally14;
+ __catch14_g_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+#line 58 "header_area.vala"
+ g_warning ("header_area.vala:58: Could not load resource for slider: %s", e->message);
+#line 557 "header_area.c"
+ _g_error_free0 (e);
+ }
+ }
+ __finally14:
+ if (_inner_error_ != NULL) {
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+ g_clear_error (&_inner_error_);
+ }
+ }
+ return obj;
+}
+
+
+static void slider_base_class_init (SliderBaseClass * klass) {
+ slider_base_parent_class = g_type_class_peek_parent (klass);
+ g_type_class_add_private (klass, sizeof (SliderBasePrivate));
+ GTK_WIDGET_CLASS (klass)->expose_event = slider_base_real_expose_event;
+ G_OBJECT_CLASS (klass)->constructor = slider_base_constructor;
+ G_OBJECT_CLASS (klass)->finalize = slider_base_finalize;
+}
+
+
+static void slider_base_instance_init (SliderBase * self) {
+ self->priv = SLIDER_BASE_GET_PRIVATE (self);
+}
+
+
+static void slider_base_finalize (GObject* obj) {
+ SliderBase * self;
+ self = SLIDER_BASE (obj);
+ _g_object_unref0 (self->priv->slider_image);
+ G_OBJECT_CLASS (slider_base_parent_class)->finalize (obj);
+}
+
+
+GType slider_base_get_type (void) {
+ static volatile gsize slider_base_type_id__volatile = 0;
+ if (g_once_init_enter (&slider_base_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SliderBaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) slider_base_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SliderBase), 0, (GInstanceInitFunc) slider_base_instance_init, NULL };
+ GType slider_base_type_id;
+ slider_base_type_id = g_type_register_static (GTK_TYPE_HSCROLLBAR, "SliderBase", &g_define_type_info, 0);
+ g_once_init_leave (&slider_base_type_id__volatile, slider_base_type_id);
+ }
+ return slider_base_type_id__volatile;
+}
+
+
+#line 77 "header_area.vala"
+PanSlider* pan_slider_construct (GType object_type) {
+#line 607 "header_area.c"
+ PanSlider * self;
+ self = g_object_newv (object_type, 0, NULL);
+ return self;
+}
+
+
+#line 77 "header_area.vala"
+PanSlider* pan_slider_new (void) {
+#line 77 "header_area.vala"
+ return pan_slider_construct (TYPE_PAN_SLIDER);
+#line 618 "header_area.c"
+}
+
+
+static GObject * pan_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+ GObject * obj;
+ GObjectClass * parent_class;
+ PanSlider * self;
+ parent_class = G_OBJECT_CLASS (pan_slider_parent_class);
+ obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+ self = PAN_SLIDER (obj);
+ {
+ }
+ return obj;
+}
+
+
+static void pan_slider_class_init (PanSliderClass * klass) {
+ pan_slider_parent_class = g_type_class_peek_parent (klass);
+ G_OBJECT_CLASS (klass)->constructor = pan_slider_constructor;
+}
+
+
+static void pan_slider_instance_init (PanSlider * self) {
+}
+
+
+GType pan_slider_get_type (void) {
+ static volatile gsize pan_slider_type_id__volatile = 0;
+ if (g_once_init_enter (&pan_slider_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (PanSliderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) pan_slider_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PanSlider), 0, (GInstanceInitFunc) pan_slider_instance_init, NULL };
+ GType pan_slider_type_id;
+ pan_slider_type_id = g_type_register_static (TYPE_SLIDER_BASE, "PanSlider", &g_define_type_info, 0);
+ g_once_init_leave (&pan_slider_type_id__volatile, pan_slider_type_id);
+ }
+ return pan_slider_type_id__volatile;
+}
+
+
+#line 82 "header_area.vala"
+VolumeSlider* volume_slider_construct (GType object_type) {
+#line 659 "header_area.c"
+ VolumeSlider * self;
+ self = g_object_newv (object_type, 0, NULL);
+ return self;
+}
+
+
+#line 82 "header_area.vala"
+VolumeSlider* volume_slider_new (void) {
+#line 82 "header_area.vala"
+ return volume_slider_construct (TYPE_VOLUME_SLIDER);
+#line 670 "header_area.c"
+}
+
+
+static GObject * volume_slider_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+ GObject * obj;
+ GObjectClass * parent_class;
+ VolumeSlider * self;
+ parent_class = G_OBJECT_CLASS (volume_slider_parent_class);
+ obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+ self = VOLUME_SLIDER (obj);
+ {
+ }
+ return obj;
+}
+
+
+static void volume_slider_class_init (VolumeSliderClass * klass) {
+ volume_slider_parent_class = g_type_class_peek_parent (klass);
+ G_OBJECT_CLASS (klass)->constructor = volume_slider_constructor;
+}
+
+
+static void volume_slider_instance_init (VolumeSlider * self) {
+}
+
+
+GType volume_slider_get_type (void) {
+ static volatile gsize volume_slider_type_id__volatile = 0;
+ if (g_once_init_enter (&volume_slider_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (VolumeSliderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) volume_slider_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (VolumeSlider), 0, (GInstanceInitFunc) volume_slider_instance_init, NULL };
+ GType volume_slider_type_id;
+ volume_slider_type_id = g_type_register_static (TYPE_SLIDER_BASE, "VolumeSlider", &g_define_type_info, 0);
+ g_once_init_leave (&volume_slider_type_id__volatile, volume_slider_type_id);
+ }
+ return volume_slider_type_id__volatile;
+}
+
+
+#line 164 "header_area.vala"
+static void _audio_track_header_on_parameter_changed_model_audio_track_parameter_changed (ModelAudioTrack* _sender, ModelParameter parameter, double new_value, gpointer self) {
+#line 711 "header_area.c"
+ audio_track_header_on_parameter_changed (self, parameter, new_value);
+}
+
+
+#line 119 "header_area.vala"
+static void _audio_track_header_do_volpan_popup_gtk_button_clicked (GtkButton* _sender, gpointer self) {
+#line 718 "header_area.c"
+ audio_track_header_do_volpan_popup (self);
+}
+
+
+#line 91 "header_area.vala"
+AudioTrackHeader* audio_track_header_construct (GType object_type, ModelAudioTrack* track, HeaderArea* header, gint height) {
+#line 725 "header_area.c"
+ AudioTrackHeader * self;
+ PangoFontDescription* _tmp0_;
+ GtkVBox* vbox;
+ HildonButton* volpan_button;
+ GtkImage* _tmp1_;
+#line 91 "header_area.vala"
+ g_return_val_if_fail (MODEL_IS_AUDIO_TRACK (track), NULL);
+#line 91 "header_area.vala"
+ g_return_val_if_fail (IS_HEADER_AREA (header), NULL);
+#line 92 "header_area.vala"
+ self = (AudioTrackHeader*) track_header_construct (object_type, MODEL_TRACK (track), header, height);
+#line 94 "header_area.vala"
+ gtk_widget_modify_font (GTK_WIDGET (TRACK_HEADER (self)->track_label), _tmp0_ = pango_font_description_from_string ("Sans 10"));
+#line 739 "header_area.c"
+ _pango_font_description_free0 (_tmp0_);
+#line 95 "header_area.vala"
+ gtk_misc_set_padding (GTK_MISC (TRACK_HEADER (self)->track_label), 4, 2);
+#line 96 "header_area.vala"
+ gtk_misc_set_alignment (GTK_MISC (TRACK_HEADER (self)->track_label), (float) 0, (float) 0);
+#line 98 "header_area.vala"
+ g_signal_connect_object (track, "parameter-changed", (GCallback) _audio_track_header_on_parameter_changed_model_audio_track_parameter_changed, self, 0);
+#line 100 "header_area.vala"
+ self->volume = model_audio_track_get_volume (track);
+#line 101 "header_area.vala"
+ self->panorama = model_audio_track_get_pan (track);
+#line 103 "header_area.vala"
+ vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
+#line 104 "header_area.vala"
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (TRACK_HEADER (self)->track_label), TRUE, TRUE, (guint) 0);
+#line 105 "header_area.vala"
+ volpan_button = g_object_ref_sink ((HildonButton*) hildon_button_new (HILDON_SIZE_AUTO_HEIGHT | HILDON_SIZE_AUTO_WIDTH, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL));
+#line 107 "header_area.vala"
+ hildon_button_set_image (volpan_button, GTK_WIDGET (_tmp1_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_icon_name ("statusarea_volumelevel4", GTK_ICON_SIZE_BUTTON))));
+#line 759 "header_area.c"
+ _g_object_unref0 (_tmp1_);
+#line 108 "header_area.vala"
+ hildon_button_set_image_position (volpan_button, GTK_POS_LEFT);
+#line 109 "header_area.vala"
+ g_signal_connect_object (GTK_BUTTON (volpan_button), "clicked", (GCallback) _audio_track_header_do_volpan_popup_gtk_button_clicked, self, 0);
+#line 110 "header_area.vala"
+ gtk_container_add (GTK_CONTAINER (vbox), GTK_WIDGET (volpan_button));
+#line 116 "header_area.vala"
+ gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (vbox));
+#line 769 "header_area.c"
+ _g_object_unref0 (vbox);
+ _g_object_unref0 (volpan_button);
+ return self;
+}
+
+
+#line 91 "header_area.vala"
+AudioTrackHeader* audio_track_header_new (ModelAudioTrack* track, HeaderArea* header, gint height) {
+#line 91 "header_area.vala"
+ return audio_track_header_construct (TYPE_AUDIO_TRACK_HEADER, track, header, height);
+#line 780 "header_area.c"
+}
+
+
+#line 148 "header_area.vala"
+static void _audio_track_header_on_volume_updated_id_works_volume_and_pan_pop_up_volume_updated (IdWorksVolumeAndPanPopUp* _sender, double volume, gpointer self) {
+#line 786 "header_area.c"
+ audio_track_header_on_volume_updated (self, volume);
+}
+
+
+#line 131 "header_area.vala"
+static void _audio_track_header_on_panorama_updated_id_works_volume_and_pan_pop_up_panorama_updated (IdWorksVolumeAndPanPopUp* _sender, double panorama, gpointer self) {
+#line 793 "header_area.c"
+ audio_track_header_on_panorama_updated (self, panorama);
+}
+
+
+#line 119 "header_area.vala"
+static void audio_track_header_do_volpan_popup (AudioTrackHeader* self) {
+#line 800 "header_area.c"
+ char* _tmp0_;
+ IdWorksVolumeAndPanPopUp* _tmp1_;
+ IdWorksVolumeAndPanPopUp* dlg;
+ IdWorksVolumeAndPanPopUp* _tmp2_;
+#line 119 "header_area.vala"
+ g_return_if_fail (IS_AUDIO_TRACK_HEADER (self));
+#line 120 "header_area.vala"
+ dlg = (_tmp1_ = g_object_ref_sink (id_works_volume_and_pan_pop_up_new (GTK_WIDGET (self), _tmp0_ = g_strconcat ("Volume / Pan: ", TRACK_HEADER (self)->track->display_name, NULL))), _g_free0 (_tmp0_), _tmp1_);
+#line 122 "header_area.vala"
+ id_works_volume_and_pan_pop_up_set_volume (dlg, self->volume);
+#line 123 "header_area.vala"
+ id_works_volume_and_pan_pop_up_set_panorama (dlg, self->panorama);
+#line 124 "header_area.vala"
+ g_signal_connect_object (dlg, "volume-updated", (GCallback) _audio_track_header_on_volume_updated_id_works_volume_and_pan_pop_up_volume_updated, self, 0);
+#line 125 "header_area.vala"
+ g_signal_connect_object (dlg, "panorama-updated", (GCallback) _audio_track_header_on_panorama_updated_id_works_volume_and_pan_pop_up_panorama_updated, self, 0);
+#line 126 "header_area.vala"
+ gtk_dialog_run (GTK_DIALOG (dlg));
+#line 127 "header_area.vala"
+ gtk_object_destroy (GTK_OBJECT (dlg));
+#line 128 "header_area.vala"
+ dlg = (_tmp2_ = NULL, _g_object_unref0 (dlg), _tmp2_);
+#line 823 "header_area.c"
+ _g_object_unref0 (dlg);
+}
+
+
+#line 131 "header_area.vala"
+static void audio_track_header_on_panorama_updated (AudioTrackHeader* self, double val) {
+#line 830 "header_area.c"
+ ModelTrack* _tmp0_;
+ ModelAudioTrack* audio_track;
+#line 131 "header_area.vala"
+ g_return_if_fail (IS_AUDIO_TRACK_HEADER (self));
+#line 132 "header_area.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_pan_value_changed");
+#line 133 "header_area.vala"
+ audio_track = _g_object_ref0 ((_tmp0_ = TRACK_HEADER (self)->track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL));
+#line 134 "header_area.vala"
+ if (audio_track != NULL) {
+#line 135 "header_area.vala"
+ model_audio_track_set_pan (audio_track, val);
+#line 843 "header_area.c"
+ }
+ _g_object_unref0 (audio_track);
+}
+
+
+#line 148 "header_area.vala"
+static void audio_track_header_on_volume_updated (AudioTrackHeader* self, double val) {
+#line 851 "header_area.c"
+ ModelTrack* _tmp0_;
+ ModelAudioTrack* audio_track;
+#line 148 "header_area.vala"
+ g_return_if_fail (IS_AUDIO_TRACK_HEADER (self));
+#line 149 "header_area.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_volume_value_changed");
+#line 150 "header_area.vala"
+ audio_track = _g_object_ref0 ((_tmp0_ = TRACK_HEADER (self)->track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL));
+#line 151 "header_area.vala"
+ if (audio_track != NULL) {
+#line 152 "header_area.vala"
+ model_audio_track_set_volume (audio_track, val);
+#line 864 "header_area.c"
+ }
+ _g_object_unref0 (audio_track);
+}
+
+
+#line 164 "header_area.vala"
+static void audio_track_header_on_parameter_changed (AudioTrackHeader* self, ModelParameter parameter, double new_value) {
+#line 872 "header_area.c"
+ ModelTrack* _tmp0_;
+ ModelAudioTrack* audio_track;
+#line 164 "header_area.vala"
+ g_return_if_fail (IS_AUDIO_TRACK_HEADER (self));
+#line 165 "header_area.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_parameter_changed");
+#line 166 "header_area.vala"
+ audio_track = _g_object_ref0 ((_tmp0_ = TRACK_HEADER (self)->track, MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL));
+#line 167 "header_area.vala"
+ g_assert (audio_track != NULL);
+#line 168 "header_area.vala"
+ switch (parameter) {
+#line 885 "header_area.c"
+ case MODEL_PARAMETER_VOLUME:
+ {
+#line 170 "header_area.vala"
+ self->volume = new_value;
+#line 171 "header_area.vala"
+ break;
+#line 892 "header_area.c"
+ }
+ case MODEL_PARAMETER_PAN:
+ {
+#line 173 "header_area.vala"
+ self->panorama = new_value;
+#line 174 "header_area.vala"
+ break;
+#line 900 "header_area.c"
+ }
+ }
+ _g_object_unref0 (audio_track);
+}
+
+
+static void audio_track_header_class_init (AudioTrackHeaderClass * klass) {
+ audio_track_header_parent_class = g_type_class_peek_parent (klass);
+ G_OBJECT_CLASS (klass)->finalize = audio_track_header_finalize;
+}
+
+
+static void audio_track_header_instance_init (AudioTrackHeader * self) {
+}
+
+
+static void audio_track_header_finalize (GObject* obj) {
+ AudioTrackHeader * self;
+ self = AUDIO_TRACK_HEADER (obj);
+ G_OBJECT_CLASS (audio_track_header_parent_class)->finalize (obj);
+}
+
+
+GType audio_track_header_get_type (void) {
+ static volatile gsize audio_track_header_type_id__volatile = 0;
+ if (g_once_init_enter (&audio_track_header_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (AudioTrackHeaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) audio_track_header_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AudioTrackHeader), 0, (GInstanceInitFunc) audio_track_header_instance_init, NULL };
+ GType audio_track_header_type_id;
+ audio_track_header_type_id = g_type_register_static (TYPE_TRACK_HEADER, "AudioTrackHeader", &g_define_type_info, 0);
+ g_once_init_leave (&audio_track_header_type_id__volatile, audio_track_header_type_id);
+ }
+ return audio_track_header_type_id__volatile;
+}
+
+
+#line 233 "header_area.vala"
+static void _header_area_on_trackview_removed_time_line_trackview_removed (TimeLine* _sender, TrackView* trackview, gpointer self) {
+#line 938 "header_area.c"
+ header_area_on_trackview_removed (self, trackview);
+}
+
+
+#line 219 "header_area.vala"
+static void _header_area_on_trackview_added_time_line_trackview_added (TimeLine* _sender, TrackView* trackview, gpointer self) {
+#line 945 "header_area.c"
+ header_area_on_trackview_added (self, trackview);
+}
+
+
+#line 198 "header_area.vala"
+HeaderArea* header_area_construct (GType object_type, Recorder* recorder, ModelTimeSystem* provider, gint height) {
+#line 952 "header_area.c"
+ HeaderArea * self;
+ GtkVBox* _tmp0_;
+ GtkDrawingArea* status_bar;
+ TrackSeparator* _tmp1_;
+#line 198 "header_area.vala"
+ g_return_val_if_fail (IS_RECORDER (recorder), NULL);
+#line 198 "header_area.vala"
+ g_return_val_if_fail (MODEL_IS_TIME_SYSTEM (provider), NULL);
+#line 961 "header_area.c"
+ self = g_object_newv (object_type, 0, NULL);
+#line 199 "header_area.vala"
+ self->priv->project = MODEL_PROJECT (recorder->project);
+#line 200 "header_area.vala"
+ g_signal_connect_object (recorder->timeline, "trackview-removed", (GCallback) _header_area_on_trackview_removed_time_line_trackview_removed, self, 0);
+#line 201 "header_area.vala"
+ g_signal_connect_object (recorder->timeline, "trackview-added", (GCallback) _header_area_on_trackview_added_time_line_trackview_added, self, 0);
+#line 203 "header_area.vala"
+ gtk_widget_set_size_request (GTK_WIDGET (self), TRACK_HEADER_width, 0);
+#line 204 "header_area.vala"
+ gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, &self->background_color);
+#line 206 "header_area.vala"
+ self->priv->vbox = (_tmp0_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)), _g_object_unref0 (self->priv->vbox), _tmp0_);
+#line 207 "header_area.vala"
+ gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->vbox));
+#line 208 "header_area.vala"
+ status_bar = GTK_DRAWING_AREA (g_object_ref_sink (view_status_bar_new (self->priv->project, provider, height)));
+#line 210 "header_area.vala"
+ gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (status_bar), FALSE, FALSE, (guint) 0);
+#line 212 "header_area.vala"
+ gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (_tmp1_ = g_object_ref_sink (track_separator_new ())), FALSE, FALSE, (guint) 0);
+#line 983 "header_area.c"
+ _g_object_unref0 (_tmp1_);
+ {
+ GeeIterator* _track_it;
+ _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (recorder->timeline->tracks));
+#line 214 "header_area.vala"
+ while (TRUE) {
+#line 990 "header_area.c"
+ TrackView* track;
+#line 214 "header_area.vala"
+ if (!gee_iterator_next (_track_it)) {
+#line 214 "header_area.vala"
+ break;
+#line 996 "header_area.c"
+ }
+#line 214 "header_area.vala"
+ track = (TrackView*) gee_iterator_get (_track_it);
+#line 215 "header_area.vala"
+ header_area_on_trackview_added (self, track);
+#line 1002 "header_area.c"
+ _g_object_unref0 (track);
+ }
+ _g_object_unref0 (_track_it);
+ }
+ _g_object_unref0 (status_bar);
+ return self;
+}
+
+
+#line 198 "header_area.vala"
+HeaderArea* header_area_new (Recorder* recorder, ModelTimeSystem* provider, gint height) {
+#line 198 "header_area.vala"
+ return header_area_construct (TYPE_HEADER_AREA, recorder, provider, height);
+#line 1016 "header_area.c"
+}
+
+
+#line 219 "header_area.vala"
+void header_area_on_trackview_added (HeaderArea* self, TrackView* trackview) {
+#line 1022 "header_area.c"
+ ModelTrack* _tmp0_;
+ ModelAudioTrack* audio_track;
+ TrackHeader* header;
+ TrackSeparator* _tmp1_;
+#line 219 "header_area.vala"
+ g_return_if_fail (IS_HEADER_AREA (self));
+#line 219 "header_area.vala"
+ g_return_if_fail (IS_TRACK_VIEW (trackview));
+#line 220 "header_area.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_trackview_added");
+#line 221 "header_area.vala"
+ audio_track = (_tmp0_ = track_view_get_track (trackview), MODEL_IS_AUDIO_TRACK (_tmp0_) ? ((ModelAudioTrack*) _tmp0_) : NULL);
+#line 222 "header_area.vala"
+ g_assert (audio_track != NULL);
+#line 226 "header_area.vala"
+ header = TRACK_HEADER (g_object_ref_sink (audio_track_header_new (audio_track, self, track_view_get_track_height (trackview))));
+#line 227 "header_area.vala"
+ gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (header), FALSE, FALSE, (guint) 0);
+#line 228 "header_area.vala"
+ gtk_box_pack_start (GTK_BOX (self->priv->vbox), GTK_WIDGET (_tmp1_ = g_object_ref_sink (track_separator_new ())), FALSE, FALSE, (guint) 0);
+#line 1043 "header_area.c"
+ _g_object_unref0 (_tmp1_);
+#line 229 "header_area.vala"
+ gtk_widget_show_all (GTK_WIDGET (self->priv->vbox));
+#line 230 "header_area.vala"
+ header_area_select (self, MODEL_TRACK (audio_track));
+#line 1049 "header_area.c"
+ _g_object_unref0 (audio_track);
+ _g_object_unref0 (header);
+}
+
+
+#line 233 "header_area.vala"
+void header_area_on_trackview_removed (HeaderArea* self, TrackView* trackview) {
+#line 1057 "header_area.c"
+ ModelTrack* track;
+ TrackHeader* my_track_header;
+ GtkHSeparator* my_separator;
+#line 233 "header_area.vala"
+ g_return_if_fail (IS_HEADER_AREA (self));
+#line 233 "header_area.vala"
+ g_return_if_fail (IS_TRACK_VIEW (trackview));
+#line 234 "header_area.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_trackview_removed");
+#line 235 "header_area.vala"
+ track = track_view_get_track (trackview);
+#line 236 "header_area.vala"
+ my_track_header = NULL;
+#line 237 "header_area.vala"
+ my_separator = NULL;
+#line 1073 "header_area.c"
+ {
+ GList* widget_collection;
+ GList* widget_it;
+#line 238 "header_area.vala"
+ widget_collection = gtk_container_get_children (GTK_CONTAINER (self->priv->vbox));
+#line 1079 "header_area.c"
+ for (widget_it = widget_collection; widget_it != NULL; widget_it = widget_it->next) {
+ GtkWidget* widget;
+#line 238 "header_area.vala"
+ widget = _g_object_ref0 ((GtkWidget*) widget_it->data);
+#line 1084 "header_area.c"
+ {
+#line 239 "header_area.vala"
+ if (my_track_header == NULL) {
+#line 1088 "header_area.c"
+ GtkWidget* _tmp0_;
+ TrackHeader* track_header;
+ gboolean _tmp1_ = FALSE;
+#line 240 "header_area.vala"
+ track_header = _g_object_ref0 ((_tmp0_ = widget, IS_TRACK_HEADER (_tmp0_) ? ((TrackHeader*) _tmp0_) : NULL));
+#line 241 "header_area.vala"
+ if (track_header != NULL) {
+#line 1096 "header_area.c"
+ ModelTrack* _tmp2_;
+#line 241 "header_area.vala"
+ _tmp1_ = (_tmp2_ = track_header_get_track (track_header)) == track;
+#line 1100 "header_area.c"
+ _g_object_unref0 (_tmp2_);
+ } else {
+#line 241 "header_area.vala"
+ _tmp1_ = FALSE;
+#line 1105 "header_area.c"
+ }
+#line 241 "header_area.vala"
+ if (_tmp1_) {
+#line 1109 "header_area.c"
+ TrackHeader* _tmp3_;
+#line 242 "header_area.vala"
+ my_track_header = (_tmp3_ = _g_object_ref0 (track_header), _g_object_unref0 (my_track_header), _tmp3_);
+#line 1113 "header_area.c"
+ }
+ _g_object_unref0 (track_header);
+ } else {
+ GtkHSeparator* _tmp5_;
+ GtkWidget* _tmp4_;
+#line 245 "header_area.vala"
+ my_separator = (_tmp5_ = _g_object_ref0 ((_tmp4_ = widget, GTK_IS_HSEPARATOR (_tmp4_) ? ((GtkHSeparator*) _tmp4_) : NULL)), _g_object_unref0 (my_separator), _tmp5_);
+#line 1121 "header_area.c"
+ _g_object_unref0 (widget);
+#line 246 "header_area.vala"
+ break;
+#line 1125 "header_area.c"
+ }
+ _g_object_unref0 (widget);
+ }
+ }
+#line 238 "header_area.vala"
+ _g_list_free0 (widget_collection);
+#line 1132 "header_area.c"
+ }
+#line 250 "header_area.vala"
+ if (my_track_header != NULL) {
+#line 251 "header_area.vala"
+ gtk_container_remove (GTK_CONTAINER (self->priv->vbox), GTK_WIDGET (my_track_header));
+#line 1138 "header_area.c"
+ }
+#line 254 "header_area.vala"
+ if (my_separator != NULL) {
+#line 255 "header_area.vala"
+ gtk_container_remove (GTK_CONTAINER (self->priv->vbox), GTK_WIDGET (my_separator));
+#line 1144 "header_area.c"
+ }
+#line 258 "header_area.vala"
+ if (gee_collection_get_size (GEE_COLLECTION (self->priv->project->tracks)) != 0) {
+#line 1148 "header_area.c"
+ ModelTrack* _tmp6_;
+#line 259 "header_area.vala"
+ header_area_select (self, _tmp6_ = (ModelTrack*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->project->tracks), 0));
+#line 1152 "header_area.c"
+ _g_object_unref0 (_tmp6_);
+ }
+ _g_object_unref0 (track);
+ _g_object_unref0 (my_track_header);
+ _g_object_unref0 (my_separator);
+}
+
+
+#line 263 "header_area.vala"
+void header_area_select (HeaderArea* self, ModelTrack* track) {
+#line 263 "header_area.vala"
+ g_return_if_fail (IS_HEADER_AREA (self));
+#line 263 "header_area.vala"
+ g_return_if_fail (MODEL_IS_TRACK (track));
+#line 1167 "header_area.c"
+ {
+ GeeIterator* _t_it;
+ _t_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (self->priv->project->tracks));
+#line 264 "header_area.vala"
+ while (TRUE) {
+#line 1173 "header_area.c"
+ ModelTrack* t;
+#line 264 "header_area.vala"
+ if (!gee_iterator_next (_t_it)) {
+#line 264 "header_area.vala"
+ break;
+#line 1179 "header_area.c"
+ }
+#line 264 "header_area.vala"
+ t = (ModelTrack*) gee_iterator_get (_t_it);
+#line 265 "header_area.vala"
+ model_track_set_selected (t, t == track);
+#line 1185 "header_area.c"
+ _g_object_unref0 (t);
+ }
+ _g_object_unref0 (_t_it);
+ }
+}
+
+
+static void header_area_class_init (HeaderAreaClass * klass) {
+ header_area_parent_class = g_type_class_peek_parent (klass);
+ g_type_class_add_private (klass, sizeof (HeaderAreaPrivate));
+ G_OBJECT_CLASS (klass)->finalize = header_area_finalize;
+}
+
+
+static void header_area_instance_init (HeaderArea * self) {
+ GdkColor _tmp6_ = {0};
+ self->priv = HEADER_AREA_GET_PRIVATE (self);
+ self->background_color = (parse_color ("#666", &_tmp6_), _tmp6_);
+}
+
+
+static void header_area_finalize (GObject* obj) {
+ HeaderArea * self;
+ self = HEADER_AREA (obj);
+ _g_object_unref0 (self->priv->vbox);
+ G_OBJECT_CLASS (header_area_parent_class)->finalize (obj);
+}
+
+
+GType header_area_get_type (void) {
+ static volatile gsize header_area_type_id__volatile = 0;
+ if (g_once_init_enter (&header_area_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (HeaderAreaClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) header_area_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (HeaderArea), 0, (GInstanceInitFunc) header_area_instance_init, NULL };
+ GType header_area_type_id;
+ header_area_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "HeaderArea", &g_define_type_info, 0);
+ g_once_init_leave (&header_area_type_id__volatile, header_area_type_id);
+ }
+ return header_area_type_id__volatile;
+}
+
+
+
+