Remove non-existent file

2001-01-04  JP Rosevear  <jpr@helixcode.com>

	* POTFILES.in: Remove non-existent file

2001-01-04  JP Rosevear  <jpr@helixcode.com>

	* conduit/Makefile.am: Fix hard coded library names that were
	accidentally committed (i'm looking at you miggie)

	* contact-editor/e-contact-editor.c (categories_clicked): Reflect
	renaming.

	* contact-editor/e-contact-editor-categories.[hc]: These are
	living in gal now

svn path=/trunk/; revision=7261
This commit is contained in:
JP Rosevear
2001-01-04 21:56:16 +00:00
committed by JP Rosevear
parent 2bd88e7f25
commit 5ff5cd8153
21 changed files with 395 additions and 1848 deletions

View File

@ -1,3 +1,14 @@
2001-01-04 JP Rosevear <jpr@helixcode.com>
* conduit/Makefile.am: Fix hard coded library names that were
accidentally committed (i'm looking at you miggie)
* contact-editor/e-contact-editor.c (categories_clicked): Reflect
renaming.
* contact-editor/e-contact-editor-categories.[hc]: These are
living in gal now
2001-01-04 JP Rosevear <jpr@helixcode.com>
* backend/pas/pas-backend-file.c (pas_backend_file_book_view_free):

View File

@ -12,8 +12,17 @@ bin_PROGRAMS = e-address-conduit-control-applet
e_address_conduit_control_applet_SOURCES = address-conduit-control-applet.c
e_address_conduit_control_applet_LDFLAGS = \
-rdynamic -L/usr/lib -L/usr/X11R6/lib -lcapplet -lgnorba -lgpilotd -lgpilotdcm -lgpilotdconduit -lgnomevfs -lgthread -lpthread -lbonobo -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgnome -lgnomesupport -lesd -laudiofile -ldb1 -lgdk_pixbuf -ltiff -ljpeg -lpng -lgtk -lgdk -lgmodule -ldl -lXi -lXext -lX11 -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm -lxml -lz -lpisock
e_address_conduit_control_applet_LDADD = \
$(CAPPLET_LIBS) \
$(GNOME_LIBDIR) \
$(GNOME_PILOT_LIBS) \
$(PISOCK_LIBDIR) $(PISOCK_LIBS) \
$(GNOME_CAPPLET_LIBS) \
$(BONOBO_VFS_GNOME_LIBS) \
$(GNOME_XML_LIB) \
$(GNOMEUI_LIBS) \
$(INTLLIBS)
# Address Conduit
e_address_conduitsdir=$(libdir)/gnome-pilot/conduits

View File

@ -17,8 +17,6 @@ noinst_LIBRARIES = \
libecontacteditor_a_SOURCES = \
e-contact-editor-address.c \
e-contact-editor-address.h \
e-contact-editor-categories.c \
e-contact-editor-categories.h \
e-contact-editor-fullname.c \
e-contact-editor-fullname.h \
e-contact-editor.c \
@ -56,7 +54,6 @@ glade_DATA = \
contact-editor.glade \
fulladdr.glade \
fullname.glade \
categories.glade \
e-contact-editor-confirm-delete.glade
EXTRA_DIST = $(evolution_DATA) \
@ -64,5 +61,4 @@ EXTRA_DIST = $(evolution_DATA) \
e-contact-editor-strings.h \
fulladdr.glade.h \
fullname-strings.h \
categories-strings.h \
e-contact-editor-confirm-delete.glade.h

View File

@ -1,9 +0,0 @@
/*
* Translatable strings file generated by Glade.
* Add this file to your project's POTFILES.in.
* DO NOT compile it as part of your application.
*/
gchar *s = N_("categories");
gchar *s = N_("Item(s) belong to these categories:");
gchar *s = N_("Available Categories:");

View File

@ -1,190 +0,0 @@
<?xml version="1.0"?>
<GTK-Interface>
<project>
<name>categories</name>
<program_name>categories</program_name>
<directory></directory>
<source_directory>src</source_directory>
<pixmaps_directory>pixmaps</pixmaps_directory>
<language>C</language>
<gnome_support>True</gnome_support>
<gettext_support>False</gettext_support>
<use_widget_names>False</use_widget_names>
<output_main_file>False</output_main_file>
<output_support_files>False</output_support_files>
<output_build_files>False</output_build_files>
<backup_source_files>False</backup_source_files>
<main_source_file>interface.c</main_source_file>
<main_header_file>interface.h</main_header_file>
<handler_source_file>callbacks.c</handler_source_file>
<handler_header_file>callbacks.h</handler_header_file>
<support_source_file>support.c</support_source_file>
<support_header_file>support.h</support_header_file>
<output_translatable_strings>True</output_translatable_strings>
<translatable_strings_file>categories-strings.h</translatable_strings_file>
</project>
<widget>
<class>GnomeDialog</class>
<name>categories</name>
<cxx_use_heap>True</cxx_use_heap>
<visible>False</visible>
<title>categories</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
<allow_shrink>False</allow_shrink>
<allow_grow>True</allow_grow>
<auto_shrink>False</auto_shrink>
<auto_close>False</auto_close>
<hide_on_close>False</hide_on_close>
<widget>
<class>GtkVBox</class>
<child_name>GnomeDialog:vbox</child_name>
<name>dialog-vbox1</name>
<cxx_use_heap>True</cxx_use_heap>
<homogeneous>False</homogeneous>
<spacing>8</spacing>
<child>
<padding>4</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkTable</class>
<name>table-categories</name>
<cxx_use_heap>True</cxx_use_heap>
<rows>4</rows>
<columns>1</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkAccelLabel</class>
<name>accellabel1</name>
<cxx_use_heap>True</cxx_use_heap>
<label>Item(s) belong to these categories:</label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>True</yfill>
</child>
</widget>
<widget>
<class>GtkAccelLabel</class>
<name>accellabel2</name>
<cxx_use_heap>True</cxx_use_heap>
<label>Available Categories:</label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>2</top_attach>
<bottom_attach>3</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>True</yfill>
</child>
</widget>
<widget>
<class>GtkEntry</class>
<name>entry-categories</name>
<cxx_use_heap>True</cxx_use_heap>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget>
<widget>
<class>GtkHButtonBox</class>
<child_name>GnomeDialog:action_area</child_name>
<name>dialog-action_area1</name>
<cxx_use_heap>True</cxx_use_heap>
<layout_style>GTK_BUTTONBOX_END</layout_style>
<spacing>8</spacing>
<child_min_width>85</child_min_width>
<child_min_height>27</child_min_height>
<child_ipad_x>7</child_ipad_x>
<child_ipad_y>0</child_ipad_y>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
<pack>GTK_PACK_END</pack>
</child>
<widget>
<class>GtkButton</class>
<name>button1</name>
<cxx_use_heap>True</cxx_use_heap>
<can_default>True</can_default>
<can_focus>True</can_focus>
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
</widget>
<widget>
<class>GtkButton</class>
<name>button3</name>
<cxx_use_heap>True</cxx_use_heap>
<can_default>True</can_default>
<can_focus>True</can_focus>
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
</widget>
</widget>
</widget>
</widget>
</GTK-Interface>

View File

@ -1,452 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* e-contact-editor-categories.c
* Copyright (C) 2000 Helix Code, Inc.
* Author: Chris Lahey <clahey@helixcode.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* 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 library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include <config.h>
#include <gnome.h>
#include <e-contact-editor-categories.h>
#include <gal/e-table/e-table-scrolled.h>
#include <gal/e-table/e-table.h>
#include <gal/e-table/e-table-simple.h>
#include <gal/widgets/e-unicode.h>
static void e_contact_editor_categories_init (EContactEditorCategories *card);
static void e_contact_editor_categories_class_init (EContactEditorCategoriesClass *klass);
static void e_contact_editor_categories_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
static void e_contact_editor_categories_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
static void e_contact_editor_categories_destroy (GtkObject *object);
static int e_contact_editor_categories_col_count (ETableModel *etc, gpointer data);
static int e_contact_editor_categories_row_count (ETableModel *etc, gpointer data);
static void *e_contact_editor_categories_value_at (ETableModel *etc, int col, int row, gpointer data);
static void e_contact_editor_categories_set_value_at (ETableModel *etc, int col, int row, const void *val, gpointer data);
static gboolean e_contact_editor_categories_is_cell_editable (ETableModel *etc, int col, int row, gpointer data);
static void *e_contact_editor_categories_duplicate_value (ETableModel *etc, int col, const void *value, gpointer data);
static void e_contact_editor_categories_free_value (ETableModel *etc, int col, void *value, gpointer data);
static void *e_contact_editor_categories_initialize_value (ETableModel *etc, int col, gpointer data);
static gboolean e_contact_editor_categories_value_is_empty (ETableModel *etc, int col, const void *value, gpointer data);
static char * e_contact_editor_categories_value_to_string (ETableModel *etc, int col, const void *value, gpointer data);
static GnomeDialogClass *parent_class = NULL;
/* The arguments we take */
enum {
ARG_0,
ARG_CATEGORIES
};
GtkType
e_contact_editor_categories_get_type (void)
{
static GtkType contact_editor_categories_type = 0;
if (!contact_editor_categories_type)
{
static const GtkTypeInfo contact_editor_categories_info =
{
"EContactEditorCategories",
sizeof (EContactEditorCategories),
sizeof (EContactEditorCategoriesClass),
(GtkClassInitFunc) e_contact_editor_categories_class_init,
(GtkObjectInitFunc) e_contact_editor_categories_init,
/* reserved_1 */ NULL,
/* reserved_2 */ NULL,
(GtkClassInitFunc) NULL,
};
contact_editor_categories_type = gtk_type_unique (gnome_dialog_get_type (), &contact_editor_categories_info);
}
return contact_editor_categories_type;
}
static void
e_contact_editor_categories_class_init (EContactEditorCategoriesClass *klass)
{
GtkObjectClass *object_class;
GnomeDialogClass *dialog_class;
object_class = (GtkObjectClass*) klass;
dialog_class = (GnomeDialogClass *) klass;
parent_class = gtk_type_class (gnome_dialog_get_type ());
gtk_object_add_arg_type ("EContactEditorCategories::categories", GTK_TYPE_STRING,
GTK_ARG_READWRITE, ARG_CATEGORIES);
object_class->set_arg = e_contact_editor_categories_set_arg;
object_class->get_arg = e_contact_editor_categories_get_arg;
object_class->destroy = e_contact_editor_categories_destroy;
}
gchar *builtin_categories[] = {
"Business",
"Competition",
"Favorites",
"Gifts",
"Goals/Objectives",
"Holiday",
"Holiday Cards",
"Hot Contacts",
"Ideas",
"International",
"Key Customer",
"Miscellaneous",
"Personal",
"Phone Calls",
"Status",
"Strategies",
"Suppliers",
"Time & Expenses",
"VIP",
"Waiting",
};
#define BUILTIN_CATEGORY_COUNT (sizeof(builtin_categories) / sizeof(builtin_categories[0]))
static void
add_list_unique(EContactEditorCategories *categories, char *string)
{
int k;
char *temp = e_strdup_strip(string);
char **list = categories->category_list;
if (!*temp) {
g_free(temp);
return;
}
for (k = 0; k < categories->list_length; k++) {
if (!strcmp(list[k], temp)) {
categories->selected_list[k] = TRUE;
break;
}
}
if (k == categories->list_length) {
categories->selected_list[categories->list_length] = TRUE;
list[categories->list_length++] = temp;
} else {
g_free(temp);
}
}
static void
do_parse_categories(EContactEditorCategories *categories)
{
char *str = categories->categories;
int length = strlen(str);
char *copy = g_new(char, length + 1);
int i, j;
char **list;
int count = 1;
e_table_model_pre_change(categories->model);
for (i = 0; i < categories->list_length; i++)
g_free(categories->category_list[i]);
g_free(categories->category_list);
g_free(categories->selected_list);
for (i = 0; str[i]; i++) {
switch (str[i]) {
case '\\':
i++;
if (!str[i])
i--;
break;
case ',':
count ++;
break;
}
}
list = g_new(char *, count + 1 + BUILTIN_CATEGORY_COUNT);
categories->category_list = list;
categories->selected_list = g_new(gboolean, count + 1 + BUILTIN_CATEGORY_COUNT);
for (count = 0; count < BUILTIN_CATEGORY_COUNT; count++) {
list[count] = g_strdup(builtin_categories[count]);
categories->selected_list[count] = 0;
}
categories->list_length = count;
for (i = 0, j = 0; str[i]; i++, j++) {
switch (str[i]) {
case '\\':
i++;
if (str[i]) {
copy[j] = str[i];
} else
i--;
break;
case ',':
copy[j] = 0;
add_list_unique(categories, copy);
j = -1;
break;
default:
copy[j] = str[i];
break;
}
}
copy[j] = 0;
add_list_unique(categories, copy);
g_free(copy);
e_table_model_changed(categories->model);
}
static void
e_contact_editor_categories_entry_change (GtkWidget *entry,
EContactEditorCategories *categories)
{
g_free(categories->categories);
categories->categories = e_utf8_gtk_entry_get_text(GTK_ENTRY(entry));
do_parse_categories(categories);
}
#define INITIAL_SPEC "<ETableSpecification no-headers=\"true\" draw-grid=\"true\" cursor-mode=\"line\">\
<ETableColumn model_col=\"0\" _title=\" \" expansion=\"0.0\" minimum_width=\"20\" resizable=\"false\" cell=\"checkbox\" compare=\"integer\"/> \
<ETableColumn model_col=\"1\" _title=\"Category\" expansion=\"1.0\" minimum_width=\"20\" resizable=\"true\" cell=\"string\" compare=\"string\"/> \
<ETableState> \
<column source=\"0\"/> \
<column source=\"1\"/> \
<grouping> <leaf column=\"1\" ascending=\"true\"/> </grouping> \
</ETableState> \
</ETableSpecification>"
static void
e_contact_editor_categories_init (EContactEditorCategories *categories)
{
GladeXML *gui;
GtkWidget *table;
GtkWidget *e_table;
categories->list_length = 0;
categories->category_list = NULL;
categories->selected_list = NULL;
categories->categories = NULL;
gnome_dialog_append_button ( GNOME_DIALOG(categories),
GNOME_STOCK_BUTTON_OK);
gnome_dialog_append_button ( GNOME_DIALOG(categories),
GNOME_STOCK_BUTTON_CANCEL);
gtk_window_set_policy(GTK_WINDOW(categories), FALSE, TRUE, FALSE);
gui = glade_xml_new (EVOLUTION_GLADEDIR "/categories.glade", NULL);
categories->gui = gui;
table = glade_xml_get_widget(gui, "table-categories");
gtk_widget_ref(table);
gtk_container_remove(GTK_CONTAINER(table->parent), table);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (categories)->vbox), table, TRUE, TRUE, 0);
gtk_widget_unref(table);
categories->entry = glade_xml_get_widget(gui, "entry-categories");
gtk_signal_connect(GTK_OBJECT(categories->entry), "changed",
GTK_SIGNAL_FUNC(e_contact_editor_categories_entry_change), categories);
categories->model = e_table_simple_new(e_contact_editor_categories_col_count,
e_contact_editor_categories_row_count,
e_contact_editor_categories_value_at,
e_contact_editor_categories_set_value_at,
e_contact_editor_categories_is_cell_editable,
e_contact_editor_categories_duplicate_value,
e_contact_editor_categories_free_value,
e_contact_editor_categories_initialize_value,
e_contact_editor_categories_value_is_empty,
e_contact_editor_categories_value_to_string,
categories);
e_table = e_table_scrolled_new (categories->model, NULL, INITIAL_SPEC, NULL);
gtk_object_sink(GTK_OBJECT(categories->model));
gtk_widget_show(e_table);
gtk_table_attach_defaults(GTK_TABLE(table),
e_table,
0, 1,
3, 4);
}
void
e_contact_editor_categories_destroy (GtkObject *object)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(object);
int i;
if (categories->gui)
gtk_object_unref(GTK_OBJECT(categories->gui));
g_free(categories->categories);
for (i = 0; i < categories->list_length; i++)
g_free(categories->category_list[i]);
g_free(categories->category_list);
g_free(categories->selected_list);
}
GtkWidget*
e_contact_editor_categories_new (char *categories)
{
GtkWidget *widget = GTK_WIDGET (gtk_type_new (e_contact_editor_categories_get_type ()));
gtk_object_set (GTK_OBJECT(widget),
"categories", categories,
NULL);
return widget;
}
static void
e_contact_editor_categories_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
{
EContactEditorCategories *e_contact_editor_categories;
e_contact_editor_categories = E_CONTACT_EDITOR_CATEGORIES (o);
switch (arg_id){
case ARG_CATEGORIES:
e_utf8_gtk_entry_set_text(GTK_ENTRY(e_contact_editor_categories->entry), GTK_VALUE_STRING (*arg));
break;
}
}
static void
e_contact_editor_categories_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
{
EContactEditorCategories *e_contact_editor_categories;
e_contact_editor_categories = E_CONTACT_EDITOR_CATEGORIES (object);
switch (arg_id) {
case ARG_CATEGORIES:
GTK_VALUE_STRING (*arg) = g_strdup(e_contact_editor_categories->categories);
break;
default:
arg->type = GTK_TYPE_INVALID;
break;
}
}
/* This function returns the number of columns in our ETableModel. */
static int
e_contact_editor_categories_col_count (ETableModel *etc, gpointer data)
{
return 2;
}
/* This function returns the number of rows in our ETableModel. */
static int
e_contact_editor_categories_row_count (ETableModel *etc, gpointer data)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(data);
return categories->list_length;
}
/* This function returns the value at a particular point in our ETableModel. */
static void *
e_contact_editor_categories_value_at (ETableModel *etc, int col, int row, gpointer data)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(data);
if (col == 0)
return (void *) categories->selected_list[row];
else
return categories->category_list[row];
}
/* This function sets the value at a particular point in our ETableModel. */
static void
e_contact_editor_categories_set_value_at (ETableModel *etc, int col, int row, const void *val, gpointer data)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(data);
if ( col == 0 ) {
char **strs;
int i, j;
char *string;
categories->selected_list[row] = (gboolean) val;
strs = g_new(char *, categories->list_length + 1);
for (i = 0, j = 0; i < categories->list_length; i++) {
if (categories->selected_list[i])
strs[j++] = categories->category_list[i];
}
strs[j] = 0;
string = g_strjoinv(", ", strs);
e_utf8_gtk_entry_set_text(GTK_ENTRY(categories->entry), string);
g_free(string);
g_free(strs);
}
if ( col == 1 )
return;
}
/* This function returns whether a particular cell is editable. */
static gboolean
e_contact_editor_categories_is_cell_editable (ETableModel *etc, int col, int row, gpointer data)
{
return col == 0;
}
/* This function duplicates the value passed to it. */
static void *
e_contact_editor_categories_duplicate_value (ETableModel *etc, int col, const void *value, gpointer data)
{
if (col == 0)
return (void *)value;
else
return g_strdup(value);
}
/* This function frees the value passed to it. */
static void
e_contact_editor_categories_free_value (ETableModel *etc, int col, void *value, gpointer data)
{
if (col == 0)
return;
else
g_free(value);
}
static void *
e_contact_editor_categories_initialize_value (ETableModel *etc, int col, gpointer data)
{
if (col == 0)
return NULL;
else
return g_strdup("");
}
static gboolean
e_contact_editor_categories_value_is_empty (ETableModel *etc, int col, const void *value, gpointer data)
{
if (col == 0)
return value == NULL;
else
return !(value && *(char *)value);
}
static char *
e_contact_editor_categories_value_to_string (ETableModel *etc, int col, const void *value, gpointer data)
{
if (col == 0)
return g_strdup_printf("%d", (int) value);
else
return g_strdup(value);
}

