cheese r475 - in trunk: . data data/effects data/icons data/icons/16x16 data/icons/22x22 data/icons/24x24 data/icons/32x32 data/icons/48x48 data/icons/scalable data/pixmaps data/sounds help help/es help/oc help/ru help/sv src



Author: tvainika
Date: Sun Feb  3 14:57:34 2008
New Revision: 475
URL: http://svn.gnome.org/viewvc/cheese?rev=475&view=rev

Log:
2008-02-03  Tommi Vainikainen  <thv iki fi>

	* src/cheese-window.c, src/cheese-countdown.h,
	src/cheese-countdown.c: Pressing 'Esc' cancels countdown/stop video
	recording.
	* src/, help/, data/: Updated svn:ignore property for each dir to
	include autogenerated files.

Modified:
   trunk/   (props changed)
   trunk/ChangeLog
   trunk/data/   (props changed)
   trunk/data/effects/   (props changed)
   trunk/data/icons/   (props changed)
   trunk/data/icons/16x16/   (props changed)
   trunk/data/icons/22x22/   (props changed)
   trunk/data/icons/24x24/   (props changed)
   trunk/data/icons/32x32/   (props changed)
   trunk/data/icons/48x48/   (props changed)
   trunk/data/icons/scalable/   (props changed)
   trunk/data/pixmaps/   (props changed)
   trunk/data/sounds/   (props changed)
   trunk/help/   (props changed)
   trunk/help/es/   (props changed)
   trunk/help/oc/   (props changed)
   trunk/help/ru/   (props changed)
   trunk/help/sv/   (props changed)
   trunk/src/   (props changed)
   trunk/src/cheese-countdown.c
   trunk/src/cheese-countdown.h
   trunk/src/cheese-window.c

Modified: trunk/src/cheese-countdown.c
==============================================================================
--- trunk/src/cheese-countdown.c	(original)
+++ trunk/src/cheese-countdown.c	Sun Feb  3 14:57:34 2008
@@ -299,9 +299,8 @@
   switch (priv->iState)
   {
     case STATE_OFF:
-      // should just ignore it, testing purposes
-      g_print("Should not happen, unitialized state in countdown handler\n");
-      break;
+      /* Countdown was cancelled */
+      return FALSE;
 
     case STATE_3:
       priv->iState = STATE_2;
@@ -340,6 +339,13 @@
   g_timeout_add_seconds (1, cheese_countdown_cb, (gpointer) countdown);
 }
 
+void
+cheese_countdown_cancel (CheeseCountdown *countdown)
+{
+  CheeseCountdownPrivate* priv = CHEESE_COUNTDOWN_GET_PRIVATE (countdown);
+  priv->iState = STATE_OFF;
+}
+
 static void
 cheese_countdown_finalize (GObject *object)
 {

Modified: trunk/src/cheese-countdown.h
==============================================================================
--- trunk/src/cheese-countdown.h	(original)
+++ trunk/src/cheese-countdown.h	Sun Feb  3 14:57:34 2008
@@ -46,6 +46,7 @@
 GtkWidget         *cheese_countdown_new ();
 
 void cheese_countdown_start (CheeseCountdown *countdown, cheese_countdown_cb_t picture_cb, cheese_countdown_cb_t hide_cb, gpointer data);
+void cheese_countdown_cancel (CheeseCountdown *countdown);
 
 G_END_DECLS
 

Modified: trunk/src/cheese-window.c
==============================================================================
--- trunk/src/cheese-window.c	(original)
+++ trunk/src/cheese-window.c	Sun Feb  3 14:57:34 2008
@@ -784,6 +784,45 @@
 }
 
 static void
+cheese_window_stop_recording (CheeseWindow *cheese_window)
+{
+  if (cheese_window->recording)
+  {
+    cheese_webcam_stop_video_recording (cheese_window->webcam);
+    gtk_widget_set_sensitive (cheese_window->button_effects, TRUE);
+    gtk_widget_set_sensitive (cheese_window->button_photo, TRUE);
+    gtk_widget_set_sensitive (cheese_window->button_video, TRUE);
+    gchar * str = g_strconcat ("<b>", _("_Start recording"), "</b>", NULL);
+    gtk_label_set_text_with_mnemonic (GTK_LABEL (cheese_window->label_take_photo), str);
+    g_free (str);
+    gtk_label_set_use_markup (GTK_LABEL (cheese_window->label_take_photo), TRUE);
+    gtk_image_set_from_stock (GTK_IMAGE (cheese_window->image_take_photo), GTK_STOCK_MEDIA_RECORD, GTK_ICON_SIZE_BUTTON);
+    
+    cheese_window->recording = FALSE;
+  }
+}
+
+static gboolean
+cheese_window_cancel_cb (CheeseWindow *cheese_window,
+			 GtkAccelGroup *accel_group,
+			 guint keyval, GdkModifierType modifier)
+{
+  cheese_countdown_cancel ((CheeseCountdown *) cheese_window->countdown);
+  
+  if (cheese_window->webcam_mode == WEBCAM_MODE_PHOTO)
+  {
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (cheese_window->notebook_bar), 0);
+      
+    gtk_widget_set_sensitive (cheese_window->take_picture, TRUE);
+  }
+  else
+  {
+    cheese_window_stop_recording (cheese_window);
+  }
+  return TRUE;
+}
+
+static void
 cheese_window_action_button_clicked_cb (GtkWidget *widget, CheeseWindow *cheese_window)
 {
   char *str;
@@ -811,20 +850,13 @@
 
       cheese_window->video_filename = cheese_fileutil_get_new_media_filename (WEBCAM_MODE_VIDEO);
       cheese_webcam_start_video_recording (cheese_window->webcam, cheese_window->video_filename);
+
+      cheese_window->recording = TRUE;
     }
     else
     {
-      cheese_webcam_stop_video_recording (cheese_window->webcam);
-      gtk_widget_set_sensitive (cheese_window->button_effects, TRUE);
-      gtk_widget_set_sensitive (cheese_window->button_photo, TRUE);
-      gtk_widget_set_sensitive (cheese_window->button_video, TRUE);
-      str = g_strconcat ("<b>", _("_Start recording"), "</b>", NULL);
-      gtk_label_set_text_with_mnemonic (GTK_LABEL (cheese_window->label_take_photo), str);
-      g_free (str);
-      gtk_label_set_use_markup (GTK_LABEL (cheese_window->label_take_photo), TRUE);
-      gtk_image_set_from_stock (GTK_IMAGE (cheese_window->image_take_photo), GTK_STOCK_MEDIA_RECORD, GTK_ICON_SIZE_BUTTON);
+      cheese_window_stop_recording (cheese_window);
     }
-    cheese_window->recording = !cheese_window->recording;
   }
 }
 
@@ -1073,6 +1105,12 @@
 
   gtk_window_add_accel_group (GTK_WINDOW (cheese_window->window), 
                               gtk_ui_manager_get_accel_group (cheese_window->ui_manager));
+  gtk_accel_group_connect (gtk_ui_manager_get_accel_group (cheese_window->ui_manager),
+			   GDK_Escape, 0, 0,
+			   g_cclosure_new_swap (G_CALLBACK (cheese_window_cancel_cb),
+						cheese_window, NULL));
+
+
   gtk_action_group_set_sensitive (cheese_window->actions_file, FALSE);
 
   /* Default handlers for closing the application */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]