Initial commit
[fillmore] / src / fillmore / fillmore / ProjectProperties.c
diff --git a/src/fillmore/fillmore/ProjectProperties.c b/src/fillmore/fillmore/ProjectProperties.c
new file mode 100644 (file)
index 0000000..3088fe0
--- /dev/null
@@ -0,0 +1,498 @@
+/* ProjectProperties.c generated by valac, the Vala compiler
+ * generated from ProjectProperties.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 <float.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#define TYPE_PROJECT_PROPERTIES (project_properties_get_type ())
+#define PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROJECT_PROPERTIES, ProjectProperties))
+#define PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass))
+#define IS_PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROJECT_PROPERTIES))
+#define IS_PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROJECT_PROPERTIES))
+#define PROJECT_PROPERTIES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass))
+
+typedef struct _ProjectProperties ProjectProperties;
+typedef struct _ProjectPropertiesClass ProjectPropertiesClass;
+typedef struct _ProjectPropertiesPrivate ProjectPropertiesPrivate;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+struct _ProjectProperties {
+       GtkDialog parent_instance;
+       ProjectPropertiesPrivate * priv;
+};
+
+struct _ProjectPropertiesClass {
+       GtkDialogClass parent_class;
+};
+
+struct _ProjectPropertiesPrivate {
+       GTimeVal* tap_time;
+       gint tap_time_length1;
+       gint _tap_time_size_;
+       gint tap_index;
+       gboolean sample_full;
+       GtkAdjustment* tempo_adjustment;
+       GtkAdjustment* volume_adjustment;
+       GtkComboBox* timesignature_combo;
+       GtkToggleButton* click_during_play;
+       GtkToggleButton* click_during_record;
+};
+
+
+static gpointer project_properties_parent_class = NULL;
+
+GType project_properties_get_type (void);
+#define PROJECT_PROPERTIES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROJECT_PROPERTIES, ProjectPropertiesPrivate))
+enum  {
+       PROJECT_PROPERTIES_DUMMY_PROPERTY
+};
+#define PROJECT_PROPERTIES_NUMBER_OF_SAMPLES 4
+#define PROJECT_PROPERTIES_G_USEC_PER_SEC ((glong) 1000000)
+void project_properties_set_tempo (ProjectProperties* self, gint tempo);
+void project_properties_set_volume (ProjectProperties* self, double volume);
+static void project_properties_set_during_play (ProjectProperties* self, gboolean active);
+static void project_properties_set_during_record (ProjectProperties* self, gboolean active);
+static void project_properties_set_time_signature (ProjectProperties* self, Fraction* time_signature);
+void project_properties_setup (ProjectProperties* self, ModelProject* project, GtkBuilder* builder);
+gint project_properties_get_tempo (ProjectProperties* self);
+double project_properties_get_click_volume (ProjectProperties* self);
+void project_properties_get_time_signature (ProjectProperties* self, Fraction* result);
+gboolean project_properties_during_play (ProjectProperties* self);
+gboolean project_properties_during_record (ProjectProperties* self);
+static void project_properties_calculate_bpm (ProjectProperties* self);
+void project_properties_on_tap (ProjectProperties* self);
+ProjectProperties* project_properties_new (void);
+ProjectProperties* project_properties_construct (GType object_type);
+static void project_properties_finalize (GObject* obj);
+static int _vala_strcmp0 (const char * str1, const char * str2);
+
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
+}
+
+
+#line 20 "ProjectProperties.vala"
+void project_properties_setup (ProjectProperties* self, ModelProject* project, GtkBuilder* builder) {
+#line 93 "ProjectProperties.c"
+       GtkAdjustment* _tmp0_;
+       GtkAdjustment* _tmp1_;
+       GtkComboBox* _tmp2_;
+       GtkToggleButton* _tmp3_;
+       GtkToggleButton* _tmp4_;
+       Fraction _tmp6_;
+       Fraction _tmp5_ = {0};
+#line 20 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 20 "ProjectProperties.vala"
+       g_return_if_fail (MODEL_IS_PROJECT (project));
+#line 20 "ProjectProperties.vala"
+       g_return_if_fail (GTK_IS_BUILDER (builder));
+#line 21 "ProjectProperties.vala"
+       self->priv->tempo_adjustment = (_tmp0_ = _g_object_ref0 (GTK_ADJUSTMENT (gtk_builder_get_object (builder, "tempo_adjustment"))), _g_object_unref0 (self->priv->tempo_adjustment), _tmp0_);
+#line 22 "ProjectProperties.vala"
+       self->priv->volume_adjustment = (_tmp1_ = _g_object_ref0 (GTK_ADJUSTMENT (gtk_builder_get_object (builder, "volume_adjustment"))), _g_object_unref0 (self->priv->volume_adjustment), _tmp1_);
+#line 23 "ProjectProperties.vala"
+       self->priv->timesignature_combo = (_tmp2_ = _g_object_ref0 (GTK_COMBO_BOX (gtk_builder_get_object (builder, "timesignature_combo"))), _g_object_unref0 (self->priv->timesignature_combo), _tmp2_);
+#line 24 "ProjectProperties.vala"
+       self->priv->click_during_play = (_tmp3_ = _g_object_ref0 (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "playback"))), _g_object_unref0 (self->priv->click_during_play), _tmp3_);
+#line 25 "ProjectProperties.vala"
+       self->priv->click_during_record = (_tmp4_ = _g_object_ref0 (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "record"))), _g_object_unref0 (self->priv->click_during_record), _tmp4_);
+#line 26 "ProjectProperties.vala"
+       project_properties_set_tempo (self, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (project)));
+#line 27 "ProjectProperties.vala"
+       project_properties_set_volume (self, project->click_volume);
+#line 28 "ProjectProperties.vala"
+       project_properties_set_during_play (self, project->click_during_play);
+#line 29 "ProjectProperties.vala"
+       project_properties_set_during_record (self, project->click_during_record);
+#line 30 "ProjectProperties.vala"
+       project_properties_set_time_signature (self, (_tmp6_ = (model_tempo_information_get_time_signature (MODEL_TEMPO_INFORMATION (project), &_tmp5_), _tmp5_), &_tmp6_));
+#line 127 "ProjectProperties.c"
+}
+
+
+#line 33 "ProjectProperties.vala"
+void project_properties_set_tempo (ProjectProperties* self, gint tempo) {
+#line 33 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 34 "ProjectProperties.vala"
+       gtk_adjustment_set_value (self->priv->tempo_adjustment, (double) tempo);
+#line 137 "ProjectProperties.c"
+}
+
+
+#line 37 "ProjectProperties.vala"
+gint project_properties_get_tempo (ProjectProperties* self) {
+#line 143 "ProjectProperties.c"
+       gint result = 0;
+#line 37 "ProjectProperties.vala"
+       g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), 0);
+#line 147 "ProjectProperties.c"
+       result = (gint) gtk_adjustment_get_value (self->priv->tempo_adjustment);
+#line 38 "ProjectProperties.vala"
+       return result;
+#line 151 "ProjectProperties.c"
+}
+
+
+#line 41 "ProjectProperties.vala"
+void project_properties_set_volume (ProjectProperties* self, double volume) {
+#line 41 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 42 "ProjectProperties.vala"
+       gtk_adjustment_set_value (self->priv->volume_adjustment, volume);
+#line 161 "ProjectProperties.c"
+}
+
+
+#line 45 "ProjectProperties.vala"
+double project_properties_get_click_volume (ProjectProperties* self) {
+#line 167 "ProjectProperties.c"
+       double result = 0.0;
+#line 45 "ProjectProperties.vala"
+       g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), 0.0);
+#line 171 "ProjectProperties.c"
+       result = gtk_adjustment_get_value (self->priv->volume_adjustment);
+#line 46 "ProjectProperties.vala"
+       return result;
+#line 175 "ProjectProperties.c"
+}
+
+
+#line 49 "ProjectProperties.vala"
+void project_properties_get_time_signature (ProjectProperties* self, Fraction* result) {
+#line 181 "ProjectProperties.c"
+       Fraction _tmp0_ = {0};
+#line 49 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 185 "ProjectProperties.c"
+       *result = (fraction_init_from_string (&_tmp0_, gtk_combo_box_get_active_text (self->priv->timesignature_combo)), _tmp0_);
+#line 50 "ProjectProperties.vala"
+       return;
+#line 189 "ProjectProperties.c"
+}
+
+
+#line 53 "ProjectProperties.vala"
+static void project_properties_set_time_signature (ProjectProperties* self, Fraction* time_signature) {
+#line 195 "ProjectProperties.c"
+       char* sig;
+       GtkTreeIter iter = {0};
+#line 53 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 54 "ProjectProperties.vala"
+       sig = fraction_to_string (time_signature);
+#line 57 "ProjectProperties.vala"
+       if (gtk_tree_model_get_iter_first (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter)) {
+#line 204 "ProjectProperties.c"
+               {
+                       gboolean _tmp0_;
+#line 58 "ProjectProperties.vala"
+                       _tmp0_ = TRUE;
+#line 58 "ProjectProperties.vala"
+                       while (TRUE) {
+#line 211 "ProjectProperties.c"
+                               char* s;
+#line 58 "ProjectProperties.vala"
+                               if (!_tmp0_) {
+#line 65 "ProjectProperties.vala"
+                                       if (!gtk_tree_model_iter_next (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter)) {
+#line 65 "ProjectProperties.vala"
+                                               break;
+#line 219 "ProjectProperties.c"
+                                       }
+                               }
+#line 58 "ProjectProperties.vala"
+                               _tmp0_ = FALSE;
+#line 224 "ProjectProperties.c"
+                               s = NULL;
+#line 60 "ProjectProperties.vala"
+                               gtk_tree_model_get (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter, 0, &s, -1, -1);
+#line 61 "ProjectProperties.vala"
+                               if (_vala_strcmp0 (s, sig) == 0) {
+#line 62 "ProjectProperties.vala"
+                                       gtk_combo_box_set_active_iter (self->priv->timesignature_combo, &iter);
+#line 232 "ProjectProperties.c"
+                                       _g_free0 (s);
+                                       _g_free0 (sig);
+#line 63 "ProjectProperties.vala"
+                                       return;
+#line 237 "ProjectProperties.c"
+                               }
+                               _g_free0 (s);
+                       }
+               }
+       }
+       _g_free0 (sig);
+}
+
+
+#line 69 "ProjectProperties.vala"
+static void project_properties_set_during_play (ProjectProperties* self, gboolean active) {
+#line 69 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 70 "ProjectProperties.vala"
+       gtk_toggle_button_set_active (self->priv->click_during_play, active);
+#line 253 "ProjectProperties.c"
+}
+
+
+#line 73 "ProjectProperties.vala"
+gboolean project_properties_during_play (ProjectProperties* self) {
+#line 259 "ProjectProperties.c"
+       gboolean result = FALSE;
+#line 73 "ProjectProperties.vala"
+       g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), FALSE);
+#line 263 "ProjectProperties.c"
+       result = gtk_toggle_button_get_active (self->priv->click_during_play);
+#line 74 "ProjectProperties.vala"
+       return result;
+#line 267 "ProjectProperties.c"
+}
+
+
+#line 77 "ProjectProperties.vala"
+static void project_properties_set_during_record (ProjectProperties* self, gboolean active) {
+#line 77 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 78 "ProjectProperties.vala"
+       gtk_toggle_button_set_active (self->priv->click_during_record, active);
+#line 277 "ProjectProperties.c"
+}
+
+
+#line 81 "ProjectProperties.vala"
+gboolean project_properties_during_record (ProjectProperties* self) {
+#line 283 "ProjectProperties.c"
+       gboolean result = FALSE;
+#line 81 "ProjectProperties.vala"
+       g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), FALSE);
+#line 287 "ProjectProperties.c"
+       result = gtk_toggle_button_get_active (self->priv->click_during_record);
+#line 82 "ProjectProperties.vala"
+       return result;
+#line 291 "ProjectProperties.c"
+}
+
+
+#line 85 "ProjectProperties.vala"
+void project_properties_on_tap (ProjectProperties* self) {
+#line 297 "ProjectProperties.c"
+       GTimeVal time_val = {0};
+#line 85 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 301 "ProjectProperties.c"
+       g_get_current_time (&time_val);
+#line 87 "ProjectProperties.vala"
+       g_get_current_time (&time_val);
+#line 88 "ProjectProperties.vala"
+       self->priv->tap_time[self->priv->tap_index] = time_val;
+#line 89 "ProjectProperties.vala"
+       self->priv->tap_index = self->priv->tap_index + 1;
+#line 90 "ProjectProperties.vala"
+       if (self->priv->tap_index == PROJECT_PROPERTIES_NUMBER_OF_SAMPLES) {
+#line 91 "ProjectProperties.vala"
+               self->priv->sample_full = TRUE;
+#line 92 "ProjectProperties.vala"
+               self->priv->tap_index = 0;
+#line 315 "ProjectProperties.c"
+       }
+#line 94 "ProjectProperties.vala"
+       project_properties_calculate_bpm (self);
+#line 319 "ProjectProperties.c"
+}
+
+
+#line 97 "ProjectProperties.vala"
+static void project_properties_calculate_bpm (ProjectProperties* self) {
+#line 325 "ProjectProperties.c"
+       gint _tmp0_ = 0;
+       gint number_of_samples;
+       gint _tmp1_ = 0;
+       gint start_index;
+       double delta_sum;
+       double average;
+#line 97 "ProjectProperties.vala"
+       g_return_if_fail (IS_PROJECT_PROPERTIES (self));
+#line 98 "ProjectProperties.vala"
+       if (self->priv->sample_full) {
+#line 98 "ProjectProperties.vala"
+               _tmp0_ = PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
+#line 338 "ProjectProperties.c"
+       } else {
+#line 98 "ProjectProperties.vala"
+               _tmp0_ = self->priv->tap_index;
+#line 342 "ProjectProperties.c"
+       }
+#line 98 "ProjectProperties.vala"
+       number_of_samples = _tmp0_;
+#line 99 "ProjectProperties.vala"
+       if (number_of_samples < 2) {
+#line 100 "ProjectProperties.vala"
+               return;
+#line 350 "ProjectProperties.c"
+       }
+#line 103 "ProjectProperties.vala"
+       if (self->priv->sample_full) {
+#line 103 "ProjectProperties.vala"
+               _tmp1_ = self->priv->tap_index;
+#line 356 "ProjectProperties.c"
+       } else {
+#line 103 "ProjectProperties.vala"
+               _tmp1_ = 0;
+#line 360 "ProjectProperties.c"
+       }
+#line 103 "ProjectProperties.vala"
+       start_index = _tmp1_;
+#line 105 "ProjectProperties.vala"
+       delta_sum = (double) 0;
+#line 366 "ProjectProperties.c"
+       {
+               gint i;
+#line 106 "ProjectProperties.vala"
+               i = 0;
+#line 371 "ProjectProperties.c"
+               {
+                       gboolean _tmp2_;
+#line 106 "ProjectProperties.vala"
+                       _tmp2_ = TRUE;
+#line 106 "ProjectProperties.vala"
+                       while (TRUE) {
+#line 378 "ProjectProperties.c"
+                               gint current_index;
+                               gint next_index;
+                               glong difference;
+#line 106 "ProjectProperties.vala"
+                               if (!_tmp2_) {
+#line 106 "ProjectProperties.vala"
+                                       i = i + 1;
+#line 386 "ProjectProperties.c"
+                               }
+#line 106 "ProjectProperties.vala"
+                               _tmp2_ = FALSE;
+#line 106 "ProjectProperties.vala"
+                               if (!(i < (number_of_samples - 1))) {
+#line 106 "ProjectProperties.vala"
+                                       break;
+#line 394 "ProjectProperties.c"
+                               }
+#line 107 "ProjectProperties.vala"
+                               current_index = (i + start_index) % PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
+#line 108 "ProjectProperties.vala"
+                               next_index = (current_index + 1) % PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
+#line 110 "ProjectProperties.vala"
+                               difference = (((self->priv->tap_time[next_index].tv_sec - self->priv->tap_time[current_index].tv_sec) * PROJECT_PROPERTIES_G_USEC_PER_SEC) + self->priv->tap_time[next_index].tv_usec) - self->priv->tap_time[current_index].tv_usec;
+#line 113 "ProjectProperties.vala"
+                               if (difference > (5 * PROJECT_PROPERTIES_G_USEC_PER_SEC)) {
+#line 115 "ProjectProperties.vala"
+                                       self->priv->tap_time[0] = self->priv->tap_time[self->priv->tap_index - 1];
+#line 116 "ProjectProperties.vala"
+                                       self->priv->sample_full = FALSE;
+#line 117 "ProjectProperties.vala"
+                                       self->priv->tap_index = 1;
+#line 118 "ProjectProperties.vala"
+                                       return;
+#line 412 "ProjectProperties.c"
+                               }
+#line 120 "ProjectProperties.vala"
+                               delta_sum = delta_sum + ((double) difference);
+#line 416 "ProjectProperties.c"
+                       }
+               }
+       }
+#line 122 "ProjectProperties.vala"
+       average = (delta_sum / (number_of_samples - 1)) / PROJECT_PROPERTIES_G_USEC_PER_SEC;
+#line 123 "ProjectProperties.vala"
+       gtk_adjustment_set_value (self->priv->tempo_adjustment, (double) ((gint) (60.0 / average)));
+#line 424 "ProjectProperties.c"
+}
+
+
+#line 7 "ProjectProperties.vala"
+ProjectProperties* project_properties_construct (GType object_type) {
+#line 430 "ProjectProperties.c"
+       ProjectProperties * self;
+       self = g_object_newv (object_type, 0, NULL);
+       return self;
+}
+
+
+#line 7 "ProjectProperties.vala"
+ProjectProperties* project_properties_new (void) {
+#line 7 "ProjectProperties.vala"
+       return project_properties_construct (TYPE_PROJECT_PROPERTIES);
+#line 441 "ProjectProperties.c"
+}
+
+
+static void project_properties_class_init (ProjectPropertiesClass * klass) {
+       project_properties_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (ProjectPropertiesPrivate));
+       G_OBJECT_CLASS (klass)->finalize = project_properties_finalize;
+}
+
+
+static void project_properties_instance_init (ProjectProperties * self) {
+       self->priv = PROJECT_PROPERTIES_GET_PRIVATE (self);
+       self->priv->tap_time = g_new0 (GTimeVal, PROJECT_PROPERTIES_NUMBER_OF_SAMPLES);
+       self->priv->tap_time_length1 = PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
+       self->priv->_tap_time_size_ = self->priv->tap_time_length1;
+       self->priv->tap_index = 0;
+       self->priv->sample_full = FALSE;
+}
+
+
+static void project_properties_finalize (GObject* obj) {
+       ProjectProperties * self;
+       self = PROJECT_PROPERTIES (obj);
+       self->priv->tap_time = (g_free (self->priv->tap_time), NULL);
+       _g_object_unref0 (self->priv->tempo_adjustment);
+       _g_object_unref0 (self->priv->volume_adjustment);
+       _g_object_unref0 (self->priv->timesignature_combo);
+       _g_object_unref0 (self->priv->click_during_play);
+       _g_object_unref0 (self->priv->click_during_record);
+       G_OBJECT_CLASS (project_properties_parent_class)->finalize (obj);
+}
+
+
+GType project_properties_get_type (void) {
+       static volatile gsize project_properties_type_id__volatile = 0;
+       if (g_once_init_enter (&project_properties_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (ProjectPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) project_properties_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProjectProperties), 0, (GInstanceInitFunc) project_properties_instance_init, NULL };
+               GType project_properties_type_id;
+               project_properties_type_id = g_type_register_static (GTK_TYPE_DIALOG, "ProjectProperties", &g_define_type_info, 0);
+               g_once_init_leave (&project_properties_type_id__volatile, project_properties_type_id);
+       }
+       return project_properties_type_id__volatile;
+}
+
+
+static int _vala_strcmp0 (const char * str1, const char * str2) {
+       if (str1 == NULL) {
+               return -(str1 != str2);
+       }
+       if (str2 == NULL) {
+               return str1 != str2;
+       }
+       return strcmp (str1, str2);
+}
+
+
+
+