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