1 /* ProjectProperties.c generated by valac, the Vala compiler
2 * generated from ProjectProperties.vala, do not modify */
4 /* Copyright 2009-2010 Yorba Foundation
6 * This software is licensed under the GNU Lesser General Public License
7 * (version 2.1 or later). See the COPYING file in this distribution.
11 #include <glib-object.h>
20 #define TYPE_PROJECT_PROPERTIES (project_properties_get_type ())
21 #define PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROJECT_PROPERTIES, ProjectProperties))
22 #define PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass))
23 #define IS_PROJECT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROJECT_PROPERTIES))
24 #define IS_PROJECT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROJECT_PROPERTIES))
25 #define PROJECT_PROPERTIES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROJECT_PROPERTIES, ProjectPropertiesClass))
27 typedef struct _ProjectProperties ProjectProperties;
28 typedef struct _ProjectPropertiesClass ProjectPropertiesClass;
29 typedef struct _ProjectPropertiesPrivate ProjectPropertiesPrivate;
30 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
31 #define _g_free0(var) (var = (g_free (var), NULL))
33 struct _ProjectProperties {
34 GtkDialog parent_instance;
35 ProjectPropertiesPrivate * priv;
38 struct _ProjectPropertiesClass {
39 GtkDialogClass parent_class;
42 struct _ProjectPropertiesPrivate {
44 gint tap_time_length1;
48 GtkAdjustment* tempo_adjustment;
49 GtkAdjustment* volume_adjustment;
50 GtkComboBox* timesignature_combo;
51 GtkToggleButton* click_during_play;
52 GtkToggleButton* click_during_record;
56 static gpointer project_properties_parent_class = NULL;
58 GType project_properties_get_type (void);
59 #define PROJECT_PROPERTIES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROJECT_PROPERTIES, ProjectPropertiesPrivate))
61 PROJECT_PROPERTIES_DUMMY_PROPERTY
63 #define PROJECT_PROPERTIES_NUMBER_OF_SAMPLES 4
64 #define PROJECT_PROPERTIES_G_USEC_PER_SEC ((glong) 1000000)
65 void project_properties_set_tempo (ProjectProperties* self, gint tempo);
66 void project_properties_set_volume (ProjectProperties* self, double volume);
67 static void project_properties_set_during_play (ProjectProperties* self, gboolean active);
68 static void project_properties_set_during_record (ProjectProperties* self, gboolean active);
69 static void project_properties_set_time_signature (ProjectProperties* self, Fraction* time_signature);
70 void project_properties_setup (ProjectProperties* self, ModelProject* project, GtkBuilder* builder);
71 gint project_properties_get_tempo (ProjectProperties* self);
72 double project_properties_get_click_volume (ProjectProperties* self);
73 void project_properties_get_time_signature (ProjectProperties* self, Fraction* result);
74 gboolean project_properties_during_play (ProjectProperties* self);
75 gboolean project_properties_during_record (ProjectProperties* self);
76 static void project_properties_calculate_bpm (ProjectProperties* self);
77 void project_properties_on_tap (ProjectProperties* self);
78 ProjectProperties* project_properties_new (void);
79 ProjectProperties* project_properties_construct (GType object_type);
80 static void project_properties_finalize (GObject* obj);
81 static int _vala_strcmp0 (const char * str1, const char * str2);
85 static gpointer _g_object_ref0 (gpointer self) {
86 return self ? g_object_ref (self) : NULL;
90 #line 20 "ProjectProperties.vala"
91 void project_properties_setup (ProjectProperties* self, ModelProject* project, GtkBuilder* builder) {
92 #line 93 "ProjectProperties.c"
93 GtkAdjustment* _tmp0_;
94 GtkAdjustment* _tmp1_;
96 GtkToggleButton* _tmp3_;
97 GtkToggleButton* _tmp4_;
99 Fraction _tmp5_ = {0};
100 #line 20 "ProjectProperties.vala"
101 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
102 #line 20 "ProjectProperties.vala"
103 g_return_if_fail (MODEL_IS_PROJECT (project));
104 #line 20 "ProjectProperties.vala"
105 g_return_if_fail (GTK_IS_BUILDER (builder));
106 #line 21 "ProjectProperties.vala"
107 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_);
108 #line 22 "ProjectProperties.vala"
109 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_);
110 #line 23 "ProjectProperties.vala"
111 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_);
112 #line 24 "ProjectProperties.vala"
113 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_);
114 #line 25 "ProjectProperties.vala"
115 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_);
116 #line 26 "ProjectProperties.vala"
117 project_properties_set_tempo (self, model_tempo_information_get_bpm (MODEL_TEMPO_INFORMATION (project)));
118 #line 27 "ProjectProperties.vala"
119 project_properties_set_volume (self, project->click_volume);
120 #line 28 "ProjectProperties.vala"
121 project_properties_set_during_play (self, project->click_during_play);
122 #line 29 "ProjectProperties.vala"
123 project_properties_set_during_record (self, project->click_during_record);
124 #line 30 "ProjectProperties.vala"
125 project_properties_set_time_signature (self, (_tmp6_ = (model_tempo_information_get_time_signature (MODEL_TEMPO_INFORMATION (project), &_tmp5_), _tmp5_), &_tmp6_));
126 #line 127 "ProjectProperties.c"
130 #line 33 "ProjectProperties.vala"
131 void project_properties_set_tempo (ProjectProperties* self, gint tempo) {
132 #line 33 "ProjectProperties.vala"
133 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
134 #line 34 "ProjectProperties.vala"
135 gtk_adjustment_set_value (self->priv->tempo_adjustment, (double) tempo);
136 #line 137 "ProjectProperties.c"
140 #line 37 "ProjectProperties.vala"
141 gint project_properties_get_tempo (ProjectProperties* self) {
142 #line 143 "ProjectProperties.c"
144 #line 37 "ProjectProperties.vala"
145 g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), 0);
146 #line 147 "ProjectProperties.c"
147 result = (gint) gtk_adjustment_get_value (self->priv->tempo_adjustment);
148 #line 38 "ProjectProperties.vala"
150 #line 151 "ProjectProperties.c"
154 #line 41 "ProjectProperties.vala"
155 void project_properties_set_volume (ProjectProperties* self, double volume) {
156 #line 41 "ProjectProperties.vala"
157 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
158 #line 42 "ProjectProperties.vala"
159 gtk_adjustment_set_value (self->priv->volume_adjustment, volume);
160 #line 161 "ProjectProperties.c"
164 #line 45 "ProjectProperties.vala"
165 double project_properties_get_click_volume (ProjectProperties* self) {
166 #line 167 "ProjectProperties.c"
168 #line 45 "ProjectProperties.vala"
169 g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), 0.0);
170 #line 171 "ProjectProperties.c"
171 result = gtk_adjustment_get_value (self->priv->volume_adjustment);
172 #line 46 "ProjectProperties.vala"
174 #line 175 "ProjectProperties.c"
178 #line 49 "ProjectProperties.vala"
179 void project_properties_get_time_signature (ProjectProperties* self, Fraction* result) {
180 #line 181 "ProjectProperties.c"
181 Fraction _tmp0_ = {0};
182 #line 49 "ProjectProperties.vala"
183 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
184 #line 185 "ProjectProperties.c"
185 *result = (fraction_init_from_string (&_tmp0_, gtk_combo_box_get_active_text (self->priv->timesignature_combo)), _tmp0_);
186 #line 50 "ProjectProperties.vala"
188 #line 189 "ProjectProperties.c"
192 #line 53 "ProjectProperties.vala"
193 static void project_properties_set_time_signature (ProjectProperties* self, Fraction* time_signature) {
194 #line 195 "ProjectProperties.c"
196 GtkTreeIter iter = {0};
197 #line 53 "ProjectProperties.vala"
198 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
199 #line 54 "ProjectProperties.vala"
200 sig = fraction_to_string (time_signature);
201 #line 57 "ProjectProperties.vala"
202 if (gtk_tree_model_get_iter_first (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter)) {
203 #line 204 "ProjectProperties.c"
206 #line 58 "ProjectProperties.vala"
208 #line 58 "ProjectProperties.vala"
210 #line 211 "ProjectProperties.c"
212 #line 58 "ProjectProperties.vala"
214 #line 65 "ProjectProperties.vala"
215 if (!gtk_tree_model_iter_next (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter)) {
216 #line 65 "ProjectProperties.vala"
218 #line 219 "ProjectProperties.c"
221 #line 58 "ProjectProperties.vala"
223 #line 224 "ProjectProperties.c"
225 #line 60 "ProjectProperties.vala"
226 gtk_tree_model_get (gtk_combo_box_get_model (self->priv->timesignature_combo), &iter, 0, &s, -1, -1);
227 #line 61 "ProjectProperties.vala"
228 if (_vala_strcmp0 (s, sig) == 0) {
229 #line 62 "ProjectProperties.vala"
230 gtk_combo_box_set_active_iter (self->priv->timesignature_combo, &iter);
231 #line 232 "ProjectProperties.c"
234 #line 63 "ProjectProperties.vala"
236 #line 237 "ProjectProperties.c"
246 #line 69 "ProjectProperties.vala"
247 static void project_properties_set_during_play (ProjectProperties* self, gboolean active) {
248 #line 69 "ProjectProperties.vala"
249 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
250 #line 70 "ProjectProperties.vala"
251 gtk_toggle_button_set_active (self->priv->click_during_play, active);
252 #line 253 "ProjectProperties.c"
256 #line 73 "ProjectProperties.vala"
257 gboolean project_properties_during_play (ProjectProperties* self) {
258 #line 259 "ProjectProperties.c"
259 gboolean result = FALSE;
260 #line 73 "ProjectProperties.vala"
261 g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), FALSE);
262 #line 263 "ProjectProperties.c"
263 result = gtk_toggle_button_get_active (self->priv->click_during_play);
264 #line 74 "ProjectProperties.vala"
266 #line 267 "ProjectProperties.c"
270 #line 77 "ProjectProperties.vala"
271 static void project_properties_set_during_record (ProjectProperties* self, gboolean active) {
272 #line 77 "ProjectProperties.vala"
273 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
274 #line 78 "ProjectProperties.vala"
275 gtk_toggle_button_set_active (self->priv->click_during_record, active);
276 #line 277 "ProjectProperties.c"
280 #line 81 "ProjectProperties.vala"
281 gboolean project_properties_during_record (ProjectProperties* self) {
282 #line 283 "ProjectProperties.c"
283 gboolean result = FALSE;
284 #line 81 "ProjectProperties.vala"
285 g_return_val_if_fail (IS_PROJECT_PROPERTIES (self), FALSE);
286 #line 287 "ProjectProperties.c"
287 result = gtk_toggle_button_get_active (self->priv->click_during_record);
288 #line 82 "ProjectProperties.vala"
290 #line 291 "ProjectProperties.c"
294 #line 85 "ProjectProperties.vala"
295 void project_properties_on_tap (ProjectProperties* self) {
296 #line 297 "ProjectProperties.c"
297 GTimeVal time_val = {0};
298 #line 85 "ProjectProperties.vala"
299 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
300 #line 301 "ProjectProperties.c"
301 g_get_current_time (&time_val);
302 #line 87 "ProjectProperties.vala"
303 g_get_current_time (&time_val);
304 #line 88 "ProjectProperties.vala"
305 self->priv->tap_time[self->priv->tap_index] = time_val;
306 #line 89 "ProjectProperties.vala"
307 self->priv->tap_index = self->priv->tap_index + 1;
308 #line 90 "ProjectProperties.vala"
309 if (self->priv->tap_index == PROJECT_PROPERTIES_NUMBER_OF_SAMPLES) {
310 #line 91 "ProjectProperties.vala"
311 self->priv->sample_full = TRUE;
312 #line 92 "ProjectProperties.vala"
313 self->priv->tap_index = 0;
314 #line 315 "ProjectProperties.c"
316 #line 94 "ProjectProperties.vala"
317 project_properties_calculate_bpm (self);
318 #line 319 "ProjectProperties.c"
322 #line 97 "ProjectProperties.vala"
323 static void project_properties_calculate_bpm (ProjectProperties* self) {
324 #line 325 "ProjectProperties.c"
326 gint number_of_samples;
331 #line 97 "ProjectProperties.vala"
332 g_return_if_fail (IS_PROJECT_PROPERTIES (self));
333 #line 98 "ProjectProperties.vala"
334 if (self->priv->sample_full) {
335 #line 98 "ProjectProperties.vala"
336 _tmp0_ = PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
337 #line 338 "ProjectProperties.c"
339 #line 98 "ProjectProperties.vala"
340 _tmp0_ = self->priv->tap_index;
341 #line 342 "ProjectProperties.c"
343 #line 98 "ProjectProperties.vala"
344 number_of_samples = _tmp0_;
345 #line 99 "ProjectProperties.vala"
346 if (number_of_samples < 2) {
347 #line 100 "ProjectProperties.vala"
349 #line 350 "ProjectProperties.c"
351 #line 103 "ProjectProperties.vala"
352 if (self->priv->sample_full) {
353 #line 103 "ProjectProperties.vala"
354 _tmp1_ = self->priv->tap_index;
355 #line 356 "ProjectProperties.c"
357 #line 103 "ProjectProperties.vala"
359 #line 360 "ProjectProperties.c"
361 #line 103 "ProjectProperties.vala"
362 start_index = _tmp1_;
363 #line 105 "ProjectProperties.vala"
364 delta_sum = (double) 0;
365 #line 366 "ProjectProperties.c"
368 #line 106 "ProjectProperties.vala"
370 #line 371 "ProjectProperties.c"
373 #line 106 "ProjectProperties.vala"
375 #line 106 "ProjectProperties.vala"
377 #line 378 "ProjectProperties.c"
381 #line 106 "ProjectProperties.vala"
383 #line 106 "ProjectProperties.vala"
385 #line 386 "ProjectProperties.c"
387 #line 106 "ProjectProperties.vala"
389 #line 106 "ProjectProperties.vala"
390 if (!(i < (number_of_samples - 1))) {
391 #line 106 "ProjectProperties.vala"
393 #line 394 "ProjectProperties.c"
395 #line 107 "ProjectProperties.vala"
396 current_index = (i + start_index) % PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
397 #line 108 "ProjectProperties.vala"
398 next_index = (current_index + 1) % PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
399 #line 110 "ProjectProperties.vala"
400 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;
401 #line 113 "ProjectProperties.vala"
402 if (difference > (5 * PROJECT_PROPERTIES_G_USEC_PER_SEC)) {
403 #line 115 "ProjectProperties.vala"
404 self->priv->tap_time[0] = self->priv->tap_time[self->priv->tap_index - 1];
405 #line 116 "ProjectProperties.vala"
406 self->priv->sample_full = FALSE;
407 #line 117 "ProjectProperties.vala"
408 self->priv->tap_index = 1;
409 #line 118 "ProjectProperties.vala"
411 #line 412 "ProjectProperties.c"
413 #line 120 "ProjectProperties.vala"
414 delta_sum = delta_sum + ((double) difference);
415 #line 416 "ProjectProperties.c"
419 #line 122 "ProjectProperties.vala"
420 average = (delta_sum / (number_of_samples - 1)) / PROJECT_PROPERTIES_G_USEC_PER_SEC;
421 #line 123 "ProjectProperties.vala"
422 gtk_adjustment_set_value (self->priv->tempo_adjustment, (double) ((gint) (60.0 / average)));
423 #line 424 "ProjectProperties.c"
427 #line 7 "ProjectProperties.vala"
428 ProjectProperties* project_properties_construct (GType object_type) {
429 #line 430 "ProjectProperties.c"
430 ProjectProperties * self;
431 self = g_object_newv (object_type, 0, NULL);
436 #line 7 "ProjectProperties.vala"
437 ProjectProperties* project_properties_new (void) {
438 #line 7 "ProjectProperties.vala"
439 return project_properties_construct (TYPE_PROJECT_PROPERTIES);
440 #line 441 "ProjectProperties.c"
444 static void project_properties_class_init (ProjectPropertiesClass * klass) {
445 project_properties_parent_class = g_type_class_peek_parent (klass);
446 g_type_class_add_private (klass, sizeof (ProjectPropertiesPrivate));
447 G_OBJECT_CLASS (klass)->finalize = project_properties_finalize;
451 static void project_properties_instance_init (ProjectProperties * self) {
452 self->priv = PROJECT_PROPERTIES_GET_PRIVATE (self);
453 self->priv->tap_time = g_new0 (GTimeVal, PROJECT_PROPERTIES_NUMBER_OF_SAMPLES);
454 self->priv->tap_time_length1 = PROJECT_PROPERTIES_NUMBER_OF_SAMPLES;
455 self->priv->_tap_time_size_ = self->priv->tap_time_length1;
456 self->priv->tap_index = 0;
457 self->priv->sample_full = FALSE;
461 static void project_properties_finalize (GObject* obj) {
462 ProjectProperties * self;
463 self = PROJECT_PROPERTIES (obj);
464 self->priv->tap_time = (g_free (self->priv->tap_time), NULL);
465 _g_object_unref0 (self->priv->tempo_adjustment);
466 _g_object_unref0 (self->priv->volume_adjustment);
467 _g_object_unref0 (self->priv->timesignature_combo);
468 _g_object_unref0 (self->priv->click_during_play);
469 _g_object_unref0 (self->priv->click_during_record);
470 G_OBJECT_CLASS (project_properties_parent_class)->finalize (obj);
474 GType project_properties_get_type (void) {
475 static volatile gsize project_properties_type_id__volatile = 0;
476 if (g_once_init_enter (&project_properties_type_id__volatile)) {
477 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 };
478 GType project_properties_type_id;
479 project_properties_type_id = g_type_register_static (GTK_TYPE_DIALOG, "ProjectProperties", &g_define_type_info, 0);
480 g_once_init_leave (&project_properties_type_id__volatile, project_properties_type_id);
482 return project_properties_type_id__volatile;
486 static int _vala_strcmp0 (const char * str1, const char * str2) {
488 return -(str1 != str2);
493 return strcmp (str1, str2);