Re: Print support




Opps....

That was _SO_ wrong :(

First I posted it in wrong mailinglist, second I forgot to include the patch :)

I'm trying again :)

-Ragnar-


On Wed, 13 Oct 1999 08:39:23 Ragnar Henriksen wrote:
> 
> This patch includes:
> 
> * adding print support (very simple, but working)
> * adding new popup menus (message list and mblist)
> * added back some charset stuff that where missing. (it's now working again)
> * body-area in the composewindow uses balsa_app.message_font. (I don't like those large fonts)
> 
> About print.
> The print support is very simple. It makes a tmp-file and uses gnome_execute_shell() to
> execute a external command, and deletes it.
> 
> The command is build like this <command> <args> <tmp-file>. The file is allways the last
> argument.
> 
> In settings-preferences->printing the command could look like this: a2ps -d -q. I haven't
> added code to pharse the commandline yet.
> 
> Hope you find it usefull, I know I do :)
> 
> 
> 
> 
> -Ragnar-

diff -ruN balsa/libbalsa/mailbox.c balsa-new/libbalsa/mailbox.c
--- balsa/libbalsa/mailbox.c	Sat Oct  9 02:46:34 1999
+++ balsa-new/libbalsa/mailbox.c	Sat Oct  9 03:54:46 1999
@@ -1148,6 +1148,9 @@
   if (stat (filename, &st) == -1)
     return MAILBOX_UNKNOWN;
 
+  if (S_ISDIR (st.st_mode)) 
+      return MAILBOX_MAILDIR;
+
   switch (mx_get_magic (filename))
     {
     case M_MBOX:
diff -ruN balsa/src/Makefile.am balsa-new/src/Makefile.am
--- balsa/src/Makefile.am	Sat Oct  9 02:46:34 1999
+++ balsa-new/src/Makefile.am	Sat Oct  9 04:24:32 1999
@@ -56,7 +56,6 @@
 	$(top_builddir)/libbalsa/libbalsa.a \
 	$(top_builddir)/libmutt/libmutt.a \
 	$(top_builddir)/libbalsa/libbalsa.a \
-	-lPropList	\
 	-lpthread	\
 	-lgthread	\
 	@LIBESD_LIB@	\
diff -ruN balsa/src/Makefile.in balsa-new/src/Makefile.in
--- balsa/src/Makefile.in	Sat Oct  9 02:47:03 1999
+++ balsa-new/src/Makefile.in	Sat Oct  9 04:31:58 1999
@@ -135,7 +135,7 @@
 INCLUDES =  	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"		-I.							-I${top_srcdir}/libbalsa				-I${top_srcdir}						-I$(top_srcdir)/idl					-I$(top_builddir)/idl					-I${top_builddir}/libmutt				 $(GNOME_INCLUDEDIR)
 
 
-balsa_LDADD =  	$(top_builddir)/libbalsa/libbalsa.a 	$(top_builddir)/libmutt/libmutt.a 	$(top_builddir)/libbalsa/libbalsa.a 	-lPropList		-lpthread		-lgthread		@LIBESD_LIB@		$(GNOME_LIBDIR) 	$(top_builddir)/idl/libbalsasrv.a 	$(GNOMEGNORBA_LIBS)  	$(INTLLIBS)
+balsa_LDADD =  	$(top_builddir)/libbalsa/libbalsa.a 	$(top_builddir)/libmutt/libmutt.a 	$(top_builddir)/libbalsa/libbalsa.a 	-lpthread		-lgthread		@LIBESD_LIB@		$(GNOME_LIBDIR) 	$(top_builddir)/idl/libbalsasrv.a 	$(GNOMEGNORBA_LIBS)  	$(INTLLIBS)
 
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../config.h
diff -ruN balsa/src/address-book.c balsa-new/src/address-book.c
--- balsa/src/address-book.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/address-book.c	Sat Oct  9 03:54:46 1999
@@ -198,6 +198,36 @@
     return FALSE;
 }
 
+static void
+ab_find(GtkWidget * group_entry)
+{
+    gchar *entry_text;
+    gpointer         row;
+    gchar            *new;
+    gint num;
+
+    g_return_if_fail(book_clist);
+
+    entry_text = gtk_entry_get_text(GTK_ENTRY(group_entry));
+    gtk_clist_freeze(GTK_CLIST(book_clist));
+
+    num = 0;
+    while ( (row = gtk_clist_get_row_data(book_clist, num))!= NULL) {
+	gtk_clist_get_text(GTK_CLIST(book_clist), num, 0, &new);
+	if (strncasecmp(new, entry_text,strlen(entry_text)) == 0){
+	    //	    gtk_clist_select_row(GTK_CLIST(book_clist), num, 0);
+	    gtk_clist_moveto(GTK_CLIST(book_clist), num, 0, 0, 0);
+	    break;
+	}
+	num++;
+    }
+
+    gtk_clist_thaw(GTK_CLIST(book_clist));
+}
+
+
+
+
 gint
 address_book_cb(GtkWidget * widget, gpointer data)
 {
@@ -207,6 +237,8 @@
                    *hbox,
                    *box2,
                    *scrolled_window;
+    GtkWidget      *find_label,
+	           *find_entry;
     gchar          *titles[2] =
     {N_("Name"), N_("E-Mail Address")};
 
@@ -224,6 +256,25 @@
     gtk_clist_column_titles_passive(GTK_CLIST(add_clist));
 
     ab_entry = (GtkWidget *) data;
+
+    find_entry = gtk_entry_new();
+    gtk_signal_connect(GTK_OBJECT(find_entry), "changed", GTK_SIGNAL_FUNC(ab_find),   find_entry);
+
+
+    find_label = gtk_label_new(N_("Name:"));
+
+    gtk_table_attach (GTK_TABLE (find_entry), find_label, 0, 1, 0, 1,
+		    GTK_FILL, GTK_FILL, 10, 10);
+    composing = FALSE;
+    
+    hbox = gtk_hbox_new(FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+ 
+    box2 = gtk_vbox_new(FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(hbox), box2, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(box2), gtk_label_new(N_("Address Book")), FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(box2), find_label, FALSE, FALSE, 3);
+    gtk_box_pack_start(GTK_BOX(box2), find_entry, TRUE, TRUE, 3);
 
     composing = FALSE;
 
diff -ruN balsa/src/balsa-app.c balsa-new/src/balsa-app.c
--- balsa/src/balsa-app.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/balsa-app.c	Tue Oct 12 16:07:18 1999
@@ -112,7 +112,7 @@
   balsa_app.new_messages = 0;
 
   balsa_app.check_mail_timer = 0;
-
+  balsa_app.checkbox = TRUE;
   balsa_app.debug = FALSE;
   balsa_app.previewpane = TRUE;
 
@@ -130,6 +130,11 @@
   /*encoding */
   balsa_app.encoding_style = 0;
   balsa_app.charset = NULL;
+
+  /* printing */
+  balsa_app.PrintCommand.PrintCommand = NULL;
+  balsa_app.PrintCommand.linesize = 0;
+  balsa_app.PrintCommand.breakline = 0;
 
 }
 
diff -ruN balsa/src/balsa-app.h balsa-new/src/balsa-app.h
--- balsa/src/balsa-app.h	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/balsa-app.h	Tue Oct 12 16:03:48 1999
@@ -37,11 +37,20 @@
 #define MESSAGEBOX_WIDTH 450
 #define MESSAGEBOX_HEIGHT 150
 
-#define DEFAULT_MESSAGE_FONT "-adobe-helvetica-medium-r-normal--12-*-72-72-p-*-iso8859-1"
+#define DEFAULT_MESSAGE_FONT "-adobe-helvetica-medium-r-normal--10-*-72-72-p-*-iso8859-1"
 
 #define DEFAULT_CHARSET "ISO-8859-1"
 #define DEFAULT_ENCODING ENC8BIT
 
+typedef struct stPrinting Printing_t;
+
+struct stPrinting{
+    gint  breakline;
+    gint  linesize;
+    gchar *PrintCommand;
+};
+
+
 /* global balsa application structure */
 extern struct BalsaApplication
 {
@@ -101,6 +110,11 @@
   /* encoding stuff */
   gint encoding_style;
   gchar *charset;
+
+  gint checkbox;
+
+  /* printing */
+  Printing_t PrintCommand;
 
       
 }
diff -ruN balsa/src/balsa-init.c balsa-new/src/balsa-init.c
--- balsa/src/balsa-init.c	Sat Oct  9 03:19:52 1999
+++ balsa-new/src/balsa-init.c	Sat Oct  9 04:07:09 1999
@@ -679,6 +679,7 @@
   balsa_app.trash = mailbox;
 
   config_global_save ();
+  config_load( BALSA_CONFIG_FILE );
 
   gtk_widget_destroy (prefs->real_name);
   gtk_widget_destroy (prefs->email);
diff -ruN balsa/src/balsa-mblist.c balsa-new/src/balsa-mblist.c
--- balsa/src/balsa-mblist.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/balsa-mblist.c	Tue Oct 12 19:14:15 1999
@@ -361,12 +361,14 @@
 	  if (mbnode->mailbox->type == MAILBOX_MH ||
 	      mbnode->mailbox->type == MAILBOX_MAILDIR)
 	    {
-	      gtk_ctree_set_node_info (ctree, cnode, mbnode->mailbox->name, 5,
-				       NULL, NULL,
-				       NULL, NULL,
-				       G_NODE_IS_LEAF (gnode),
-				       mbnode->expanded);
-	      gtk_ctree_node_set_row_data (ctree, cnode, mbnode->mailbox);
+		gtk_ctree_set_node_info (ctree, cnode, g_basename (mbnode->name), 5,
+					 balsa_icon_get_pixmap (BALSA_ICON_DIR_CLOSED),
+					 balsa_icon_get_bitmap (BALSA_ICON_DIR_CLOSED),
+					 balsa_icon_get_pixmap (BALSA_ICON_DIR_OPEN),
+					 balsa_icon_get_bitmap (BALSA_ICON_DIR_OPEN),
+					 G_NODE_IS_LEAF (gnode),
+					 mbnode->expanded);
+		gtk_ctree_node_set_row_data (ctree, cnode, mbnode->mailbox);
 	    }
 	  else
 	    {
@@ -379,7 +381,7 @@
 		  style = gtk_style_copy (gtk_widget_get_style (GTK_WIDGET (ctree)));
                   gdk_font_unref(style->font);
 		  font = gdk_font_load
-					("-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1");
+					("-adobe-courier-medium-r-normal-*-*-120-*-*-*-*-iso8859-1");
 		  style->font = font;
                   gdk_font_ref(style->font);
 
diff -ruN balsa/src/index-child.c balsa-new/src/index-child.c
--- balsa/src/index-child.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/index-child.c	Tue Oct 12 22:44:40 1999
@@ -33,6 +33,11 @@
 static void index_child_class_init (IndexChildClass *);
 static void index_child_init (IndexChild *);
 
+extern void print_current_message_cb(GtkWidget *widget, gpointer data);
+extern void replyto_message_cb (GtkWidget * widget, gpointer data);
+extern void replytoall_message_cb (GtkWidget * widget, gpointer data);
+extern void forward_message_cb (GtkWidget * widget, gpointer data);
+
 /* DND declarations */
 enum
   {
@@ -86,6 +91,8 @@
 static void undelete_message_cb (GtkWidget *, BalsaIndex *);
 static void transfer_messages_cb (BalsaMBList *, Mailbox *, GtkCTreeNode *, GdkEventButton *, BalsaIndex *);
 
+static void open_message_cb (GtkWidget *, BalsaIndex *);
+
 void
 index_child_changed (GnomeMDI * mdi, GnomeMDIChild * mdi_child)
 {
@@ -270,8 +277,6 @@
       hadj->step_increment = 10;
       gtk_paned_add2 (GTK_PANED (vpane), sw);
 
-
-
       gtk_widget_show_all (vpane);
 
     }
@@ -396,7 +401,58 @@
   GtkWidget *bmbl;
 
   menu = gtk_menu_new ();
-  menuitem = gtk_menu_item_new_with_label (_ ("Transfer"));
+
+  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_OPEN, _ ("Open"));
+  gtk_signal_connect (GTK_OBJECT (menuitem),
+		      "activate",
+		      (GtkSignalFunc)open_message_cb,
+		      (gpointer) bindex);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
+  menuitem = gnome_stock_menu_item (GNOME_STOCK_MENU_PRINT, _ ("Print"));
+  gtk_signal_connect (GTK_OBJECT (menuitem),
+		      "activate",     
+		      (GtkSignalFunc) print_current_message_cb,
+		      bindex);
+  gtk_menu_append (GTK_MENU (menu), menuitem);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new();
+  gtk_menu_item_configure(menuitem, GNOME_APP_UI_SEPARATOR, 0);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
+  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_MAIL_RPL, _ ("Reply"));
+  gtk_signal_connect (GTK_OBJECT (menuitem),
+		      "activate",
+		      (GtkSignalFunc) replyto_message_cb,
+		      bindex);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
+  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_MAIL_RPL, _ ("Reply to all"));
+  gtk_signal_connect (GTK_OBJECT (menuitem),
+		      "activate",
+		      (GtkSignalFunc) replytoall_message_cb,
+		      bindex);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
+  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_MAIL_FWD, _ ("Forward"));
+  gtk_signal_connect (GTK_OBJECT (menuitem),
+		      "activate",
+		      (GtkSignalFunc) forward_message_cb,
+		      bindex);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
+  menuitem = gtk_menu_item_new();
+  gtk_menu_item_configure(menuitem, GNOME_APP_UI_SEPARATOR, 0);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
+  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_BLANK, _ ("Transfer"));
 
   submenu = gtk_menu_new ();
   smenuitem = gtk_menu_item_new ();
