Sophie

Sophie

distrib > Mandriva > 2008.0 > i586 > by-pkgid > 9cbee1d4d9c2dcdd250e1a0c82ba691e > files > 2

xfce-appfinder-4.4.1-5mdv2008.0.src.rpm

diff -Naur xfce4-appfinder-4.4.1/src/main.c xfce4-appfinder-4.4.1.tpg/src/main.c
--- xfce4-appfinder-4.4.1/src/main.c	2007-01-25 20:51:09.000000000 +0000
+++ xfce4-appfinder-4.4.1.tpg/src/main.c	2007-09-05 14:56:42.000000000 +0000
@@ -25,6 +25,7 @@
 
 #include <string.h>
 #include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
 #include <glib.h>
 #include <glib/gprintf.h>
 
@@ -36,9 +37,16 @@
 #include "xfce4-appfinder.h"
 #define BORDER  8
 
+static GtkWidget *appfinder;
+static GtkWidget *searchEntry;
+
 void    callbackExecuteApplication      (GtkWidget         *widget,
                                          gchar             *path,
                                          gpointer           data);
+
+void    callbackExecuteApplicationExit  (GtkWidget         *widget,
+                                         gchar             *path,
+                                         gpointer           data);
                                          
 void    callbackRightClickMenu          (GtkWidget         *widget,
                                          gchar             *path,
@@ -163,6 +171,14 @@
 }
 
 void
+callbackExecuteApplicationExit(GtkWidget *widget, gchar *path, gpointer data)
+{
+    callbackExecuteApplication(widget, path, data);
+    g_free (path);
+    gtk_main_quit();
+}
+
+void
 callbackRunMenuActivate (GtkMenuItem *menuitem, gpointer menu)
 {
     gchar *path = g_object_get_data (G_OBJECT (menu), "path");
@@ -416,15 +432,31 @@
     xfce_appfinder_view_categories(XFCE_APPFINDER(appfinder), gtk_toggle_button_get_active (togglebutton));
 }
 
+gboolean
+key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
+{
+    gchar *path;
+    switch (event->keyval) {
+        case GDK_Escape:
+            gtk_main_quit();
+            return TRUE;
+        case GDK_Return:
+            path = xfce_appfinder_application_path(XFCE_APPFINDER(appfinder));
+            if (!path) return FALSE;
+            callbackExecuteApplicationExit(NULL, path, NULL);
+            return TRUE;
+    }
+    return FALSE;
+}
+
 gint
 main (gint argc, gchar **argv)
 {
     GtkWidget *afWnd;
-    GtkWidget *af;
     GtkWidget *vbox;
     GtkWidget *searchBox;
     GtkWidget *searchLabel;
-    GtkWidget *searchEntry;
+    GtkWidget *findImage;
     GtkWidget *categoriesCheck;
     
     xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
@@ -435,6 +467,7 @@
     
     afWnd = gtk_window_new (GTK_WINDOW_TOPLEVEL);
     g_signal_connect (G_OBJECT(afWnd), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
+    g_signal_connect (G_OBJECT(afWnd), "key-press-event", G_CALLBACK(key_pressed), NULL);
     gtk_window_set_title (GTK_WINDOW(afWnd), "Xfce4 Appfinder");
     gtk_window_set_icon_name (GTK_WINDOW (afWnd), "xfce4-appfinder");
     //gtk_window_set_icon (GTK_WINDOW(afWnd), xfce_inline_icon_at_size (default_icon_data_48_48, 48, 48));
@@ -448,27 +481,28 @@
     gtk_container_set_border_width(GTK_CONTAINER(searchBox), 6);
     gtk_box_pack_start(GTK_BOX(vbox), searchBox, FALSE, TRUE, 0);
    
-    af    = GTK_WIDGET(xfce_appfinder_new());  
-    g_signal_connect (G_OBJECT(af), "application-activate", G_CALLBACK(callbackExecuteApplication), NULL);
-    g_signal_connect (G_OBJECT(af), "application-right-click", G_CALLBACK(callbackRightClickMenu), NULL);
-    gtk_box_pack_start(GTK_BOX(vbox), af, TRUE, TRUE, 0);
+    appfinder    = GTK_WIDGET(xfce_appfinder_new());  
+    g_signal_connect (G_OBJECT(appfinder), "application-activate", G_CALLBACK(callbackExecuteApplicationExit), NULL);
+    g_signal_connect (G_OBJECT(appfinder), "application-right-click", G_CALLBACK(callbackRightClickMenu), NULL);
+    gtk_box_pack_start(GTK_BOX(vbox), appfinder, TRUE, TRUE, 0);
 
     searchLabel = GTK_WIDGET(gtk_label_new(NULL));
     gtk_misc_set_alignment(GTK_MISC(searchLabel), 0.0, 0.5);
     gtk_label_set_markup_with_mnemonic(GTK_LABEL(searchLabel), _("<b>Search:</b>"));
     gtk_box_pack_start(GTK_BOX(searchBox), searchLabel, FALSE, TRUE, 0);
+    findImage = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_BUTTON);
+    gtk_box_pack_start(GTK_BOX(searchBox), findImage, FALSE, FALSE, 0);
 
     searchEntry = GTK_WIDGET(gtk_entry_new());
-    g_signal_connect(searchEntry, "activate", G_CALLBACK(callbackSearchApplication), (gpointer) af);
+    g_signal_connect(searchEntry, "changed", G_CALLBACK(callbackSearchApplication), (gpointer) appfinder);
     gtk_box_pack_start(GTK_BOX(searchBox), searchEntry, TRUE, TRUE, 0);        
 
     categoriesCheck = gtk_check_button_new_with_label (_("Show Categories"));
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (categoriesCheck), TRUE);
-    g_signal_connect (G_OBJECT(categoriesCheck), "toggled", G_CALLBACK (callbackCategoriesCheck), (gpointer) af);
+    g_signal_connect (G_OBJECT(categoriesCheck), "toggled", G_CALLBACK (callbackCategoriesCheck), (gpointer) appfinder);
     gtk_box_pack_start(GTK_BOX(searchBox), categoriesCheck, FALSE, TRUE, 0);        
             
     gtk_widget_show_all (afWnd);
     gtk_main();
     return 0;
