diff options
Diffstat (limited to 'cmdline')
-rw-r--r-- | cmdline/.cvsignore | 5 | ||||
-rw-r--r-- | cmdline/Makefile.am | 19 | ||||
-rw-r--r-- | cmdline/compose.1 | 51 | ||||
-rw-r--r-- | cmdline/compose.c | 152 |
4 files changed, 227 insertions, 0 deletions
diff --git a/cmdline/.cvsignore b/cmdline/.cvsignore new file mode 100644 index 0000000000..b29b403eec --- /dev/null +++ b/cmdline/.cvsignore @@ -0,0 +1,5 @@ +Makefile.in +Makefile +.deps +.libs +compose diff --git a/cmdline/Makefile.am b/cmdline/Makefile.am new file mode 100644 index 0000000000..2bc731d0bb --- /dev/null +++ b/cmdline/Makefile.am @@ -0,0 +1,19 @@ + +man_MANS = compose.1 + +bin_PROGRAMS = compose + +INCLUDES = \ + -I$(top_builddir) \ + $(COMPOSE_CFLAGS) \ + $(INTLLIBS) + +compose_LDADD = \ + ../composer/libcomposer.a \ + $(COMPOSE_LIBS) + +compose_SOURCES = \ + compose.h \ + compose.c + ../composer/Composer-stubs.c \ + ../composer/Composer-common.c
\ No newline at end of file diff --git a/cmdline/compose.1 b/cmdline/compose.1 new file mode 100644 index 0000000000..946eb01eaa --- /dev/null +++ b/cmdline/compose.1 @@ -0,0 +1,51 @@ +.\" +.\" Evolution's compose command line utility manual page. +.\" (C) Ximian, Inc. http://www.ximian.com +.\" +.\" Author: +.\" Miguel de Icaza (miguel@kernel.org) +.\" +.TH Evolution 1 "Evolution 1.0" +.SH NAME +compose \- invokes the Evolution Mail composer tool. +.SH SYNOPSIS +.PP +.B compose +[\-\-subject SUBJECT] [\-s SUBJECT] [\-\-cc LIST] [\-c LIST] [\-\-bcc +LIST] [\-b LIST] [\-\-body FNAME] to... +.SH DESCRIPTION +The +.I compose +program is a command line tool that can be used to invoke the +Evolution Mail composer directly from the command line, and allows for +simple configuration trough a number of flags. +.SH OPTIONS +The following options are supported +.TP +.I \-\-subject SUBJECT, \-s SUBJECT +Both forms are used to specify the subject to be used in the mail +message. +.TP +.I \-\-cc LIST, \-c LIST +Both forms are used to specify a comma separated list of addresses to +CC the message to. +.TP +.I \-\-bcc LIST, \-b LIST +Both forms are used to specify a comma separated list of addresses +that this message will be blind copied to. +.TP +.I \-\-body FNAME +Loads the filename FNAME as the contents for the Evolution Mail +composer. +.SH OTHERS +If these options are not enough, you might want to look into accessing +the Evolution Mail Composer directly by using CORBA. +.SH INTERFACES +The Evolution Mail Composer supports the +IDL:GNOME/Evolution/Composer:1.0 interface and is implemented as the +component OAFIID:GNOME_Evolution_Mail_Composer. +.SH SEE ALSO +Evolution-Composer.idl +.SH BUGS +If you find bugs in the Evolution groupware suite, please report these +using the \fIbug-buddy\fP program in the GNOME distribution.
\ No newline at end of file diff --git a/cmdline/compose.c b/cmdline/compose.c new file mode 100644 index 0000000000..95a39a3dec --- /dev/null +++ b/cmdline/compose.c @@ -0,0 +1,152 @@ +/* + * compose.c: A commnand line tool to invoke the Evolution mail composer + * + * Author: + * Miguel de Icaza (miguel@ximian.com) + * + * (C) 2001 Ximian, Inc. + */ +#include <config.h> +#include <gnome.h> +#include <liboaf/liboaf.h> +#include <bonobo.h> +#include "composer/Composer.h" + +static char *subject; +static char *cc; +static char *bcc; +static char *body; +static char *to = ""; + +const struct poptOption compose_popt_options [] = { + { "subject", 's', POPT_ARG_STRING, + &subject, 0, N_("Subject for the mail message"), N_("SUBJECT") }, + { "cc", 'c', POPT_ARG_STRING, + &cc, 0, N_("List of people that will be Carbo Copied"), N_("CC-LIST") }, + { "bcc", 'b', POPT_ARG_STRING, + &bcc, 0, N_("List of people to Blind Carbon Copy this mail to"), N_("BCC-LIST") }, + { "body", 0, POPT_ARG_STRING, + &body, 0, N_("Filename containing the body of the message"), N_("BODY-FILE") }, + { NULL, 0, 0, NULL, 0 } +}; + +static void +error (const char *msg) +{ + GtkWidget *dialog; + + dialog = gnome_message_box_new ( + msg, + GNOME_MESSAGE_BOX_ERROR, + GNOME_STOCK_BUTTON_OK, + NULL); + + gnome_dialog_run_and_close (GNOME_DIALOG (dialog)); + exit (1); + g_assert_not_reached (); +} + +GNOME_Evolution_Composer_RecipientList * +make_list (char *str) +{ + GNOME_Evolution_Composer_RecipientList *list; + char *p; + int count = 0; + + if (str == NULL) + str = ""; + + list = GNOME_Evolution_Composer_RecipientList__alloc(); + + if (*str) + count = 1; + + for (p = str; *p; p++){ + if (*p == ',') + count++; + } + list->_maximum = count; + list->_length = count; + list->_buffer = CORBA_sequence_GNOME_Evolution_Composer_Recipient_allocbuf (count); + + for (count = 0; (p = strtok (str, ",")) != NULL; count++){ + GNOME_Evolution_Composer_Recipient *x; + + x = GNOME_Evolution_Composer_Recipient__alloc (); + + list->_buffer [count].name = CORBA_string_dup (""); + list->_buffer [count].address = CORBA_string_dup (p); + count++; + str = NULL; + } + + return list; +} + +gint +do_launch (void) +{ + GNOME_Evolution_Composer_RecipientList *to_list, *cc_list, *bcc_list; + GNOME_Evolution_Composer composer; + CORBA_Environment ev; + + CORBA_exception_init (&ev); + composer = bonobo_get_object ( + "OAFIID:GNOME_Evolution_Mail_Composer", + "GNOME/Evolution/Composer", &ev); + CORBA_exception_free (&ev); + + if (composer == CORBA_OBJECT_NIL) + error (_("It was not possible to start up the Evolution Mail Composer")); + + to_list = make_list (to); + cc_list = make_list (cc); + bcc_list = make_list (bcc); + + if (subject == NULL) + subject = ""; + + GNOME_Evolution_Composer_setHeaders (composer, to_list, cc_list, bcc_list, subject, &ev); + GNOME_Evolution_Composer_show (composer, &ev); + + return FALSE; +} + +int +main (int argc, char *argv []) +{ + poptContext ctxt = NULL; + CORBA_ORB orb; + + gnomelib_register_popt_table (oaf_popt_options, _("Oaf options")); + gnome_init_with_popt_table ("Compose", "1.0", argc, argv, + compose_popt_options, 0, &ctxt); + + orb = oaf_init (argc, argv); + if (bonobo_init (NULL, NULL, NULL) == FALSE) + error (_("It was not possible to initialize the Bonobo component system")); + + if (ctxt){ + const char **to_args = NULL; + GString *to_str = g_string_new (""); + int i; + + to_args = poptGetArgs (ctxt); + + if (to_args){ + for (i = 0; to_args [i]; i++) { + if (i > 1) + g_string_append_c (to_str, ','); + + g_string_append (to_str, to_args [i]); + } + } + to = to_str->str; + } + + gtk_idle_add (GTK_SIGNAL_FUNC (do_launch), NULL); + + bonobo_main (); + + return 0; +} |