View File

@ -1,81 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* e-contact-editor-categories.h
* Copyright (C) 2000 Helix Code, Inc.
* Author: Chris Lahey <clahey@helixcode.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* 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 library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __E_CONTACT_EDITOR_CATEGORIES_H__
#define __E_CONTACT_EDITOR_CATEGORIES_H__
#include <gnome.h>
#include <glade/glade.h>
#include <gal/e-table/e-table-model.h>
#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus */
/* EContactEditorCategories - A dialog displaying information about a contact.
*
* The following arguments are available:
*
* name type read/write description
* --------------------------------------------------------------------------------
*/
#define E_CONTACT_EDITOR_CATEGORIES_TYPE (e_contact_editor_categories_get_type ())
#define E_CONTACT_EDITOR_CATEGORIES(obj) (GTK_CHECK_CAST ((obj), E_CONTACT_EDITOR_CATEGORIES_TYPE, EContactEditorCategories))
#define E_CONTACT_EDITOR_CATEGORIES_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_CONTACT_EDITOR_CATEGORIES_TYPE, EContactEditorCategoriesClass))
#define E_IS_CONTACT_EDITOR_CATEGORIES(obj) (GTK_CHECK_TYPE ((obj), E_CONTACT_EDITOR_CATEGORIES_TYPE))
#define E_IS_CONTACT_EDITOR_CATEGORIES_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_CONTACT_EDITOR_CATEGORIES_TYPE))
typedef struct _EContactEditorCategories EContactEditorCategories;
typedef struct _EContactEditorCategoriesClass EContactEditorCategoriesClass;
struct _EContactEditorCategories
{
GnomeDialog parent;
/* item specific fields */
char *categories;
GtkWidget *entry;
ETableModel *model;
int list_length;
char **category_list;
gboolean *selected_list;
GladeXML *gui;
};
struct _EContactEditorCategoriesClass
{
GnomeDialogClass parent_class;
};
GtkWidget *e_contact_editor_categories_new(char *categories);
GtkType e_contact_editor_categories_get_type (void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __E_CONTACT_EDITOR_CATEGORIES_H__ */

View File

@ -25,7 +25,6 @@
#include "e-contact-editor.h"
#include <e-contact-editor-fullname.h>
#include <e-contact-editor-address.h>
#include <e-contact-editor-categories.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk-pixbuf/gnome-canvas-pixbuf.h>
#include "e-util/e-gui-utils.h"
@ -570,7 +569,7 @@ categories_clicked(GtkWidget *button, EContactEditor *editor)
gtk_object_get(GTK_OBJECT(editor->card),
"categories", &categories,
NULL);
dialog = GNOME_DIALOG(e_contact_editor_categories_new(categories));
dialog = GNOME_DIALOG(e_categories_new(categories));
gtk_widget_show(GTK_WIDGET(dialog));
result = gnome_dialog_run (dialog);
g_free (categories);

View File

@ -17,8 +17,6 @@ noinst_LIBRARIES = \
libecontacteditor_a_SOURCES = \
e-contact-editor-address.c \
e-contact-editor-address.h \
e-contact-editor-categories.c \
e-contact-editor-categories.h \
e-contact-editor-fullname.c \
e-contact-editor-fullname.h \
e-contact-editor.c \
@ -56,7 +54,6 @@ glade_DATA = \
contact-editor.glade \
fulladdr.glade \
fullname.glade \
categories.glade \
e-contact-editor-confirm-delete.glade
EXTRA_DIST = $(evolution_DATA) \
@ -64,5 +61,4 @@ EXTRA_DIST = $(evolution_DATA) \
e-contact-editor-strings.h \
fulladdr.glade.h \
fullname-strings.h \
categories-strings.h \
e-contact-editor-confirm-delete.glade.h

View File

@ -1,9 +0,0 @@
/*
* Translatable strings file generated by Glade.
* Add this file to your project's POTFILES.in.
* DO NOT compile it as part of your application.
*/
gchar *s = N_("categories");
gchar *s = N_("Item(s) belong to these categories:");
gchar *s = N_("Available Categories:");

View File

@ -1,190 +0,0 @@
<?xml version="1.0"?>
<GTK-Interface>
<project>
<name>categories</name>
<program_name>categories</program_name>
<directory></directory>
<source_directory>src</source_directory>
<pixmaps_directory>pixmaps</pixmaps_directory>
<language>C</language>
<gnome_support>True</gnome_support>
<gettext_support>False</gettext_support>
<use_widget_names>False</use_widget_names>
<output_main_file>False</output_main_file>
<output_support_files>False</output_support_files>
<output_build_files>False</output_build_files>
<backup_source_files>False</backup_source_files>
<main_source_file>interface.c</main_source_file>
<main_header_file>interface.h</main_header_file>
<handler_source_file>callbacks.c</handler_source_file>
<handler_header_file>callbacks.h</handler_header_file>
<support_source_file>support.c</support_source_file>
<support_header_file>support.h</support_header_file>
<output_translatable_strings>True</output_translatable_strings>
<translatable_strings_file>categories-strings.h</translatable_strings_file>
</project>
<widget>
<class>GnomeDialog</class>
<name>categories</name>
<cxx_use_heap>True</cxx_use_heap>
<visible>False</visible>
<title>categories</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
<allow_shrink>False</allow_shrink>
<allow_grow>True</allow_grow>
<auto_shrink>False</auto_shrink>
<auto_close>False</auto_close>
<hide_on_close>False</hide_on_close>
<widget>
<class>GtkVBox</class>
<child_name>GnomeDialog:vbox</child_name>
<name>dialog-vbox1</name>
<cxx_use_heap>True</cxx_use_heap>
<homogeneous>False</homogeneous>
<spacing>8</spacing>
<child>
<padding>4</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkTable</class>
<name>table-categories</name>
<cxx_use_heap>True</cxx_use_heap>
<rows>4</rows>
<columns>1</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkAccelLabel</class>
<name>accellabel1</name>
<cxx_use_heap>True</cxx_use_heap>
<label>Item(s) belong to these categories:</label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>True</yfill>
</child>
</widget>
<widget>
<class>GtkAccelLabel</class>
<name>accellabel2</name>
<cxx_use_heap>True</cxx_use_heap>
<label>Available Categories:</label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>2</top_attach>
<bottom_attach>3</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>True</yfill>
</child>
</widget>
<widget>
<class>GtkEntry</class>
<name>entry-categories</name>
<cxx_use_heap>True</cxx_use_heap>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget>
<widget>
<class>GtkHButtonBox</class>
<child_name>GnomeDialog:action_area</child_name>
<name>dialog-action_area1</name>
<cxx_use_heap>True</cxx_use_heap>
<layout_style>GTK_BUTTONBOX_END</layout_style>
<spacing>8</spacing>
<child_min_width>85</child_min_width>
<child_min_height>27</child_min_height>
<child_ipad_x>7</child_ipad_x>
<child_ipad_y>0</child_ipad_y>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
<pack>GTK_PACK_END</pack>
</child>
<widget>
<class>GtkButton</class>
<name>button1</name>
<cxx_use_heap>True</cxx_use_heap>
<can_default>True</can_default>
<can_focus>True</can_focus>
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
</widget>
<widget>
<class>GtkButton</class>
<name>button3</name>
<cxx_use_heap>True</cxx_use_heap>
<can_default>True</can_default>
<can_focus>True</can_focus>
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
</widget>
</widget>
</widget>
</widget>
</GTK-Interface>

View File

@ -1,452 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* e-contact-editor-categories.c
* Copyright (C) 2000 Helix Code, Inc.
* Author: Chris Lahey <clahey@helixcode.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* 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 library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include <config.h>
#include <gnome.h>
#include <e-contact-editor-categories.h>
#include <gal/e-table/e-table-scrolled.h>
#include <gal/e-table/e-table.h>
#include <gal/e-table/e-table-simple.h>
#include <gal/widgets/e-unicode.h>
static void e_contact_editor_categories_init (EContactEditorCategories *card);
static void e_contact_editor_categories_class_init (EContactEditorCategoriesClass *klass);
static void e_contact_editor_categories_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
static void e_contact_editor_categories_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
static void e_contact_editor_categories_destroy (GtkObject *object);
static int e_contact_editor_categories_col_count (ETableModel *etc, gpointer data);
static int e_contact_editor_categories_row_count (ETableModel *etc, gpointer data);
static void *e_contact_editor_categories_value_at (ETableModel *etc, int col, int row, gpointer data);
static void e_contact_editor_categories_set_value_at (ETableModel *etc, int col, int row, const void *val, gpointer data);
static gboolean e_contact_editor_categories_is_cell_editable (ETableModel *etc, int col, int row, gpointer data);
static void *e_contact_editor_categories_duplicate_value (ETableModel *etc, int col, const void *value, gpointer data);
static void e_contact_editor_categories_free_value (ETableModel *etc, int col, void *value, gpointer data);
static void *e_contact_editor_categories_initialize_value (ETableModel *etc, int col, gpointer data);
static gboolean e_contact_editor_categories_value_is_empty (ETableModel *etc, int col, const void *value, gpointer data);
static char * e_contact_editor_categories_value_to_string (ETableModel *etc, int col, const void *value, gpointer data);
static GnomeDialogClass *parent_class = NULL;
/* The arguments we take */
enum {
ARG_0,
ARG_CATEGORIES
};
GtkType
e_contact_editor_categories_get_type (void)
{
static GtkType contact_editor_categories_type = 0;
if (!contact_editor_categories_type)
{
static const GtkTypeInfo contact_editor_categories_info =
{
"EContactEditorCategories",
sizeof (EContactEditorCategories),
sizeof (EContactEditorCategoriesClass),
(GtkClassInitFunc) e_contact_editor_categories_class_init,
(GtkObjectInitFunc) e_contact_editor_categories_init,
/* reserved_1 */ NULL,
/* reserved_2 */ NULL,
(GtkClassInitFunc) NULL,
};
contact_editor_categories_type = gtk_type_unique (gnome_dialog_get_type (), &contact_editor_categories_info);
}
return contact_editor_categories_type;
}
static void
e_contact_editor_categories_class_init (EContactEditorCategoriesClass *klass)
{
GtkObjectClass *object_class;
GnomeDialogClass *dialog_class;
object_class = (GtkObjectClass*) klass;
dialog_class = (GnomeDialogClass *) klass;
parent_class = gtk_type_class (gnome_dialog_get_type ());
gtk_object_add_arg_type ("EContactEditorCategories::categories", GTK_TYPE_STRING,
GTK_ARG_READWRITE, ARG_CATEGORIES);
object_class->set_arg = e_contact_editor_categories_set_arg;
object_class->get_arg = e_contact_editor_categories_get_arg;
object_class->destroy = e_contact_editor_categories_destroy;
}
gchar *builtin_categories[] = {
"Business",
"Competition",
"Favorites",
"Gifts",
"Goals/Objectives",
"Holiday",
"Holiday Cards",
"Hot Contacts",
"Ideas",
"International",
"Key Customer",
"Miscellaneous",
"Personal",
"Phone Calls",
"Status",
"Strategies",
"Suppliers",
"Time & Expenses",
"VIP",
"Waiting",
};
#define BUILTIN_CATEGORY_COUNT (sizeof(builtin_categories) / sizeof(builtin_categories[0]))
static void
add_list_unique(EContactEditorCategories *categories, char *string)
{
int k;
char *temp = e_strdup_strip(string);
char **list = categories->category_list;
if (!*temp) {
g_free(temp);
return;
}
for (k = 0; k < categories->list_length; k++) {
if (!strcmp(list[k], temp)) {
categories->selected_list[k] = TRUE;
break;
}
}
if (k == categories->list_length) {
categories->selected_list[categories->list_length] = TRUE;
list[categories->list_length++] = temp;
} else {
g_free(temp);
}
}
static void
do_parse_categories(EContactEditorCategories *categories)
{
char *str = categories->categories;
int length = strlen(str);
char *copy = g_new(char, length + 1);
int i, j;
char **list;
int count = 1;
e_table_model_pre_change(categories->model);
for (i = 0; i < categories->list_length; i++)
g_free(categories->category_list[i]);
g_free(categories->category_list);
g_free(categories->selected_list);
for (i = 0; str[i]; i++) {
switch (str[i]) {
case '\\':
i++;
if (!str[i])
i--;
break;
case ',':
count ++;
break;
}
}
list = g_new(char *, count + 1 + BUILTIN_CATEGORY_COUNT);
categories->category_list = list;
categories->selected_list = g_new(gboolean, count + 1 + BUILTIN_CATEGORY_COUNT);
for (count = 0; count < BUILTIN_CATEGORY_COUNT; count++) {
list[count] = g_strdup(builtin_categories[count]);
categories->selected_list[count] = 0;
}
categories->list_length = count;
for (i = 0, j = 0; str[i]; i++, j++) {
switch (str[i]) {
case '\\':
i++;
if (str[i]) {
copy[j] = str[i];
} else
i--;
break;
case ',':
copy[j] = 0;
add_list_unique(categories, copy);
j = -1;
break;
default:
copy[j] = str[i];
break;
}
}
copy[j] = 0;
add_list_unique(categories, copy);
g_free(copy);
e_table_model_changed(categories->model);
}
static void
e_contact_editor_categories_entry_change (GtkWidget *entry,
EContactEditorCategories *categories)
{
g_free(categories->categories);
categories->categories = e_utf8_gtk_entry_get_text(GTK_ENTRY(entry));
do_parse_categories(categories);
}
#define INITIAL_SPEC "<ETableSpecification no-headers=\"true\" draw-grid=\"true\" cursor-mode=\"line\">\
<ETableColumn model_col=\"0\" _title=\" \" expansion=\"0.0\" minimum_width=\"20\" resizable=\"false\" cell=\"checkbox\" compare=\"integer\"/> \
<ETableColumn model_col=\"1\" _title=\"Category\" expansion=\"1.0\" minimum_width=\"20\" resizable=\"true\" cell=\"string\" compare=\"string\"/> \
<ETableState> \
<column source=\"0\"/> \
<column source=\"1\"/> \
<grouping> <leaf column=\"1\" ascending=\"true\"/> </grouping> \
</ETableState> \
</ETableSpecification>"
static void
e_contact_editor_categories_init (EContactEditorCategories *categories)
{
GladeXML *gui;
GtkWidget *table;
GtkWidget *e_table;
categories->list_length = 0;
categories->category_list = NULL;
categories->selected_list = NULL;
categories->categories = NULL;
gnome_dialog_append_button ( GNOME_DIALOG(categories),
GNOME_STOCK_BUTTON_OK);
gnome_dialog_append_button ( GNOME_DIALOG(categories),
GNOME_STOCK_BUTTON_CANCEL);
gtk_window_set_policy(GTK_WINDOW(categories), FALSE, TRUE, FALSE);
gui = glade_xml_new (EVOLUTION_GLADEDIR "/categories.glade", NULL);
categories->gui = gui;
table = glade_xml_get_widget(gui, "table-categories");
gtk_widget_ref(table);
gtk_container_remove(GTK_CONTAINER(table->parent), table);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (categories)->vbox), table, TRUE, TRUE, 0);
gtk_widget_unref(table);
categories->entry = glade_xml_get_widget(gui, "entry-categories");
gtk_signal_connect(GTK_OBJECT(categories->entry), "changed",
GTK_SIGNAL_FUNC(e_contact_editor_categories_entry_change), categories);
categories->model = e_table_simple_new(e_contact_editor_categories_col_count,
e_contact_editor_categories_row_count,
e_contact_editor_categories_value_at,
e_contact_editor_categories_set_value_at,
e_contact_editor_categories_is_cell_editable,
e_contact_editor_categories_duplicate_value,
e_contact_editor_categories_free_value,
e_contact_editor_categories_initialize_value,
e_contact_editor_categories_value_is_empty,
e_contact_editor_categories_value_to_string,
categories);
e_table = e_table_scrolled_new (categories->model, NULL, INITIAL_SPEC, NULL);
gtk_object_sink(GTK_OBJECT(categories->model));
gtk_widget_show(e_table);
gtk_table_attach_defaults(GTK_TABLE(table),
e_table,
0, 1,
3, 4);
}
void
e_contact_editor_categories_destroy (GtkObject *object)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(object);
int i;
if (categories->gui)
gtk_object_unref(GTK_OBJECT(categories->gui));
g_free(categories->categories);
for (i = 0; i < categories->list_length; i++)
g_free(categories->category_list[i]);
g_free(categories->category_list);
g_free(categories->selected_list);
}
GtkWidget*
e_contact_editor_categories_new (char *categories)
{
GtkWidget *widget = GTK_WIDGET (gtk_type_new (e_contact_editor_categories_get_type ()));
gtk_object_set (GTK_OBJECT(widget),
"categories", categories,
NULL);
return widget;
}
static void
e_contact_editor_categories_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
{
EContactEditorCategories *e_contact_editor_categories;
e_contact_editor_categories = E_CONTACT_EDITOR_CATEGORIES (o);
switch (arg_id){
case ARG_CATEGORIES:
e_utf8_gtk_entry_set_text(GTK_ENTRY(e_contact_editor_categories->entry), GTK_VALUE_STRING (*arg));
break;
}
}
static void
e_contact_editor_categories_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
{
EContactEditorCategories *e_contact_editor_categories;
e_contact_editor_categories = E_CONTACT_EDITOR_CATEGORIES (object);
switch (arg_id) {
case ARG_CATEGORIES:
GTK_VALUE_STRING (*arg) = g_strdup(e_contact_editor_categories->categories);
break;
default:
arg->type = GTK_TYPE_INVALID;
break;
}
}
/* This function returns the number of columns in our ETableModel. */
static int
e_contact_editor_categories_col_count (ETableModel *etc, gpointer data)
{
return 2;
}
/* This function returns the number of rows in our ETableModel. */
static int
e_contact_editor_categories_row_count (ETableModel *etc, gpointer data)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(data);
return categories->list_length;
}
/* This function returns the value at a particular point in our ETableModel. */
static void *
e_contact_editor_categories_value_at (ETableModel *etc, int col, int row, gpointer data)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(data);
if (col == 0)
return (void *) categories->selected_list[row];
else
return categories->category_list[row];
}
/* This function sets the value at a particular point in our ETableModel. */
static void
e_contact_editor_categories_set_value_at (ETableModel *etc, int col, int row, const void *val, gpointer data)
{
EContactEditorCategories *categories = E_CONTACT_EDITOR_CATEGORIES(data);
if ( col == 0 ) {
char **strs;
int i, j;
char *string;
categories->selected_list[row] = (gboolean) val;
strs = g_new(char *, categories->list_length + 1);
for (i = 0, j = 0; i < categories->list_length; i++) {
if (categories->selected_list[i])
strs[j++] = categories->category_list[i];
}
strs[j] = 0;
string = g_strjoinv(", ", strs);
e_utf8_gtk_entry_set_text(GTK_ENTRY(categories->entry), string);
g_free(string);
g_free(strs);
}
if ( col == 1 )
return;
}
/* This function returns whether a particular cell is editable. */
static gboolean
e_contact_editor_categories_is_cell_editable (ETableModel *etc, int col, int row, gpointer data)
{
return col == 0;
}
/* This function duplicates the value passed to it. */
static void *
e_contact_editor_categories_duplicate_value (ETableModel *etc, int col, const void *value, gpointer data)
{
if (col == 0)
return (void *)value;
else
return g_strdup(value);
}
/* This function frees the value passed to it. */
static void
e_contact_editor_categories_free_value (ETableModel *etc, int col, void *value, gpointer data)
{
if (col == 0)
return;
else
g_free(value);
}
static void *
e_contact_editor_categories_initialize_value (ETableModel *etc, int col, gpointer data)
{
if (col == 0)
return NULL;
else
return g_strdup("");
}
static gboolean
e_contact_editor_categories_value_is_empty (ETableModel *etc, int col, const void *value, gpointer data)
{
if (col == 0)
return value == NULL;
else
return !(value && *(char *)value);
}
static char *
e_contact_editor_categories_value_to_string (ETableModel *etc, int col, const void *value, gpointer data)
{
if (col == 0)
return g_strdup_printf("%d", (int) value);
else
return g_strdup(value);
}

