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:
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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)) {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user