Remove the #ifndef SHELL part. Use an EvolutionFolderSelectorButton.

* filter-folder.c: Remove the #ifndef SHELL part. Use an
	EvolutionFolderSelectorButton. Remove FilterFolder->name since
	it's no longer needed.

	* filter-context.c (filter_rename_uri): Update for removal of
	FilterFolder->name.

	* filter-element.c (filter_element_copy_value): Likewise.

	* vfolder-rule.c (source_add): Update for
	evolution_shell_client_user_select_folder API change.

svn path=/trunk/; revision=16354
This commit is contained in:
Dan Winship
2002-04-04 20:03:02 +00:00
parent b064051f5f
commit f99f9d9488
6 changed files with 40 additions and 126 deletions

View File

@ -1,3 +1,17 @@
2002-04-04 Dan Winship <danw@ximian.com>
* filter-folder.c: Remove the #ifndef SHELL part. Use an
EvolutionFolderSelectorButton. Remove FilterFolder->name since
it's no longer needed.
* filter-context.c (filter_rename_uri): Update for removal of
FilterFolder->name.
* filter-element.c (filter_element_copy_value): Likewise.
* vfolder-rule.c (source_add): Update for
evolution_shell_client_user_select_folder API change.
2002-04-01 Jeffrey Stedfast <fejj@ximian.com> 2002-04-01 Jeffrey Stedfast <fejj@ximian.com>
* rule-editor.c (rule_edit): Set 're' as the parent window rather * rule-editor.c (rule_edit): Set 're' as the parent window rather

View File

