[SCM] gsequencer/upstream: enhanced editor
jkraehemann-guest at users.alioth.debian.org
jkraehemann-guest at users.alioth.debian.org
Sun Jun 14 16:07:05 UTC 2015
The following commit has been merged in the upstream branch:
commit 519dbb8aa91754efc65d8ac006351b5b6a6fdb69
Author: Joël Krähemann <weedlight at gmail.com>
Date: Tue Jun 9 23:45:09 2015 +0200
enhanced editor
diff --git a/.deps/ags-ags_navigation.Po b/.deps/ags-ags_navigation.Po
index 45a0810..ee434c4 100644
--- a/.deps/ags-ags_navigation.Po
+++ b/.deps/ags-ags_navigation.Po
@@ -622,11 +622,16 @@ ags-ags_navigation.o: src/ags/X/ags_navigation.c \
/usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \
src/ags/thread/ags_timestamp_thread.h src/ags/audio/ags_timestamp.h \
src/ags/audio/ags_note.h src/ags/X/ags_navigation_callbacks.h \
- src/ags-lib/object/ags_connectable.h src/ags/X/ags_editor.h \
- src/ags/audio/ags_audio.h src/ags/X/ags_machine.h \
+ src/ags-lib/object/ags_connectable.h src/ags/X/ags_window.h \
+ src/ags/X/ags_menu_bar.h src/ags/X/ags_machine.h \
+ src/ags/audio/ags_audio.h src/ags/X/ags_editor.h \
src/ags/X/editor/ags_toolbar.h src/ags/X/editor/ags_machine_selector.h \
src/ags/X/editor/ags_notebook.h src/ags/X/editor/ags_meter.h \
- src/ags/X/editor/ags_note_edit.h src/ags/widget/ags_ruler.h
+ src/ags/X/editor/ags_note_edit.h src/ags/widget/ags_ruler.h \
+ src/ags/X/ags_export_window.h src/ags/X/ags_preferences.h \
+ src/ags/X/ags_generic_preferences.h src/ags/X/ags_audio_preferences.h \
+ src/ags/X/ags_performance_preferences.h \
+ src/ags/X/ags_server_preferences.h
/usr/include/stdc-predef.h:
@@ -2072,12 +2077,16 @@ src/ags/X/ags_navigation_callbacks.h:
src/ags-lib/object/ags_connectable.h:
-src/ags/X/ags_editor.h:
+src/ags/X/ags_window.h:
-src/ags/audio/ags_audio.h:
+src/ags/X/ags_menu_bar.h:
src/ags/X/ags_machine.h:
+src/ags/audio/ags_audio.h:
+
+src/ags/X/ags_editor.h:
+
src/ags/X/editor/ags_toolbar.h:
src/ags/X/editor/ags_machine_selector.h:
@@ -2089,3 +2098,15 @@ src/ags/X/editor/ags_meter.h:
src/ags/X/editor/ags_note_edit.h:
src/ags/widget/ags_ruler.h:
+
+src/ags/X/ags_export_window.h:
+
+src/ags/X/ags_preferences.h:
+
+src/ags/X/ags_generic_preferences.h:
+
+src/ags/X/ags_audio_preferences.h:
+
+src/ags/X/ags_performance_preferences.h:
+
+src/ags/X/ags_server_preferences.h:
diff --git a/src/ags/X/ags_export_window.c b/src/ags/X/ags_export_window.c
index 83c7c13..97bd8d3 100644
--- a/src/ags/X/ags_export_window.c
+++ b/src/ags/X/ags_export_window.c
@@ -304,7 +304,8 @@ ags_export_window_init(AgsExportWindow *export_window)
GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND,
0, 0);
- export_window->duration = (GtkLabel *) gtk_label_new(ags_navigation_tact_to_time_string(0.0));
+ export_window->duration = (GtkLabel *) gtk_label_new(ags_navigation_tact_to_time_string(0.0,
+ AGS_DEVOUT_DEFAULT_BPM));
gtk_box_pack_start(GTK_BOX(hbox),
GTK_WIDGET(export_window->duration),
FALSE, FALSE,
diff --git a/src/ags/X/ags_export_window_callbacks.c b/src/ags/X/ags_export_window_callbacks.c
index 3812c0f..7a968b3 100644
--- a/src/ags/X/ags_export_window_callbacks.c
+++ b/src/ags/X/ags_export_window_callbacks.c
@@ -64,8 +64,13 @@ void
ags_export_window_tact_callback(GtkWidget *spin_button,
AgsExportWindow *export_window)
{
+ AgsWindow *window;
+
+ window = AGS_MAIN(export_window->ags_main)->window;
+
gtk_label_set_text(export_window->duration,
- ags_navigation_tact_to_time_string(gtk_spin_button_get_value(export_window->tact)));
+ ags_navigation_tact_to_time_string(gtk_spin_button_get_value(export_window->tact),
+ window->navigation->bpm->adjustment->value));
}
void
diff --git a/src/ags/X/ags_navigation.c b/src/ags/X/ags_navigation.c
index 81e280e..efc5233 100644
--- a/src/ags/X/ags_navigation.c
+++ b/src/ags/X/ags_navigation.c
@@ -21,6 +21,7 @@
#include <ags-lib/object/ags_connectable.h>
+#include <ags/X/ags_window.h>
#include <ags/X/ags_editor.h>
void ags_navigation_class_init(AgsNavigationClass *navigation);
@@ -427,19 +428,23 @@ ags_navigation_show(GtkWidget *widget)
void
ags_navigation_real_change_position(AgsNavigation *navigation,
- gdouble tact)
+ gdouble tact_counter)
{
- gchar *timestr, *str;
+ AgsWindow *window;
+ AgsEditor *editor;
+ double tact_factor, zoom_factor;
+ double tact;
- g_object_get(navigation->duration_time,
- "label\0", &str,
- NULL);
- ags_navigation_update_time_string(tact,
- str);
- // g_object_set(navigation->duration_time,
- // "label\0", str,
- // NULL);
- // gtk_widget_show_all(navigation->duration_time);
+ window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
+ editor = window->editor;
+
+ zoom_factor = 0.25;
+
+ tact_factor = exp2(8.0 - (double) gtk_combo_box_get_active((GtkComboBox *) editor->toolbar->zoom));
+ tact = exp2((double) gtk_combo_box_get_active((GtkComboBox *) editor->toolbar->zoom) - 4.0);
+
+ gtk_adjustment_set_value(GTK_RANGE(editor->note_edit->hscrollbar)->adjustment,
+ tact_counter * window->editor->note_edit->control_current.control_width * (16.0 / tact_factor));
}
/**
@@ -476,7 +481,8 @@ ags_navigation_change_position(AgsNavigation *navigation,
* Since: 0.4
*/
gchar*
-ags_navigation_tact_to_time_string(gdouble tact)
+ags_navigation_tact_to_time_string(gdouble tact,
+ gdouble bpm)
{
static gdouble delay_min, delay_sec, delay_hsec;
static gboolean initialized = FALSE;
@@ -485,7 +491,7 @@ ags_navigation_tact_to_time_string(gdouble tact)
guint min, sec, hsec;
if(!initialized){
- delay_min = AGS_DEVOUT_DEFAULT_BPM;
+ delay_min = bpm;
delay_sec = delay_min / 60.0;
delay_hsec = delay_sec / 100.0;
diff --git a/src/ags/X/ags_navigation.h b/src/ags/X/ags_navigation.h
index a9ca171..59fbfb7 100644
--- a/src/ags/X/ags_navigation.h
+++ b/src/ags/X/ags_navigation.h
@@ -52,7 +52,8 @@ struct _AgsNavigation
guint flags;
AgsDevout *devout;
-
+ guint start_tact;
+
GtkToggleButton *expander;
GtkSpinButton *bpm;
@@ -89,7 +90,9 @@ struct _AgsNavigationClass
GType ags_navigation_get_type(void);
-gchar* ags_navigation_tact_to_time_string(gdouble tact);
+gchar* ags_navigation_tact_to_time_string(gdouble tact,
+ gdouble bpm);
+
void ags_navigation_update_time_string(double tact,
gchar *time_string);
diff --git a/src/ags/X/ags_navigation_callbacks.c b/src/ags/X/ags_navigation_callbacks.c
index 1cd3d39..0b78fb5 100644
--- a/src/ags/X/ags_navigation_callbacks.c
+++ b/src/ags/X/ags_navigation_callbacks.c
@@ -132,22 +132,33 @@ ags_navigation_play_callback(GtkWidget *widget,
AgsWindow *window;
AgsMachine *machine;
GList *machines, *machines_start;
-
+ gboolean initialized_time;
+
if((AGS_NAVIGATION_BLOCK_PLAY & (navigation->flags)) != 0){
return;
}
window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
+
machines_start =
machines = gtk_container_get_children(GTK_CONTAINER(window->machines));
-
+
+ initialized_time = FALSE;
+
while(machines != NULL){
machine = AGS_MACHINE(machines->data);
if((AGS_MACHINE_IS_SEQUENCER & (machine->flags)) != 0 ||
(AGS_MACHINE_IS_SYNTHESIZER & (machine->flags)) != 0){
+#ifdef AGS_DEBUG
printf("found machine to play!\n\0");
-
+#endif
+
+ if(!initialized_time){
+ initialized_time = TRUE;
+ navigation->start_tact = window->devout->tact_counter;
+ }
+
ags_machine_set_run(machine,
TRUE);
}
diff --git a/src/ags/X/editor/ags_toolbar_callbacks.c b/src/ags/X/editor/ags_toolbar_callbacks.c
index cbf39d5..ed9f1c3 100644
--- a/src/ags/X/editor/ags_toolbar_callbacks.c
+++ b/src/ags/X/editor/ags_toolbar_callbacks.c
@@ -294,6 +294,10 @@ ags_toolbar_zoom_callback(GtkComboBox *combo_box, AgsToolbar *toolbar)
GtkWidget *widget;
GtkAdjustment *adjustment;
double zoom, zoom_old;
+ double tact_factor, zoom_factor;
+ double tact;
+ gdouble old_upper, new_upper;
+ gdouble position;
guint history;
editor = (AgsEditor *) gtk_widget_get_ancestor((GtkWidget *) toolbar, AGS_TYPE_EDITOR);
@@ -303,12 +307,25 @@ ags_toolbar_zoom_callback(GtkComboBox *combo_box, AgsToolbar *toolbar)
zoom = exp2((double) history - 4.0);
zoom_old = exp2((double) toolbar->zoom_history - 4.0);
+ zoom_factor = 0.25;
+
+ tact_factor = exp2(8.0 - (double) gtk_combo_box_get_active((GtkComboBox *) editor->toolbar->zoom));
+ tact = exp2((double) gtk_combo_box_get_active((GtkComboBox *) editor->toolbar->zoom) - 4.0);
+
toolbar->zoom_history = history;
+ position = GTK_RANGE(editor->note_edit->hscrollbar)->adjustment->value;
+ old_upper = GTK_RANGE(editor->note_edit->hscrollbar)->adjustment->upper;
+
editor->note_edit->flags |= AGS_NOTE_EDIT_RESETING_HORIZONTALLY;
ags_note_edit_reset_horizontally(editor->note_edit, AGS_NOTE_EDIT_RESET_HSCROLLBAR |
AGS_NOTE_EDIT_RESET_WIDTH);
editor->note_edit->flags &= (~AGS_NOTE_EDIT_RESETING_HORIZONTALLY);
+
+ new_upper = GTK_RANGE(editor->note_edit->hscrollbar)->adjustment->upper;
+
+ gtk_adjustment_set_value(GTK_RANGE(editor->note_edit->hscrollbar)->adjustment,
+ position / old_upper * new_upper);
}
void
diff --git a/src/ags/audio/ags_devout.c b/src/ags/audio/ags_devout.c
index dfee153..eaf808f 100644
--- a/src/ags/audio/ags_devout.c
+++ b/src/ags/audio/ags_devout.c
@@ -475,6 +475,7 @@ ags_devout_init(AgsDevout *devout)
}
/* */
+ devout->tact_counter = 0.0;
devout->delay_counter = 0;
devout->tic_counter = 0;
@@ -1382,6 +1383,7 @@ ags_devout_alsa_init(AgsDevout *devout,
/* */
devout->out.alsa.handle = handle;
+ devout->tact_counter = 0.0;
devout->delay_counter = 0.0;
devout->tic_counter = 0;
@@ -1565,6 +1567,7 @@ ags_devout_alsa_play(AgsDevout *devout,
/* delay */
devout->delay_counter = 0.0;
+ devout->tact_counter += 1.0;
}
/* tic */
diff --git a/src/ags/audio/ags_devout.h b/src/ags/audio/ags_devout.h
index e1757ba..529e9ed 100644
--- a/src/ags/audio/ags_devout.h
+++ b/src/ags/audio/ags_devout.h
@@ -135,6 +135,7 @@ struct _AgsDevout
gdouble *delay; // count of tics within buffer size
guint *attack; // where currently tic resides in the stream's offset, measured in 1/64 of bpm
+ gdouble tact_counter;
gdouble delay_counter; // next time attack changeing when delay_counter == delay
guint tic_counter; // in the range of default period
diff --git a/src/ags/audio/task/ags_display_tact.c b/src/ags/audio/task/ags_display_tact.c
index 1c2cdfd..45cf327 100644
--- a/src/ags/audio/task/ags_display_tact.c
+++ b/src/ags/audio/task/ags_display_tact.c
@@ -145,17 +145,23 @@ void
ags_display_tact_launch(AgsTask *task)
{
AgsDisplayTact *display_tact;
+ AgsWindow *window;
AgsNavigation *navigation;
gchar *timestr;
+ gdouble tact;
display_tact = AGS_DISPLAY_TACT(task);
navigation = AGS_NAVIGATION(display_tact->navigation);
-
+ window = gtk_widget_get_ancestor(navigation,
+ AGS_TYPE_WINDOW);
+
// gtk_adjustment_set_value(navigation->position_tact->adjustment,
// navigation->position_tact->adjustment->value + (exp2(-4.0)));
- timestr = ags_navigation_tact_to_time_string(navigation->position_tact->adjustment->value);
+ tact = window->devout->tact_counter - navigation->start_tact;
+ timestr = ags_navigation_tact_to_time_string(tact,
+ navigation->bpm->adjustment->value);
gtk_label_set_text(navigation->duration_time, timestr);
g_free(timestr);
--
gsequencer packaging
More information about the pkg-multimedia-commits
mailing list