gnome-terminal r2521 - in trunk: po src



Author: chpe
Date: Thu Mar 20 15:02:45 2008
New Revision: 2521
URL: http://svn.gnome.org/viewvc/gnome-terminal?rev=2521&view=rev

Log:
Port to GtkCellRendererAccel. Bug #348636, based on a patch by Vincent Untz.


Removed:
   trunk/src/eggaccelerators.c
   trunk/src/eggaccelerators.h
   trunk/src/eggcellrendererkeys.c
   trunk/src/eggcellrendererkeys.h
   trunk/src/update-from-egg.sh
Modified:
   trunk/po/POTFILES.in
   trunk/src/Makefile.am
   trunk/src/terminal-accels.c

Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in	(original)
+++ trunk/po/POTFILES.in	Thu Mar 20 15:02:45 2008
@@ -2,7 +2,6 @@
 # List of source files containing translatable strings.
 # Please keep this file sorted alphabetically.
 gnome-terminal.desktop.in.in
-src/eggcellrendererkeys.c
 src/encoding.c
 src/gnome-terminal.glade2
 src/gnome-terminal.schemas.in
@@ -11,6 +10,7 @@
 src/terminal-accels.c
 src/terminal-profile.c
 src/terminal-screen.c
+src/terminal-tabs-menu.c
 src/terminal-widget-vte.c
 src/terminal-window.c
 src/terminal.c

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Thu Mar 20 15:02:45 2008
@@ -1,3 +1,4 @@
+NULL =
 
 EFENCE=
 
@@ -19,12 +20,6 @@
 
 bin_PROGRAMS=gnome-terminal
 
-EGGFILES=			\
-	eggaccelerators.c	\
-	eggaccelerators.h	\
-	eggcellrendererkeys.h 	\
-	eggcellrendererkeys.c
-
 ## Terminal
 gnome_terminal_SOURCES=				\
 	encoding.c				\
@@ -48,7 +43,7 @@
 	terminal-widget-vte.c			\
 	terminal-window.c			\
 	terminal-window.h			\
-	$(EGGFILES)
+	$(NULL)
 
 gnome_terminal_LDADD= $(EFENCE) @TERM_LIBS@ skey/libskey.la
 
@@ -74,15 +69,9 @@
 	$(schema_in_files)		\
 	$(server_DATA)			\
 	$(ui_DATA)			\
-	update-from-egg.sh		\
 	terminal-widget-vte.c
 
 
-EGGDIR=$(srcdir)/../../libegg/libegg
-
-regenerate-built-sources:
-	EGGFILES="$(EGGFILES)" EGGDIR="$(EGGDIR)" $(srcdir)/update-from-egg.sh
-
 serverdir = $(libdir)/bonobo/servers
 server_DATA = gnome-terminal.server
 

Modified: trunk/src/terminal-accels.c
==============================================================================
--- trunk/src/terminal-accels.c	(original)
+++ trunk/src/terminal-accels.c	Thu Mar 20 15:02:45 2008
@@ -27,8 +27,6 @@
 #include "terminal.h"
 #include <string.h>
 #include <glade/glade.h>
-#include "eggcellrendererkeys.h"
-#include "eggaccelerators.h"
 
 #define D(x)
 
