From 6cb08f0bc177cd0de35b852fac94a181f4d2233c Mon Sep 17 00:00:00 2001 From: Bertrand Guiheneuf Date: Tue, 10 Aug 1999 11:53:46 +0000 Subject: some test files svn path=/trunk/; revision=1101 --- ChangeLog | 7 +- camel/camel-folder.c | 15 ++ camel/camel-folder.h | 5 +- camel/providers/MH/camel-mh-folder.c | 66 ++++++++ configure.in | 20 +++ tests/Makefile.am | 1 - tests/ui-tests/Makefile.am | 16 ++ tests/ui-tests/store_listing.c | 54 +++++++ tests/ui-tests/store_listing.glade | 289 +++++++++++++++++++++++++++++++++++ 9 files changed, 469 insertions(+), 4 deletions(-) create mode 100644 tests/ui-tests/Makefile.am create mode 100644 tests/ui-tests/store_listing.c create mode 100644 tests/ui-tests/store_listing.glade diff --git a/ChangeLog b/ChangeLog index 51c20cec72..5614dc0501 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +1999-08-10 root + + * camel/camel-folder.c (camel_folder_append_message): + new method. + 1999-08-09 bertrand * devel-docs/misc/ref_and_id_proposition.txt: @@ -90,7 +95,7 @@ * camel/providers/MH/camel-mh-store.c: parent class is CamelStorClass not GtkObjectClass -1999-08-05 +1999-08-05 bertrand * tests/test4.c: test mh provider. diff --git a/camel/camel-folder.c b/camel/camel-folder.c index 5fa22a5b72..2d0a29faab 100644 --- a/camel/camel-folder.c +++ b/camel/camel-folder.c @@ -51,6 +51,8 @@ static GList *_list_subfolders (CamelFolder *folder); static GList *_expunge (CamelFolder *folder); static CamelMimeMessage *_get_message (CamelFolder *folder, gint number); static gint _get_message_count (CamelFolder *folder); +static gint _append_message (CamelFolder *folder, CamelMimeMessage *message); + static void camel_folder_class_init (CamelFolderClass *camel_folder_class) @@ -78,6 +80,7 @@ camel_folder_class_init (CamelFolderClass *camel_folder_class) camel_folder_class->expunge = _expunge; camel_folder_class->get_message = _get_message; camel_folder_class->get_message_count = _get_message_count; + camel_folder_class->append_message = _append_message; /* virtual method overload */ } @@ -784,3 +787,15 @@ camel_folder_get_message_count (CamelFolder *folder) return CF_CLASS (folder)->get_message_count (folder); } + +static gint +_append_message (CamelFolder *folder, CamelMimeMessage *message) +{ + return -1; +} + + +gint camel_folder_append_message (CamelFolder *folder, CamelMimeMessage *message) +{ + return CF_CLASS (folder)->append_message (folder, message); +} diff --git a/camel/camel-folder.h b/camel/camel-folder.h index b678631eea..e980e39e15 100644 --- a/camel/camel-folder.h +++ b/camel/camel-folder.h @@ -100,7 +100,7 @@ typedef struct { GList * (*expunge) (CamelFolder *folder); CamelMimeMessage * (*get_message) (CamelFolder *folder, gint number); gint (*get_message_count) (CamelFolder *folder); - + gint (*append_message) (CamelFolder *folder, CamelMimeMessage *message); } CamelFolderClass; @@ -125,7 +125,8 @@ const gchar *camel_folder_get_name (CamelFolder *folder); const gchar *camel_folder_get_full_name (CamelFolder *folder); CamelMimeMessage *camel_folder_get_message (CamelFolder *folder, gint number); gboolean camel_folder_exists (CamelFolder *folder); -gint camel_get_message_count (CamelFolder *folder); +gint camel_folder_get_message_count (CamelFolder *folder); +gint camel_folder_append_message (CamelFolder *folder, CamelMimeMessage *message); diff --git a/camel/providers/MH/camel-mh-folder.c b/camel/providers/MH/camel-mh-folder.c index 2e19349e67..a1c78fd309 100644 --- a/camel/providers/MH/camel-mh-folder.c +++ b/camel/providers/MH/camel-mh-folder.c @@ -51,6 +51,8 @@ static gboolean _delete_messages (CamelFolder *folder); static GList *_list_subfolders (CamelFolder *folder); static CamelMimeMessage *_get_message (CamelFolder *folder, gint number); static gint _get_message_count (CamelFolder *folder); +static gint _append_message (CamelFolder *folder, CamelMimeMessage *message); + static void camel_mh_folder_class_init (CamelMhFolderClass *camel_mh_folder_class) @@ -69,6 +71,7 @@ camel_mh_folder_class_init (CamelMhFolderClass *camel_mh_folder_class) camel_folder_class->list_subfolders = _list_subfolders; camel_folder_class->get_message = _get_message; camel_folder_class->get_message_count = _get_message_count; + camel_folder_class->append_message = _append_message; } @@ -480,3 +483,66 @@ _get_message_count (CamelFolder *folder) closedir (dir_handle); return message_count; } + + + + +static gint +_append_message (CamelFolder *folder, CamelMimeMessage *message) +{ + CamelMhFolder *mh_folder = CAMEL_MH_FOLDER(folder); + const gchar *directory_path; + struct dirent *dir_entry; + DIR *dir_handle; + guint last_max_message_number = 0; + guint current_message_number; + guint new_message_number; + gchar *new_message_filename; + CamelStream *output_stream; + gboolean error; + + CAMEL_LOG_FULL_DEBUG ("Entering CamelMhFolder::append_message\n"); + + g_assert(folder); + + directory_path = mh_folder->directory_path; + if (!directory_path) return -1; + + if (!camel_folder_exists (folder)) return 0; + + dir_handle = opendir (directory_path); + + /* read first entry in the directory */ + dir_entry = readdir (dir_handle); + while (dir_entry != NULL) { + /* tests if the entry correspond to a message file */ + if (_is_a_message_file (dir_entry->d_name, directory_path)) { + /* see if the message number is the biggest found */ + current_message_number = atoi (dir_entry->d_name); + if (current_message_number > last_max_message_number) + last_max_message_number = current_message_number; + } + /* read next entry */ + dir_entry = readdir (dir_handle); + } + closedir (dir_handle); + + new_message_number = last_max_message_number + 1; + new_message_filename = g_strdup_printf ("%s/%d", directory_path, new_message_number); + CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::append_message new message path is %s\n", new_message_filename); + + output_stream = camel_stream_fs_new_with_name (new_message_filename, CAMEL_STREAM_FS_WRITE); + if (output_stream != NULL) { + camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), output_stream); + camel_stream_close (output_stream); + } else { + CAMEL_LOG_WARNING ("CamelMhFolder::append_message could not open %s for writing\n", new_message_filename); + CAMEL_LOG_FULL_DEBUG (" Full error text is : %s\n", strerror(errno)); + error = TRUE; + } + + g_free (new_message_filename); + CAMEL_LOG_FULL_DEBUG ("Leaving CamelMhFolder::append_message\n"); + if (error) return -1; + else return new_message_number; +} diff --git a/configure.in b/configure.in index 975e83f867..93f6553fac 100644 --- a/configure.in +++ b/configure.in @@ -58,6 +58,25 @@ dnl have_bonobo=false dnl ]) dnl AM_CONDITIONAL(BONOBO, $have_bonobo) + + + +dnl ****************************** +dnl LibGlade checking +dnl ****************************** +AC_MSG_CHECKING(For Glade libraries) +if gnome-config --libs libglade > /dev/null 2>&1; then + AC_MSG_RESULT(found) +else + AC_MSG_ERROR(Did not find libGlade installed) +fi + +EXTRA_GNOME_LIBS=`gnome-config --libs gnomeui libglade ` +EXTRA_GNOME_CFLAGS=`gnome-config --cflags gnomeui libglade ` +AC_SUBST(EXTRA_GNOME_LIBS) +AC_SUBST(EXTRA_GNOME_CFLAGS) + + AC_ARG_WITH(camel-hard-log-level, [ --with-camel-hard-log-level=level value of log level in camel (0-10)], camel_hard_log_level="$withval", camel_hard_log_level="0") AC_DEFINE_UNQUOTED(CAMEL_HARD_LOG_LEVEL, $camel_hard_log_level) @@ -72,4 +91,5 @@ camel/providers/MH/Makefile devel-docs/Makefile devel-docs/camel/Makefile tests/Makefile +tests/ui-tests/Makefile ]) diff --git a/tests/Makefile.am b/tests/Makefile.am index 3e8f4de850..55ef5048dd 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -2,7 +2,6 @@ INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir)/camel \ -I$(includedir) -I$(top_srcdir)/camel/providers/MH - LDADD = \ $(top_builddir)/camel/libcamel.la \ $(GNOME_LIBDIR) \ diff --git a/tests/ui-tests/Makefile.am b/tests/ui-tests/Makefile.am new file mode 100644 index 0000000000..19bbb6c8d4 --- /dev/null +++ b/tests/ui-tests/Makefile.am @@ -0,0 +1,16 @@ +# process this file with automake to create Makefile.in + +INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir)/camel \ + -I$(includedir) -I$(top_srcdir)/camel/providers/MH \ + $(EXTRA_GNOME_CFLAGS) + +LDADD = \ + $(top_builddir)/camel/libcamel.la \ + $(INTLLIBS) $(EXTRA_GNOME_LIBS) + + + + + +noinst_PROGRAMS = \ + store_listing \ No newline at end of file diff --git a/tests/ui-tests/store_listing.c b/tests/ui-tests/store_listing.c new file mode 100644 index 0000000000..1eee741286 --- /dev/null +++ b/tests/ui-tests/store_listing.c @@ -0,0 +1,54 @@ +/* Bertrand.Guiheneuf@aful.org */ + + + +/* + gcc -o store_listing `gnome-config --cflags gnomeui libglade` \ + store_listing.c `gnome-config --libs gnomeui libglade` +*/ +/******************************************************************************/ + + +#include +#include + + +static GladeXML *xml; + + +void +on_exit1_activate (GtkWidget *widget, void *data) +{ + gtk_main_quit (); +} + + +void +on_about1_activate (GtkWidget *widget, void *data) +{ + GtkWidget *about_widget; + + about_widget = glade_xml_get_widget (xml, "about_widget"); + gtk_widget_show (about_widget); +} + + + + +int +main(int argc, char *argv[]) +{ + + gnome_init ("store_listing", "1.0", argc, argv); + + glade_gnome_init(); + + xml = glade_xml_new ("store_listing.glade", NULL); + if (xml) glade_xml_signal_autoconnect (xml); + + + gtk_main (); + + return 0; +} + diff --git a/tests/ui-tests/store_listing.glade b/tests/ui-tests/store_listing.glade new file mode 100644 index 0000000000..32516494aa --- /dev/null +++ b/tests/ui-tests/store_listing.glade @@ -0,0 +1,289 @@ + + + + + store_listing + store_listing + + src + pixmaps + C + True + True + False + True + True + True + True + interface.c + interface.h + callbacks.c + callbacks.h + support.c + support.h + + + + + GnomeApp + app1 + 600 + 400 + store_listing + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + True + False + True + + + GnomeDock + GnomeApp:dock + dock1 + True + + 0 + True + True + + + + GnomeDockItem + dockitem1 + 2 + GNOME_DOCK_TOP + 0 + 0 + 0 + False + True + False + True + False + GTK_SHADOW_OUT + + + GtkMenuBar + menubar1 + GTK_SHADOW_NONE + + + GtkMenuItem + file1 + GNOMEUIINFO_MENU_FILE_TREE + + + GtkMenu + file1_menu + + + GtkPixmapMenuItem + new_store + + activate + on_new_store_activate + Tue, 10 Aug 1999 10:29:12 GMT + + GNOMEUIINFO_MENU_NEW_ITEM + + + + + GtkMenuItem + separator1 + False + + + + GtkPixmapMenuItem + exit1 + + activate + on_exit1_activate + Tue, 10 Aug 1999 10:25:52 GMT + + GNOMEUIINFO_MENU_EXIT_ITEM + + + + + + GtkMenuItem + help1 + GNOMEUIINFO_MENU_HELP_TREE + + + GtkMenu + help1_menu + + + GtkPixmapMenuItem + about1 + + activate + on_about1_activate + Tue, 10 Aug 1999 10:25:52 GMT + + GNOMEUIINFO_MENU_ABOUT_ITEM + + + + + + + + GnomeDockItem + dockitem2 + 1 + GNOME_DOCK_TOP + 1 + 0 + 0 + False + True + False + False + False + GTK_SHADOW_OUT + + + GtkToolbar + toolbar1 + 1 + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + 16 + GTK_TOOLBAR_SPACE_LINE + GTK_RELIEF_NONE + True + + + GtkButton + Toolbar:button + new_store_button + + GNOME_STOCK_PIXMAP_NEW + + + + + + GtkHPaned + GnomeDock:contents + hpaned1 + 10 + 6 + 0 + + + GtkCTree + ctree1 + True + 1 + 80 + GTK_SELECTION_SINGLE + True + GTK_SHADOW_IN + + True + False + + + + GtkLabel + CTree:title + store_and_inbox_name + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + + GtkCList + clist1 + True + 3 + 80,80,80 + GTK_SELECTION_SINGLE + True + GTK_SHADOW_IN + + True + True + + + + GtkLabel + CList:title + message_date_label + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkLabel + CList:title + message_sender_label + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkLabel + CList:title + message_subject_label + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + + + + GnomeAppBar + GnomeApp:appbar + appbar1 + True + True + + 0 + True + True + + + + + + GnomeAbout + about_widget + False + True + + Bertrand Guiheneuf <Bertrand.Guiheneuf@aful.org> + + This is a very simple program to test Camel + + + -- cgit v1.2.3