@@ -446,6 +502,12 @@
   gtk_widget_show (menuitem);
 
 #endif
+
+  menuitem = gtk_menu_item_new();
+  gtk_menu_item_configure(menuitem, GNOME_APP_UI_SEPARATOR, 0);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
   menuitem = gnome_stock_menu_item (GNOME_STOCK_MENU_TRASH, _ ("Delete"));
   gtk_signal_connect (GTK_OBJECT (menuitem),
 		      "activate",
@@ -512,6 +574,21 @@
     }
 }
 
+static void
+open_message_cb (GtkWidget * widget, BalsaIndex * bindex)
+{
+    GtkCList *clist;
+    GList *list;
+    Message *message;
+
+    g_return_if_fail (widget != NULL);
+    g_return_if_fail (bindex != NULL);
+
+    clist = GTK_CLIST (bindex);
+    list = clist->selection;
+    message = gtk_clist_get_row_data (clist, GPOINTER_TO_INT (list->data));
+    message_window_new (message);
+}
 
 static void
 delete_message_cb (GtkWidget * widget, BalsaIndex * bindex)
diff -ruN balsa/src/local-mailbox.c balsa-new/src/local-mailbox.c
--- balsa/src/local-mailbox.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/local-mailbox.c	Tue Oct 12 08:37:54 1999
@@ -98,18 +98,23 @@
     if (strcmp (path, MAILBOX_LOCAL (balsa_app.trash)->path) == 0)
       return;
 
