[ fixes 90% of #25047 ] shamelessly lifted from
2002-05-24 Chris Toshok <toshok@ximian.com> [ fixes 90% of #25047 ] * e-folder-list.c (get_folder_for_uri): shamelessly lifted from evolution-folder-selector-button.c. (create_display_string): modeled again after evolution-folder-selector-button.c, so we can give a little more context (and make the table look like the folder selector buttons.) (SPEC): add a pixbuf column, also remove the sorting behavior. (columns): add a pixbuf column and another string column (for the display string). (add_clicked): create the display string and get the proper pixbuf, and insert both. (edit_clicked): removed. (update_buttons): remove edit button handling from here. (e_folder_list_init): remove the hooking up of button-edit's "clicked" signal. (e_folder_list_construct): get a reference to the storage registry so we can look up folders. (e_folder_list_set_items): analogous change to add_clicked - get the display string and pixbuf and insert them. * glade/e-folder-list.glade: remove the edit button. * glade/e-shell-config-default-folders.glade: remove the frame/vbox, since we embed it in a notebook and the tab has the title already. * e-shell-config.c (config_control_factory_cb): the only config control we deal with here now is the folder settings control. * e-shell-config-default-folders.c (e_shell_config_default_folders_create_widget): rename e_shell_config_default_folders_create_control to this, return the widget, and take the config control to use as an arg. * e-shell-config-offline.c (e_shell_config_offline_create_widget): make an analogous change here as with default_folders_create_widget. * e-shell-config-default-folders.h (e_shell_config_default_folders_create_widget): track change to prototype. * e-shell-config-offline.h (e_shell_config_offline_create_widget): same. * GNOME_Evolution_Shell.oaf.in: remove the DefaultFolders and OfflineFolders controls and add a FolderSettings_Control. * Makefile.am (evolution_SOURCES): add e-shell-config-folder-settings.[ch] and e-shell-config-autocompletion.[ch]. * e-shell-config-folder-settings.[ch]: new files, embed (after a fashion) the default folder, offline, and autocompletion UI's in a notebook. * e-shell-config-autocompletion.[ch]: Basically copy over and shell-ize the addressbook autocompletion config control so it can be embedded more easily with the other folder settings. svn path=/trunk/; revision=17000
This commit is contained in:

committed by
Chris Toshok

parent
5009d8d479
commit
9529bae97d
@ -1,3 +1,65 @@
|
||||
2002-05-24 Chris Toshok <toshok@ximian.com>
|
||||
|
||||
[ fixes 90% of #25047 ]
|
||||
* e-folder-list.c (get_folder_for_uri): shamelessly lifted from
|
||||
evolution-folder-selector-button.c.
|
||||
(create_display_string): modeled again after
|
||||
evolution-folder-selector-button.c, so we can give a little more
|
||||
context (and make the table look like the folder selector
|
||||
buttons.)
|
||||
(SPEC): add a pixbuf column, also remove the sorting behavior.
|
||||
(columns): add a pixbuf column and another string column (for the
|
||||
display string).
|
||||
(add_clicked): create the display string and get the proper
|
||||
pixbuf, and insert both.
|
||||
(edit_clicked): removed.
|
||||
(update_buttons): remove edit button handling from here.
|
||||
(e_folder_list_init): remove the hooking up of button-edit's
|
||||
"clicked" signal.
|
||||
(e_folder_list_construct): get a reference to the storage registry
|
||||
so we can look up folders.
|
||||
(e_folder_list_set_items): analogous change to add_clicked - get
|
||||
the display string and pixbuf and insert them.
|
||||
|
||||
* glade/e-folder-list.glade: remove the edit button.
|
||||
|
||||
* glade/e-shell-config-default-folders.glade: remove the
|
||||
frame/vbox, since we embed it in a notebook and the tab has the
|
||||
title already.
|
||||
|
||||
* e-shell-config.c (config_control_factory_cb): the only config
|
||||
control we deal with here now is the folder settings control.
|
||||
|
||||
* e-shell-config-default-folders.c
|
||||
(e_shell_config_default_folders_create_widget): rename
|
||||
e_shell_config_default_folders_create_control to this, return the
|
||||
widget, and take the config control to use as an arg.
|
||||
|
||||
* e-shell-config-offline.c (e_shell_config_offline_create_widget):
|
||||
make an analogous change here as with
|
||||
default_folders_create_widget.
|
||||
|
||||
* e-shell-config-default-folders.h
|
||||
(e_shell_config_default_folders_create_widget): track change to
|
||||
prototype.
|
||||
|
||||
* e-shell-config-offline.h (e_shell_config_offline_create_widget): same.
|
||||
|
||||
* GNOME_Evolution_Shell.oaf.in: remove the DefaultFolders and
|
||||
OfflineFolders controls and add a FolderSettings_Control.
|
||||
|
||||
* Makefile.am (evolution_SOURCES): add
|
||||
e-shell-config-folder-settings.[ch] and
|
||||
e-shell-config-autocompletion.[ch].
|
||||
|
||||
* e-shell-config-folder-settings.[ch]: new files, embed (after a
|
||||
fashion) the default folder, offline, and autocompletion UI's in a
|
||||
notebook.
|
||||
|
||||
* e-shell-config-autocompletion.[ch]: Basically copy over and
|
||||
shell-ize the addressbook autocompletion config control so it can
|
||||
be embedded more easily with the other folder settings.
|
||||
|
||||
2002-05-23 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* main.c (quit_box_new): Set @allow_shrink and @allow_grow to
|
||||
|
@ -21,7 +21,7 @@
|
||||
</oaf_attribute>
|
||||
</oaf_server>
|
||||
|
||||
<oaf_server iid="OAFIID:GNOME_Evolution_Shell_Config_DefaultFolders_Control"
|
||||
<oaf_server iid="OAFIID:GNOME_Evolution_Shell_Config_FolderSettings_Control"
|
||||
type="factory"
|
||||
location="OAFIID:GNOME_Evolution_Shell_Config_Factory">
|
||||
|
||||
@ -30,10 +30,10 @@
|
||||
</oaf_attribute>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:title" type="string"
|
||||
_value="Default Folders"/>
|
||||
_value="Folder Settings"/>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:description" type="string"
|
||||
_value="This page can be used to configure default folders"/>
|
||||
_value="This page can be used to configure various folder settings"/>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:icon_name" type="string"
|
||||
value="folder-settings.png"/>
|
||||
@ -45,34 +45,7 @@
|
||||
</oaf_attribute>
|
||||
|
||||
<oaf_attribute name="description" type="string"
|
||||
_value="Configuration control for Evolution default folders."/>
|
||||
</oaf_server>
|
||||
|
||||
<oaf_server iid="OAFIID:GNOME_Evolution_Shell_Config_OfflineFolders_Control"
|
||||
type="factory"
|
||||
location="OAFIID:GNOME_Evolution_Shell_Config_Factory">
|
||||
|
||||
<oaf_attribute name="repo_ids" type="stringv">
|
||||
<item value="IDL:GNOME/Evolution/ConfigControl:1.0"/>
|
||||
</oaf_attribute>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:title" type="string"
|
||||
_value="Offline Folders"/>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:description" type="string"
|
||||
_value="This page can be used to configure synchronization of folders for offline usage"/>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:icon_name" type="string"
|
||||
value="folder-settings.png"/>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:priority" type="string" value="-9"/>
|
||||
|
||||
<oaf_attribute name="evolution:config_item:type" type="stringv">
|
||||
<item value="shell"/>
|
||||
</oaf_attribute>
|
||||
|
||||
<oaf_attribute name="description" type="string"
|
||||
_value="Configuration control for Evolution's offline folders."/>
|
||||
_value="Configuration control for Evolution folder settings."/>
|
||||
</oaf_server>
|
||||
|
||||
</oaf_info>
|
||||
|
@ -152,10 +152,14 @@ evolution_SOURCES = \
|
||||
e-shell-about-box.h \
|
||||
e-shell-config.c \
|
||||
e-shell-config.h \
|
||||
e-shell-config-autocompletion.c \
|
||||
e-shell-config-autocompletion.h \
|
||||
e-shell-config-offline.c \
|
||||
e-shell-config-offline.h \
|
||||
e-shell-config-default-folders.c \
|
||||
e-shell-config-default-folders.h \
|
||||
e-shell-config-folder-settings.c \
|
||||
e-shell-config-folder-settings.h \
|
||||
e-shell-constants.h \
|
||||
e-shell-folder-commands.c \
|
||||
e-shell-folder-commands.h \
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <libgnomeui/gnome-canvas-rect-ellipse.h>
|
||||
#include "e-folder-list.h"
|
||||
#include <gal/e-table/e-table-memory-store.h>
|
||||
#include <gal/widgets/e-unicode.h>
|
||||
#include <gal/widgets/e-gui-utils.h>
|
||||
#include <gal/widgets/e-option-menu.h>
|
||||
#include <libgnome/gnome-i18n.h>
|
||||
@ -32,6 +33,7 @@
|
||||
#include <gnome-xml/xmlmemory.h>
|
||||
#include <gal/util/e-xml-utils.h>
|
||||
#include <glade/glade.h>
|
||||
#include "Evolution.h"
|
||||
|
||||
static GtkVBoxClass *parent_class = NULL;
|
||||
#define PARENT_TYPE (gtk_vbox_get_type ())
|
||||
@ -59,11 +61,66 @@ struct _EFolderListPrivate {
|
||||
GtkFrame *frame;
|
||||
ETableMemoryStore *model;
|
||||
EvolutionShellClient *client;
|
||||
GNOME_Evolution_StorageRegistry corba_storage_registry;
|
||||
EOptionMenu *option_menu;
|
||||
|
||||
char **possible_types;
|
||||
};
|
||||
|
||||
|
||||
static GNOME_Evolution_Folder *
|
||||
get_folder_for_uri (EFolderList *efl,
|
||||
const char *uri)
|
||||
{
|
||||
EFolderListPrivate *priv = efl->priv;
|
||||
CORBA_Environment ev;
|
||||
GNOME_Evolution_Folder *folder;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
folder = GNOME_Evolution_StorageRegistry_getFolderByUri (
|
||||
priv->corba_storage_registry, uri, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION)
|
||||
folder = CORBA_OBJECT_NIL;
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
return folder;
|
||||
}
|
||||
|
||||
static char *
|
||||
create_display_string (EFolderList *efl, char *folder_uri, char *folder_name)
|
||||
{
|
||||
char *storage_lname, *p;
|
||||
char *label_text;
|
||||
|
||||
storage_lname = NULL;
|
||||
p = strchr (folder_uri, '/');
|
||||
if (p) {
|
||||
p = strchr (p + 1, '/');
|
||||
if (p) {
|
||||
GNOME_Evolution_Folder *storage_folder;
|
||||
char *storage_uri;
|
||||
|
||||
storage_uri = g_strndup (folder_uri,
|
||||
p - folder_uri);
|
||||
storage_folder = get_folder_for_uri (efl, storage_uri);
|
||||
storage_lname = e_utf8_to_gtk_string (GTK_WIDGET(efl), storage_folder->displayName);
|
||||
CORBA_free (storage_folder);
|
||||
g_free (storage_uri);
|
||||
}
|
||||
}
|
||||
|
||||
if (storage_lname) {
|
||||
label_text = g_strdup_printf ("\"%s\" in \"%s\"", folder_name,
|
||||
storage_lname);
|
||||
g_free (storage_lname);
|
||||
} else
|
||||
label_text = g_strdup_printf ("\"%s\"", folder_name);
|
||||
|
||||
return label_text;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
e_folder_list_changed (EFolderList *efl)
|
||||
{
|
||||
@ -189,6 +246,14 @@ e_folder_list_class_init (EFolderListClass *klass)
|
||||
" no-headers=\"true\"" \
|
||||
">" \
|
||||
" <ETableColumn model_col=\"0\"" \
|
||||
" expansion=\"0.0\"" \
|
||||
" cell=\"pixbuf\"" \
|
||||
" minimum_width=\"18\"" \
|
||||
" resizable=\"false\"" \
|
||||
" _title=\"icon\"" \
|
||||
" compare=\"string\"" \
|
||||
" search=\"string\"/>" \
|
||||
" <ETableColumn model_col=\"1\"" \
|
||||
" expansion=\"1.0\"" \
|
||||
" cell=\"string\"" \
|
||||
" minimum_width=\"32\"" \
|
||||
@ -198,14 +263,16 @@ e_folder_list_class_init (EFolderListClass *klass)
|
||||
" search=\"string\"/>" \
|
||||
" <ETableState>" \
|
||||
" <column source=\"0\"/>" \
|
||||
" <column source=\"1\"/>" \
|
||||
" <grouping>" \
|
||||
" <leaf column=\"0\" ascending=\"true\"/>" \
|
||||
" </grouping>" \
|
||||
" </ETableState>" \
|
||||
"</ETableSpecification>"
|
||||
|
||||
|
||||
static ETableMemoryStoreColumnInfo columns[] = {
|
||||
E_TABLE_MEMORY_STORE_PIXBUF,
|
||||
E_TABLE_MEMORY_STORE_STRING,
|
||||
E_TABLE_MEMORY_STORE_STRING,
|
||||
E_TABLE_MEMORY_STORE_STRING,
|
||||
E_TABLE_MEMORY_STORE_STRING,
|
||||
@ -248,8 +315,15 @@ add_clicked (GtkButton *button, EFolderList *efl)
|
||||
&folder);
|
||||
|
||||
if (folder != NULL) {
|
||||
e_table_memory_store_insert (efl->priv->model, -1, NULL, folder->displayName, folder->evolutionUri, folder->physicalUri);
|
||||
GdkPixbuf *pixbuf;
|
||||
char *display_string = create_display_string (efl, folder->evolutionUri, folder->displayName);
|
||||
|
||||
pixbuf = evolution_shell_client_get_pixbuf_for_type (efl->priv->client, folder->type, TRUE);
|
||||
e_table_memory_store_insert (efl->priv->model, -1, NULL, pixbuf, display_string,
|
||||
folder->displayName, folder->evolutionUri, folder->physicalUri);
|
||||
e_folder_list_changed (efl);
|
||||
gdk_pixbuf_unref (pixbuf);
|
||||
g_free (display_string);
|
||||
}
|
||||
}
|
||||
|
||||
@ -286,33 +360,6 @@ remove_clicked (GtkButton *button, EFolderList *efl)
|
||||
e_folder_list_changed (efl);
|
||||
}
|
||||
|
||||
static void
|
||||
edit_clicked (GtkButton *button, EFolderList *efl)
|
||||
{
|
||||
ETable *table;
|
||||
GNOME_Evolution_Folder *folder;
|
||||
int cursor_row;
|
||||
|
||||
table = e_table_scrolled_get_table (efl->priv->scrolled_table);
|
||||
cursor_row = e_table_get_cursor_row (table);
|
||||
|
||||
if (cursor_row != -1) {
|
||||
char *initial = e_table_model_value_at (E_TABLE_MODEL (efl->priv->model), 1, cursor_row);
|
||||
evolution_shell_client_user_select_folder (efl->priv->client,
|
||||
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (efl))),
|
||||
_("Edit this Folder"),
|
||||
initial,
|
||||
(const gchar **) efl->priv->possible_types,
|
||||
&folder);
|
||||
|
||||
if (folder != NULL) {
|
||||
e_table_memory_store_remove (efl->priv->model, cursor_row);
|
||||
e_table_memory_store_insert (efl->priv->model, -1, NULL, folder->displayName, folder->evolutionUri, folder->physicalUri);
|
||||
e_folder_list_changed (efl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
optionmenu_changed (EOptionMenu *option_menu, int value, EFolderList *efl)
|
||||
{
|
||||
@ -330,8 +377,6 @@ update_buttons (EFolderList *efl)
|
||||
cursor_row = e_table_get_cursor_row (table);
|
||||
selection_count = e_table_selected_count (table);
|
||||
|
||||
|
||||
e_glade_xml_set_sensitive (efl->priv->gui, "button-edit", cursor_row != -1);
|
||||
e_glade_xml_set_sensitive (efl->priv->gui, "button-remove", selection_count >= 1);
|
||||
}
|
||||
|
||||
@ -375,8 +420,6 @@ e_folder_list_init (EFolderList *efl)
|
||||
GTK_SIGNAL_FUNC (add_clicked), efl);
|
||||
e_glade_xml_connect_widget (gui, "button-remove", "clicked",
|
||||
GTK_SIGNAL_FUNC (remove_clicked), efl);
|
||||
e_glade_xml_connect_widget (gui, "button-edit", "clicked",
|
||||
GTK_SIGNAL_FUNC (edit_clicked), efl);
|
||||
e_glade_xml_connect_widget (gui, "custom-optionmenu", "changed",
|
||||
GTK_SIGNAL_FUNC (optionmenu_changed), efl);
|
||||
|
||||
@ -514,6 +557,7 @@ e_folder_list_construct (EFolderList *efl, EvolutionShellClient *client, char *x
|
||||
{
|
||||
efl->priv->client = client;
|
||||
bonobo_object_client_ref (BONOBO_OBJECT_CLIENT (efl->priv->client), NULL);
|
||||
efl->priv->corba_storage_registry = evolution_shell_client_get_storage_registry_interface (client);
|
||||
e_folder_list_set_xml (efl, xml);
|
||||
return GTK_WIDGET (efl);
|
||||
}
|
||||
@ -524,7 +568,21 @@ e_folder_list_set_items (EFolderList *efl, EFolderListItem *items)
|
||||
int i;
|
||||
e_table_memory_store_clear (efl->priv->model);
|
||||
for (i = 0; items[i].uri; i++) {
|
||||
e_table_memory_store_insert (efl->priv->model, -1, NULL, items[i].display_name, items[i].uri, items[i].physical_uri);
|
||||
GNOME_Evolution_Folder *folder;
|
||||
GdkPixbuf *pixbuf;
|
||||
char *display_string;
|
||||
|
||||
display_string = create_display_string (efl, items[i].uri, items[i].display_name);
|
||||
|
||||
folder = get_folder_for_uri (efl, items[i].uri);
|
||||
pixbuf = evolution_shell_client_get_pixbuf_for_type (efl->priv->client, folder->type, TRUE);
|
||||
|
||||
e_table_memory_store_insert (efl->priv->model, -1, NULL,
|
||||
pixbuf, display_string,
|
||||
items[i].display_name, items[i].uri, items[i].physical_uri);
|
||||
CORBA_free (folder);
|
||||
gdk_pixbuf_unref (pixbuf);
|
||||
g_free (display_string);
|
||||
}
|
||||
}
|
||||
|
||||
|
127
shell/e-shell-config-autocompletion.c
Normal file
127
shell/e-shell-config-autocompletion.c
Normal file
@ -0,0 +1,127 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-shell-config-autocompletion.c - Configuration page for addressbook autocompletion.
|
||||
*
|
||||
* Copyright (C) 2002 Ximian, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Chris Lahey <clahey@ximian.com>
|
||||
* Chris Toshok <toshok@ximian.com>
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "e-shell-config-autocompletion.h"
|
||||
|
||||
#include "e-folder-list.h"
|
||||
|
||||
#include "Evolution.h"
|
||||
|
||||
#include <bonobo-conf/Bonobo_Config.h>
|
||||
#include <bonobo/bonobo-exception.h>
|
||||
|
||||
#include <libgnome/gnome-i18n.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
EvolutionConfigControl *config_control;
|
||||
|
||||
GtkWidget *control_widget;
|
||||
|
||||
Bonobo_ConfigDatabase db;
|
||||
EvolutionShellClient *shell_client;
|
||||
} EvolutionAutocompletionConfig;
|
||||
|
||||
static void
|
||||
folder_list_changed_callback (EFolderList *efl,
|
||||
EvolutionAutocompletionConfig *ac)
|
||||
{
|
||||
evolution_config_control_changed (ac->config_control);
|
||||
}
|
||||
|
||||
static void
|
||||
config_control_destroy_callback (EvolutionConfigControl *config_control,
|
||||
EvolutionAutocompletionConfig *ac)
|
||||
{
|
||||
bonobo_object_unref (BONOBO_OBJECT (ac->shell_client));
|
||||
g_free (ac);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
config_control_apply_callback (EvolutionConfigControl *config_control,
|
||||
EvolutionAutocompletionConfig *ac)
|
||||
{
|
||||
char *xml;
|
||||
CORBA_Environment ev;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
xml = e_folder_list_get_xml (E_FOLDER_LIST (ac->control_widget));
|
||||
bonobo_config_set_string (ac->db, "/Addressbook/Completion/uris", xml, &ev);
|
||||
g_free (xml);
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
e_shell_config_autocompletion_create_widget (EShell *shell, EvolutionConfigControl *config_control)
|
||||
{
|
||||
GNOME_Evolution_Shell shell_dup;
|
||||
EvolutionAutocompletionConfig *ac;
|
||||
char *xml;
|
||||
CORBA_Environment ev;
|
||||
static const char *possible_types[] = { "contacts", "ldap-contacts", NULL };
|
||||
|
||||
ac = g_new0 (EvolutionAutocompletionConfig, 1);
|
||||
ac->db = e_shell_get_config_db (shell);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
shell_dup = CORBA_Object_duplicate (bonobo_object_corba_objref (BONOBO_OBJECT (shell)), &ev);
|
||||
ac->shell_client = evolution_shell_client_new (shell_dup);
|
||||
|
||||
xml = bonobo_config_get_string (ac->db, "/Addressbook/Completion/uris", &ev);
|
||||
|
||||
ac->control_widget = e_folder_list_new (ac->shell_client,
|
||||
xml);
|
||||
bonobo_object_client_unref (BONOBO_OBJECT_CLIENT (ac->shell_client), NULL);
|
||||
g_free (xml);
|
||||
|
||||
gtk_object_set (GTK_OBJECT (ac->control_widget),
|
||||
"title", _("Extra Completion folders"),
|
||||
"possible_types", possible_types,
|
||||
NULL);
|
||||
|
||||
gtk_widget_show (ac->control_widget);
|
||||
|
||||
ac->config_control = config_control;
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (ac->control_widget), "changed",
|
||||
GTK_SIGNAL_FUNC (folder_list_changed_callback), ac);
|
||||
gtk_signal_connect (GTK_OBJECT (ac->config_control), "apply",
|
||||
GTK_SIGNAL_FUNC (config_control_apply_callback), ac);
|
||||
gtk_signal_connect (GTK_OBJECT (ac->config_control), "destroy",
|
||||
GTK_SIGNAL_FUNC (config_control_destroy_callback), ac);
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
return ac->control_widget;
|
||||
}
|
||||
|
34
shell/e-shell-config-autocompletion.h
Normal file
34
shell/e-shell-config-autocompletion.h
Normal file
@ -0,0 +1,34 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-shell-config-autocompletion.c - Configuration page for addressbook autocompletion.
|
||||
*
|
||||
* Copyright (C) 2002 Ximian, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Chris Lahey <clahey@ximian.com>
|
||||
* Chris Toshok <toshok@ximian.com>
|
||||
*/
|
||||
|
||||
#ifndef E_SHELL_CONFIG_AUTOCOMPLETION_H
|
||||
#define E_SHELL_CONFIG_AUTOCOMPLETION_H
|
||||
|
||||
#include "e-shell.h"
|
||||
|
||||
#include <gtk/gtkwidget.h>
|
||||
#include "evolution-config-control.h"
|
||||
|
||||
GtkWidget *e_shell_config_autocompletion_create_widget (EShell *shell, EvolutionConfigControl *config_control);
|
||||
|
||||
#endif /* E_SHELL_CONFIG_AUTOCOMPLETION_H */
|
@ -27,7 +27,6 @@
|
||||
|
||||
#include "e-shell-config-default-folders.h"
|
||||
|
||||
#include "evolution-config-control.h"
|
||||
#include "evolution-folder-selector-button.h"
|
||||
|
||||
#include <glade/glade-xml.h>
|
||||
@ -140,8 +139,8 @@ setup_folder_selector (EvolutionDefaultFolderConfig *dfc,
|
||||
dfc);
|
||||
}
|
||||
|
||||
BonoboObject *
|
||||
e_shell_config_default_folders_create_control (EShell *shell)
|
||||
GtkWidget*
|
||||
e_shell_config_default_folders_create_widget (EShell *shell, EvolutionConfigControl *config_control)
|
||||
{
|
||||
GNOME_Evolution_Shell shell_dup;
|
||||
CORBA_Environment ev;
|
||||
@ -175,17 +174,16 @@ e_shell_config_default_folders_create_control (EShell *shell)
|
||||
&dfc->tasks_uri, "/DefaultFolders/tasks_uri",
|
||||
tasks_types);
|
||||
|
||||
widget = glade_xml_get_widget (dfc->glade, "default_folders_vbox");
|
||||
widget = glade_xml_get_widget (dfc->glade, "default_folders_table");
|
||||
gtk_widget_ref (widget);
|
||||
gtk_container_remove (GTK_CONTAINER (widget->parent), widget);
|
||||
gtk_widget_show (widget);
|
||||
dfc->config_control = evolution_config_control_new (widget);
|
||||
gtk_widget_unref (widget);
|
||||
dfc->config_control = config_control;
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (dfc->config_control), "apply",
|
||||
GTK_SIGNAL_FUNC (config_control_apply_cb), dfc);
|
||||
gtk_signal_connect (GTK_OBJECT (dfc->config_control), "destroy",
|
||||
GTK_SIGNAL_FUNC (config_control_destroy_cb), dfc);
|
||||
|
||||
return BONOBO_OBJECT (dfc->config_control);
|
||||
return widget;
|
||||
}
|
||||
|
@ -26,8 +26,9 @@
|
||||
|
||||
#include "e-shell.h"
|
||||
|
||||
#include <bonobo/bonobo-object.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
#include "evolution-config-control.h"
|
||||
|
||||
BonoboObject *e_shell_config_default_folders_create_control (EShell *shell);
|
||||
GtkWidget *e_shell_config_default_folders_create_widget (EShell *shell, EvolutionConfigControl *config_control);
|
||||
|
||||
#endif /* E_SHELL_CONFIG_DEFAULT_FOLDERS_H */
|
||||
|
83
shell/e-shell-config-folder-settings.c
Normal file
83
shell/e-shell-config-folder-settings.c
Normal file
@ -0,0 +1,83 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-shell-config-folder-settings.c - Configuration page for folder settings.
|
||||
*
|
||||
* Copyright (C) 2002 Ximian, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Author: Ettore Perazzoli <ettore@ximian.com>
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "e-shell-config-folder-settings.h"
|
||||
#include "e-shell-config-offline.h"
|
||||
#include "e-shell-config-autocompletion.h"
|
||||
#include "e-shell-config-default-folders.h"
|
||||
|
||||
#include "evolution-config-control.h"
|
||||
#include "e-storage-set-view.h"
|
||||
|
||||
#include "Evolution.h"
|
||||
|
||||
#include <bonobo-conf/Bonobo_Config.h>
|
||||
#include <bonobo/bonobo-exception.h>
|
||||
|
||||
#include <libgnome/gnome-i18n.h>
|
||||
#include <gtk/gtknotebook.h>
|
||||
#include <gtk/gtklabel.h>
|
||||
|
||||
|
||||
static void
|
||||
append_to_notebook (GtkWidget *notebook, char *label_str,
|
||||
GtkWidget *child)
|
||||
{
|
||||
GtkWidget *label;
|
||||
|
||||
label = gtk_label_new (label_str);
|
||||
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK(notebook), child, label);
|
||||
gtk_widget_show (label);
|
||||
gtk_widget_show (child);
|
||||
}
|
||||
|
||||
BonoboObject *
|
||||
e_shell_config_folder_settings_create_control (EShell *shell)
|
||||
{
|
||||
GtkWidget *notebook;
|
||||
EvolutionConfigControl *control;
|
||||
|
||||
g_return_val_if_fail (E_IS_SHELL (shell), NULL);
|
||||
|
||||
notebook = gtk_notebook_new ();
|
||||
|
||||
control = evolution_config_control_new (notebook);
|
||||
|
||||
append_to_notebook (notebook, _("Default Folders"),
|
||||
e_shell_config_default_folders_create_widget (shell, control));
|
||||
|
||||
append_to_notebook (notebook, _("Offline Folders"),
|
||||
e_shell_config_offline_create_widget (shell, control));
|
||||
|
||||
append_to_notebook (notebook, _("Autocompletion Folders"),
|
||||
e_shell_config_autocompletion_create_widget (shell, control));
|
||||
|
||||
gtk_widget_show (notebook);
|
||||
|
||||
return BONOBO_OBJECT (control);
|
||||
}
|
32
shell/e-shell-config-folder-settings.h
Normal file
32
shell/e-shell-config-folder-settings.h
Normal file
@ -0,0 +1,32 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-shell-config-folder-settings.h - Configuration page for folder settings.
|
||||
*
|
||||
* Copyright (C) 2002 Ximian, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Author: Ettore Perazzoli <ettore@ximian.com>
|
||||
*/
|
||||
|
||||
#ifndef E_SHELL_CONFIG_FOLDER_SETTINGS_H
|
||||
#define E_SHELL_CONFIG_FOLDER_SETTINGS_H
|
||||
|
||||
#include "e-shell.h"
|
||||
|
||||
#include <bonobo/bonobo-object.h>
|
||||
|
||||
BonoboObject *e_shell_config_folder_settings_create_control (EShell *shell);
|
||||
|
||||
#endif /* E_SHELL_CONFIG_FOLDER_SETTINGS_H */
|
@ -169,8 +169,8 @@ storage_set_view_has_checkbox_func (EStorageSet *storage_set,
|
||||
return e_folder_get_can_sync_offline (folder);
|
||||
}
|
||||
|
||||
BonoboObject *
|
||||
e_shell_config_offline_create_control (EShell *shell)
|
||||
GtkWidget *
|
||||
e_shell_config_offline_create_widget (EShell *shell, EvolutionConfigControl *control)
|
||||
{
|
||||
PageData *page_data;
|
||||
GtkWidget *scroll_frame;
|
||||
@ -196,12 +196,12 @@ e_shell_config_offline_create_control (EShell *shell)
|
||||
gtk_container_add (GTK_CONTAINER (scroll_frame), page_data->storage_set_view);
|
||||
gtk_widget_show (scroll_frame);
|
||||
|
||||
page_data->config_control = evolution_config_control_new (scroll_frame);
|
||||
page_data->config_control = control;
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (page_data->config_control), "destroy",
|
||||
GTK_SIGNAL_FUNC (config_control_destroy_callback), page_data);
|
||||
gtk_signal_connect (GTK_OBJECT (page_data->config_control), "apply",
|
||||
GTK_SIGNAL_FUNC (config_control_apply_callback), page_data);
|
||||
|
||||
return BONOBO_OBJECT (page_data->config_control);
|
||||
return scroll_frame;
|
||||
}
|
||||
|
@ -25,8 +25,9 @@
|
||||
|
||||
#include "e-shell.h"
|
||||
|
||||
#include <bonobo/bonobo-object.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
#include "evolution-config-control.h"
|
||||
|
||||
BonoboObject *e_shell_config_offline_create_control (EShell *shell);
|
||||
GtkWidget *e_shell_config_offline_create_widget (EShell *shell, EvolutionConfigControl *config_control);
|
||||
|
||||
#endif /* E_SHELL_CONFIG_OFFLINE_H */
|
||||
|
@ -24,8 +24,7 @@
|
||||
|
||||
#include "e-shell-config.h"
|
||||
|
||||
#include "e-shell-config-default-folders.h"
|
||||
#include "e-shell-config-offline.h"
|
||||
#include "e-shell-config-folder-settings.h"
|
||||
#include "evolution-config-control.h"
|
||||
#include "evolution-folder-selector-button.h"
|
||||
|
||||
@ -34,7 +33,7 @@
|
||||
|
||||
#define E_SHELL_CONFIG_FACTORY_OAFIID "OAFIID:GNOME_Evolution_Shell_Config_Factory"
|
||||
|
||||
#define E_SHELL_CONFIG_DEFAULT_FOLDERS_OAFIID "OAFIID:GNOME_Evolution_Shell_Config_DefaultFolders_Control"
|
||||
#define E_SHELL_CONFIG_FOLDER_SETTINGS_OAFIID "OAFIID:GNOME_Evolution_Shell_Config_FolderSettings_Control"
|
||||
|
||||
|
||||
static BonoboObject *
|
||||
@ -42,10 +41,12 @@ config_control_factory_cb (BonoboGenericFactory *factory,
|
||||
const char *component_id,
|
||||
gpointer shell)
|
||||
{
|
||||
if (!strcmp (component_id, E_SHELL_CONFIG_DEFAULT_FOLDERS_OAFIID))
|
||||
return e_shell_config_default_folders_create_control (shell);
|
||||
else
|
||||
return e_shell_config_offline_create_control (shell);
|
||||
if (!strcmp (component_id, E_SHELL_CONFIG_FOLDER_SETTINGS_OAFIID))
|
||||
return e_shell_config_folder_settings_create_control (shell);
|
||||
else {
|
||||
g_assert_not_reached();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
@ -103,21 +103,12 @@
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button-edit</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<label>_Edit</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button-remove</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<label>_Remove</label>
|
||||
<label>_Delete</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
</widget>
|
||||
</widget>
|
||||
|
@ -24,27 +24,9 @@
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>default_folders_vbox</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>default_folder_frame</name>
|
||||
<label>Default Folders</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<name>default_folders_table</name>
|
||||
<border_width>4</border_width>
|
||||
<rows>4</rows>
|
||||
<columns>2</columns>
|
||||
@ -248,8 +230,6 @@
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
||||
|
Reference in New Issue
Block a user