Author: colossus
Date: 2008-06-26 09:21:05 +0000 (Thu, 26 Jun 2008)
New Revision: 27152

Removed:
   xarchiver/trunk/src/glib-utils.c
   xarchiver/trunk/src/glib-utils.h
Modified:
   xarchiver/trunk/src/Makefile.am
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/interface.h
   xarchiver/trunk/src/mime-type/mime-action.c
   xarchiver/trunk/src/string_utils.c
   xarchiver/trunk/src/string_utils.h
   xarchiver/trunk/src/window.c
Log:
Made 'Select By pattern' works.
Deleted files src/glib-utils.c and src/glib-utils.h since GTK 2.10 is installed 
everywhere.


Modified: xarchiver/trunk/src/Makefile.am
===================================================================
--- xarchiver/trunk/src/Makefile.am     2008-06-26 01:38:06 UTC (rev 27151)
+++ xarchiver/trunk/src/Makefile.am     2008-06-26 09:21:05 UTC (rev 27152)
@@ -34,9 +34,7 @@
        add_dialog.c add_dialog.h \
        new_dialog.c new_dialog.h \
        pref_dialog.c pref_dialog.h \
-       glib-mem.h \
-       glib-utils.h \
-       glib-utils.c
+       glib-mem.h
 
 xarchiver_CFLAGS = \
        @GTK_CFLAGS@ \

Deleted: xarchiver/trunk/src/glib-utils.c

