diff -ur ../glame-1.0.0.orig/src/gui/libgtkwaveform/gtkwaveview.c ./src/gui/libgtkwaveform/gtkwaveview.c --- ../glame-1.0.0.orig/src/gui/libgtkwaveform/gtkwaveview.c Sat Apr 12 08:07:08 2003 +++ ./src/gui/libgtkwaveform/gtkwaveview.c Mon May 5 00:44:59 2003 @@ -1176,14 +1176,34 @@ if (waveview->wavebuffer == NULL) return TRUE; - if (event->button != 1) + if ((event->button != 1) && (event->button != 2) && (event->button != 3)) return FALSE; gtk_grab_add (widget); frame = calc_frame_pos_win (waveview, event->x); FLAGS_CLEAR (waveview->drag_flags); - if (is_near_marker (waveview, event->x) && + if (event->button == 3) + { + if (is_near_left_selection (waveview, event->x)) + waveview->drag_start_point = waveview->select_right; + else + waveview->drag_start_point = waveview->select_left; + FLAG_SET (waveview->drag_flags, FLAG_DID_MOVE); + gtk_wave_view_update_selection (waveview, waveview->drag_start_point, + frame); + } + else if (event->button == 1) + { + if (is_near_right_selection (waveview, event->x)) + waveview->drag_start_point = waveview->select_left; + else + waveview->drag_start_point = waveview->select_right; + FLAG_SET (waveview->drag_flags, FLAG_DID_MOVE); + gtk_wave_view_update_selection (waveview, waveview->drag_start_point, + frame); + } + else if (is_near_marker (waveview, event->x) && !FLAG_IS_SET (event->state, GDK_CONTROL_MASK)) { FLAG_SET (waveview->drag_flags, FLAG_DRAGGING_MARKER); diff -ur ../glame-1.0.0.orig/src/gui/waveeditgui.c ./src/gui/waveeditgui.c --- ../glame-1.0.0.orig/src/gui/waveeditgui.c Mon Apr 14 14:05:22 2003 +++ ./src/gui/waveeditgui.c Mon May 5 00:56:35 2003 @@ -736,6 +736,41 @@ play(waveview, start, end, start, TRUE, FALSE, FALSE, FALSE); } +static void playend_cb(GtkWidget *widget, GtkWaveView *waveview) +{ + GtkWaveBuffer *wavebuffer = gtk_wave_view_get_buffer(waveview); + gint32 start, end, rate; + + /* Play the last 1/2 second of the current selection */ + gtk_wave_view_get_selection(waveview, &start, &end); + end = start + end; + if (end - start <= 0) { + gnome_dialog_run_and_close(GNOME_DIALOG(gnome_error_dialog( + _("Nothing selected")))); + return; + } + rate = gtk_wave_buffer_get_rate(wavebuffer); + start = end - (rate/2); + play(waveview, start, end, start, TRUE, FALSE, FALSE, FALSE); +} + +static void save_subtitle(GtkWidget *bla, GtkWaveView *waveview) +{ + GtkWaveBuffer *wavebuffer = gtk_wave_view_get_buffer(waveview); + gint32 start, end, rate; + char cmd[1000]; + + gtk_wave_view_get_selection(waveview, &start, &end); + end = start + end; + if (end - start <= 0) { + return; + } else { + rate = gtk_wave_buffer_get_rate(wavebuffer); + snprintf(cmd, 700, "/bin/echo \"insert into times values (NULL, '%.2f', '%.2f', NULL);\" | mysql script", (double)start/rate, (double)end/rate); + system(cmd); + } +} + static void playall_cb(GtkWidget *widget, GtkWaveView *waveview) { GtkWaveBuffer *wavebuffer = gtk_wave_view_get_buffer(waveview); @@ -1489,6 +1524,14 @@ _("Play/Record"), _("Play/Record"), _("Play/Record"), gnome_stock_new_with_icon(GNOME_STOCK_PIXMAP_FORWARD), playrecordtoolbar_cb, window->waveview); + gtk_toolbar_append_item(GTK_TOOLBAR(window->toolbar), + _("Play end"), _("Play end"), _("Play end"), + gnome_stock_new_with_icon(GNOME_STOCK_PIXMAP_LAST), + playend_cb, window->waveview); + gtk_toolbar_append_item(GTK_TOOLBAR(window->toolbar), + _("Output timings"), _("Output timings"), _("Output timings"), + gnome_stock_new_with_icon(GNOME_STOCK_PIXMAP_PROPERTIES), + save_subtitle, window->waveview); /* Keep last. */ gtk_toolbar_append_space(GTK_TOOLBAR(window->toolbar)); gtk_toolbar_append_item(GTK_TOOLBAR(window->toolbar),