-    
 }  
diff -Naur xfce4-appfinder-4.4.1/src/xfce4-appfinder.c xfce4-appfinder-4.4.1.tpg/src/xfce4-appfinder.c
--- xfce4-appfinder-4.4.1/src/xfce4-appfinder.c	2007-01-25 20:51:09.000000000 +0000
+++ xfce4-appfinder-4.4.1.tpg/src/xfce4-appfinder.c	2007-09-05 14:56:42.000000000 +0000
@@ -368,7 +368,6 @@
 xfce_appfinder_list_add (gchar *name, XfceAppfinderCacheEntry *entry, XfceAppfinderListParam *param)
 {
     GtkTreeIter     iter;
-    GdkPixbuf      *icon = NULL;
 
     if (param->pcat && (g_pattern_match_string (param->pcat, g_utf8_casefold(entry->categories, -1)) == FALSE))
     {
@@ -385,13 +384,10 @@
             return;
         }
     }
-    
-    if (entry->icon)
-        icon = xfce_themed_icon_load(entry->icon, 24);
-           
+
     gtk_list_store_append(param->store, &iter);
     gtk_list_store_set(param->store, &iter,
-                       APPLICATION_TREE_ICON, icon,
+                       APPLICATION_TREE_ICON, entry->icon ? entry->icon : NULL,
                        APPLICATION_TREE_TEXT, name,
                        -1);
 }
@@ -436,6 +432,8 @@
     
     g_hash_table_foreach (appfinder->cache, (GHFunc)xfce_appfinder_list_add, param);
 
+    if (param) g_free(param);
+
     if (psearch)
     {
         g_pattern_spec_free (psearch);
@@ -619,6 +617,10 @@
     }
     else
     {
+        if (!gtk_tree_model_iter_next (gtk_tree_view_get_model (GTK_TREE_VIEW(appfinder->appsTree)), &iter)) {
+          gtk_tree_model_get_iter_first (gtk_tree_view_get_model (GTK_TREE_VIEW(appfinder->appsTree)), &iter);
+          gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(appfinder->appsTree)), &iter);
+        }
         gtk_widget_set_sensitive(appfinder->appsTree, TRUE);
     }
 
@@ -631,6 +633,27 @@
     
 }
 
+gchar *
+xfce_appfinder_application_path (XfceAppfinder *appfinder)
+{
+    gchar *name = NULL;
+    gchar *path = NULL;
+    GtkTreeIter iter;
+    GtkTreeModel *treemodel = NULL;
+    GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(appfinder->appsTree));
+    
+    if(gtk_tree_selection_get_selected(selection, &treemodel, &iter)) {
+        gtk_tree_model_get(treemodel, &iter, APPLICATION_TREE_TEXT, &name, -1);
+
+        if (name) {
+            path = get_path_from_name (name, appfinder);
+            g_free(name);
+        }
+    }
+   
+    return path;
+}
+
 void
 xfce_appfinder_clean (XfceAppfinder  *appfinder)
 {
@@ -786,7 +809,7 @@
 				
 				if (icon)
 			        {
-                                    cent->icon = g_strdup(icon);
+                                    cent->icon = xfce_themed_icon_load(icon, 24);
 				}
 				else
 				{
diff -Naur xfce4-appfinder-4.4.1/src/xfce4-appfinder.h xfce4-appfinder-4.4.1.tpg/src/xfce4-appfinder.h
--- xfce4-appfinder-4.4.1/src/xfce4-appfinder.h	2007-01-25 20:51:09.000000000 +0000
+++ xfce4-appfinder-4.4.1.tpg/src/xfce4-appfinder.h	2007-09-05 14:56:42.000000000 +0000
@@ -46,7 +46,7 @@
     gchar     *exec;
     gchar     *comment;
     gchar     *categories;
-    gchar     *icon;
+    GdkPixbuf *icon;
 };
 
 struct _XfceAppfinder
@@ -90,6 +90,7 @@
 GtkWidget*     xfce_appfinder_new               (void);
 void           xfce_appfinder_search            (XfceAppfinder  *appfinder, 
                                                  const gchar    *pattern);
+gchar          *xfce_appfinder_application_path (XfceAppfinder  *appfinder);
 void           xfce_appfinder_view_categories   (XfceAppfinder  *appfinder,
                                                  gboolean        visible);
 void           xfce_appfinder_clean             (XfceAppfinder  *appfinder);