-  if (isdir && type == MAILBOX_UNKNOWN)
+  if (isdir && (type == MAILBOX_MAILDIR || type == MAILBOX_UNKNOWN))
     {
       gchar *tmppath;
       MailboxNode *mbnode;
 
-      mbnode = mailbox_node_new (path, NULL, TRUE);
+      mailbox = mailbox_new(type);
+      mailbox->name = g_strdup(name);
+      MAILBOX_LOCAL(mailbox)->path = g_strdup(path);
+      mbnode = mailbox_node_new(path, mailbox, isdir);
+
       tmppath = g_strdup_printf ("%s/.expanded", path);
 
       if (access (tmppath, F_OK) != -1)
 	mbnode->expanded = TRUE;
       else
 	mbnode->expanded = FALSE;
+
       node = g_node_new (mbnode);
 
       g_free(tmppath);
@@ -222,7 +227,7 @@
 	{
 	  add_mailbox (d->d_name, filename, MAILBOX_UNKNOWN, 1);
 	}
-      if (mailbox_type != MAILBOX_MAILDIR)
+      if (mailbox_type == MAILBOX_MAILDIR || mailbox_type == MAILBOX_MH)
 	{
 	  dpc = opendir (filename);
 	  if (!dpc)
@@ -254,7 +259,7 @@
   struct dirent *d;
 
   /*Duplicates mailboxes!*/
-  return;
+  //return;
 
   dp = opendir (balsa_app.local_mail_directory);
   if (!dp)
diff -ruN balsa/src/mailbox-conf.c balsa-new/src/mailbox-conf.c
--- balsa/src/mailbox-conf.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/mailbox-conf.c	Sat Oct  9 03:54:46 1999
@@ -41,6 +41,7 @@
     MC_PAGE_LOCAL,
     MC_PAGE_POP3,
     MC_PAGE_IMAP,
+    MC_PAGE_FOLDER,
   }
 MailboxConfPageType;
 
@@ -60,7 +61,7 @@
 
     MailboxConfPageType next_page;
 
-    /* for local mailboxes */
+    /* for local mailboxes and folders*/
     GtkWidget *local_mailbox_name;
     GtkWidget *local_mailbox_path;
 
@@ -97,7 +98,7 @@
 static GtkWidget *create_local_mailbox_page (void);
 static GtkWidget *create_pop_mailbox_page (void);
 static GtkWidget *create_imap_mailbox_page (void);
-
+static GtkWidget *create_folder_page(void);
 
 void mailbox_conf_edit_imap_server (GtkWidget * widget, gpointer data);
 
@@ -270,6 +271,10 @@
 			    create_imap_mailbox_page (),
 			    NULL);
 
+  gtk_notebook_append_page (GTK_NOTEBOOK (mcw->notebook),
+			    create_folder_page(),
+			    NULL);
+
   /* close button (bottom dialog) */
   bbox = GNOME_DIALOG (mcw->window)->action_area;
   gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD);