@ -171,15 +171,8 @@ static int filter_rename_uri(RuleContext *f, const char *olduri, const char *new
GList *l, *el; GList *l, *el;
FilterPart *action; FilterPart *action;
FilterElement *element; FilterElement *element;
const char *name;
int count = 0; int count = 0;
name = strrchr(newuri, '/');
if (name)
name++;
else
name = newuri;
d(printf("uri '%s' renamed to '%s'\n", olduri, newuri)); d(printf("uri '%s' renamed to '%s'\n", olduri, newuri));
/* For all rules, for all actions, for all elements, rename any folder elements */ /* For all rules, for all actions, for all elements, rename any folder elements */
@ -207,7 +200,7 @@ static int filter_rename_uri(RuleContext *f, const char *olduri, const char *new
if (IS_FILTER_FOLDER(element) if (IS_FILTER_FOLDER(element)
&& cmp(((FilterFolder *)element)->uri, olduri)) { && cmp(((FilterFolder *)element)->uri, olduri)) {
d(printf(" Changed!\n")); d(printf(" Changed!\n"));
filter_folder_set_value((FilterFolder *)element, newuri, name); filter_folder_set_value((FilterFolder *)element, newuri);
rulecount++; rulecount++;
} }
el = el->next; el = el->next;

View File

@ -327,7 +327,7 @@ filter_element_copy_value(FilterElement *de, FilterElement *se)
} }
} else if (IS_FILTER_FOLDER(se)) { } else if (IS_FILTER_FOLDER(se)) {
if (IS_FILTER_FOLDER(de)) { if (IS_FILTER_FOLDER(de)) {
filter_folder_set_value((FilterFolder *)de, ((FilterFolder *)se)->uri, ((FilterFolder *)se)->name); filter_folder_set_value((FilterFolder *)de, ((FilterFolder *)se)->uri);
} }
} else if (IS_FILTER_COLOUR(se)) { } else if (IS_FILTER_COLOUR(se)) {
if (IS_FILTER_COLOUR(de)) { if (IS_FILTER_COLOUR(de)) {

View File

@ -20,8 +20,6 @@
#include <config.h> #include <config.h>
#define SHELL
#include <glib.h> #include <glib.h>
#include <libgnome/gnome-defs.h> #include <libgnome/gnome-defs.h>
#include <libgnome/gnome-i18n.h> #include <libgnome/gnome-i18n.h>
@ -30,9 +28,7 @@
#include <gal/widgets/e-unicode.h> #include <gal/widgets/e-unicode.h>
#include "filter-folder.h" #include "filter-folder.h"
#ifdef SHELL #include "shell/evolution-folder-selector-button.h"
#include "shell/evolution-shell-client.h"
#endif
#include "e-util/e-sexp.h" #include "e-util/e-sexp.h"
#define d(x) #define d(x)
@ -45,9 +41,7 @@ static GtkWidget *get_widget(FilterElement *fe);
static void build_code(FilterElement *fe, GString *out, struct _FilterPart *ff); static void build_code(FilterElement *fe, GString *out, struct _FilterPart *ff);
static void format_sexp(FilterElement *, GString *); static void format_sexp(FilterElement *, GString *);
#ifdef SHELL
extern EvolutionShellClient *global_shell_client; extern EvolutionShellClient *global_shell_client;
#endif
static void filter_folder_class_init (FilterFolderClass *class); static void filter_folder_class_init (FilterFolderClass *class);
static void filter_folder_init (FilterFolder *gspaper); static void filter_folder_init (FilterFolder *gspaper);
@ -115,7 +109,6 @@ filter_folder_finalise (GtkObject *obj)
FilterFolder *o = (FilterFolder *)obj; FilterFolder *o = (FilterFolder *)obj;
g_free (o->uri); g_free (o->uri);
g_free (o->name);
((GtkObjectClass *)(parent_class))->finalize(obj); ((GtkObjectClass *)(parent_class))->finalize(obj);
} }
@ -135,12 +128,10 @@ filter_folder_new (void)
} }
void void
filter_folder_set_value(FilterFolder *ff, const char *uri, const char *name) filter_folder_set_value(FilterFolder *ff, const char *uri)
{ {
g_free(ff->uri); g_free(ff->uri);
ff->uri = g_strdup(uri); ff->uri = g_strdup(uri);
g_free(ff->name);
ff->name = g_strdup(name);
} }
static gboolean static gboolean
@ -182,7 +173,6 @@ xml_encode (FilterElement *fe)
xmlSetProp (value, "type", "folder"); xmlSetProp (value, "type", "folder");
work = xmlNewChild (value, NULL, "folder", NULL); work = xmlNewChild (value, NULL, "folder", NULL);
xmlSetProp (work, "name", ff->name);
xmlSetProp (work, "uri", ff->uri); xmlSetProp (work, "uri", ff->uri);
return value; return value;
@ -202,12 +192,7 @@ xml_decode (FilterElement *fe, xmlNodePtr node)
n = node->childs; n = node->childs;
while (n) { while (n) {
if (!strcmp (n->name, "folder")) { if (!strcmp (n->name, "folder")) {
char *uri, *name; char *uri;
name = xmlGetProp (n, "name");
g_free (ff->name);
ff->name = g_strdup (name);
xmlFree (name);
uri = xmlGetProp (n, "uri"); uri = xmlGetProp (n, "uri");
g_free (ff->uri); g_free (ff->uri);
@ -222,88 +207,12 @@ xml_decode (FilterElement *fe, xmlNodePtr node)
} }
static void static void
button_clicked (GtkButton *button, FilterFolder *ff) folder_selected (EvolutionFolderSelectorButton *button,
GNOME_Evolution_Folder *folder,
FilterFolder *ff)
{ {
#ifdef SHELL g_free (ff->uri);
const char *allowed_types[] = { "mail", NULL }; ff->uri = g_strdup (folder->physicalUri);
char *def, *physical_uri, *evolution_uri;
gchar *s;
def = ff->uri ? ff->uri : "";
gtk_widget_set_sensitive((GtkWidget *)button, FALSE);
gtk_object_ref((GtkObject *)ff);
evolution_shell_client_user_select_folder (global_shell_client,
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (button))),
_("Select Folder"),
def, allowed_types,
&evolution_uri,
&physical_uri);
if (GTK_OBJECT_DESTROYED(button)) {
g_free(physical_uri);
g_free(evolution_uri);
gtk_object_unref((GtkObject *)ff);
return;
}
gtk_widget_set_sensitive((GtkWidget *)button, TRUE);
if (physical_uri != NULL && physical_uri[0] != '\0') {
g_free (ff->uri);
ff->uri = physical_uri;
g_free (ff->name);
ff->name = g_strdup (g_basename (evolution_uri));
s = e_utf8_to_gtk_string (GTK_WIDGET (button), ff->name);
gtk_label_set_text (GTK_LABEL (GTK_BIN (button)->child), s);
g_free (s);
} else {
g_free (physical_uri);
}
g_free (evolution_uri);
gtk_object_unref((GtkObject *)ff);
#else
GnomeDialog *gd;
GtkEntry *entry;
char *uri, *str;
gd = (GnomeDialog *)gnome_dialog_new(_("Enter folder URI"),
GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL,
NULL);
gtk_window_set_policy(GTK_WINDOW(gd), FALSE, TRUE, FALSE);
entry = (GtkEntry *)gtk_entry_new();
if (ff->uri) {
e_utf8_gtk_entry_set_text(entry, ff->uri);
}
gtk_box_pack_start((GtkBox *)gd->vbox, (GtkWidget *)entry, TRUE, TRUE, 3);
gtk_widget_show((GtkWidget *)entry);
switch (gnome_dialog_run(gd)) {
case 0:
g_free(ff->uri);
g_free(ff->name);
uri = e_utf8_gtk_entry_get_text(entry);
ff->uri = uri;
str = strstr(uri, "//");
if (str)
str = strchr(str+2, '/');
if (str)
str++;
else
str = uri;
ff->name = g_strdup(str);
s = e_utf8_to_gtk_string ((GtkWidget *) button, ff->name);
gtk_label_set_text((GtkLabel *)GTK_BIN(button)->child, s);
g_free (s);
case 1:
gnome_dialog_close(gd);
case -1:
/* nothing */
}
#endif
gdk_window_raise (GTK_WIDGET (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW))->window); gdk_window_raise (GTK_WIDGET (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW))->window);
} }
@ -311,20 +220,17 @@ button_clicked (GtkButton *button, FilterFolder *ff)
static GtkWidget * static GtkWidget *
get_widget (FilterElement *fe) get_widget (FilterElement *fe)
{ {
static const char *allowed_types[] = { "mail", NULL };
FilterFolder *ff = (FilterFolder *)fe; FilterFolder *ff = (FilterFolder *)fe;
GtkWidget *button; GtkWidget *button;
GtkWidget *label;
if (ff->name && ff->name[0]) button = evolution_folder_selector_button_new (global_shell_client,
label = gtk_label_new (g_basename (ff->name)); _("Select Folder"),
else ff->uri,
label = gtk_label_new (_("<click here to select a folder>")); allowed_types);
button = gtk_button_new ();
gtk_container_add (GTK_CONTAINER (button), label);
gtk_widget_show (button); gtk_widget_show (button);
gtk_widget_show (label); gtk_signal_connect (GTK_OBJECT (button), "selected", folder_selected, ff);
gtk_signal_connect (GTK_OBJECT (button), "clicked", button_clicked, ff);
return button; return button;
} }

