examples: Add a load project option to ges-ui

This commit is contained in:
Mathieu Duponchelle 2011-08-28 03:58:21 +02:00 committed by Thibault Saunier
parent 4715b51eb1
commit 4eae7e542d
2 changed files with 100 additions and 11 deletions

View file

@ -112,6 +112,7 @@ gboolean window_delete_event_cb (GtkObject * window, GdkEvent * event,
void new_activate_cb (GtkMenuItem * item, App * app);
void open_activate_cb (GtkMenuItem * item, App * app);
void save_as_activate_cb (GtkMenuItem * item, App * app);
void launch_pitivi_project_activate_cb (GtkMenuItem * item, App * app);
void quit_item_activate_cb (GtkMenuItem * item, App * app);
void delete_activate_cb (GtkAction * item, App * app);
void play_activate_cb (GtkAction * item, App * app);
@ -451,6 +452,24 @@ pipeline_state_changed_cb (App * app)
gtk_widget_set_sensitive (app->properties, !playing_or_paused);
}
static void
project_bus_message_cb (GstBus * bus, GstMessage * message,
GMainLoop * mainloop)
{
switch (GST_MESSAGE_TYPE (message)) {
case GST_MESSAGE_ERROR:
g_printerr ("ERROR\n");
g_main_loop_quit (mainloop);
break;
case GST_MESSAGE_EOS:
g_printerr ("Done\n");
g_main_loop_quit (mainloop);
break;
default:
break;
}
}
static void
bus_message_cb (GstBus * bus, GstMessage * message, App * app)
{
@ -1148,6 +1167,33 @@ app_add_file (App * app, gchar * uri)
obj, -1);
}
static void
app_launch_project (App * app, gchar * uri)
{
GESTimeline *timeline;
GMainLoop *mainloop;
GESTimelinePipeline *pipeline;
GstBus *bus;
GESFormatter *formatter;
uri = g_strsplit (uri, "//", 2)[1];
printf ("we will launch this uri : %s\n", uri);
formatter = GES_FORMATTER (ges_pitivi_formatter_new ());
timeline = ges_timeline_new ();
pipeline = ges_timeline_pipeline_new ();
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
mainloop = g_main_loop_new (NULL, FALSE);
ges_timeline_pipeline_add_timeline (pipeline, timeline);
ges_formatter_load_from_uri (formatter, timeline, uri);
ges_timeline_pipeline_set_mode (pipeline, TIMELINE_MODE_PREVIEW_VIDEO);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
gst_bus_add_signal_watch (bus);
g_signal_connect (bus, "message", G_CALLBACK (project_bus_message_cb),
mainloop);
g_main_loop_run (mainloop);
}
static void
app_add_title (App * app)
{
@ -1371,6 +1417,35 @@ new_activate_cb (GtkMenuItem * item, App * app)
app_new ();
}
void
launch_pitivi_project_activate_cb (GtkMenuItem * item, App * app)
{
GtkFileChooserDialog *dlg;
GtkFileFilter *filter;
GST_DEBUG ("add file signal handler");
filter = gtk_file_filter_new ();
gtk_file_filter_set_name (filter, "pitivi projects");
gtk_file_filter_add_pattern (filter, "*.xptv");
dlg = (GtkFileChooserDialog *)
gtk_file_chooser_dialog_new ("Preview Project...",
GTK_WINDOW (app->main_window),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dlg), filter);
g_object_set (G_OBJECT (dlg), "select-multiple", FALSE, NULL);
if (gtk_dialog_run ((GtkDialog *) dlg) == GTK_RESPONSE_OK) {
gchar *uri;
uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dlg));
gtk_widget_destroy ((GtkWidget *) dlg);
app_launch_project (app, uri);
}
}
void
open_activate_cb (GtkMenuItem * item, App * app)
{

View file

@ -90,6 +90,16 @@
<signal name="activate" handler="save_as_activate_cb"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="launch_pitivi_project">
<property name="label" translatable="yes">Preview Pitivi Project</property>
<property name="visible">True</property>
<property name="tooltip_text" translatable="yes">Launches a .xptv project</property>
<property name="image">image1</property>
<property name="use_stock">False</property>
<signal name="activate" handler="launch_pitivi_project_activate_cb"/>
</object>
</child>
</object>
</child>
</object>
@ -271,8 +281,8 @@
<child>
<object class="GtkToolButton" id="play_button">
<property name="visible">True</property>
<property name="related_action">play</property>
<property name="use_action_appearance">True</property>
<property name="related_action">play</property>
<property name="label" translatable="yes">toolbutton1</property>
<property name="use_underline">True</property>
</object>
@ -284,8 +294,8 @@
<child>
<object class="GtkToolButton" id="toolbutton6">
<property name="visible">True</property>
<property name="related_action">stop</property>
<property name="use_action_appearance">True</property>
<property name="related_action">stop</property>
<property name="label" translatable="yes">toolbutton6</property>
<property name="use_underline">True</property>
</object>
@ -306,8 +316,8 @@
<child>
<object class="GtkToolButton" id="delete_button">
<property name="visible">True</property>
<property name="related_action">delete</property>
<property name="use_action_appearance">True</property>
<property name="related_action">delete</property>
<property name="label" translatable="yes">Delete</property>
<property name="use_underline">True</property>
</object>
@ -328,8 +338,8 @@
<child>
<object class="GtkToolButton" id="add_button">
<property name="visible">True</property>
<property name="related_action">add_file</property>
<property name="use_action_appearance">True</property>
<property name="related_action">add_file</property>
<property name="label" translatable="yes">toolbutton1</property>
<property name="use_underline">True</property>
</object>
@ -341,8 +351,8 @@
<child>
<object class="GtkToolButton" id="toolbutton2">
<property name="visible">True</property>
<property name="related_action">add_text</property>
<property name="use_action_appearance">True</property>
<property name="related_action">add_text</property>
<property name="label" translatable="yes">toolbutton2</property>
<property name="use_underline">True</property>
</object>
@ -354,8 +364,8 @@
<child>
<object class="GtkToolButton" id="toolbutton4">
<property name="visible">True</property>
<property name="related_action">add_test</property>
<property name="use_action_appearance">True</property>
<property name="related_action">add_test</property>
<property name="label" translatable="yes">toolbutton4</property>
<property name="use_underline">True</property>
</object>
@ -367,8 +377,8 @@
<child>
<object class="GtkToolButton" id="toolbutton5">
<property name="visible">True</property>
<property name="related_action">add_transition</property>
<property name="use_action_appearance">True</property>
<property name="related_action">add_transition</property>
<property name="label" translatable="yes">toolbutton5</property>
<property name="use_underline">True</property>
</object>
@ -402,8 +412,8 @@
<child>
<object class="GtkToolButton" id="toolbutton8">
<property name="visible">True</property>
<property name="related_action">move_up</property>
<property name="use_action_appearance">True</property>
<property name="related_action">move_up</property>
<property name="label" translatable="yes">toolbutton8</property>
<property name="use_underline">True</property>
</object>
@ -415,8 +425,8 @@
<child>
<object class="GtkToolButton" id="toolbutton9">
<property name="visible">True</property>
<property name="related_action">move_down</property>
<property name="use_action_appearance">True</property>
<property name="related_action">move_down</property>
<property name="label" translatable="yes">toolbutton9</property>
<property name="use_underline">True</property>
</object>
@ -437,8 +447,8 @@
<child>
<object class="GtkToggleToolButton" id="toolbutton11">
<property name="visible">True</property>
<property name="related_action">audio_track</property>
<property name="use_action_appearance">True</property>
<property name="related_action">audio_track</property>
<property name="label" translatable="yes">toolbutton11</property>
<property name="use_underline">True</property>
</object>
@ -450,8 +460,8 @@
<child>
<object class="GtkToggleToolButton" id="toolbutton12">
<property name="visible">True</property>
<property name="related_action">video_track</property>
<property name="use_action_appearance">True</property>
<property name="related_action">video_track</property>
<property name="label" translatable="yes">toolbutton12</property>
<property name="use_underline">True</property>
</object>
@ -1013,6 +1023,10 @@
<action-widget response="0">button1</action-widget>
</action-widgets>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-floppy</property>
</object>
<object class="GtkSizeGroup" id="LabelSizeGroup">
<widgets>
<widget name="label4"/>