@@ -625,35 +623,23 @@
                      guint           *accelerator_key,
                      GdkModifierType *accelerator_mods)
 {
-  EggVirtualModifierType virtual;
-  
-  g_return_val_if_fail (accelerator_key != NULL, FALSE);
-  
-  if (str == NULL || (str && strcmp (str, "disabled") == 0))
+  if (str == NULL ||
+      strcmp (str, "disabled") == 0)
     {
       *accelerator_key = 0;
       *accelerator_mods = 0;
       return TRUE;
     }
 
-  if (!egg_accelerator_parse_virtual (str, accelerator_key, &virtual))
+  gtk_accelerator_parse (str, accelerator_key, accelerator_mods);
+  if (*accelerator_key == 0 &&
+      *accelerator_mods == 0)
     return FALSE;
 
-  egg_keymap_resolve_virtual_modifiers (gdk_keymap_get_default (),
-                                        virtual,
-                                        accelerator_mods);
-
-  /* Be sure the GTK accelerator system will be able to handle this
-   * accelerator. Be sure to allow no-accelerator accels like F1.
-   */
-  if ((*accelerator_mods & gtk_accelerator_get_default_mod_mask ()) == 0 &&
-      *accelerator_mods != 0)
-    return FALSE;
-  
   if (*accelerator_key == 0)
     return FALSE;
-  else
-    return TRUE;
+    
+  return TRUE;
 }
 
 static gboolean
@@ -788,14 +774,15 @@
                       -1);
 
   if (ke == NULL)
-    g_object_set (G_OBJECT (cell),
-		  "visible", FALSE,
+    /* This is a title row */
+    g_object_set (cell,
+                  "visible", FALSE,
 		  NULL);
   else
-    g_object_set (G_OBJECT (cell),
-		  "visible", TRUE,
-		  "accel_key", ke->gconf_keyval,
-		  "accel_mask", ke->gconf_mask,
+    g_object_set (cell,
+                  "visible", TRUE,
+		  "accel-key", ke->gconf_keyval,
+		  "accel-mods", ke->gconf_mask,
 		  NULL);
 }
 
@@ -832,9 +819,9 @@
                       -1);
   if (ke_b == NULL)
     {
-  gtk_tree_model_get (model, b,
-                      ACTION_COLUMN, &name_b,
-                      -1);
+      gtk_tree_model_get (model, b,
+                          ACTION_COLUMN, &name_b,
+                          -1);
     }
   else
     {
@@ -865,10 +852,9 @@
                          GtkTreeIter  *iter,
                          gpointer      user_data)
 {
-  KeyEntry *key_entry;
+  KeyEntry *key_entry = (KeyEntry *) user_data;
   KeyEntry *tmp_key_entry;
  
-  key_entry = (KeyEntry *) user_data;
   gtk_tree_model_get (model, iter,
                       KEYVAL_COLUMN, &tmp_key_entry,
                       -1);
@@ -889,24 +875,31 @@
 }
 
 static void
-accel_edited_callback (GtkCellRendererText *cell,
-                       const char          *path_string,
-                       guint                keyval,
-                       GdkModifierType      mask,
-                       guint                hardware_keycode,
-                       gpointer             data)
+accel_edited_callback (GtkCellRendererAccel *cell,
+                       gchar                *path_string,
+                       guint                 keyval,
+                       GdkModifierType       mask,
+                       guint                 hardware_keycode,
+                       GtkTreeView          *view)
 {
-  GtkTreeView  *view = (GtkTreeView *) data;
   GtkTreeModel *model;
-  GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
+  GtkTreePath *path;
   GtkTreeIter iter;
   KeyEntry *ke, tmp_key;
-  GError *err;
   char *str;
-  
+
   model = gtk_tree_view_get_model (view);
 
-  gtk_tree_model_get_iter (model, &iter, path);
+  path = gtk_tree_path_new_from_string (path_string);
+  if (!path)
+    return;
+
+  if (!gtk_tree_model_get_iter (model, &iter, path)) {
+    gtk_tree_path_free (path);
+    return;
+  }
+  gtk_tree_path_free (path);
+
   gtk_tree_model_get (model, &iter, KEYVAL_COLUMN, &ke, -1);
 
   /* sanity check */
@@ -928,7 +921,7 @@
           GtkWidget *dialog;
           char *name;
 
-          name = egg_virtual_accelerator_name (keyval, mask);
+          name = gtk_accelerator_get_label (keyval, mask);
 
           dialog =
             gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))),
@@ -937,17 +930,11 @@
                                     GTK_BUTTONS_OK,
                                     _("The shortcut key \"%s\" is already bound to the \"%s\" action"),
                                     name,