@@ -320,6 +325,9 @@
     switch (type)
       {
       case MAILBOX_MAILDIR:
+	  gtk_notebook_set_page (GTK_NOTEBOOK (mcw->notebook), MC_PAGE_FOLDER);
+	  break;
+
       case MAILBOX_MBOX:
       case MAILBOX_MH:
 	gtk_notebook_set_page (GTK_NOTEBOOK (mcw->notebook), MC_PAGE_LOCAL);
@@ -348,6 +356,14 @@
     {
     case MAILBOX_MH:
     case MAILBOX_MAILDIR:
+	gtk_notebook_set_page(GTK_NOTEBOOK (mcw->notebook), MC_PAGE_FOLDER);
+	if (mailbox)
+	{
+	  gtk_entry_set_text (GTK_ENTRY (mcw->local_mailbox_name), mailbox->name);
+	  gtk_entry_set_text (GTK_ENTRY (mcw->local_mailbox_path), MAILBOX_LOCAL (mailbox)->path);
+	}
+	break;
+
     case MAILBOX_MBOX:
       gtk_notebook_set_page (GTK_NOTEBOOK (mcw->notebook), MC_PAGE_LOCAL);
       if (mailbox)
@@ -508,8 +524,9 @@
   
   switch (mailbox->type)
     {
-    case MAILBOX_MH:
     case MAILBOX_MAILDIR:
+	break;
+    case MAILBOX_MH:
     case MAILBOX_MBOX:
       {
 	gchar *filename;
@@ -671,6 +688,57 @@
       add_mailboxes_for_checking (mailbox);
       break;
 
+    case MC_PAGE_FOLDER:
+	{
+	    gchar *pathname = gtk_entry_get_text (GTK_ENTRY ((mcw->local_mailbox_path)));
+	    gchar *filename = gtk_entry_get_text (GTK_ENTRY ((mcw->local_mailbox_name)));
+	    gchar *longname;
+	    longname = g_malloc(strlen(pathname) + strlen(filename) + 10);
+	    if (pathname[strlen(pathname)] == '/')
+		sprintf(longname,"%s%s",pathname,filename);
+	    else
+		sprintf(longname,"%s%c%s",pathname,'/',filename);
+		
+	    type = mailbox_valid (longname);
+	    if (type == MAILBOX_MAILDIR) {
+		GtkWidget *msgbox;
+		gchar *ptr;
+		ptr = g_strdup_printf (_("Folder already exist !\n"));
+		msgbox = gnome_message_box_new (ptr, GNOME_MESSAGE_BOX_ERROR, _("Cancel"), NULL);
+		free (ptr);
+		gtk_window_set_modal (GTK_WINDOW (msgbox), TRUE);
+		gnome_dialog_run (GNOME_DIALOG (msgbox));
+		return NULL;
+
+	    }
+
+            {
+	    int fd = mkdir (longname, S_IRUSR | S_IWUSR| S_IXUSR);
+
+	    if (fd < 0) {
+		GtkWidget *msgbox;
+		gchar *ptr;
+		ptr = g_strdup_printf (_("Cannot create folder '%s': %s\n"), filename, strerror (errno));
+		msgbox = gnome_message_box_new (ptr, GNOME_MESSAGE_BOX_ERROR, _("Cancel"), NULL);
+		free (ptr);
+		gtk_window_set_modal (GTK_WINDOW (msgbox), TRUE);
+		gnome_dialog_run (GNOME_DIALOG (msgbox));
+		return NULL;
+	      }
+	    close (fd);
+	    }
+
+	    mailbox = mailbox_new (MAILBOX_MAILDIR);
+	
+	    mailbox->name = g_strdup (gtk_entry_get_text (GTK_ENTRY (mcw->local_mailbox_name)));
+	    MAILBOX_LOCAL (mailbox)->path = g_strdup (longname);
+	    node = g_node_new (mailbox_node_new (mailbox->name, mailbox,
+						 TRUE));
+	    g_node_append (balsa_app.mailbox_nodes, node);
+
+	}
+
+	break;
 
 /* IMAP Mailboxes */
     case MC_PAGE_IMAP:
@@ -710,6 +778,7 @@
       break;
     }
 
+
   return mailbox;
 }
 
@@ -812,6 +881,13 @@
   gtk_signal_connect (GTK_OBJECT (radio_button), "clicked", GTK_SIGNAL_FUNC (set_next_page), (gpointer) MC_PAGE_IMAP);
   gtk_widget_show (radio_button);
 
+  /* New Folder */
+  radio_button = gtk_radio_button_new_with_label
+      (gtk_radio_button_group(GTK_RADIO_BUTTON (radio_button)), _("Folder"));
+  gtk_box_pack_start(GTK_BOX(vbox), radio_button, FALSE, FALSE, 0);
+  gtk_signal_connect (GTK_OBJECT (radio_button), "clicked", GTK_SIGNAL_FUNC (set_next_page), (gpointer) MC_PAGE_FOLDER);
+  gtk_widget_show(radio_button);
+
   return vbox;
 }
 
@@ -854,6 +930,43 @@
 }
 
 static GtkWidget *
+create_folder_page (void)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  GtkWidget *table;
+  GtkWidget *file;
+
+  vbox = gtk_vbox_new (FALSE, 0);
+
+  table = gtk_table_new (2, 2, FALSE);
+  gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 5);
+
+  /* mailbox name */
+  label = gtk_label_new (_("Folder Name:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
+		    GTK_FILL, GTK_FILL, 10, 10);
+
+  mcw->local_mailbox_name = gtk_entry_new ();
+  gtk_table_attach (GTK_TABLE (table), mcw->local_mailbox_name, 1, 2, 0, 1,
+		    GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 10);
+
+  /* path to file */
+  label = gtk_label_new (_("Folder path:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
+		    GTK_FILL, GTK_FILL, 10, 10);
+
+  file = gnome_file_entry_new ("Folder Path", "Folder Path");
+  mcw->local_mailbox_path = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (file));
+  gtk_table_attach (GTK_TABLE (table), file, 1, 2, 1, 2,
+		    GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 10);
+
+  return vbox;
+}
+
+static GtkWidget *
 create_pop_mailbox_page (void)
 {
   GtkWidget *return_widget;
@@ -1077,6 +1190,10 @@
     case MC_PAGE_LOCAL:
       gtk_notebook_set_page (GTK_NOTEBOOK (mcw->notebook), MC_PAGE_LOCAL);
       break;
+ 
+   case MC_PAGE_FOLDER:
+	gtk_notebook_set_page(GTK_NOTEBOOK(mcw->notebook), MC_PAGE_FOLDER);
+	break;
 
     case MC_PAGE_POP3:
       set_next_page (NULL, MC_PAGE_POP3);
diff -ruN balsa/src/main-window.c balsa-new/src/main-window.c
--- balsa/src/main-window.c	Sat Oct  9 02:46:34 1999
+++ balsa-new/src/main-window.c	Tue Oct 12 22:47:28 1999
@@ -41,6 +41,7 @@
 #include "mailbox-conf.h"
 #include "mblist-window.h"
 #include "threads.h"
+#include "mime.h"
 #define MAILBOX_DATA "mailbox_data"
 
 #define APPBAR_KEY "balsa_appbar"
@@ -63,10 +64,12 @@
 static void check_new_messages_cb (GtkWidget *, gpointer data);
 gint progress_window_change_cb (GtkWidget * widget, gpointer data);
 
+void print_current_message_cb (GtkWidget * widget, gpointer data);
+
 static void new_message_cb (GtkWidget * widget, gpointer data);
-static void replyto_message_cb (GtkWidget * widget, gpointer data);
-static void replytoall_message_cb (GtkWidget * widget, gpointer data);
-static void forward_message_cb (GtkWidget * widget, gpointer data);
+void replyto_message_cb (GtkWidget * widget, gpointer data);
+void replytoall_message_cb (GtkWidget * widget, gpointer data);
+void forward_message_cb (GtkWidget * widget, gpointer data);
 static void continue_message_cb (GtkWidget * widget, gpointer data);
 
 static void next_message_cb (GtkWidget * widget, gpointer data);
@@ -97,8 +100,13 @@
  GNOME_STOCK_MENU_MAIL_RCV, 'M', GDK_CONTROL_MASK, NULL
   },
 
-
   GNOMEUIINFO_SEPARATOR,
+  /* Ctrl-I */
+  {
+    GNOME_APP_UI_ITEM, N_ ("Pr_int"), N_("Print current mail"),
+    print_current_message_cb, NULL, NULL, GNOME_APP_PIXMAP_STOCK,
+    GNOME_STOCK_MENU_MAIL_RCV, 'I', GDK_CONTROL_MASK, NULL
+  },
 
   GNOMEUIINFO_MENU_EXIT_ITEM(close_main_window, NULL), 
 