View File

@ -1,81 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* e-contact-editor-categories.h
* Copyright (C) 2000 Helix Code, Inc.
* Author: Chris Lahey <clahey@helixcode.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* 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 library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __E_CONTACT_EDITOR_CATEGORIES_H__
#define __E_CONTACT_EDITOR_CATEGORIES_H__
#include <gnome.h>
#include <glade/glade.h>
#include <gal/e-table/e-table-model.h>
#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus */
/* EContactEditorCategories - A dialog displaying information about a contact.
*
* The following arguments are available:
*
* name type read/write description
* --------------------------------------------------------------------------------
*/
#define E_CONTACT_EDITOR_CATEGORIES_TYPE (e_contact_editor_categories_get_type ())
#define E_CONTACT_EDITOR_CATEGORIES(obj) (GTK_CHECK_CAST ((obj), E_CONTACT_EDITOR_CATEGORIES_TYPE, EContactEditorCategories))
#define E_CONTACT_EDITOR_CATEGORIES_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_CONTACT_EDITOR_CATEGORIES_TYPE, EContactEditorCategoriesClass))
#define E_IS_CONTACT_EDITOR_CATEGORIES(obj) (GTK_CHECK_TYPE ((obj), E_CONTACT_EDITOR_CATEGORIES_TYPE))
#define E_IS_CONTACT_EDITOR_CATEGORIES_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_CONTACT_EDITOR_CATEGORIES_TYPE))
typedef struct _EContactEditorCategories EContactEditorCategories;
typedef struct _EContactEditorCategoriesClass EContactEditorCategoriesClass;
struct _EContactEditorCategories
{
GnomeDialog parent;
/* item specific fields */
char *categories;
GtkWidget *entry;
ETableModel *model;
int list_length;
char **category_list;
gboolean *selected_list;
GladeXML *gui;
};
struct _EContactEditorCategoriesClass
{
GnomeDialogClass parent_class;
};
GtkWidget *e_contact_editor_categories_new(char *categories);
GtkType e_contact_editor_categories_get_type (void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __E_CONTACT_EDITOR_CATEGORIES_H__ */

View File

@ -25,7 +25,6 @@
#include "e-contact-editor.h"
#include <e-contact-editor-fullname.h>
#include <e-contact-editor-address.h>
#include <e-contact-editor-categories.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk-pixbuf/gnome-canvas-pixbuf.h>
#include "e-util/e-gui-utils.h"
@ -570,7 +569,7 @@ categories_clicked(GtkWidget *button, EContactEditor *editor)
gtk_object_get(GTK_OBJECT(editor->card),
"categories", &categories,
NULL);
dialog = GNOME_DIALOG(e_contact_editor_categories_new(categories));
dialog = GNOME_DIALOG(e_categories_new(categories));
gtk_widget_show(GTK_WIDGET(dialog));
result = gnome_dialog_run (dialog);
g_free (categories);

View File

@ -314,14 +314,14 @@ fi
dnl ******************************
dnl Gnome App Lib checking
dnl ******************************
AC_MSG_CHECKING(for Gnome App libraries (GAL) >= 0.4)
AC_MSG_CHECKING(for Gnome App libraries (GAL) >= 0.4.99.2)
if gnome-config --libs gal > /dev/null 2>&1; then
vers=`gnome-config --modversion gal | sed -e "s/gal-//" -e 's/cvs$//' -e 's/pre$//' | \
awk 'BEGIN { FS = "."; } { print $1 * 1000000 + $2 * 10000 + $3 * 100 + $4;}'`
if test "$vers" -ge 40000; then
if test "$vers" -ge 49902; then
AC_MSG_RESULT(found)
else
AC_MSG_ERROR(You need at least GNOME Application libs 0.4 for this version of Evolution)
AC_MSG_ERROR(You need at least GNOME Application libs 0.4.99.2 for this version of Evolution)
fi
else
AC_MSG_ERROR(Did not find GnomeAppLib (GAL) installed)

View File

@ -1,13 +1,3 @@
<!-- ##### FUNCTION cal_client_get_events_in_range ##### -->
<para>
</para>
@client:
@start:
@end:
@Returns:
<!-- ##### FUNCTION cal_client_update_pilot_id ##### -->
<para>
@ -18,6 +8,16 @@
@pilot_id:
@pilot_status:
<!-- ##### FUNCTION cal_client_get_events_in_range ##### -->
<para>
</para>
@client:
@start:
@end:
@Returns:
<!-- ##### FUNCTION cal_client_get_uid_by_pilot_id ##### -->
<para>

View File

@ -1,75 +1,14 @@
<!-- ##### ENUM CalComponentAlarmTriggerRelated ##### -->
<!-- ##### ENUM CalComponentAlarmAction ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_START:
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_END:
<!-- ##### FUNCTION cal_recur_free ##### -->
<para>
</para>
@r:
<!-- ##### ENUM CalRecurType ##### -->
<para>
</para>
@CAL_RECUR_YEARLY:
@CAL_RECUR_MONTHLY:
@CAL_RECUR_WEEKLY:
@CAL_RECUR_DAILY:
@CAL_RECUR_HOURLY:
@CAL_RECUR_MINUTELY:
@CAL_RECUR_SECONDLY:
<!-- ##### TYPEDEF CalComponentAlarmTrigger ##### -->
<para>
</para>
<!-- ##### FUNCTION cal_component_get_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### FUNCTION get_time_t_hour ##### -->
<para>
</para>
@t:
@Returns:
<!-- ##### FUNCTION cal_component_alarm_free_trigger ##### -->
<para>
</para>
@trigger:
<!--
Local variables:
mode: sgml
sgml-parent-document: ("../../../evolution-devel-guide.sgml" "book" "refsect2" "")
End:
-->
<!-- ##### FUNCTION time_day_hour ##### -->
<para>
</para>
@t:
@hour:
@Returns:
@CAL_COMPONENT_ALARM_NONE:
@CAL_COMPONENT_ALARM_AUDIO:
@CAL_COMPONENT_ALARM_DISPLAY:
@CAL_COMPONENT_ALARM_EMAIL:
@CAL_COMPONENT_ALARM_PROCEDURE:
@CAL_COMPONENT_ALARM_UNKNOWN:
<!-- ##### FUNCTION time_from_isodate ##### -->
<para>
@ -87,6 +26,164 @@ End:
@comp:
@pilot_status:
<!-- ##### FUNCTION cal_recur_from_icalrecurrencetype ##### -->
<para>
</para>
@ir:
@Returns:
<!-- ##### FUNCTION get_time_t_hour ##### -->
<para>
</para>
@t:
@Returns:
<!-- ##### FUNCTION time_from_start_duration ##### -->
<para>
</para>
@start:
@duration:
@Returns:
<!-- ##### ENUM CalRecurType ##### -->
<para>
</para>
@CAL_RECUR_YEARLY:
@CAL_RECUR_MONTHLY:
@CAL_RECUR_WEEKLY:
@CAL_RECUR_DAILY:
@CAL_RECUR_HOURLY:
@CAL_RECUR_MINUTELY:
@CAL_RECUR_SECONDLY:
<!-- ##### FUNCTION parse_date ##### -->
<para>
</para>
@str:
@Returns:
<!-- ##### FUNCTION cal_component_get_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### ENUM CalComponentAlarmTriggerRelated ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_START:
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_END:
<!-- ##### FUNCTION isodiff_to_secs ##### -->
<para>
</para>
@str:
@Returns:
<!-- ##### FUNCTION cal_recur_free ##### -->
<para>
</para>
@r:
<!-- ##### FUNCTION time_from_icaltimetype ##### -->
<para>
</para>
@itt:
@Returns:
<!-- ##### FUNCTION time_day_hour ##### -->
<para>
</para>
@t:
@hour:
@Returns:
<!-- ##### FUNCTION cal_component_get_first_alarm ##### -->
<para>
</para>
@comp:
@Returns:
<!-- ##### STRUCT CalComponentPrivate ##### -->
<para>
</para>
<!-- ##### FUNCTION isodiff_from_secs ##### -->
<para>
</para>
@secs:
@Returns:
<!-- ##### FUNCTION cal_component_alarm_free_trigger ##### -->
<para>
</para>
@trigger:
<!--
Local variables:
mode: sgml
sgml-parent-document: ("../../../evolution-devel-guide.sgml" "book" "refsect2" "")
End:
-->
<!-- ##### TYPEDEF CalRecurrence ##### -->
<para>
</para>
<!-- ##### FUNCTION cal_alarm_instance_list_free ##### -->
<para>
</para>
@list:
<!-- ##### FUNCTION cal_component_set_pilot_status ##### -->
<para>
</para>
@comp:
@pilot_status:
<!-- ##### FUNCTION cal_component_set_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### STRUCT CalObjTime ##### -->
<para>
@ -99,63 +196,13 @@ End:
@minute:
@second:
<!-- ##### STRUCT CalComponentPrivate ##### -->
<!-- ##### FUNCTION format_simple_hour ##### -->
<para>
</para>
<!-- ##### ENUM CalComponentAlarmTriggerType ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_TRIGGER_RELATIVE:
@CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE:
<!-- ##### FUNCTION cal_recur_from_icalrecurrencetype ##### -->
<para>
</para>
@ir:
@Returns:
<!-- ##### FUNCTION cal_alarm_instance_list_free ##### -->
<para>
</para>
@list:
<!-- ##### FUNCTION isodiff_to_secs ##### -->
<para>
</para>
@str:
@Returns:
<!-- ##### FUNCTION cal_component_get_first_alarm ##### -->
<para>
</para>
@comp:
@Returns:
<!-- ##### TYPEDEF CalRecurrence ##### -->
<para>
</para>
<!-- ##### FUNCTION time_from_icaltimetype ##### -->
<para>
</para>
@itt:
@hour:
@use_am_pm:
@Returns:
<!-- ##### FUNCTION cal_component_get_next_alarm ##### -->
@ -166,65 +213,17 @@ End:
@comp:
@Returns:
<!-- ##### ENUM CalComponentAlarmAction ##### -->
<!-- ##### ENUM CalComponentAlarmTriggerType ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_NONE:
@CAL_COMPONENT_ALARM_AUDIO:
@CAL_COMPONENT_ALARM_DISPLAY:
@CAL_COMPONENT_ALARM_EMAIL:
@CAL_COMPONENT_ALARM_PROCEDURE:
@CAL_COMPONENT_ALARM_UNKNOWN:
@CAL_COMPONENT_ALARM_TRIGGER_RELATIVE:
@CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE:
<!-- ##### FUNCTION time_from_start_duration ##### -->
<!-- ##### TYPEDEF CalComponentAlarmTrigger ##### -->
<para>
</para>
@start:
@duration:
@Returns:
<!-- ##### FUNCTION cal_component_set_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### FUNCTION isodiff_from_secs ##### -->
<para>
</para>
@secs:
@Returns:
<!-- ##### FUNCTION format_simple_hour ##### -->
<para>
</para>
@hour:
@use_am_pm:
@Returns:
<!-- ##### FUNCTION cal_component_set_pilot_status ##### -->
<para>
</para>
@comp:
@pilot_status:
<!-- ##### FUNCTION parse_date ##### -->
<para>
</para>
@str:
@Returns:

View File

@ -1,13 +1,3 @@
<!-- ##### FUNCTION cal_client_get_events_in_range ##### -->
<para>
</para>
@client:
@start:
@end:
@Returns:
<!-- ##### FUNCTION cal_client_update_pilot_id ##### -->
<para>
@ -18,6 +8,16 @@
@pilot_id:
@pilot_status:
<!-- ##### FUNCTION cal_client_get_events_in_range ##### -->
<para>
</para>
@client:
@start:
@end:
@Returns:
<!-- ##### FUNCTION cal_client_get_uid_by_pilot_id ##### -->
<para>

View File

@ -1,75 +1,14 @@
<!-- ##### ENUM CalComponentAlarmTriggerRelated ##### -->
<!-- ##### ENUM CalComponentAlarmAction ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_START:
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_END:
<!-- ##### FUNCTION cal_recur_free ##### -->
<para>
</para>
@r:
<!-- ##### ENUM CalRecurType ##### -->
<para>
</para>
@CAL_RECUR_YEARLY:
@CAL_RECUR_MONTHLY:
@CAL_RECUR_WEEKLY:
@CAL_RECUR_DAILY:
@CAL_RECUR_HOURLY:
@CAL_RECUR_MINUTELY:
@CAL_RECUR_SECONDLY:
<!-- ##### TYPEDEF CalComponentAlarmTrigger ##### -->
<para>
</para>
<!-- ##### FUNCTION cal_component_get_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### FUNCTION get_time_t_hour ##### -->
<para>
</para>
@t:
@Returns:
<!-- ##### FUNCTION cal_component_alarm_free_trigger ##### -->
<para>
</para>
@trigger:
<!--
Local variables:
mode: sgml
sgml-parent-document: ("../../../evolution-devel-guide.sgml" "book" "refsect2" "")
End:
-->
<!-- ##### FUNCTION time_day_hour ##### -->
<para>
</para>
@t:
@hour:
@Returns:
@CAL_COMPONENT_ALARM_NONE:
@CAL_COMPONENT_ALARM_AUDIO:
@CAL_COMPONENT_ALARM_DISPLAY:
@CAL_COMPONENT_ALARM_EMAIL:
@CAL_COMPONENT_ALARM_PROCEDURE:
@CAL_COMPONENT_ALARM_UNKNOWN:
<!-- ##### FUNCTION time_from_isodate ##### -->
<para>
@ -87,6 +26,164 @@ End:
@comp:
@pilot_status:
<!-- ##### FUNCTION cal_recur_from_icalrecurrencetype ##### -->
<para>
</para>
@ir:
@Returns:
<!-- ##### FUNCTION get_time_t_hour ##### -->
<para>
</para>
@t:
@Returns:
<!-- ##### FUNCTION time_from_start_duration ##### -->
<para>
</para>
@start:
@duration:
@Returns:
<!-- ##### ENUM CalRecurType ##### -->
<para>
</para>
@CAL_RECUR_YEARLY:
@CAL_RECUR_MONTHLY:
@CAL_RECUR_WEEKLY:
@CAL_RECUR_DAILY:
@CAL_RECUR_HOURLY:
@CAL_RECUR_MINUTELY:
@CAL_RECUR_SECONDLY:
<!-- ##### FUNCTION parse_date ##### -->
<para>
</para>
@str:
@Returns:
<!-- ##### FUNCTION cal_component_get_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### ENUM CalComponentAlarmTriggerRelated ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_START:
@CAL_COMPONENT_ALARM_TRIGGER_RELATED_END:
<!-- ##### FUNCTION isodiff_to_secs ##### -->
<para>
</para>
@str:
@Returns:
<!-- ##### FUNCTION cal_recur_free ##### -->
<para>
</para>
@r:
<!-- ##### FUNCTION time_from_icaltimetype ##### -->
<para>
</para>
@itt:
@Returns:
<!-- ##### FUNCTION time_day_hour ##### -->
<para>
</para>
@t:
@hour:
@Returns:
<!-- ##### FUNCTION cal_component_get_first_alarm ##### -->
<para>
</para>
@comp:
@Returns:
<!-- ##### STRUCT CalComponentPrivate ##### -->
<para>
</para>
<!-- ##### FUNCTION isodiff_from_secs ##### -->
<para>
</para>
@secs:
@Returns:
<!-- ##### FUNCTION cal_component_alarm_free_trigger ##### -->
<para>
</para>
@trigger:
<!--
Local variables:
mode: sgml
sgml-parent-document: ("../../../evolution-devel-guide.sgml" "book" "refsect2" "")
End:
-->
<!-- ##### TYPEDEF CalRecurrence ##### -->
<para>
</para>
<!-- ##### FUNCTION cal_alarm_instance_list_free ##### -->
<para>
</para>
@list:
<!-- ##### FUNCTION cal_component_set_pilot_status ##### -->
<para>
</para>
@comp:
@pilot_status:
<!-- ##### FUNCTION cal_component_set_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### STRUCT CalObjTime ##### -->
<para>
@ -99,63 +196,13 @@ End:
@minute:
@second:
<!-- ##### STRUCT CalComponentPrivate ##### -->
<!-- ##### FUNCTION format_simple_hour ##### -->
<para>
</para>
<!-- ##### ENUM CalComponentAlarmTriggerType ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_TRIGGER_RELATIVE:
@CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE:
<!-- ##### FUNCTION cal_recur_from_icalrecurrencetype ##### -->
<para>
</para>
@ir:
@Returns:
<!-- ##### FUNCTION cal_alarm_instance_list_free ##### -->
<para>
</para>
@list:
<!-- ##### FUNCTION isodiff_to_secs ##### -->
<para>
</para>
@str:
@Returns:
<!-- ##### FUNCTION cal_component_get_first_alarm ##### -->
<para>
</para>
@comp:
@Returns:
<!-- ##### TYPEDEF CalRecurrence ##### -->
<para>
</para>
<!-- ##### FUNCTION time_from_icaltimetype ##### -->
<para>
</para>
@itt:
@hour:
@use_am_pm:
@Returns:
<!-- ##### FUNCTION cal_component_get_next_alarm ##### -->
@ -166,65 +213,17 @@ End:
@comp:
@Returns:
<!-- ##### ENUM CalComponentAlarmAction ##### -->
<!-- ##### ENUM CalComponentAlarmTriggerType ##### -->
<para>
</para>
@CAL_COMPONENT_ALARM_NONE:
@CAL_COMPONENT_ALARM_AUDIO:
@CAL_COMPONENT_ALARM_DISPLAY:
@CAL_COMPONENT_ALARM_EMAIL:
@CAL_COMPONENT_ALARM_PROCEDURE:
@CAL_COMPONENT_ALARM_UNKNOWN:
@CAL_COMPONENT_ALARM_TRIGGER_RELATIVE:
@CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE:
<!-- ##### FUNCTION time_from_start_duration ##### -->
<!-- ##### TYPEDEF CalComponentAlarmTrigger ##### -->
<para>
</para>
@start:
@duration:
@Returns:
<!-- ##### FUNCTION cal_component_set_pilot_id ##### -->
<para>
</para>
@comp:
@pilot_id:
<!-- ##### FUNCTION isodiff_from_secs ##### -->
<para>
</para>
@secs:
@Returns:
<!-- ##### FUNCTION format_simple_hour ##### -->
<para>
</para>
@hour:
@use_am_pm:
@Returns:
<!-- ##### FUNCTION cal_component_set_pilot_status ##### -->
<para>
</para>
@comp:
@pilot_status:
<!-- ##### FUNCTION parse_date ##### -->
<para>
</para>
@str:
@Returns:

View File

@ -1,3 +1,7 @@
2001-01-04 JP Rosevear <jpr@helixcode.com>
* POTFILES.in: Remove non-existent file
2001-01-03 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.

View File

@ -6,7 +6,6 @@ addressbook/backend/ebook/test-client-list.c
addressbook/backend/ebook/test-client.c
addressbook/conduit/address-conduit-control-applet.c
addressbook/conduit/address-conduit.c
addressbook/contact-editor/categories-strings.h
addressbook/contact-editor/e-contact-editor-confirm-delete.glade
addressbook/contact-editor/e-contact-editor-strings.h
addressbook/contact-editor/e-contact-editor.c