Deleted: xarchiver/trunk/src/glib-utils.h

Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c     2008-06-26 01:38:06 UTC (rev 27151)
+++ xarchiver/trunk/src/interface.c     2008-06-26 09:21:05 UTC (rev 27152)
@@ -216,6 +216,7 @@
        select_pattern = gtk_image_menu_item_new_with_mnemonic (_("Select _by 
pattern"));
        gtk_widget_show (select_pattern);
        gtk_container_add (GTK_CONTAINER (menuitem2_menu), select_pattern);
+       gtk_widget_set_sensitive (select_pattern, FALSE);
        gtk_widget_add_accelerator (select_pattern, 
"activate",accel_group,GDK_b, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
 
        separatormenuitem5 = gtk_separator_menu_item_new ();
@@ -826,6 +827,7 @@
 
 void xa_create_delete_dialog(GtkMenuItem *menuitem, gpointer user_data)
 {
+       GtkTreeSelection *selection;
        GtkWidget *ddialog1;
        GtkWidget *ddialog_vbox1;
        GtkWidget *dhbox1;
@@ -834,9 +836,16 @@
        GtkWidget *dialog_action_area1;
        GtkWidget *cancelbutton1;
        GtkWidget *okbutton1;
-       gchar *string = NULL;
+       GtkWidget *tmp_image,*select_hbox,*select_label;
+       gchar *string;
        gboolean done = FALSE;
-  
+       gint current_page;
+       gint id;
+
+       current_page = gtk_notebook_get_current_page (notebook);
+       id = xa_find_archive_index (current_page);
+
+       GtkTooltips *tooltip = gtk_tooltips_new();
        ddialog1 = gtk_dialog_new ();
        gtk_window_set_title (GTK_WINDOW (ddialog1), _("Select by Pattern"));
        gtk_window_set_modal (GTK_WINDOW (ddialog1), TRUE);
@@ -856,6 +865,7 @@
        gtk_box_pack_start (GTK_BOX (dhbox1), pattern_label, FALSE, FALSE, 0);
 
        pattern_entry = gtk_entry_new ();
+       gtk_tooltips_set_tip (tooltip, pattern_entry, _("example: *.txt; ac*"), 
NULL);
        gtk_widget_show (pattern_entry);
        gtk_box_pack_start (GTK_BOX (dhbox1), pattern_entry, TRUE, TRUE, 0);
        gtk_entry_set_activates_default(GTK_ENTRY(pattern_entry), TRUE);
@@ -869,13 +879,23 @@
        gtk_dialog_add_action_widget (GTK_DIALOG (ddialog1), 
cancelbutton1,GTK_RESPONSE_CANCEL);
        GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT);
 
-       okbutton1 = gtk_button_new_with_mnemonic (_("Select"));
-       gtk_widget_show (okbutton1);
+       okbutton1 = gtk_button_new();
+       tmp_image = gtk_image_new_from_stock ("gtk-ok", GTK_ICON_SIZE_BUTTON);
+       select_hbox = gtk_hbox_new(FALSE, 4);
+       select_label = gtk_label_new_with_mnemonic(_("_Select"));
+
+       alignment2 = gtk_alignment_new (0.5, 0.5, 0, 0);
+       gtk_container_add (GTK_CONTAINER (alignment2), select_hbox);
+
+       gtk_box_pack_start(GTK_BOX(select_hbox),tmp_image,FALSE,TRUE,0);
+       gtk_box_pack_start(GTK_BOX(select_hbox),select_label,FALSE,TRUE,0);
+       gtk_container_add(GTK_CONTAINER(okbutton1),alignment2);
+       gtk_widget_show_all (okbutton1);
        gtk_dialog_add_action_widget (GTK_DIALOG (ddialog1), 
okbutton1,GTK_RESPONSE_OK);
-       GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
-       gtk_dialog_set_default_response (GTK_DIALOG (ddialog1), 
GTK_RESPONSE_OK);
+       GTK_WIDGET_SET_FLAGS (okbutton1,GTK_CAN_DEFAULT);
+       gtk_dialog_set_default_response (GTK_DIALOG (ddialog1),GTK_RESPONSE_OK);
        
-       while ( ! done )
+       while (! done)
        {
                switch (gtk_dialog_run (GTK_DIALOG(ddialog1)))
                {
@@ -897,14 +917,41 @@
                        break;
                }
        }
-       //check and select the rows matching the pattern here
-       
+       
gtk_tree_model_foreach(archive[id]->model,(GtkTreeModelForeachFunc)select_matched_rows,string);
        g_free(string);
 
 destroy_delete_dialog:
        gtk_widget_destroy (ddialog1);
- }
+}
 
+gboolean select_matched_rows(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter 
*iter,gpointer data)
+{
+       gchar *string = data;
+       gchar *utf8_name = NULL;
+       char **patterns;
+       XEntry *entry = NULL;
+       gint current_page;
+       gint idx;
+
+       current_page = gtk_notebook_get_current_page(notebook);
+       idx = xa_find_archive_index (current_page);
+       patterns = g_strsplit(string,";",-1);
+       
+       gtk_tree_model_get (model,iter,archive[idx]->nc+1,&entry,-1);
+       utf8_name = g_filename_to_utf8 (entry->filename, -1, NULL, NULL, NULL);
+
+       if (match_patterns (patterns,utf8_name,0))
+               gtk_tree_selection_select_iter(gtk_tree_view_get_selection 
(GTK_TREE_VIEW (archive[idx]->treeview)),iter);
+       else
+               gtk_tree_selection_unselect_iter(gtk_tree_view_get_selection 
(GTK_TREE_VIEW (archive[idx]->treeview)),iter);
+       g_free (utf8_name);
+
+       if (patterns != NULL)
+               g_strfreev (patterns);
+
+       return FALSE;
+}
+
 GtkWidget *create_archive_properties_window()
 {
        archive_properties_window = gtk_dialog_new_with_buttons (_("Archive 
Properties Window"),

Modified: xarchiver/trunk/src/interface.h
===================================================================
--- xarchiver/trunk/src/interface.h     2008-06-26 01:38:06 UTC (rev 27151)
+++ xarchiver/trunk/src/interface.h     2008-06-26 09:21:05 UTC (rev 27152)
@@ -125,6 +125,7 @@
 widget_data *xa_create_output_window(gchar *);
 void xa_create_main_window (GtkWidget *xa_main_window,gboolean show_location);
 GtkWidget *create_archive_properties_window();
+gboolean select_matched_rows(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter 
*iter,gpointer data);
 void xa_create_delete_dialog(GtkMenuItem *menuitem, gpointer user_data);
 void xa_handle_navigation_buttons (GtkMenuItem *menuitem, gpointer user_data);
 void xa_add_page (XArchive *archive);

Modified: xarchiver/trunk/src/mime-type/mime-action.c
===================================================================
--- xarchiver/trunk/src/mime-type/mime-action.c 2008-06-26 01:38:06 UTC (rev 
27151)
+++ xarchiver/trunk/src/mime-type/mime-action.c 2008-06-26 09:21:05 UTC (rev 
27152)
@@ -24,7 +24,6 @@
 #endif
 
 #include "mime-action.h"
-#include "glib-utils.h"
 #include <string.h>
 #include <unistd.h>
 #include <sys/types.h>

Modified: xarchiver/trunk/src/string_utils.c
===================================================================
--- xarchiver/trunk/src/string_utils.c  2008-06-26 01:38:06 UTC (rev 27151)
+++ xarchiver/trunk/src/string_utils.c  2008-06-26 09:21:05 UTC (rev 27152)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2006 Giuseppe Torelli - <[EMAIL PROTECTED]>
+ *  Copyright (C) 2008 Giuseppe Torelli - <[EMAIL PROTECTED]>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -20,6 +20,7 @@
 #include <glib.h>
 #include <string.h>
 #include "string_utils.h"
+#include "utf8-fnmatch.h"
 #include "errno.h"
 
 #ifndef HAVE_MKDTEMP
@@ -324,3 +325,24 @@
                }
        }
 }
+
+gboolean match_patterns (char **patterns,const char *string,int flags)
+{
+       int i;
+       int result;
+
+       if (patterns[0] == NULL)
+               return TRUE;
+
+       if (string == NULL)
+               return FALSE;
+
+       result = FNM_NOMATCH;
+       i = 0;
+       while ((result != 0) && (patterns[i] != NULL))
+       {
+               result = g_utf8_fnmatch (patterns[i], string, flags);
+               i++;
+       }
+       return (result == 0);
+}

Modified: xarchiver/trunk/src/string_utils.h
===================================================================
--- xarchiver/trunk/src/string_utils.h  2008-06-26 01:38:06 UTC (rev 27151)
+++ xarchiver/trunk/src/string_utils.h  2008-06-26 09:21:05 UTC (rev 27152)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2006 Giuseppe Torelli - <[EMAIL PROTECTED]>
+ *  Copyright (C) 2008 Giuseppe Torelli - <[EMAIL PROTECTED]>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -42,5 +42,6 @@
 gboolean file_extension_is (const char *filename, const char *ext);
 gchar *extract_local_path (gchar *path);
 void xa_set_window_title ( GtkWidget *window , gchar *title);
+gboolean match_patterns (char **patterns,const char *string,int flags);
 #endif
 

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c        2008-06-26 01:38:06 UTC (rev 27151)
+++ xarchiver/trunk/src/window.c        2008-06-26 09:21:05 UTC (rev 27152)
@@ -850,7 +850,7 @@
                gtk_about_dialog_set_url_hook (xa_activate_link, NULL, NULL);
                gtk_window_set_destroy_with_parent (GTK_WINDOW (about) , TRUE);
                g_object_set (about,
-                       "name",  "Xarchiver",
+                       "name",  "xarchiver",
                        "version", PACKAGE_VERSION,
                        "copyright", "Copyright \xC2\xA9 2005-2008 Giuseppe 
Torelli",
                        "comments", "A lightweight GTK+2 archive manager",

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to