View File

@ -35,7 +35,6 @@ struct _FilterFolder {
struct _FilterFolderPrivate *priv; struct _FilterFolderPrivate *priv;
char *uri; char *uri;
char *name; /* name of folder for display? */
}; };
struct _FilterFolderClass { struct _FilterFolderClass {
@ -50,7 +49,7 @@ guint filter_folder_get_type (void);
FilterFolder *filter_folder_new (void); FilterFolder *filter_folder_new (void);
/* methods */ /* methods */
void filter_folder_set_value(FilterFolder *ff, const char *uri, const char *name); void filter_folder_set_value(FilterFolder *ff, const char *uri);
#endif /* ! _FILTER_FOLDER_H */ #endif /* ! _FILTER_FOLDER_H */

View File

@ -352,7 +352,8 @@ select_source_with(GtkWidget *w, struct _source_data *data)
static void static void
source_add(GtkWidget *widget, struct _source_data *data) source_add(GtkWidget *widget, struct _source_data *data)
{ {
const char *allowed_types[] = { "mail", NULL }; static const char *allowed_types[] = { "mail", NULL };
GNOME_Evolution_Folder *folder;
char *def, *uri; char *def, *uri;
GtkListItem *item; GtkListItem *item;
GList *l; GList *l;
@ -363,16 +364,18 @@ source_add(GtkWidget *widget, struct _source_data *data)
evolution_shell_client_user_select_folder (global_shell_client, evolution_shell_client_user_select_folder (global_shell_client,
GTK_WINDOW (gtk_widget_get_toplevel (widget)), GTK_WINDOW (gtk_widget_get_toplevel (widget)),
_("Select Folder"), _("Select Folder"),
def, allowed_types, NULL, &uri); def, allowed_types, &folder);
if (GTK_OBJECT_DESTROYED(widget)) { if (GTK_OBJECT_DESTROYED(widget)) {
g_free(uri); if (folder)
CORBA_free (folder);
return; return;
} }
gtk_widget_set_sensitive(widget, TRUE); gtk_widget_set_sensitive(widget, TRUE);
if (uri != NULL && uri[0] != '\0') { if (folder) {
uri = g_strdup (folder->physicalUri);
data->vr->sources = g_list_append(data->vr->sources, uri); data->vr->sources = g_list_append(data->vr->sources, uri);
l = NULL; l = NULL;
@ -385,9 +388,8 @@ source_add(GtkWidget *widget, struct _source_data *data)
gtk_list_append_items(data->list, l); gtk_list_append_items(data->list, l);
gtk_list_select_child(data->list, (GtkWidget *)item); gtk_list_select_child(data->list, (GtkWidget *)item);
data->current = uri; data->current = uri;
} else {
g_free(uri);
} }
CORBA_free (folder);
set_sensitive(data); set_sensitive(data);
} }