Initial commit
[fillmore] / src / fillmore / fillmore / header_area.c
diff --git a/src/fillmore/fillmore/header_area.c b/src/fillmore/fillmore/header_area.c
new file mode 100644 (file)
index 0000000..3ca20da
--- /dev/null
@@ -0,0 +1,1227 @@
+/* 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;
+}
+
+
+
+