aboutsummaryrefslogtreecommitdiffstats
path: root/cmdline
diff options
context:
space:
mode:
Diffstat (limited to 'cmdline')
-rw-r--r--cmdline/.cvsignore5
-rw-r--r--cmdline/Makefile.am19
-rw-r--r--cmdline/compose.151
-rw-r--r--cmdline/compose.c152
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;
+}