ges-ui: implement save as command in gtk demo
authorBrandon Lewis <brandon@collabora.co.uk>
Mon, 11 Oct 2010 10:53:35 +0000 (11:53 +0100)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Sat, 27 Nov 2010 17:12:50 +0000 (18:12 +0100)
tests/examples/ges-ui.c
tests/examples/ges-ui.glade

index 0365d4a..e767839 100644 (file)
@@ -100,6 +100,7 @@ gboolean window_delete_event_cb (GtkObject * window, GdkEvent * event,
     App * app);
 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 quit_item_activate_cb (GtkMenuItem * item, App * app);
 void delete_activate_cb (GtkAction * item, App * app);
 void play_activate_cb (GtkAction * item, App * app);
@@ -1020,6 +1021,12 @@ app_add_transition (App * app)
 }
 
 static void
+app_save_to_uri (App * app, gchar * uri)
+{
+  ges_timeline_save_to_uri (app->timeline, uri);
+}
+
+static void
 app_dispose (App * app)
 {
   if (app) {
@@ -1176,6 +1183,30 @@ open_activate_cb (GtkMenuItem * item, App * app)
 }
 
 void
+save_as_activate_cb (GtkMenuItem * item, App * app)
+{
+  GtkFileChooserDialog *dlg;
+
+  GST_DEBUG ("save as signal handler");
+
+  dlg = (GtkFileChooserDialog *)
+      gtk_file_chooser_dialog_new ("Save project as...",
+      GTK_WINDOW (app->main_window), GTK_FILE_CHOOSER_ACTION_SAVE,
+      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_OK,
+      NULL);
+
+  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));
+    app_save_to_uri (app, uri);
+    g_free (uri);
+  }
+  gtk_widget_destroy ((GtkWidget *) dlg);
+}
+
+void
 quit_item_activate_cb (GtkMenuItem * item, App * app)
 {
   gtk_main_quit ();
index f8f52e7..9bfd000 100644 (file)
@@ -86,6 +86,8 @@
                         <property name="label">gtk-save-as</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
+                        <property name="visible">True</property>
+                        <signal name="activate" handler="save_as_activate_cb"/>
                       </object>
                     </child>
                   </object>