-                                    tmp_key.user_visible_name ? tmp_key.user_visible_name : tmp_key.gconf_key);
+                                    tmp_key.user_visible_name ? _(tmp_key.user_visible_name) : tmp_key.gconf_key);
           g_free (name);
 
-          gtk_dialog_run (GTK_DIALOG (dialog));
-          gtk_widget_destroy (dialog);
-
-          /* set it back to its previous value. */
-          egg_cell_renderer_keys_set_accelerator (EGG_CELL_RENDERER_KEYS (cell),
-						  ke->gconf_keyval,
-						  ke->gconf_mask);
-          gtk_tree_path_free (path);
+          g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
+          gtk_window_present (GTK_WINDOW (dialog));
 
           return;
         }
@@ -959,22 +946,53 @@
               gdk_keyval_name (keyval) ? gdk_keyval_name (keyval) : "null",
               str));
   
-  err = NULL;
   gconf_client_set_string (global_conf,
                            ke->gconf_key,
                            str,
-                           &err);
+                           NULL);
   g_free (str);
-  
-  if (err != NULL)
-    {
-      g_printerr (_("Error setting new accelerator in configuration database: %s\n"),
-                  err->message);
-      
-      g_error_free (err);
-    }
-  
+}
+
+static void
+accel_cleared_callback (GtkCellRendererAccel *cell,
+                        gchar                *path_string,
+                        GtkTreeView          *view)
+{
+  GtkTreeModel *model;
+  GtkTreePath *path;
+  GtkTreeIter iter;
+  KeyEntry *ke, tmp_key;
+  char *str;
+
+  model = gtk_tree_view_get_model (view);
+
+  path = gtk_tree_path_new_from_string (path_string);
+  if (!path)
+    return;
+
+  if (!gtk_tree_model_get_iter (model, &iter, path)) {
+    gtk_tree_path_free (path);
+    return;
+  }
   gtk_tree_path_free (path);
+
+  gtk_tree_model_get (model, &iter, KEYVAL_COLUMN, &ke, -1);
+
+  /* sanity check */
+  if (ke == NULL)
+    return;
+
+  ke->gconf_keyval = 0;
+  ke->gconf_mask = 0;
+  ke->needs_gconf_sync = TRUE;
+
+  str = binding_name (0, 0, FALSE);
+  D (g_print ("Cleared keybinding for gconf %s", ke->gconf_key));
+  gconf_client_set_string (global_conf,
+                           ke->gconf_key,
+                           str,
+                           NULL);
+  g_free (str);
 }
 
 static void
@@ -1154,17 +1172,16 @@
   gtk_tree_view_column_set_sort_column_id (column, ACTION_COLUMN);
 
   /* Column 2 */
-  cell_renderer = g_object_new (EGG_TYPE_CELL_RENDERER_KEYS,
-				"editable", TRUE,
-				"accel_mode", EGG_CELL_RENDERER_KEYS_MODE_GTK,
-				NULL);
-  g_signal_connect (G_OBJECT (cell_renderer), "keys_edited",
-                    G_CALLBACK (accel_edited_callback),
-                    w);
-  
-  g_object_set (G_OBJECT (cell_renderer),
+  cell_renderer = gtk_cell_renderer_accel_new ();
+  g_object_set (cell_renderer,
                 "editable", TRUE,
+                "accel_mode", GTK_CELL_RENDERER_ACCEL_MODE_GTK,
                 NULL);
+  g_signal_connect (cell_renderer, "accel-edited",
+                    G_CALLBACK (accel_edited_callback), w);
+  g_signal_connect (cell_renderer, "accel-cleared",
+                    G_CALLBACK (accel_cleared_callback), w);
+  
   column = gtk_tree_view_column_new ();
   gtk_tree_view_column_set_title (column, _("Shortcut _Key"));
   gtk_tree_view_column_pack_start (column, cell_renderer, TRUE);



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