aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-11 06:08:43 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-11 06:08:43 +0200
commite41a22d50aaa100638177fe882589bb54434d1ad (patch)
treea140a230b4a65efca15a7e80059e1c53563eea09 /src/main.c
parentd0860cb211302c0c214b3b67296f22f78ea06085 (diff)
downloadexperiment-player-e41a22d50aaa100638177fe882589bb54434d1ad.tar.gz
integrated experiment navigator into UI
* transcript widget placeholder * connected time-selected signal, so when the new widget is properly implemented, everything should fall in place... * implemented "Transcript Open..." using experiment-navigator API * had to manually edit default.ui to include a property Glade-3 for Windows introduced!!!
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c57
1 files changed, 51 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index 30c8556..1b1b69a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -25,14 +25,15 @@
static inline void button_image_set_from_stock(GtkButton *widget, const gchar *name);
-GtkWidget *player_window;
-
GtkWidget *player_widget,
*controls_hbox,
*scale_widget,
*playpause_button,
*volume_button;
+GtkWidget *navigator_scrolledwindow,
+ *navigator_widget;
+
gchar *current_filename = NULL;
/*
@@ -88,9 +89,31 @@ file_menu_openmovie_item_activate_cb(GtkWidget *widget,
}
void
-file_menu_opentranscript_item_activate_cb(GtkWidget *widget, gpointer data)
+file_menu_opentranscript_item_activate_cb(GtkWidget *widget,
+ gpointer data __attribute__((unused)))
{
- /* TODO */
+ GtkWidget *dialog;
+
+ dialog = gtk_file_chooser_dialog_new("Open Transcript...", GTK_WINDOW(widget),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+ gchar *file;
+
+ file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+
+ if (load_transcript_file(file)) {
+ /* TODO */
+ }
+ refresh_quickopen_menu(GTK_MENU(quickopen_menu));
+
+ g_free(file);
+ }
+
+ gtk_widget_destroy(dialog);
}
void
@@ -117,6 +140,13 @@ help_menu_manual_item_activate_cb(GtkWidget *widget __attribute__((unused)),
}
void
+navigator_widget_time_selected_cb(GtkWidget *widget, gint64 selected_time,
+ gpointer user_data __attribute__((unused)))
+{
+ gtk_vlc_player_seek(GTK_VLC_PLAYER(widget), selected_time);
+}
+
+void
generic_quit_cb(GtkWidget *widget __attribute__((unused)),
gpointer data __attribute__((unused)))
{
@@ -142,6 +172,7 @@ load_media_file(const gchar *file)
current_filename = g_strdup(file);
gtk_widget_set_sensitive(controls_hbox, TRUE);
+ gtk_widget_set_sensitive(navigator_scrolledwindow, TRUE);
button_image_set_from_stock(GTK_BUTTON(playpause_button),
"gtk-media-play");
@@ -149,6 +180,19 @@ load_media_file(const gchar *file)
return FALSE;
}
+gboolean
+load_transcript_file(const gchar *file)
+{
+ gboolean res;
+
+ /* FIXME */
+ res = gtk_experiment_navigator_load_filename(GTK_EXPERIMENT_NAVIGATOR(navigator_widget), file);
+ if (res)
+ return TRUE;
+
+ return FALSE;
+}
+
void
show_message_dialog_gerror(GError *err)
{
@@ -195,8 +239,6 @@ main(int argc, char *argv[])
gtk_builder_add_from_file(builder, DEFAULT_UI, NULL);
gtk_builder_connect_signals(builder, NULL);
- BUILDER_INIT(builder, player_window);
-
BUILDER_INIT(builder, player_widget);
BUILDER_INIT(builder, controls_hbox);
BUILDER_INIT(builder, scale_widget);
@@ -206,6 +248,9 @@ main(int argc, char *argv[])
BUILDER_INIT(builder, quickopen_menu);
BUILDER_INIT(builder, quickopen_menu_empty_item);
+ BUILDER_INIT(builder, navigator_scrolledwindow);
+ BUILDER_INIT(builder, navigator_widget);
+
g_object_unref(G_OBJECT(builder));
/* connect timeline and volume button with player widget */