@@ -259,10 +267,11 @@
     next_message_cb, NULL, NULL, GNOME_APP_PIXMAP_STOCK,
     GNOME_STOCK_PIXMAP_FORWARD, 'N', 0, NULL
   },
-#ifdef BALSA_SHOW_ALL
+
   GNOMEUIINFO_SEPARATOR,
-  GNOMEUIINFO_ITEM_STOCK (N_ ("Print"), N_ ("Print current message"), NULL, GNOME_STOCK_PIXMAP_PRINT),
-#endif
+  GNOMEUIINFO_ITEM_STOCK (N_ ("Print"), N_ ("Print current message"), 
+			  print_current_message_cb, GNOME_STOCK_PIXMAP_PRINT),
+
   GNOMEUIINFO_END
 };
 
@@ -402,6 +411,10 @@
 
   mblist_open_window (mdi);
 
+  /* added default opening of inbox folder */
+  /* must be a config parameter */
+  mblist_open_mailbox(balsa_app.inbox);
+
   refresh_main_window ();
 
 }
@@ -478,6 +491,80 @@
  * Callbacks
  */
 
+void print_current_message_cb(GtkWidget *widget, gpointer data)
+{
+  GtkCList *clist;
+  GList *list;
+  Message *message;
+  Address *addr = NULL;
+  gchar *tmp;
+  GString *printtext = g_string_new ("\n\n");
+  FILE * fp;
+  gchar tmp_file_name[PATH_MAX + 1];
+  gchar *print_command = NULL;
+
+
+  g_return_if_fail (widget != NULL);
+
+  if (!balsa_app.current_index_child)
+    return;
+
+  clist = GTK_CLIST (balsa_app.current_index_child->index);
+  list = clist->selection;
+  while (list)
+    {
+      sprintf(tmp_file_name,"%s/balsa-print", g_get_home_dir());
+      fp = fopen(tmp_file_name,"wra+");
+      message = gtk_clist_get_row_data (clist, GPOINTER_TO_INT (list->data));
+      addr = message->from    ;
+      tmp = address_to_gchar (addr);
+      fprintf(fp, "\n\n");
+      fprintf(fp, "From:    \t%s\n", tmp);
+      fprintf(fp, "Sendt:   \t%s\n", message->date);
+      tmp = make_string_from_list (message->to_list);
+      fprintf(fp, "To:      \t%s\n", tmp);
+      fprintf(fp, "Subject: \t%s\n", message->subject);
+      fprintf(fp, "\n");
+
+      message_body_ref (message);
+      printtext = content2reply (message, NULL);
+      if (balsa_app.PrintCommand.breakline == TRUE) {
+	  int i = 0 , j = 0;
+	  while (i <= balsa_app.PrintCommand.linesize && printtext->str[j++] != '\0') {
+	      if ( printtext->str[j] == '\n') {
+		  printf("\n");
+		  fprintf(fp, "\n");
+		  i = 0;
+		  continue;
+	      }
+	      if ( i ==  balsa_app.PrintCommand.linesize && printtext->str[j] != '\0') {
+		  i = 0;
+		  fprintf(fp, "\n");
+	      }
+	      fprintf(fp, "%c", printtext->str[j]);
+	      i++;
+	  }
+      }
+      else
+	  fprintf(fp, "%s\n",printtext->str);
+
+      message_body_unref (message);
+
+      fflush(fp);
+      fclose (fp);
+
+      print_command = g_strdup_printf("%s %s", balsa_app.PrintCommand.PrintCommand, tmp_file_name);
+      if(print_command) {
+	  gnome_execute_shell(NULL, print_command);
+	  g_free(print_command);
+      }
+      /* uses sleep here so gnome_execute_shell reaches the file before itŠ's removed */
+      sleep(1);
+      unlink(tmp_file_name);
+      list = list->next;
+    }
+}
+
 static void
 check_new_messages_cb (GtkWidget * widget, gpointer data)
 {
@@ -485,6 +572,7 @@
    pthread_mutex_lock( &mailbox_lock );
    if( checking_mail )
    {
+       printf("allerede\n");
      pthread_mutex_unlock( &mailbox_lock );
      return;
    }
@@ -493,15 +581,15 @@
 /*  create progress dialog:
  *  see function check_all_show_progress below  -- David
  */
-  progress_window = gnome_dialog_new("Checking Mail...", GNOME_STOCK_BUTTON_OK, NULL);
-  gnome_dialog_set_close(GNOME_DIALOG( progress_window ), TRUE);
-
-  g_free( current_dialog_message );
-  current_dialog_message = g_strdup( "Checking Mail....");
-  progress_text = gtk_label_new( current_dialog_message );
-  pthread_mutex_unlock( &mailbox_lock );
+       progress_window = gnome_dialog_new("Checking Mail...", GNOME_STOCK_BUTTON_OK, NULL);
+       gnome_dialog_set_close(GNOME_DIALOG( progress_window ), TRUE);
+   
+       g_free( current_dialog_message );
+       current_dialog_message = g_strdup( "Checking Mail....");
+       progress_text = gtk_label_new( current_dialog_message );
+       pthread_mutex_unlock( &mailbox_lock );
 
-  gtk_signal_connect( GTK_OBJECT(progress_text),
+       gtk_signal_connect( GTK_OBJECT(progress_text),
   						"event",
   						GTK_SIGNAL_FUNC( progress_window_change_cb),
   						NULL );
@@ -519,7 +607,7 @@
   					NULL,
   					(void *) &check_messages_thread,
   					(void *) NULL );
-
+  
 }
 
 void
@@ -575,7 +663,7 @@
 }
 
 
-static void
+void
 replyto_message_cb (GtkWidget * widget, gpointer data)
 {
   GtkCList *clist;
@@ -597,7 +685,7 @@
     }
 }
 
-static void
+void
 replytoall_message_cb (GtkWidget * widget, gpointer data)
 {
   GtkCList *clist;
@@ -620,7 +708,7 @@
 }
 
 
-static void
+void
 forward_message_cb (GtkWidget * widget, gpointer data)
 {
   GtkCList *clist;
@@ -744,6 +832,7 @@
 static void
 mblist_window_cb (GtkWidget * widget, gpointer data)
 {
+
   mblist_open_window (mdi);
 }
 
diff -ruN balsa/src/main-window.h balsa-new/src/main-window.h
--- balsa/src/main-window.h	Sat Oct  9 02:46:34 1999
+++ balsa-new/src/main-window.h	Tue Oct 12 16:02:36 1999
@@ -29,5 +29,8 @@
 void main_window_set_cursor (gint type);
 void mblist_close_mailbox (Mailbox * mailbox);
 void check_messages_thread( void );
-
+void print_current_message_cb(GtkWidget *widget, gpointer data);
+void replyto_message_cb (GtkWidget * widget, gpointer data);
+void replytoall_message_cb (GtkWidget * widget, gpointer data);
+void forward_message_cb (GtkWidget * widget, gpointer data);
 #endif /* __main_window_h__ */
diff -ruN balsa/src/mblist-window.c balsa-new/src/mblist-window.c
--- balsa/src/mblist-window.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/mblist-window.c	Tue Oct 12 16:18:56 1999
@@ -241,11 +241,11 @@
       
       
       if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
-	
 	{
 	  /* double click with button left */
-	  
-	  mblist_open_mailbox (mailbox);  
+	  if (mailbox->type != MAILBOX_MAILDIR) {
+	      mblist_open_mailbox (mailbox);  
+	  }
 	  return TRUE;
 	}
      
@@ -291,13 +291,15 @@
 static void
 mb_open_cb (GtkWidget * widget, Mailbox * mailbox)
 {
-  mblist_open_mailbox (mailbox);
+    if (mailbox->type != MAILBOX_MAILDIR)
+	mblist_open_mailbox (mailbox);
 }
 
 static void
 mb_close_cb (GtkWidget * widget, Mailbox * mailbox)
 {
-  mblist_close_mailbox (mailbox);
+    if (mailbox->type != MAILBOX_MAILDIR)
+	mblist_close_mailbox (mailbox);
 }
 
 static void
@@ -340,36 +342,56 @@
 
   menu = gtk_menu_new ();
 
+  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_NEW, _ ("New..."));
+  gtk_signal_connect (GTK_OBJECT (menuitem),
+		      "activate",
+		      GTK_SIGNAL_FUNC (mb_add_cb),
+		      mailbox);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
+
   if (mailbox)
     {
-      menuitem = gtk_menu_item_new_with_label (_ ("Open Mailbox"));
-      gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
-			  GTK_SIGNAL_FUNC (mb_open_cb), mailbox);
-      gtk_menu_append (GTK_MENU (menu), menuitem);
-      gtk_widget_show (menuitem);
-     
-      menuitem = gtk_menu_item_new_with_label (_ ("Close Mailbox"));
-      gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
-			  GTK_SIGNAL_FUNC (mb_close_cb), mailbox);
-      gtk_menu_append (GTK_MENU (menu), menuitem);
-      gtk_widget_show (menuitem);
+	
+	if (mailbox->type != MAILBOX_MAILDIR) {
+	    menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_OPEN, _ ("Open Mailbox"));
+	    gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
+				GTK_SIGNAL_FUNC (mb_open_cb), mailbox);
+	    gtk_menu_append (GTK_MENU (menu), menuitem);
+	    gtk_widget_show (menuitem);
+	}
+
+	if (mailbox->type != MAILBOX_MAILDIR) {
+	    menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_CLOSE, _ ("Close Mailbox"));
+	    gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
+				GTK_SIGNAL_FUNC (mb_close_cb), mailbox);
+	    gtk_menu_append (GTK_MENU (menu), menuitem);
+	    gtk_widget_show (menuitem);
+	}
     }
   
-  menuitem = gtk_menu_item_new_with_label (_ ("Add New Mailbox"));
-  gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
-		      GTK_SIGNAL_FUNC (mb_add_cb), mailbox);
-  gtk_menu_append (GTK_MENU (menu), menuitem);
-  gtk_widget_show (menuitem);
+  menuitem = gtk_menu_item_new();
+  gtk_menu_item_configure(menuitem, GNOME_APP_UI_SEPARATOR, 0);
+  gtk_menu_append (GTK_MENU(menu), menuitem);
+  gtk_widget_show(menuitem);
   
   if (mailbox)
     {
-      menuitem = gtk_menu_item_new_with_label (_ ("Edit Mailbox Properties"));
+	if (mailbox->type == MAILBOX_MAILDIR)
+	    menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_PROP, _ ("Folder Properties"));
+	else
+	    menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_PROP, _ ("Mailbox Properties"));
+
       gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
 			  GTK_SIGNAL_FUNC (mb_conf_cb), mailbox);
       gtk_menu_append (GTK_MENU (menu), menuitem);
       gtk_widget_show (menuitem);
       
-      menuitem = gtk_menu_item_new_with_label (_ ("Delete Mailbox"));
+      if (mailbox->type == MAILBOX_MAILDIR)
+	  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_TRASH, _ ("Delete Folder"));
+      else
+	  menuitem = gnome_stock_menu_item(GNOME_STOCK_MENU_TRASH, _ ("Delete Mailbox"));
+
       gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
 			  GTK_SIGNAL_FUNC (mb_del_cb), mailbox);
       gtk_menu_append (GTK_MENU (menu), menuitem);
@@ -434,7 +456,8 @@
       gnome_dialog_run (GNOME_DIALOG (err_dialog));
       return;
     }
-  mblist_open_mailbox (mailbox);
+  if (mailbox->type != MAILBOX_MAILDIR)
+      mblist_open_mailbox (mailbox);
 }
 
 
@@ -449,7 +472,8 @@
       gnome_dialog_run (GNOME_DIALOG (err_dialog));
       return;
     }
-  mblist_close_mailbox (mailbox);
+  if (mailbox->type != MAILBOX_MAILDIR)
+      mblist_close_mailbox (mailbox);
 }
 
 
diff -ruN balsa/src/message-window.c balsa-new/src/message-window.c
--- balsa/src/message-window.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/message-window.c	Tue Oct 12 15:45:17 1999
@@ -42,6 +42,8 @@
 
 static GnomeUIInfo file_menu[] =
 {
+  GNOMEUIINFO_MENU_PRINT_ITEM(print_current_message_cb, NULL),
+  GNOMEUIINFO_SEPARATOR,
   GNOMEUIINFO_MENU_CLOSE_ITEM(close_message_window, NULL),
 
   GNOMEUIINFO_END
diff -ruN balsa/src/pref-manager.c balsa-new/src/pref-manager.c
--- balsa/src/pref-manager.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/pref-manager.c	Tue Oct 12 15:42:00 1999
@@ -43,6 +43,7 @@
 
     GtkWidget *previewpane;
     GtkWidget *debug;		/* enable/disable debugging */
+    GtkWidget *checkbox;
 
 #ifdef BALSA_SHOW_INFO
     GtkWidget *mblist_show_mb_content_info;
@@ -56,7 +57,11 @@
       /* charset */
     GtkRadioButton *encoding_type[NUM_ENCODING_MODES];
     GtkWidget *charset;
-
+    
+      /* printing */
+    GtkWidget *PrintCommand;
+    GtkWidget *PrintBreakline;
+    GtkWidget *PrintLinesize;
 
   }
 PropertyUI;
@@ -100,7 +105,7 @@
 static GtkWidget *create_display_page (void);
 static GtkWidget *create_misc_page (void);
 static GtkWidget *create_encoding_page (void);
-
+static GtkWidget *create_printing_page (void);
 
 /* save the settings */
 static void apply_prefs (GnomePropertyBox * pbox, gint page, PropertyUI * pui);
@@ -189,12 +194,18 @@
 			     create_misc_page (),
 			     label);
 
-  /* Misc page */
+  /* Encoding page */
   label = gtk_label_new (_ ("Encoding"));
   gtk_notebook_append_page (
 		    GTK_NOTEBOOK (GNOME_PROPERTY_BOX (pui->pbox)->notebook),
 			     create_encoding_page (),
 			     label);
+  /* Printing page */
+  label = gtk_label_new (_ ("Printing"));
+  gtk_notebook_append_page(
+		    GTK_NOTEBOOK (GNOME_PROPERTY_BOX (pui->pbox)->notebook),
+		             create_printing_page (),
+		             label);
   set_prefs ();
   for (i = 0; i < NUM_TOOLBAR_MODES; i++)
     {
@@ -204,6 +215,8 @@
 
   gtk_signal_connect (GTK_OBJECT (pui->previewpane), "toggled",
 		      GTK_SIGNAL_FUNC (properties_modified_cb), pui->pbox);
+  gtk_signal_connect (GTK_OBJECT (pui->checkbox), "toggled",
+		      GTK_SIGNAL_FUNC (properties_modified_cb), pui->pbox);
   gtk_signal_connect (GTK_OBJECT (pui->debug), "toggled",
 		      GTK_SIGNAL_FUNC (properties_modified_cb), pui->pbox);
 #ifdef BALSA_SHOW_INFO
@@ -251,6 +264,17 @@
 			  properties_modified_cb, pui->pbox);
     }
 
+  /* printing */
+  gtk_signal_connect (GTK_OBJECT (pui->PrintCommand), "changed",
+		      GTK_SIGNAL_FUNC (properties_modified_cb),
+		      pui->pbox);
+  gtk_signal_connect (GTK_OBJECT (pui->PrintBreakline), "toggled",
+		      GTK_SIGNAL_FUNC (properties_modified_cb),
+		      pui->pbox);
+  gtk_signal_connect (GTK_OBJECT (pui->PrintLinesize), "changed",
+  		      GTK_SIGNAL_FUNC (properties_modified_cb),
+  		      pui->pbox);
+
 
   /* set data and show the whole thing */
   gtk_widget_show_all (GTK_WIDGET (pui->pbox));
@@ -305,6 +329,7 @@
 	break;
       }
   balsa_app.debug = GTK_TOGGLE_BUTTON (pui->debug)->active;
+  balsa_app.checkbox = GTK_TOGGLE_BUTTON(pui->checkbox)->active;
   balsa_app.previewpane = GTK_TOGGLE_BUTTON (pui->previewpane)->active;
 #ifdef BALSA_SHOW_INFO
   if (balsa_app.mblist_show_mb_content_info != GTK_TOGGLE_BUTTON (pui->mblist_show_mb_content_info)->active)
@@ -336,6 +361,14 @@
 	break;
       }
 
+  /* printing */
+  g_free (balsa_app.PrintCommand.PrintCommand);
+  balsa_app.PrintCommand.PrintCommand =
+      g_strdup( gtk_entry_get_text(GTK_ENTRY (pui->PrintCommand)));
+
+  balsa_app.PrintCommand.linesize = atoi(gtk_entry_get_text(GTK_ENTRY( pui->PrintLinesize)));
+  balsa_app.PrintCommand.breakline =  GTK_TOGGLE_BUTTON(pui->PrintBreakline)->active;
+
   refresh_main_window ();
 
   /*
@@ -352,6 +385,7 @@
 set_prefs (void)
 {
   gint i;
+  gchar tmp[10];
 
   for (i = 0; i < NUM_TOOLBAR_MODES; i++)
     if (balsa_app.toolbar_style == toolbar_type[i])
@@ -372,6 +406,7 @@
 
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pui->previewpane), balsa_app.previewpane);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pui->debug), balsa_app.debug);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pui->checkbox), balsa_app.checkbox);
 #ifdef BALSA_SHOW_INFO
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pui->mblist_show_mb_content_info), balsa_app.mblist_show_mb_content_info);
 #endif
@@ -391,6 +426,11 @@
 	break;
       }
 
+  /*printing */
+  gtk_entry_set_text(GTK_ENTRY(pui->PrintCommand), balsa_app.PrintCommand.PrintCommand);
+  sprintf(tmp, "%d", balsa_app.PrintCommand.linesize);
+  gtk_entry_set_text(GTK_ENTRY(pui->PrintLinesize), tmp);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pui->PrintBreakline), balsa_app.PrintCommand.breakline);
 
 }
 
@@ -689,7 +729,9 @@
   pui->debug = gtk_check_button_new_with_label (_("Debug"));
   gtk_box_pack_start (GTK_BOX (vbox1), GTK_WIDGET (pui->debug), TRUE, TRUE, 2);
 
-
+  pui->checkbox = gtk_check_button_new_with_label(_("Show check box"));
+  gtk_box_pack_start (GTK_BOX (vbox1), GTK_WIDGET (pui->checkbox), TRUE, TRUE, 2);
+ 
   /* arp --- table containing leadin label and string. */
   table = gtk_table_new (1, 2, FALSE);
 
@@ -789,6 +831,66 @@
       group = gtk_radio_button_group (pui->encoding_type[i]);
     }
 
+
+  return vbox;
+
+}
+
+/*
+ * printing notepad
+ */
+static GtkWidget *
+create_printing_page ()
+{
+   
+  GtkWidget *vbox;
+  GtkWidget *frame;
+
+  /* arp */
+  GtkWidget *vbox1;
+  GtkWidget *table;
+  GtkWidget *label;
+
+  vbox = gtk_vbox_new (FALSE, 5);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
+
+  frame = gtk_frame_new (_("Printing"));
+  gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 5);
+
+  vbox1 = gtk_vbox_new (FALSE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox1), 5);
+  gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (vbox1));
+
+  
+  table = gtk_table_new (1, 2, FALSE);
+
+  label = gtk_label_new (_("Print command:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
+		    GTK_FILL, GTK_FILL, 10, 10);
+
+   pui->PrintCommand = gtk_entry_new ();
+   gtk_table_attach (GTK_TABLE (table), pui->PrintCommand, 1, 2, 0, 1,
+		    GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 10);
+
+   //gtk_box_pack_start (GTK_BOX (vbox1), GTK_WIDGET (table), TRUE, TRUE, 2);
+
+  label = gtk_label_new (_ ("Linesize:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
+		    GTK_FILL, GTK_FILL, 10, 10);
+
+  pui->PrintLinesize = gtk_entry_new ();
+  gtk_table_attach (GTK_TABLE (table), pui->PrintLinesize, 1, 2, 1, 2,
+		    GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 10);
+
+
+   gtk_box_pack_start (GTK_BOX (vbox1), GTK_WIDGET (table), TRUE, TRUE, 2);
+
+   pui->PrintBreakline = gtk_check_button_new_with_label(_("Break line"));
+   gtk_box_pack_start (GTK_BOX (vbox1), GTK_WIDGET (pui->PrintBreakline), TRUE, TRUE, 2);
+ 
+   gtk_box_pack_start (GTK_BOX (vbox1), GTK_WIDGET (table), TRUE, TRUE, 2);
 
   return vbox;
 
diff -ruN balsa/src/save-restore.c balsa-new/src/save-restore.c
--- balsa/src/save-restore.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/save-restore.c	Tue Oct 12 20:24:41 1999
@@ -233,6 +233,7 @@
     safe_get_dstring( "reply_leading=> ", &( balsa_app.quote_str ), &okay );
     safe_get_dstring( "msg_font=" DEFAULT_MESSAGE_FONT, &( balsa_app.message_font ), &okay );
     safe_get_dstring( "charset=" DEFAULT_CHARSET, &( balsa_app.charset ), &okay );
+    mutt_set_charset(balsa_app.charset);
     get_dint( "encoding", 2, &( balsa_app.encoding_style ), &okay );
     get_dint( "toolbar_style", GTK_TOOLBAR_BOTH, (gint *) &( balsa_app.toolbar_style ), &okay );
     get_dint( "use_preview_pane", TRUE, &( balsa_app.previewpane ), &okay );
@@ -240,6 +241,7 @@
     get_dint( "show_content_info", TRUE, &( balsa_app.mblist_show_mb_content_info ), &okay );
 #endif
     get_dint( "use_debug", FALSE, &( balsa_app.debug ), &okay );
+    get_dint( "check_box", TRUE, &( balsa_app.checkbox ), &okay);
     get_dint( "main_width", 640, &( balsa_app.mw_width ), &okay );
     get_dint( "main_height", 480, &( balsa_app.mw_height ), &okay );
     get_dint( "mblist_width", 100, &( balsa_app.mblist_width ), &okay );
@@ -274,12 +276,32 @@
     gnome_config_set_int( "show_content_info", balsa_app.mblist_show_mb_content_info );
 #endif
     gnome_config_set_int( "use_debug", balsa_app.debug );
+    gnome_config_set_int( "check_box", balsa_app.checkbox );
     gnome_config_set_int( "main_width", balsa_app.mw_width );
     gnome_config_set_int( "main_height", balsa_app.mw_height );
     gnome_config_set_int( "mblist_width", balsa_app.mblist_width );
     gnome_config_set_int( "mblist_width", balsa_app.mblist_height );
 }
 
+static gboolean load_printing( void )
+{
+    gboolean okay = TRUE;
+    int ii;
+ 
+    safe_get_dstring( "command=a2ps -d -q", &( balsa_app.PrintCommand.PrintCommand ), &okay);
+    get_dint("breakline", FALSE, &( balsa_app.PrintCommand.breakline), &okay);
+    get_dint("linesize", 78, &( balsa_app.PrintCommand.linesize), &okay);
+ 
+    return okay;
+}
+/**/
+static gboolean save_printing( void )
+{
+    gnome_config_set_string("command", balsa_app.PrintCommand.PrintCommand);
+    gnome_config_set_int("breakline", balsa_app.PrintCommand.breakline);
+    gnome_config_set_int("linesize", balsa_app.PrintCommand.linesize);
+}
+
 /****************************************************************************/
 
 static gboolean load_mbox( void )
@@ -331,6 +353,7 @@
     safe_get_string( "username", &( (MAILBOX_POP3( mb ))->user ), &okay );
     safe_get_pstring( "password", &( (MAILBOX_POP3( mb ))->passwd ), &okay );
     safe_get_string( "server", &( (MAILBOX_POP3( mb ))->server ), &okay );
+    safe_get_string( "lastuid", &( (MAILBOX_POP3( mb ))->last_popped_uid), &okay );
     get_dint( "check", 0, &( (MAILBOX_POP3( mb ))->check ), &okay );
     get_dint( "delete_from_server", 0, &( (MAILBOX_POP3( mb ))->delete_from_server ), &okay );
     
@@ -355,6 +378,7 @@
     gnome_config_set_string( "name", mbox->name );
     gnome_config_set_string( "username", mp->user );
     gnome_config_private_set_string( "password", mp->passwd );
+    gnome_config_set_string( "lastuid", mp->last_popped_uid );
     set_magic_box( mbox );
 }
 
@@ -425,6 +449,8 @@
 	    load_imap();
 	} else if( strncmp( key, "pop3 ", 5 ) == 0 ) {
 	    load_pop3();
+	} else if( strcmp( key, "Printing") == 0) {
+	    load_printing();
 	} else if( strncmp( key, "Placement", 9 ) == 0 ) {
 	    /*Skip stuff we don't want*/
 	} else if( strncmp( key, "History:", 8 ) == 0 ) {
@@ -445,6 +471,14 @@
 	load_user_prefs();
 	done_prefs = TRUE;
     }
+
+
+    /*Printing*/
+    combined = g_strconcat( filename, "Printing/", NULL);
+    gnome_config_push_prefix( combined );
+    g_free(combined);
+    load_printing();
+    
 }
 
 static gboolean save_mailbox( Mailbox *box )
@@ -508,6 +542,13 @@
     gnome_config_push_prefix( combined );
     g_free( combined );
     save_user_prefs();
+    gnome_config_pop_prefix();    
+
+    /* Printing */
+    combined = g_strconcat( filename, "Printing/", NULL );
+    gnome_config_push_prefix( combined );
+    g_free( combined );
+    save_printing();
     gnome_config_pop_prefix();    
 
     save_mailbox( balsa_app.inbox );
diff -ruN balsa/src/sendmsg-window.c balsa-new/src/sendmsg-window.c
--- balsa/src/sendmsg-window.c	Sat Oct  9 01:19:44 1999
+++ balsa-new/src/sendmsg-window.c	Tue Oct 12 21:36:09 1999
@@ -511,7 +511,7 @@
   GtkStyle *style;
 
   style = gtk_style_new ();
-  font = gdk_font_load ("-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1");
+  font = gdk_font_load (balsa_app.message_font);
   colormap = gtk_widget_get_colormap (GTK_WIDGET (msg->attachments));
   style->font = font;
 
@@ -520,6 +520,7 @@
   msg->text = gtk_text_new (NULL, NULL);
   gtk_text_set_editable (GTK_TEXT (msg->text), TRUE);
   gtk_text_set_word_wrap (GTK_TEXT (msg->text), TRUE);
+
   gtk_widget_set_style (msg->text, style);
   gtk_widget_set_usize (msg->text, (82 * 7) + (2 * msg->text->style->klass->xthickness), -1);
   gtk_widget_show (msg->text);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]