Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 143894 | Differences between
and this patch

Collapse All | Expand All

(-)mahogany-0.67/acinclude.m4 (-259 / +15 lines)
Lines 1-4 Link Here
1
dnl $Id: acinclude.m4,v 1.9 2004/10/10 23:55:35 vadz Exp $
1
dnl $Id: acinclude.m4,v 1.11 2006/08/25 15:38:28 vadz Exp $
2
dnl local macro definitions for M's configure.in
2
dnl local macro definitions for M's configure.in
3
3
4
dnl package,message,variable,default,helpmessage
4
dnl package,message,variable,default,helpmessage
Lines 170-432 Link Here
170
  ]
170
  ]
171
)
171
)
172
172
173
173
dnl M_GCC_OPTION(OPTION, ACTION-IF-SUPPORTED, ACTION-IF-NOT-SUPPORTED)
174
## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
175
## Copyright (C) 1996-1998 Free Software Foundation, Inc.
176
## Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
177
##
178
## This program is free software; you can redistribute it and/or modify
179
## it under the terms of the GNU General Public License as published by
180
## the Free Software Foundation; either version 2 of the License, or
181
## (at your option) any later version.
182
##
183
## This program is distributed in the hope that it will be useful, but
184
## WITHOUT ANY WARRANTY; without even the implied warranty of
185
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
186
## General Public License for more details.
187
##
188
## You should have received a copy of the GNU General Public License
189
## along with this program; if not, write to the Free Software
190
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
191
##
192
## As a special exception to the GNU General Public License, if you
193
## distribute this file as part of a program that contains a
194
## configuration script generated by Autoconf, you may include it under
195
## the same distribution terms that you use for the rest of that program.
196
197
# serial 24 AM_PROG_LIBTOOL
198
AC_DEFUN([AM_PROG_LIBTOOL],
199
[AC_REQUIRE([AM_ENABLE_SHARED])dnl
200
AC_REQUIRE([AM_ENABLE_STATIC])dnl
201
AC_REQUIRE([AC_CANONICAL_HOST])dnl
202
AC_REQUIRE([AC_PROG_RANLIB])dnl
203
AC_REQUIRE([AC_PROG_CC])dnl
204
AC_REQUIRE([AM_PROG_LD])dnl
205
AC_REQUIRE([AM_PROG_NM])dnl
206
AC_REQUIRE([AC_PROG_LN_S])dnl
207
dnl
174
dnl
208
# Always use our own libtool.
175
dnl Check if gcc supports the given option (fails if compiler is not gcc)
209
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
176
AC_DEFUN([M_GCC_OPTION], [
210
AC_SUBST(LIBTOOL)dnl
177
   AC_REQUIRE([AC_PROG_CC])
211
178
   if test "x$GCC" = "xyes"; then
212
# Check for any special flags to pass to ltconfig.
179
      echo 'void f(){}' >conftest.c
213
libtool_flags=
180
      case "`$CC $1 -c conftest.c 2>&1`" in
214
test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
181
         '') ifelse([$2], , :, [$2]) ;;
215
test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
182
         *)  ifelse([$3], , :, [$3]) ;;
216
test "$silent" = yes && libtool_flags="$libtool_flags --silent"
183
      esac
217
test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
184
      rm -f conftest.*
218
test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
185
   else
219
186
      ifelse([$3], , :, [$3])
220
# Some flags need to be propagated to the compiler or linker for good
187
   fi
221
# libtool support.
222
case "$host" in
223
*-*-irix6*)
224
  # Find out which ABI we are using.
225
  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
226
  if AC_TRY_EVAL(ac_compile); then
227
    case "`/usr/bin/file conftest.o`" in
228
    *32-bit*)
229
      LD="${LD-ld} -32"
230
      ;;
231
    *N32*)
232
      LD="${LD-ld} -n32"
233
      ;;
234
    *64-bit*)
235
      LD="${LD-ld} -64"
236
      ;;
237
    esac
238
  fi
239
  rm -rf conftest*
240
  ;;
241
242
*-*-sco3.2v5*)
243
  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
244
  CFLAGS="$CFLAGS -belf"
245
  ;;
246
esac
247
248
# Actually configure libtool.  ac_aux_dir is where install-sh is found.
249
CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
250
LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
251
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \
252
$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
253
|| AC_MSG_ERROR([libtool configure failed])
254
])
255
256
# AM_ENABLE_SHARED - implement the --enable-shared flag
257
# Usage: AM_ENABLE_SHARED[(DEFAULT)]
258
#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
259
#   `yes'.
260
AC_DEFUN([AM_ENABLE_SHARED],
261
[define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
262
AC_ARG_ENABLE(shared,
263
changequote(<<, >>)dnl
264
<<  --enable-shared         build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT]
265
changequote([, ])dnl
266
[  --enable-shared=PKGS    only build shared libraries if the current package
267
                          appears as an element in the PKGS list],
268
[p=${PACKAGE-default}
269
case "$enableval" in
270
yes) enable_shared=yes ;;
271
no) enable_shared=no ;;
272
*)
273
  enable_shared=no
274
  # Look at the argument we got.  We use all the common list separators.
275
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
276
  for pkg in $enableval; do
277
    if test "X$pkg" = "X$p"; then
278
      enable_shared=yes
279
    fi
280
  done
281
  IFS="$ac_save_ifs"
282
  ;;
283
esac],
284
enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl
285
])
286
287
# AM_DISABLE_SHARED - set the default shared flag to --disable-shared
288
AC_DEFUN([AM_DISABLE_SHARED],
289
[AM_ENABLE_SHARED(no)])
290
291
# AM_DISABLE_STATIC - set the default static flag to --disable-static
292
AC_DEFUN([AM_DISABLE_STATIC],
293
[AM_ENABLE_STATIC(no)])
294
295
# AM_ENABLE_STATIC - implement the --enable-static flag
296
# Usage: AM_ENABLE_STATIC[(DEFAULT)]
297
#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
298
#   `yes'.
299
AC_DEFUN([AM_ENABLE_STATIC],
300
[define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
301
AC_ARG_ENABLE(static,
302
changequote(<<, >>)dnl
303
<<  --enable-static         build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT]
304
changequote([, ])dnl
305
[  --enable-static=PKGS    only build shared libraries if the current package
306
                          appears as an element in the PKGS list],
307
[p=${PACKAGE-default}
308
case "$enableval" in
309
yes) enable_static=yes ;;
310
no) enable_static=no ;;
311
*)
312
  enable_static=no
313
  # Look at the argument we got.  We use all the common list separators.
314
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
315
  for pkg in $enableval; do
316
    if test "X$pkg" = "X$p"; then
317
      enable_static=yes
318
    fi
319
  done
320
  IFS="$ac_save_ifs"
321
  ;;
322
esac],
323
enable_static=AM_ENABLE_STATIC_DEFAULT)dnl
324
])
325
326
327
# AM_PROG_LD - find the path to the GNU or non-GNU linker
328
AC_DEFUN([AM_PROG_LD],
329
[AC_ARG_WITH(gnu-ld,
330
[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
331
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
332
AC_REQUIRE([AC_PROG_CC])
333
ac_prog=ld
334
if test "$ac_cv_prog_gcc" = yes; then
335
  # Check if gcc -print-prog-name=ld gives a path.
336
  AC_MSG_CHECKING([for ld used by GCC])
337
  ac_prog=`($CC -print-prog-name=ld) 2>&5`
338
  case "$ac_prog" in
339
  # Accept absolute paths.
340
  /* | [A-Za-z]:\\*)
341
    test -z "$LD" && LD="$ac_prog"
342
    ;;
343
  "")
344
    # If it fails, then pretend we aren't using GCC.
345
    ac_prog=ld
346
    ;;
347
  *)
348
    # If it is relative, then search for the first ld in PATH.
349
    with_gnu_ld=unknown
350
    ;;
351
  esac
352
elif test "$with_gnu_ld" = yes; then
353
  AC_MSG_CHECKING([for GNU ld])
354
else
355
  AC_MSG_CHECKING([for non-GNU ld])
356
fi
357
AC_CACHE_VAL(ac_cv_path_LD,
358
[if test -z "$LD"; then
359
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
360
  for ac_dir in $PATH; do
361
    test -z "$ac_dir" && ac_dir=.
362
    if test -f "$ac_dir/$ac_prog"; then
363
      ac_cv_path_LD="$ac_dir/$ac_prog"
364
      # Check to see if the program is GNU ld.  I'd rather use --version,
365
      # but apparently some GNU ld's only accept -v.
366
      # Break only if it was the GNU/non-GNU ld that we prefer.
367
      if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
368
	test "$with_gnu_ld" != no && break
369
      else
370
        test "$with_gnu_ld" != yes && break
371
      fi
372
    fi
373
  done
374
  IFS="$ac_save_ifs"
375
else
376
  ac_cv_path_LD="$LD" # Let the user override the test with a path.
377
fi])
378
LD="$ac_cv_path_LD"
379
if test -n "$LD"; then
380
  AC_MSG_RESULT($LD)
381
else
382
  AC_MSG_RESULT(no)
383
fi
384
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
385
AC_SUBST(LD)
386
AM_PROG_LD_GNU
387
])
388
389
AC_DEFUN([AM_PROG_LD_GNU],
390
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
391
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
392
if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
393
  ac_cv_prog_gnu_ld=yes
394
else
395
  ac_cv_prog_gnu_ld=no
396
fi])
397
])
398
399
# AM_PROG_NM - find the path to a BSD-compatible name lister
400
AC_DEFUN([AM_PROG_NM],
401
[AC_MSG_CHECKING([for BSD-compatible nm])
402
AC_CACHE_VAL(ac_cv_path_NM,
403
[case "$NM" in
404
/* | [A-Za-z]:\\*)
405
  ac_cv_path_NM="$NM" # Let the user override the test with a path.
406
  ;;
407
*)
408
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
409
  for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
410
    test -z "$ac_dir" && ac_dir=.
411
    if test -f $ac_dir/nm; then
412
      # Check to see if the nm accepts a BSD-compat flag.
413
      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
414
      #   nm: unknown option "B" ignored
415
      if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
416
        ac_cv_path_NM="$ac_dir/nm -B"
417
      elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
418
        ac_cv_path_NM="$ac_dir/nm -p"
419
      else
420
        ac_cv_path_NM="$ac_dir/nm"
421
      fi
422
      break
423
    fi
424
  done
425
  IFS="$ac_save_ifs"
426
  test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
427
  ;;
428
esac])
429
NM="$ac_cv_path_NM"
430
AC_MSG_RESULT([$NM])
431
AC_SUBST(NM)
432
])
188
])
(-)mahogany-0.67/configure (-15 / +37 lines)
Lines 16-22 Link Here
16
ac_help="$ac_help
16
ac_help="$ac_help
17
  --disable-optimize      disable optimization (automatic if debugging)"
17
  --disable-optimize      disable optimization (automatic if debugging)"
18
ac_help="$ac_help
18
ac_help="$ac_help
19
  --with-wxdebug          use debug wxWindows libraries"
19
  --with-wxdebug          use debug wxWidgets libraries"
20
ac_help="$ac_help
20
ac_help="$ac_help
21
  --with-dmalloc          use dmalloc (http://dmalloc.com/) for debugging"
21
  --with-dmalloc          use dmalloc (http://dmalloc.com/) for debugging"
22
ac_help="$ac_help
22
ac_help="$ac_help
Lines 568-574 Link Here
568
fi
568
fi
569
569
570
570
571
# From configure.in Id: configure.in,v 1.316 2006/05/03 20:16:04 vadz Exp 
571
# From configure.in Id: configure.in,v 1.318 2006/08/25 15:39:12 vadz Exp 
572
572
573
rm -f conftestdata
573
rm -f conftestdata
574
if ln -s X conftestdata 2>/dev/null
574
if ln -s X conftestdata 2>/dev/null
Lines 2143-2156 Link Here
2143
			if test -f /etc/redhat-release -a ! grep "7\.0" /etc/redhat-release
2143
			if test -f /etc/redhat-release -a ! grep "7\.0" /etc/redhat-release
2144
			then workarroundmsg="
2144
			then workarroundmsg="
2145
	It seems you are using Red Hat Linux 7.0. A workaround for your
2145
	It seems you are using Red Hat Linux 7.0. A workaround for your
2146
	problem is to use egcs to compile wxWindows and Mahogany:
2146
	problem is to use egcs to compile wxWidgets and Mahogany:
2147
		- at your bash prompt type:
2147
		- at your bash prompt type:
2148
			export CC=egcs
2148
			export CC=egcs
2149
			export CXX=egcs++
2149
			export CXX=egcs++
2150
		- reconfigure and rebuild wxWindows and Mahogany
2150
		- reconfigure and rebuild wxWidgets and Mahogany
2151
		(don't forget to remove the config.cache files
2151
		(don't forget to remove the config.cache files
2152
		located in the source code directories of
2152
		located in the source code directories of
2153
		wxWindows and Mahogany before reconfiguring them."
2153
		wxWidgets and Mahogany before reconfiguring them."
2154
			else workarroundmsg=""
2154
			else workarroundmsg=""
2155
			fi
2155
			fi
2156
			{ echo "configure: error: Sorry, it seems that you have a buggy gcc version which is
2156
			{ echo "configure: error: Sorry, it seems that you have a buggy gcc version which is
Lines 4481-4493 Link Here
4481
4481
4482
if test "$wxOK" != 1; then
4482
if test "$wxOK" != 1; then
4483
   { echo "configure: error: 
4483
   { echo "configure: error: 
4484
	   Mahogany requires wxWindows to be installed on your system
4484
	   Mahogany requires wxWidgets to be installed on your system
4485
	   but wx-config script couldn't be found.
4485
	   but wx-config script couldn't be found.
4486
4486
4487
	   Please check that wx-config is in PATH, the directory
4487
	   Please check that wx-config is in PATH, the directory
4488
	   where wxWindows libraries are installed (returned by
4488
	   where wxWidgets libraries are installed (returned by
4489
	   'wx-config --libs' command) is in LD_LIBRARY_PATH or
4489
	   'wx-config --libs' command) is in LD_LIBRARY_PATH or
4490
	   equivalent variable and wxWindows version is 2.5.2 or above.
4490
	   equivalent variable and wxWidgets version is 2.5.2 or above.
4491
   " 1>&2; exit 1; }
4491
   " 1>&2; exit 1; }
4492
fi
4492
fi
4493
4493
Lines 4559-4566 Link Here
4559
fi
4559
fi
4560
4560
4561
case "$USE_THREADS" in 1)
4561
case "$USE_THREADS" in 1)
4562
	echo $ac_n "checking if wxWindows was compiled with threads""... $ac_c" 1>&6
4562
	echo $ac_n "checking if wxWidgets was compiled with threads""... $ac_c" 1>&6
4563
echo "configure:4564: checking if wxWindows was compiled with threads" >&5
4563
echo "configure:4564: checking if wxWidgets was compiled with threads" >&5
4564
if eval "test \"`echo '$''{'m_cv_wx_threads'+set}'`\" = set"; then
4564
if eval "test \"`echo '$''{'m_cv_wx_threads'+set}'`\" = set"; then
4565
  echo $ac_n "(cached) $ac_c" 1>&6
4565
  echo $ac_n "(cached) $ac_c" 1>&6
4566
else
4566
else
Lines 5324-5331 Link Here
5324
5324
5325
IMAP_CFLAGS="$CFLAGS"
5325
IMAP_CFLAGS="$CFLAGS"
5326
IMAP_CPPFLAGS="$IMAP_CPPFLAGS $CPPFLAGS"
5326
IMAP_CPPFLAGS="$IMAP_CPPFLAGS $CPPFLAGS"
5327
if test "$GCC" = "yes"; then
5327
echo $ac_n "checking whether $CC accepts -Wno-pointer-sign""... $ac_c" 1>&6
5328
            IMAP_CPPFLAGS="$IMAP_CPPFLAGS -Wno-pointer-sign"
5328
echo "configure:5329: checking whether $CC accepts -Wno-pointer-sign" >&5
5329
if eval "test \"`echo '$''{'m_cv_cc_no_warn_ptr_sign'+set}'`\" = set"; then
5330
  echo $ac_n "(cached) $ac_c" 1>&6
5331
else
5332
  
5333
   
5334
   if test "x$GCC" = "xyes"; then
5335
      echo 'void f(){}' >conftest.c
5336
      case "`$CC -Wno-pointer-sign -c conftest.c 2>&1`" in
5337
         '') m_cv_cc_no_warn_ptr_sign="yes" ;;
5338
         *)  m_cv_cc_no_warn_ptr_sign="no" ;;
5339
      esac
5340
      rm -f conftest.*
5341
   else
5342
      m_cv_cc_no_warn_ptr_sign="no"
5343
   fi
5344
5345
5346
fi
5347
5348
echo "$ac_t""$m_cv_cc_no_warn_ptr_sign" 1>&6
5349
if test $m_cv_cc_no_warn_ptr_sign = "yes"; then
5350
    IMAP_CPPFLAGS="$IMAP_CPPFLAGS -Wno-pointer-sign"
5329
fi
5351
fi
5330
5352
5331
5353
Lines 5380-5386 Link Here
5380
if test "x$DEPFLAGS" != "x"; then
5402
if test "x$DEPFLAGS" != "x"; then
5381
            if test "x$GXX" != "xyes"; then
5403
            if test "x$GXX" != "xyes"; then
5382
	echo $ac_n "checking whether ${CXX} accepts ${DEPFLAGS}""... $ac_c" 1>&6
5404
	echo $ac_n "checking whether ${CXX} accepts ${DEPFLAGS}""... $ac_c" 1>&6
5383
echo "configure:5384: checking whether ${CXX} accepts ${DEPFLAGS}" >&5
5405
echo "configure:5406: checking whether ${CXX} accepts ${DEPFLAGS}" >&5
5384
if eval "test \"`echo '$''{'m_cv_cxx_depflags'+set}'`\" = set"; then
5406
if eval "test \"`echo '$''{'m_cv_cxx_depflags'+set}'`\" = set"; then
5385
  echo $ac_n "(cached) $ac_c" 1>&6
5407
  echo $ac_n "(cached) $ac_c" 1>&6
5386
else
5408
else
Lines 5403-5409 Link Here
5403
    if test "x$DEPFLAGS" != "x"; then
5425
    if test "x$DEPFLAGS" != "x"; then
5404
	if test "x$GCC" != "xyes"; then
5426
	if test "x$GCC" != "xyes"; then
5405
	    echo $ac_n "checking whether ${CC} accepts ${DEPFLAGS}""... $ac_c" 1>&6
5427
	    echo $ac_n "checking whether ${CC} accepts ${DEPFLAGS}""... $ac_c" 1>&6
5406
echo "configure:5407: checking whether ${CC} accepts ${DEPFLAGS}" >&5
5428
echo "configure:5429: checking whether ${CC} accepts ${DEPFLAGS}" >&5
5407
if eval "test \"`echo '$''{'m_cv_c_depflags'+set}'`\" = set"; then
5429
if eval "test \"`echo '$''{'m_cv_c_depflags'+set}'`\" = set"; then
5408
  echo $ac_n "(cached) $ac_c" 1>&6
5430
  echo $ac_n "(cached) $ac_c" 1>&6
5409
else
5431
else
Lines 5958-5964 Link Here
5958
echo
5980
echo
5959
echo "Configured Mahogany ${M_VERSION_MAJOR}.${M_VERSION_MINOR}.${M_VERSION_RELEASE} for ${host}."
5981
echo "Configured Mahogany ${M_VERSION_MAJOR}.${M_VERSION_MINOR}.${M_VERSION_RELEASE} for ${host}."
5960
echo ""
5982
echo ""
5961
echo "	wxWindows port used:			${WX_NAME} ${WX_VERSION}"
5983
echo "	wxWidgets port used:			${WX_NAME} ${WX_VERSION}"
5962
echo "	Debug mode:				${debug_option}"
5984
echo "	Debug mode:				${debug_option}"
5963
echo "	SSL support:				${ssl_option}"
5985
echo "	SSL support:				${ssl_option}"
5964
echo "	Modules support:			${m_cv_USE_MODULES}"
5986
echo "	Modules support:			${m_cv_USE_MODULES}"
(-)mahogany-0.67/configure.in (-4 / +10 lines)
Lines 1-7 Link Here
1
dnl Process this file with autoconf to produce a configure script.
1
dnl Process this file with autoconf to produce a configure script.
2
2
3
AC_INIT(configure.in)
3
AC_INIT(configure.in)
4
AC_REVISION([$Id: configure.in,v 1.317 2006/07/31 00:32:44 nerijus Exp $])
4
AC_REVISION([$Id: configure.in,v 1.319 2006/08/31 23:58:25 vadz Exp $])
5
5
6
rm -f conftestdata
6
rm -f conftestdata
7
if ln -s X conftestdata 2>/dev/null
7
if ln -s X conftestdata 2>/dev/null
Lines 1293-1301 Link Here
1293
dnl imap
1293
dnl imap
1294
IMAP_CFLAGS="$CFLAGS"
1294
IMAP_CFLAGS="$CFLAGS"
1295
IMAP_CPPFLAGS="$IMAP_CPPFLAGS $CPPFLAGS"
1295
IMAP_CPPFLAGS="$IMAP_CPPFLAGS $CPPFLAGS"
1296
if test "$GCC" = "yes"; then
1296
dnl there are too many warnings in c-client sources which its author
1297
    dnl there are too many warnings in c-client sources which its author
1297
dnl refuses to fix, suppress them when using gcc4
1298
    dnl refuses to fix, suppress them when using gcc
1298
AC_CACHE_CHECK([whether $CC accepts -Wno-pointer-sign],
1299
    m_cv_cc_no_warn_ptr_sign,
1300
    [M_GCC_OPTION(-Wno-pointer-sign,
1301
	m_cv_cc_no_warn_ptr_sign="yes",
1302
	m_cv_cc_no_warn_ptr_sign="no")]
1303
)
1304
if test $m_cv_cc_no_warn_ptr_sign = "yes"; then
1299
    IMAP_CPPFLAGS="$IMAP_CPPFLAGS -Wno-pointer-sign"
1305
    IMAP_CPPFLAGS="$IMAP_CPPFLAGS -Wno-pointer-sign"
1300
fi
1306
fi
1301
AC_SUBST(IMAP_CPPFLAGS)
1307
AC_SUBST(IMAP_CPPFLAGS)
(-)mahogany-0.67/doc/HtmlHlp/Manual.html (-5651 lines)
Lines 1-5651 Link Here
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
3
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
4
original version by:  Nikos Drakos, CBLU, University of Leeds
5
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6
* with significant contributions from:
7
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8
<HTML>
9
<HEAD>
10
<TITLE>Mahogany User Manual
11
Version 0.67 ``Constance''</TITLE>
12
<META NAME="description" CONTENT="Mahogany User Manual
13
Version 0.67 ``Constance''">
14
<META NAME="keywords" CONTENT="Manual">
15
<META NAME="resource-type" CONTENT="document">
16
<META NAME="distribution" CONTENT="global">
17
18
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
19
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
20
21
<LINK REL="STYLESHEET" HREF="Manual.css">
22
23
</HEAD>
24
25
<BODY >
26
27
<P>
28
29
30
31
32
<P>
33
34
<P>
35
<H1 ALIGN="CENTER"><BIG CLASS="XXLARGE"><SPAN  CLASS="textsl">Mahogany User Manual</SPAN></BIG>
36
<BR><BIG CLASS="XLARGE">Version 0.67 ``Constance''</BIG></H1>
37
<DIV CLASS="author_info">
38
39
<P ALIGN="CENTER"><STRONG>Copyright 1997-2006 by The Mahogany Development Team</STRONG></P>
40
</DIV>
41
42
<P>
43
<BR>
44
45
<H2><A NAME="SECTION00100000000000000000">
46
Contents</A>
47
</H2>
48
<!--Table of Contents-->
49
50
<UL CLASS="TofC">
51
<LI><A NAME="tex2html174"
52
  HREF="Manual.html#SECTION00200000000000000000">Using Mahogany </A>
53
<UL>
54
<LI><A NAME="tex2html175"
55
  HREF="Manual.html#SECTION00210000000000000000">Release Notes</A>
56
<UL>
57
<LI><A NAME="tex2html176"
58
  HREF="Manual.html#SECTION00211000000000000000">Changes against the previous versions</A>
59
<LI><A NAME="tex2html177"
60
  HREF="Manual.html#SECTION00212000000000000000">Known bugs</A>
61
<LI><A NAME="tex2html178"
62
  HREF="Manual.html#SECTION00213000000000000000">TODO, features to implement</A>
63
<LI><A NAME="tex2html179"
64
  HREF="Manual.html#SECTION00214000000000000000">Help Needed</A>
65
<LI><A NAME="tex2html180"
66
  HREF="Manual.html#SECTION00215000000000000000">Copyright</A>
67
<LI><A NAME="tex2html181"
68
  HREF="Manual.html#SECTION00216000000000000000">The Mahogany ``Artistic License''</A>
69
<LI><A NAME="tex2html182"
70
  HREF="Manual.html#SECTION00217000000000000000">The License Dialog</A>
71
<LI><A NAME="tex2html183"
72
  HREF="Manual.html#SECTION00218000000000000000">Additional Credits</A>
73
</UL>
74
<LI><A NAME="tex2html184"
75
  HREF="Manual.html#SECTION00220000000000000000">Introduction / Tutorial</A>
76
<UL>
77
<LI><A NAME="tex2html185"
78
  HREF="Manual.html#SECTION00221000000000000000">Getting started</A>
79
<LI><A NAME="tex2html186"
80
  HREF="Manual.html#SECTION00222000000000000000">The main window</A>
81
<LI><A NAME="tex2html187"
82
  HREF="Manual.html#SECTION00223000000000000000">How to configure POP and IMAP folders?</A>
83
<LI><A NAME="tex2html188"
84
  HREF="Manual.html#SECTION00224000000000000000">How to set up your mail accounts</A>
85
</UL>
86
<LI><A NAME="tex2html189"
87
  HREF="Manual.html#SECTION00230000000000000000">Setting up Mahogany, its configuration files</A>
88
<UL>
89
<LI><A NAME="tex2html190"
90
  HREF="Manual.html#SECTION00231000000000000000">Mahogany command line options</A>
91
<LI><A NAME="tex2html191"
92
  HREF="Manual.html#SECTION00232000000000000000">User configuration files (Unix only)</A>
93
<LI><A NAME="tex2html192"
94
  HREF="Manual.html#SECTION00233000000000000000">Registry (Windows only)</A>
95
<LI><A NAME="tex2html193"
96
  HREF="Manual.html#SECTION00234000000000000000">Using multiple configuration sources</A>
97
</UL>
98
<LI><A NAME="tex2html194"
99
  HREF="Manual.html#SECTION00240000000000000000">The User Interface</A>
100
<UL>
101
<LI><A NAME="tex2html195"
102
  HREF="Manual.html#SECTION00241000000000000000">The Main Window</A>
103
<LI><A NAME="tex2html196"
104
  HREF="Manual.html#SECTION00242000000000000000">The Folder Tree</A>
105
<LI><A NAME="tex2html197"
106
  HREF="Manual.html#SECTION00243000000000000000">Create New Folder Dialog</A>
107
<LI><A NAME="tex2html198"
108
  HREF="Manual.html#SECTION00244000000000000000">Folder Views</A>
109
<LI><A NAME="tex2html199"
110
  HREF="Manual.html#SECTION00245000000000000000">Migrating from another mail client</A>
111
</UL>
112
<LI><A NAME="tex2html200"
113
  HREF="Manual.html#SECTION00250000000000000000">Reading Mail</A>
114
<UL>
115
<LI><A NAME="tex2html201"
116
  HREF="Manual.html#SECTION00251000000000000000">The INBOX Folder</A>
117
<LI><A NAME="tex2html202"
118
  HREF="Manual.html#SECTION00252000000000000000">The ``New Mail'' Folder</A>
119
<LI><A NAME="tex2html203"
120
  HREF="Manual.html#SECTION00253000000000000000">Other Folders</A>
121
<LI><A NAME="tex2html204"
122
  HREF="Manual.html#SECTION00254000000000000000">Accessing Mail Remotely</A>
123
<LI><A NAME="tex2html205"
124
  HREF="Manual.html#SECTION00255000000000000000">Searching for Messages</A>
125
<LI><A NAME="tex2html206"
126
  HREF="Manual.html#SECTION00256000000000000000">Filters</A>
127
<LI><A NAME="tex2html207"
128
  HREF="Manual.html#SECTION00257000000000000000">Spam filtering</A>
129
</UL>
130
<LI><A NAME="tex2html208"
131
  HREF="Manual.html#SECTION00260000000000000000">Sending Mail</A>
132
<UL>
133
<LI><A NAME="tex2html209"
134
  HREF="Manual.html#SECTION00261000000000000000">To: CC: and BCC: Settings</A>
135
<LI><A NAME="tex2html210"
136
  HREF="Manual.html#SECTION00262000000000000000">Key Bindings in the Message Editor</A>
137
<LI><A NAME="tex2html211"
138
  HREF="Manual.html#SECTION00263000000000000000">Using the address book</A>
139
<LI><A NAME="tex2html212"
140
  HREF="Manual.html#SECTION00264000000000000000">The Mail Composition Window</A>
141
<LI><A NAME="tex2html213"
142
  HREF="Manual.html#SECTION00265000000000000000">The News Article Composition Window</A>
143
</UL>
144
<LI><A NAME="tex2html214"
145
  HREF="Manual.html#SECTION00270000000000000000">Message Templates</A>
146
<UL>
147
<LI><A NAME="tex2html215"
148
  HREF="Manual.html#SECTION00271000000000000000">What are they?</A>
149
<LI><A NAME="tex2html216"
150
  HREF="Manual.html#SECTION00272000000000000000">Templates syntax</A>
151
<LI><A NAME="tex2html217"
152
  HREF="Manual.html#SECTION00273000000000000000">Template variables</A>
153
</UL>
154
<LI><A NAME="tex2html218"
155
  HREF="Manual.html#SECTION00280000000000000000">Understanding program options</A>
156
<UL>
157
<LI><A NAME="tex2html219"
158
  HREF="Manual.html#SECTION00281000000000000000">Hierarchical options organization</A>
159
<LI><A NAME="tex2html220"
160
  HREF="Manual.html#SECTION00282000000000000000">Automatically remembered options</A>
161
<LI><A NAME="tex2html221"
162
  HREF="Manual.html#SECTION00283000000000000000">Other options</A>
163
<LI><A NAME="tex2html222"
164
  HREF="Manual.html#SECTION00284000000000000000">Remote configuration synchronisation</A>
165
<LI><A NAME="tex2html223"
166
  HREF="Manual.html#SECTION00285000000000000000">Some Other Dialogs You May Encounter</A>
167
<LI><A NAME="tex2html224"
168
  HREF="Manual.html#SECTION00286000000000000000">Mahogany Plugin Modules</A>
169
</UL>
170
<LI><A NAME="tex2html225"
171
  HREF="Manual.html#SECTION00290000000000000000">The Address Database</A>
172
<UL>
173
<LI><A NAME="tex2html226"
174
  HREF="Manual.html#SECTION00291000000000000000">The native Address Book </A>
175
<LI><A NAME="tex2html227"
176
  HREF="Manual.html#SECTION00292000000000000000">The Address Book Editor</A>
177
<LI><A NAME="tex2html228"
178
  HREF="Manual.html#SECTION00293000000000000000">Support for BBDB Address Books</A>
179
<LI><A NAME="tex2html229"
180
  HREF="Manual.html#SECTION00294000000000000000">One Address per Line File Address Books</A>
181
<LI><A NAME="tex2html230"
182
  HREF="Manual.html#SECTION00295000000000000000">Support for Palm Address Books</A>
183
</UL>
184
</UL>
185
<BR>
186
<LI><A NAME="tex2html231"
187
  HREF="Manual.html#SECTION00300000000000000000">Scripting and Extending Mahogany</A>
188
<UL>
189
<LI><A NAME="tex2html232"
190
  HREF="Manual.html#SECTION00310000000000000000">Python Scripting</A>
191
<UL>
192
<LI><A NAME="tex2html233"
193
  HREF="Manual.html#SECTION00311000000000000000">Introduction</A>
194
<LI><A NAME="tex2html234"
195
  HREF="Manual.html#SECTION00312000000000000000">Initialisation </A>
196
<LI><A NAME="tex2html235"
197
  HREF="Manual.html#SECTION00313000000000000000">Using Python with Filters</A>
198
<LI><A NAME="tex2html236"
199
  HREF="Manual.html#SECTION00314000000000000000">Callback Functions (Hooks)</A>
200
<LI><A NAME="tex2html237"
201
  HREF="Manual.html#SECTION00315000000000000000">Namespaces</A>
202
<LI><A NAME="tex2html238"
203
  HREF="Manual.html#SECTION00316000000000000000">List of Callbacks</A>
204
<LI><A NAME="tex2html239"
205
  HREF="Manual.html#SECTION00317000000000000000">Supported Classes</A>
206
</UL>
207
<LI><A NAME="tex2html240"
208
  HREF="Manual.html#SECTION00320000000000000000">Plugins</A>
209
<UL>
210
<LI><A NAME="tex2html241"
211
  HREF="Manual.html#SECTION00321000000000000000">Introduction</A>
212
<LI><A NAME="tex2html242"
213
  HREF="Manual.html#SECTION00322000000000000000">The Filters Module</A>
214
<LI><A NAME="tex2html243"
215
  HREF="Manual.html#SECTION00323000000000000000">The PalmOS Module</A>
216
</UL>
217
</UL>
218
<BR>
219
<LI><A NAME="tex2html244"
220
  HREF="Manual.html#SECTION00400000000000000000">Getting Help and Support</A>
221
<UL>
222
<LI><A NAME="tex2html245"
223
  HREF="Manual.html#SECTION00410000000000000000">Troubleshooting</A>
224
<LI><A NAME="tex2html246"
225
  HREF="Manual.html#SECTION00420000000000000000">WWW Support</A>
226
<LI><A NAME="tex2html247"
227
  HREF="Manual.html#SECTION00430000000000000000">Mailing Lists</A>
228
</UL>
229
<BR>
230
<LI><A NAME="tex2html248"
231
  HREF="Manual.html#SECTION00500000000000000000">Advanced Usage</A>
232
<UL>
233
<LI><A NAME="tex2html249"
234
  HREF="Manual.html#SECTION00510000000000000000">Compiling Mahogany from source</A>
235
<LI><A NAME="tex2html250"
236
  HREF="Manual.html#SECTION00520000000000000000">Using Mahogany more efficiently</A>
237
<UL>
238
<LI><A NAME="tex2html251"
239
  HREF="Manual.html#SECTION00521000000000000000">Speeding up Mahogany startup</A>
240
<LI><A NAME="tex2html252"
241
  HREF="Manual.html#SECTION00522000000000000000">Limiting Amount of Data Transferred</A>
242
</UL>
243
</UL>
244
<BR>
245
<LI><A NAME="tex2html253"
246
  HREF="Manual.html#SECTION00600000000000000000">FAQ - Frequently Asked Questions</A>
247
<UL>
248
<LI><A NAME="tex2html254"
249
  HREF="Manual.html#SECTION00610000000000000000">Installation Problems</A>
250
<UL>
251
<LI><A NAME="tex2html255"
252
  HREF="Manual.html#SECTION00611000000000000000">All Mahogany icons show a question mark</A>
253
<LI><A NAME="tex2html256"
254
  HREF="Manual.html#SECTION00612000000000000000">How do I unpack the compressed files?</A>
255
<LI><A NAME="tex2html257"
256
  HREF="Manual.html#SECTION00613000000000000000">Compiling aborts with errors</A>
257
<LI><A NAME="tex2html258"
258
  HREF="Manual.html#SECTION00614000000000000000">Mahogany fails to find wxWidgets, configure fails</A>
259
<LI><A NAME="tex2html259"
260
  HREF="Manual.html#SECTION00615000000000000000">SSL does not work</A>
261
</UL>
262
<LI><A NAME="tex2html260"
263
  HREF="Manual.html#SECTION00620000000000000000">Other Problems / Questions</A>
264
<UL>
265
<LI><A NAME="tex2html261"
266
  HREF="Manual.html#SECTION00621000000000000000">The Preferences Dialog does not show up properly</A>
267
<LI><A NAME="tex2html262"
268
  HREF="Manual.html#SECTION00622000000000000000">How to use Mahogany with fetchmail/procmail?</A>
269
<LI><A NAME="tex2html263"
270
  HREF="Manual.html#SECTION00623000000000000000">Does Mahogany have group aliases?</A>
271
<LI><A NAME="tex2html264"
272
  HREF="Manual.html#SECTION00624000000000000000">How can I set up POP3/IMAP access?</A>
273
<LI><A NAME="tex2html265"
274
  HREF="Manual.html#SECTION00625000000000000000">How can I set up IMAP access?</A>
275
<LI><A NAME="tex2html266"
276
  HREF="Manual.html#SECTION00626000000000000000">Can I have multiple POP3 or IMAP accounts?</A>
277
<LI><A NAME="tex2html267"
278
  HREF="Manual.html#SECTION00627000000000000000">Can I have multiple identities?</A>
279
<LI><A NAME="tex2html268"
280
  HREF="Manual.html#SECTION00628000000000000000">Can I run Mahogany as root?</A>
281
<LI><A NAME="tex2html269"
282
  HREF="Manual.html#SECTION00629000000000000000">How can I set which language to use?</A>
283
<LI><A NAME="tex2html270"
284
  HREF="Manual.html#SECTION006210000000000000000">How can I delete messages?</A>
285
<LI><A NAME="tex2html271"
286
  HREF="Manual.html#SECTION006211000000000000000">How can I forward a message with attachments?</A>
287
<LI><A NAME="tex2html272"
288
  HREF="Manual.html#SECTION006212000000000000000">How can I customize the position of folders in the tree?</A>
289
<LI><A NAME="tex2html273"
290
  HREF="Manual.html#SECTION006213000000000000000">How can I ``leave messages on server'' (POP3)?</A>
291
<LI><A NAME="tex2html274"
292
  HREF="Manual.html#SECTION006214000000000000000">Can I have ``subfolders'' of File type (mbox) folders?</A>
293
<LI><A NAME="tex2html275"
294
  HREF="Manual.html#SECTION006215000000000000000">Can I ``Follow-up'' to the message?</A>
295
</UL></UL></UL>
296
<!--End of Table of Contents-->
297
298
<P>
299
300
<H1><A NAME="SECTION00200000000000000000">
301
Using Mahogany </A>
302
</H1>
303
304
<P>
305
306
<H1><A NAME="SECTION00210000000000000000">
307
Release Notes</A>
308
</H1>
309
310
<P>
311
Welcome to the new Mahogany release! If you haven't installed the
312
program yet, you probably want to start by doing it. Please check
313
if we don't have prebuilt binaries for your platform (currently we
314
only provide binaries for Linux and Win32). If not, you'll have to
315
build it from the sources: please refer to the README file for the
316
compilation instructions. Mahogany should generally work on any modern
317
Unix flavour but, of course, you can always contact us if you have
318
any problems with building it.
319
320
<P>
321
322
<H2><A NAME="SECTION00211000000000000000">
323
Changes against the previous versions</A>
324
</H2>
325
326
<P>
327
All sections here except the first one present only historical interest, please
328
skip them unless you're updating from a very old version of Mahogany.
329
330
<P>
331
332
<H3><A NAME="SECTION00211100000000000000">
333
0.67 against 0.66</A>
334
</H3>
335
336
<P>
337
338
<UL>
339
<LI>New integrated statistical spam filter (DSPAM)
340
</LI>
341
<LI>Better support for sharing preferences between multiple installations
342
         (see <A HREF="#multiconfigsources"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
343
</LI>
344
<LI>Folders can now be dragged in the folder tree to reorder them. It is
345
         also possible to drag and drop messages and files from the file
346
         manager to the composer window to attach them.
347
</LI>
348
<LI>Mahogany can now select the viewer best suited for the contents of the
349
         current message, e.g. you can use text viewer by default but the
350
         program can be configured to switch to a graphical one for the
351
         messages with embedded images. It also now displays correctly messages
352
         with embedded images.
353
</LI>
354
<LI>New <TT>-import</TT> command line option to simplify sharing
355
         of Mahogany options between different installations
356
</LI>
357
<LI>Options with non default values are now highlighted in the
358
         preferences dialog (see <A HREF="#optionshighlight"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
359
</LI>
360
<LI>New <TT>nop()</TT> (stop filter processing) filter action added
361
</LI>
362
<LI>The "Set From from To" option (<A HREF="#IdentityPage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) is more useful
363
</LI>
364
<LI>When replying to PGP-encrypted messages, clear text is used for
365
         replies and not the original message.
366
</LI>
367
<LI>New ``Where is filter'' command (<A HREF="#filterdialogs"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
368
</LI>
369
<LI>Mahogany will warn you if you start replying to the same message a
370
         second time now.
371
</LI>
372
<LI>Detect forgotten attachments before sending the message.
373
</LI>
374
</UL>
375
376
<P>
377
By far the main new feature in this version is the integration of DSPAM
378
According to http://www.nuclearelephant.com/projects/dspam/:
379
380
<P>
381
<BLOCKQUOTE>
382
DSPAM (as in De-Spam) is an extremely scalable, open-source statistical
383
anti-spam filter. While most commercial solutions only provide a mere 95%
384
accuracy (1 error in 20), a majority of DSPAM users frequently see between
385
99.95% (1 error in 2000) all the way up to 99.991% (2 errors in 22,786).
386
387
</BLOCKQUOTE>
388
389
<P>
390
Please see <A HREF="#DSPAM"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> section for the description of how to configure and use
391
DSPAM.
392
393
<P>
394
395
<H3><A NAME="SECTION00211200000000000000">
396
0.66 against 0.65</A>
397
</H3>
398
399
<P>
400
The most noticeable new feature is the new composer. Unfortunately, it is less
401
powerful than the old one as the new one is text-only and not rich text but it
402
is also significantly less buggy and simpler to use. Another big internal
403
change is that the built in Python interpreter now works again and you can use
404
it to write filter functions and do other nifty things (see section
405
<A HREF="#python"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>). Finally, we now have a working version for Mac OS X.
406
407
<P>
408
Other than that, the focus of the new release is yet again more bug fixing
409
than adding new features. As usual, some of them were still added:
410
411
<UL>
412
<LI>Quick search commands in the folder view (see <A HREF="#keybindings"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> and
413
      <A HREF="#searching"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
414
</LI>
415
<LI>Text viewer now supports printing
416
</LI>
417
<LI>Support for <TT>X-Attribution</TT> header
418
</LI>
419
<LI>Better support for UTF-7/8 encoded headers
420
</LI>
421
<LI>``Paste quoted'' command added
422
</LI>
423
<LI>New command to select all text in the viewer added
424
</LI>
425
<LI>New command to toggle the ``answered'' message flag added
426
</LI>
427
<LI>New <TT>-userdir</TT> command line option
428
</LI>
429
<LI><TT>isfromme()</TT> (was message sent by myself?) filter test added
430
</LI>
431
</UL>
432
433
<P>
434
435
<H3><A NAME="SECTION00211300000000000000">
436
0.65 against 0.64</A>
437
</H3>
438
439
<P>
440
First of all, too many bugs to be mentioned here were fixed. During more than a
441
year since the last release we mainly concentrated on making Mahogany more
442
stable and faster (or at least less slow) rather than on adding new features.
443
444
<P>
445
Yet, inevitably, some of them still crept in and here is an incomplete list:
446
447
<UL>
448
<LI>It is now possible to postpone messages being composed and later resume
449
      writing them by opening them in ``Drafts'' folder
450
</LI>
451
<LI>Mahogany tries to save messages being composed in case of crash or
452
      interrupt
453
</LI>
454
<LI>TLS (as in STARTTLS) is now supported for all protocols (SMTP,
455
      IMAP and POP)
456
</LI>
457
<LI>Preliminary and limited support for PGP added: GNU Privacy Guard
458
      may be used for decoding the PGP-encoded message and checking PGP
459
      signatures.
460
</LI>
461
<LI>Message viewer now recognizes <TT>*bold*</TT> and <TT>_italic_</TT> markup,
462
      can decode messages encoded in ROT13 and highlights signatures in a
463
      different colour. More URLs are found and highlighted and detecting them
464
      is much faster now.
465
</LI>
466
<LI>SMTP authentication now can be tweaked to work even with seriously
467
      broken servers such as qmail and exim 3
468
</LI>
469
<LI>Mahogany now comes with many built-in spam tests which can be tweaked
470
      to be more or less strict. It isn't comparable to Spam Assasin yet, but
471
      it is better than nothing.
472
</LI>
473
<LI>Composer interface has been changed, hopefully for the better, once again
474
</LI>
475
<LI>It is now possible to control a remote instance of Mahogany using the
476
      command line arguments (see <A HREF="#cmdlineargs"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) and also to directly open
477
      the composer from the command line.
478
</LI>
479
<LI>``Bounce'' (also known as ``Redirect'') command was added as well as
480
      ``Resend message'' one.
481
</LI>
482
<LI>Search results are now shown in a so called virtual folder which makes
483
      working with them much more convenient and it is now also possible to
484
      search in many folders at once.
485
</LI>
486
<LI>More new commands in no special order: ``Move folder'', ``Follow up to
487
      newsgroup'', ``Go to message'' (by number), ``Preview'' in composer
488
</LI>
489
<LI>Message viewer supports UTF-7 and UTF-8.
490
</LI>
491
<LI>Raw text view dialog now has a find button.
492
</LI>
493
<LI>It is now possible to use config files instead of the registry under
494
      Windows too.
495
</LI>
496
</UL>
497
498
<P>
499
Finally not really a new feature but an important achievement in our struggle
500
for world domination: Mahogany now runs under Mac OS X as well! Note that
501
Mahogany is a real native (Carbon) application and doesn't require GTK+ or X11.
502
503
<P>
504
505
<H3><A NAME="SECTION00211400000000000000">
506
0.64 against 0.63</A>
507
</H3>
508
509
<P>
510
This time the most important changes have happened to the already
511
existing features many of which were dramatically improved. Support
512
for both IMAP4 and POP3 has got better, many UI improvements were done
513
and too many bugs to mention here were fixed.
514
515
<P>
516
The main change without doubt is the complete reorganisation of the
517
program internals which now allows us to only download the headers
518
shown on the screen from server instead of getting all of them. This
519
means that the time needed to open a folder is now almost independent
520
of the folder size and Mahogany can be used without troubles with
521
folders containing <SPAN CLASS="MATH"><IMG
522
 WIDTH="51" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
523
 SRC="img1.png"
524
 ALT="$50000$"></SPAN> messages (and maybe more - but this wasn't
525
tested yet).
526
527
<P>
528
But what would be a new release without some new features? So here
529
they are:
530
531
<P>
532
533
<UL>
534
<LI>Added optional support for viewing and printing the HTML messages.
535
Also added an optional text-only viewer and a viewer bar to quickly
536
change the current viewer.
537
</LI>
538
<LI>Added possibility to monitor a folder (or server) in the background
539
just updading the number of messages in it but without actually downloading
540
them.
541
</LI>
542
<LI>IMAP server-side sorting and threading can now be used if available.
543
It is also possible to sort and thread messages simultaneously. Both
544
are now also done much more efficiently and more correctly.
545
</LI>
546
<LI>Mahogany now remembers the flags for the POP3 servers and new mail
547
detection for them works much more reliably which now makes Mahogany
548
a much better POP3 client (provided your server supports UIDL POP
549
command). POP3 code also tries to be faster by optionally using TOP
550
instead of downloading the entire messages.
551
</LI>
552
<LI>Support for List-Post header and the possibility to configure the
553
program to automatically reply to the mailing list only.
554
</LI>
555
<LI>Added rename and copy buttons to the filter editing dialog.
556
</LI>
557
<LI>Added &#34;Open as readonly&#34; command - this can be significantly
558
faster than &#34;Open&#34; for the local folders and also
559
works for the read only files.
560
</LI>
561
<LI>Added a command to permanently delete messages instead of moving them
562
to the Trash folder - useful for dealing with spam.
563
</LI>
564
<LI>Filters were sped up even more. They also show a nicer progress dialog
565
now.
566
</LI>
567
<LI>Added commands to manually update the status of one or all folders.
568
</LI>
569
<LI>Also added commands to mark messages as read or unread.
570
</LI>
571
</UL>
572
Some of the notable UI improvements are:
573
574
<P>
575
576
<UL>
577
<LI>Quoting the original text when replying is now optional, you can also
578
choose to include only the text selected in the viewer in the reply.
579
</LI>
580
<LI>Progress dialogs are shown while Mahogany is performing some long
581
operations. The existing progress dialogs shown while retrieving the
582
message headers now show the details of the messages being retrieved.
583
</LI>
584
<LI>Password handling in case they are not stored in the config file has
585
been improved - Mahogany can now remember them for this session only
586
instead of keeping prompting for them.
587
</LI>
588
<LI>Clicking on the header in the folder view window gives fast access
589
to the sorting/threading menu with many useful items.
590
</LI>
591
<LI>Scrolling beyond the end of the current messages (optionally) selects
592
the next unread message or folder.
593
</LI>
594
<LI>It is possible to rename the folder in the tree and the underlying
595
folder file or mailbox independently of each other.
596
</LI>
597
</UL>
598
The Win32 version has now some more of the possibilities of the Unix
599
one:
600
601
<P>
602
603
<UL>
604
<LI>SSL support is now available under Windows.
605
</LI>
606
<LI>Mahogany can play a sound on receiving a new mail (optionally, of
607
course).
608
</LI>
609
</UL>
610
611
<P>
612
613
<H3><A NAME="SECTION00211500000000000000">
614
0.63 against 0.62</A>
615
</H3>
616
617
<P>
618
Again, most of the effort went into optimizing the program for speed.
619
Filtering and moving mail messages on IMAP servers is now an order
620
of magnitude faster and startup time has been reduced too (especially
621
under Windows). Several fatal bugs which had unfortunately crept into
622
Win32 release were fixed as well.
623
624
<P>
625
The new features this time include
626
627
<P>
628
629
<UL>
630
<LI>Showing the total number and the number of unread messages directly
631
in the folder tree
632
</LI>
633
<LI>New so-called unattended, or away, mode in which all new mail notifications
634
and any interactive dialogs are temporarily suppressed
635
</LI>
636
<LI>A few new commands such as &#34;Clear folder&#34; to delete
637
all messages in a folder without even opening it (handy for emptying
638
the trash folder) and &#34;Close&#34; and &#34;Close
639
all&#34; folder(s).
640
</LI>
641
</UL>
642
There are several more minor improvements as well:
643
644
<P>
645
646
<UL>
647
<LI>New URL popup menu in the message viewer and &#34;Open URL in
648
new browser window&#34; option
649
</LI>
650
<LI>``Open with...'' command in attachment context menu
651
</LI>
652
<LI>A new option to automatically select the units for message size (KB/MB)
653
</LI>
654
<LI>Python 2.x is now supported and not only 1.5 (Unix)
655
</LI>
656
</UL>
657
Some of non fatal but annoying bugs fixed in this release are:
658
659
<P>
660
661
<UL>
662
<LI>Fixed server side searching (IMAP only)
663
</LI>
664
<LI>Fixed text highlighting when selecting text in the viewer
665
</LI>
666
<LI>Renaming of the folders in the tree fixed once again
667
</LI>
668
</UL>
669
670
<P>
671
672
<H3><A NAME="SECTION00211600000000000000">
673
0.62 against 0.61</A>
674
</H3>
675
676
<P>
677
The main changes in this release concern the Mahogany internals: the
678
stability and efficiency have been both greatly improved, in particular
679
it is believed that all fatal crashes using IMAP servers are now gone.
680
Deleting, expunging and changing the status of the messages is now
681
much faster, especially for the folders with a lot of messages. Of
682
course, there are also several new features:
683
684
<P>
685
686
<UL>
687
<LI>Order of the folders in the folder tree is customizable, the system
688
folders appear at the top (and not scattered through the tree in alphabetical
689
order)
690
</LI>
691
<LI>Support for flagging the messages was added, the folders containing
692
flagged messages are shown in a different colour in the folder tree
693
</LI>
694
<LI>All folders opened the last time can be remembered and reopened during
695
the next run
696
</LI>
697
<LI><TT>TEXT/PLAIN</TT> attachments can now be optionally shown inline
698
</LI>
699
<LI>hard limit on number of retrieved messages was added (see <A HREF="#limitdatatransfer"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
700
</LI>
701
</UL>
702
Many bugs have been fixed:
703
704
<P>
705
706
<UL>
707
<LI>sending mail with local MTA (sendmail) respects BCC settings
708
</LI>
709
<LI>temporary files with mail messages are not created world readable
710
any more
711
</LI>
712
<LI>language autodetection fixed
713
</LI>
714
<LI>messages with embedded MIME attachments are shown correctly
715
</LI>
716
<LI>server side searching on IMAP servers works
717
</LI>
718
<LI>renaming folders was fixed
719
</LI>
720
<LI>crashes when: viewing messages with incorrect date, deleting some
721
folders and some others were fixed
722
</LI>
723
</UL>
724
And a few improvements too:
725
726
<P>
727
728
<UL>
729
<LI>better UI for the filters dialogs
730
</LI>
731
<LI>messages can now also be sorted by status and by size
732
</LI>
733
<LI>a hard limit on number of the messages retrieved can be set
734
</LI>
735
</UL>
736
737
<P>
738
739
<H3><A NAME="SECTION00211700000000000000">
740
0.61 against 0.60 </A>
741
</H3>
742
743
<P>
744
Note: the version 0.61 wasn't officially released
745
746
<P>
747
A couple of new features, most importantly:
748
749
<P>
750
751
<UL>
752
<LI>Possibility to save (to the address book) all addresses from a message
753
appearinganywhere in the headers.
754
</LI>
755
<LI>It is now possible to import all folder files in MBOX (Unix) format
756
using <TT>"Folder|Import folder tree..."</TT> command (see <A HREF="#Import"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
757
</LI>
758
</UL>
759
760
<P>
761
762
<H3><A NAME="SECTION00211800000000000000">
763
0.60 against 0.50</A>
764
</H3>
765
766
<P>
767
Most importantly, all known major bugs in 0.5 have been fixed in this
768
release. We still have some minor buglets and lots of wishes and enhancements
769
on our list, but all serious bugs should be gone now. A couple of
770
new features have been added:
771
772
<P>
773
774
<UL>
775
<LI>fixes to all serious bugs from version 0.50
776
</LI>
777
<LI>significantly improved IMAP support: it is now possible to subscribe
778
to all folders on an IMAP server with a single click or to manually
779
select them from a dialog; Mahogany also uses server side message
780
functions when possible resulting in huge performance improvement
781
</LI>
782
<LI>new, improved filtering system (warning: old filters won't work any
783
more, contact us if this is really a serious problem for you)
784
</LI>
785
<LI>charset and encoding support for message contents and headers (including
786
autodetecting the charset of incoming messages and setting it for
787
the outgoing ones)
788
</LI>
789
<LI>mail can be sent using local MTA (sendmail) in addition to SMTP
790
</LI>
791
<LI>import of settings and folder collections from Pine and XFMail, vCard
792
support (import/export from addess book, attach to messages)
793
</LI>
794
<LI>drag and drop for message copying and moving - &#34;Quick Move&#34;
795
and &#34;Quick Filter&#34; functions
796
</LI>
797
<LI>folders now can (finally) be renamed
798
</LI>
799
<LI>quoted text highlighting in the message viewer!
800
</LI>
801
<LI>sort the messages display by simply clicking on the corresponding
802
column, the sorting dialog also has been improved
803
</LI>
804
<LI>folders with new/recent messages are highlighted in the folder tree
805
</LI>
806
<LI>it is possible (although still discouraged) to run Mahogany as root
807
</LI>
808
<LI>passwords in the config file are encrypted using TwoFish algorithm
809
</LI>
810
<LI>option to always use external editor by default
811
</LI>
812
<LI>messages from oneself are optionally marked as such
813
</LI>
814
<LI>support for password protected SMTP and NNTP servers
815
</LI>
816
<LI>more verbose error reporting and detection
817
</LI>
818
<LI>OpenSSL loaded dynamically if available
819
</LI>
820
<LI>PalmOS module supports AvantGo/MAL synchronisation
821
</LI>
822
<LI>templates now may be used for replying/forwarding as well
823
</LI>
824
<LI>many other various fixes
825
</LI>
826
</UL>
827
<SPAN  CLASS="textbf">New experimental features include:</SPAN>
828
829
<P>
830
831
<UL>
832
<LI>supporting multiple-identities and easy switching between them
833
</LI>
834
<LI>support of storing configuration settings on an IMAP server allowing
835
to share them between different machines/accounts
836
</LI>
837
</UL>
838
<SPAN  CLASS="textbf">Known bugs:</SPAN>
839
840
<P>
841
842
<UL>
843
<LI>There are always some, listed on our bugtracker at http://mahogany.sourceforge.net/bugz/
844
and we are working on them.
845
</LI>
846
<LI>Version 0.60 suffers from a minor printing bug leading to some overlap
847
between strings sometimes, which is due to a bug in wxWidgets which
848
will hopefully be fixed fairly soon.
849
</LI>
850
</UL>
851
852
<P>
853
854
<H3><A NAME="SECTION00211900000000000000">
855
0.5 against 0.23a</A>
856
</H3>
857
858
<P>
859
This release has long been delayed, mainly due to us waiting for changes
860
in wxWidgets to be completed. As we introduced new features in the
861
meantime, those introduced new delays, and so on. It has been more
862
than half a year since the last release, so changes are major. We
863
hope to stick to a much faster cycle of minor update releases for
864
the future. The main new features are:
865
866
<P>
867
868
<UL>
869
<LI>Proper support for MH folders.
870
</LI>
871
<LI>Browsing and subscription management for IMAP and NNTP servers.
872
</LI>
873
<LI>A plugin module system has been created which allows to dynamically
874
load expansion modules. Existing modules (statically linked in this
875
release, but dynamically linkable) include a filtering language and
876
PalmOS support. For the future, a calendar/timeplanner plugin is planned.
877
</LI>
878
<LI>Configurable filtering rules have been added.
879
</LI>
880
<LI>Message threading and configurable sort order is supported.
881
</LI>
882
<LI>An HTML-based help browser has been added.
883
</LI>
884
<LI>Configurable date format.
885
</LI>
886
<LI>Handling of dial-up networking and detection of connection status.
887
</LI>
888
<LI>Optional user of a Trash folder.
889
</LI>
890
<LI>Wizard-dialogs and ``tip of the day'' dialogs added to make
891
Mahogany easier to use.
892
</LI>
893
<LI>Optional SSL support can be compiled in (not activated by default
894
due to US export restrictions), allowing secure access to mail and
895
news servers.
896
</LI>
897
<LI>PalmOS handheld connectivity: synchronise e-mails with your PalmOS
898
handheld computer and use its addressbook within Mahogany. Also, backup,
899
restore and install databases of your handheld.
900
</LI>
901
<LI>Bug fixes in nearly all parts of the code. Mahogany should suffer
902
much less from crashes than earlier versions. The message editor behaves
903
better and is faster.
904
</LI>
905
<LI>Minor GUI improvements like keyboard bindings and nicer icons. Support
906
for KDE and GNOME filetype icons.
907
</LI>
908
</UL>
909
910
<P>
911
912
<H3><A NAME="SECTION002111000000000000000">
913
0.23a against 0.22a</A>
914
</H3>
915
916
<P>
917
The main news is, of course, the long-waited for availability of Win32
918
version. Also:
919
920
<P>
921
922
<UL>
923
<LI>Several bugs in message composer (including a few fatal ones) were
924
fixed. Only minor problems still persist.
925
</LI>
926
<LI>Selections support (copy, cut, paste) in message composer and viewer.
927
</LI>
928
<LI>The <TT>[Apply]</TT>and<TT>[Cancel]</TT>buttons in the options
929
and folder properties dialogs (mostly) work now.
930
</LI>
931
<LI>Several minor bug fixes and improvements, including a massive speedup
932
in the update of folder listings over slow connections.
933
</LI>
934
<LI>Printing no longer has overlap between pages.
935
</LI>
936
<LI>Folders can be kept open all the time to speed up access to them,
937
very useful for ``SentMail'' folder.
938
</LI>
939
<LI>Better behaved, asks before removing all mail from spool.
940
</LI>
941
<LI>Configurable templates for message composition and replies.
942
</LI>
943
<LI>Message boxes now have icons in them.
944
</LI>
945
<LI>Searching in mail folders.
946
</LI>
947
<LI>And, of course, updated translations and documentation updates.
948
</LI>
949
</UL>
950
We have also made good progress on the filtering code, PGP/GPG support,
951
multi-threading support and support for loadable external modules,
952
but these features are not complete yet and disabled in the release.
953
Expect them to appear in the next releases.
954
955
<P>
956
957
<H3><A NAME="SECTION002111100000000000000">
958
0.22a against 0.21a</A>
959
</H3>
960
961
<P>
962
Release 0.22a is mainly a bugfix release against 0.21a.
963
964
<P>
965
966
<UL>
967
<LI>All know (crash-inducing) bugs fixed.
968
</LI>
969
<LI>Message editor/viewer improvements, adding clipboard support and selections.
970
</LI>
971
<LI>wxGTK layout bug fixes - German, French, Spanish translations
972
</LI>
973
<LI>Text-search in messages
974
</LI>
975
<LI>Several minor usability fixes, sub-folder support fixed.
976
</LI>
977
<LI>Addressbook fixes
978
</LI>
979
<LI>TCP timeouts configurable
980
</LI>
981
<LI>Support for setting the Reply-To: header from To: field in message
982
replies.
983
</LI>
984
</UL>
985
986
<P>
987
988
<H3><A NAME="SECTION002111200000000000000">
989
0.10a to 0.21a</A>
990
</H3>
991
992
<P>
993
First, there are some user-visible changes against the latest version,
994
most notably the much improved message editor. This is still work
995
in progress and the next release should add the sorely missed cut
996
and paste support which only recently became functional in the underlying
997
wxGTK toolkit. Also, configurability has been much extended. For the
998
first time, Mahogany now defaults to collecting all mail from the
999
system's INBOX (whatever that is) to a central ``New Mail''
1000
folder. It can easily be set up to watch any number of different mail
1001
accounts or newsgroups and collect mail from them.
1002
1003
<P>
1004
This release got a bit delayed because we decided to finish some long
1005
planned changes under the hood, mainly a complete rewrite of the internal
1006
configuration system which now provides the inheriting configuration
1007
settings we had planned, something that will become obvious in the
1008
next release when full GUI support for it will be added. Also, we
1009
seriously improved the mailfolder handling code to reliably handle
1010
all kinds of error conditions, such as modified or disappearing mailboxes
1011
or terminated connections and recover from them safely. Also, Mahogany
1012
now has full working support for IMAP, NNTP and newsspools.
1013
1014
<P>
1015
Apart from this there were many minor fixes and changes, both GUI
1016
and mail code, documented in detail at the end of the TODO file.
1017
1018
<P>
1019
1020
<H2><A NAME="SECTION00212000000000000000">
1021
Known bugs</A>
1022
</H2>
1023
1024
<P>
1025
1026
<UL>
1027
<LI>Newsspool support will not work with newsgroups not listed in the
1028
``active'' file and is little configurable.
1029
</LI>
1030
<LI>News is not always the easiest to use, but will be the next thing
1031
to improve.
1032
</LI>
1033
</UL>
1034
1035
<P>
1036
1037
<H2><A NAME="SECTION00213000000000000000">
1038
TODO, features to implement</A>
1039
</H2>
1040
1041
<P>
1042
1043
<H3><A NAME="SECTION00213100000000000000">
1044
The next few things to be implemented:</A>
1045
</H3>
1046
1047
<P>
1048
1049
<UL>
1050
<LI>Multi-threaded folder access, to avoid blocking while retrieving slow
1051
remote folders/servers.
1052
</LI>
1053
<LI>Message editor: rich text editing &amp; HTML
1054
</LI>
1055
</UL>
1056
1057
<P>
1058
1059
<H2><A NAME="SECTION00214000000000000000">
1060
Help Needed</A>
1061
</H2>
1062
1063
<P>
1064
As you can see, we have big plans for Mahogany. To achieve all this,
1065
we need some help. Areas where we would use some help are
1066
1067
<P>
1068
1069
<UL>
1070
<LI>Updating this manual
1071
</LI>
1072
<LI>Python
1073
</LI>
1074
<LI>support for other mail protocols and mailfolder file formats, LDAP
1075
</LI>
1076
<LI>If you have access to other systems apart from Linux/Solaris/FreeBSD/Windows,
1077
you are very welcome to help us port Mahogany to those platforms,
1078
or to other hardware than Intel.
1079
</LI>
1080
<LI>Translations to other languages.
1081
</LI>
1082
<LI>MacOS development
1083
</LI>
1084
<LI><SPAN  CLASS="textbf">Generally we welcome help for anything. If you miss a feature
1085
in Mahogany, we are more than happy to help you implement it yourself.
1086
Naturally we tend to work on the features that we either need ourselves
1087
or find interesting to do. If your priorities are different, join
1088
our team and help us improve it. Mahogany is and will always be an
1089
OpenSource(TM) project and your involvement is wanted! If you have
1090
any questions about this, please contact the developers at
1091
<A NAME="tex2html2"
1092
  HREF="mailto:mahogany-users@lists.sourceforge.net">&lt;mahogany-users@lists.sourceforge.net&gt;</A>.
1093
If you have questions about the Mahogany License, discuss them with
1094
us - we don't want the license to scare anyone.</SPAN>
1095
</LI>
1096
</UL>
1097
1098
<P>
1099
1100
<H2><A NAME="SECTION00215000000000000000">
1101
Copyright</A>
1102
</H2>
1103
1104
<P>
1105
Mahogany is copyright by The Mahogany Development Team (Founding members
1106
Karsten Ballüder and Vadim Zeitlin). It is licensed under the Mahogany
1107
``Artistic License'' as stated in section<A HREF="#License"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> or,
1108
alternatively, under GNU General Public License. Some part of the
1109
source tree distributed with Mahogany is not covered under this license.
1110
These additional sources can be found in the ``<TT>extra/src</TT>''
1111
subdirectory. Please check the files in the individual directories
1112
for their copyright notices. However, they can be freely distributed
1113
under certain conditions.
1114
1115
<P>
1116
1117
<H3><A NAME="SECTION00215100000000000000">
1118
Why not the GPL/BSD/QPL/my favourite license?</A>
1119
</H3>
1120
1121
<P>
1122
Recently discussions about which license to chose for which project
1123
provoked major flamewars in the Unix community. There is a trend to
1124
put everything under the GPL or LGPL<A NAME="tex2html3"
1125
  HREF="#foot149"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>. We do not want to get involved in this highly emotional and political
1126
discussion. Our intent is to allow everyone to use and modify Mahogany
1127
while preserving some form of control over its development. That is
1128
why we chose a modified version of Perl's Artistic License. It is
1129
both more and less restrictive than the GPL in certain ways. We do
1130
not believe that there is one right license for everything. The Mahogany
1131
Artistic License is much simpler and easier to understand than the
1132
GPL, so we feel more comfortable with it. If you want to do something
1133
with Mahogany and feel that the license poses a problem, <SPAN  CLASS="textbf">please</SPAN>
1134
contact us! We do not want the license to be a problem and any reasonable
1135
request for deviating uses of Mahogany will be likely to be granted.
1136
If in doubt, ask us and we will find a solution.
1137
1138
<P>
1139
1140
<H2><A NAME="SECTION00216000000000000000"></A><A NAME="License"></A>
1141
<BR>
1142
The Mahogany ``Artistic License''
1143
</H2>
1144
1145
<P>
1146
1147
<H3><A NAME="SECTION00216100000000000000">
1148
Preamble</A>
1149
</H3>
1150
1151
<P>
1152
The intent of this document is to state the conditions under which
1153
this software package may be copied, such that the Copyright Holder
1154
maintains some semblance of artistic control over the development
1155
of the package, while giving the users of the package the right to
1156
use and distribute the Package in a more-or-less customary fashion,
1157
plus the right to make reasonable modifications.
1158
1159
<P>
1160
This license is based on Perl's ``Artistic License'' and has been
1161
adapted to better suit Mahogany. It aims to confirm with the Open-Source
1162
specification. If you should have any questions about this license,
1163
are unhappy with it or simply would like to comment on it, please
1164
get in touch with us.
1165
1166
<P>
1167
1168
<H3><A NAME="SECTION00216200000000000000">
1169
Definitions</A>
1170
</H3>
1171
1172
<P>
1173
``Package'' refers to the collection of files distributed by the Copyright
1174
Holder, and derivatives of that collection of files created through
1175
textual modification.
1176
1177
<P>
1178
``Standard Version'' refers to such a Package if it has not been modified,
1179
or has been modified in accordance with the wishes of the Copyright
1180
Holder as specified below.
1181
1182
<P>
1183
``Copyright Holder'' is whoever is named in the copyright or copyrights
1184
for the package.
1185
1186
<P>
1187
``You'' is you, if you're thinking about copying or distributing this
1188
Package.
1189
1190
<P>
1191
``Reasonable copying fee'' is whatever you can justify on the basis
1192
of media cost, duplication charges, time of people involved, and so
1193
on. (You will not be required to justify it to the Copyright Holder,
1194
but only to the computing community at large as a market that must
1195
bear the fee.)
1196
1197
<P>
1198
``Freely Available'' means that no fee is charged for the item itself,
1199
though there may be fees involved in handling the item. It also means
1200
that recipients of the item may redistribute it under the same conditions
1201
they received it.
1202
1203
<P>
1204
1205
<H4><A NAME="SECTION00216210000000000000">
1206
Conditions of Use</A>
1207
</H4>
1208
1209
<P>
1210
1211
<OL>
1212
<LI>You may make and give away verbatim copies of the source form of the
1213
Standard Version of this Package without restriction, provided that
1214
you duplicate all of the original copyright notices and associated
1215
disclaimers and only distribute the complete package as a whole.
1216
</LI>
1217
<LI>You may apply bug fixes, portability fixes and other modifications
1218
derived from the Public Domain or from the Copyright Holder. A Package
1219
modified in such a way shall still be considered the Standard Version.
1220
</LI>
1221
<LI>You may otherwise modify your copy of this Package in any way, provided
1222
that you insert a prominent notice in each changed file stating how
1223
and when you changed that file, and provided that you do at least
1224
ONE of the following:
1225
1226
<P>
1227
1228
<OL>
1229
<LI>place your modifications in the Public Domain or otherwise make them
1230
Freely Available, such as by posting said modifications to Usenet
1231
or an equivalent medium, or placing the modifications on a major archive
1232
site such as sunsite.unc.edu, or by allowing the Copyright Holder
1233
to include your modifications in the Standard Version of the Package,
1234
and rename any non-standard executables so the names do not conflict
1235
with standard executables, which must also be provided, and provide
1236
a separate manual page for each non-standard executable that clearly
1237
documents how it differs from the Standard Version. You must not make
1238
the modified version depend on any other software or library if that
1239
software or library is not Freely Available or if it is covered under
1240
a license more restrictive than this.
1241
</LI>
1242
<LI>use the modified Package only within your corporation or organisation.
1243
</LI>
1244
<LI>make other distribution arrangements with the Copyright Holder.
1245
</LI>
1246
</OL>
1247
</LI>
1248
<LI>You may distribute the programs of this Package in object code or
1249
executable form, provided that you do at least ONE of the following:
1250
1251
<P>
1252
1253
<OL>
1254
<LI>distribute a Standard Version of the executables and library files,
1255
together with instructions (in the manual page or equivalent) on where
1256
to get the Standard Version.
1257
</LI>
1258
<LI>accompany the distribution with the machine-readable source of the
1259
Package with your modifications, including the complete machine-readable
1260
source of the unmodified Standard Version. You must not make the modified
1261
version depend on any other software or library if that software or
1262
library is not Freely Available or if it is covered under a license
1263
more restrictive than this.
1264
</LI>
1265
<LI>give non-standard executables non-standard names, and clearly document
1266
the differences in manual pages (or equivalent), together with instructions
1267
on where to get the Standard Version. d.make other distribution arrangements
1268
with the Copyright Holder.
1269
</LI>
1270
</OL>
1271
</LI>
1272
<LI>You may charge a reasonable copying fee for any distribution of this
1273
Package. You may charge any fee you choose for support of this Package.
1274
You may not charge a fee for this Package itself. However, you may
1275
distribute this Package in aggregate with other (possibly commercial)
1276
programs as part of a larger (possibly commercial) software distribution
1277
provided that you do not advertise this Package as a product of your
1278
own.
1279
</LI>
1280
<LI>The name of the Copyright Holder may not be used to endorse or promote
1281
products derived from this software without specific prior written
1282
permission. However, all products derived from this software must
1283
reproduce the original copyright notice as found in the Standard Version.
1284
</LI>
1285
<LI>THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
1286
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
1287
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1288
</LI>
1289
</OL>
1290
1291
<P>
1292
1293
<H2><A NAME="SECTION00217000000000000000">
1294
The License Dialog</A>
1295
</H2>
1296
1297
<P>
1298
When you start Mahogany for the first time, it will display the license
1299
and conditions of use and ask you to accept or reject the license.
1300
If you do not accept it, Mahogany will terminate. If you have any
1301
questions about the license or want to otherwise comment on it, please
1302
email the development team at <TT>mahogany-users@lists.sourceforge.net</TT>
1303
.
1304
1305
<P>
1306
1307
<H2><A NAME="SECTION00218000000000000000">
1308
Additional Credits</A>
1309
</H2>
1310
1311
<P>
1312
1313
<H4><A NAME="SECTION00218010000000000000">
1314
C-Client library: </A>
1315
</H4>
1316
1317
<P>
1318
The use of the c-client library requires us to display the following
1319
copyright notice:
1320
1321
<P>
1322
<BLOCKQUOTE>
1323
Copyright 1999 by the University of Washington
1324
<BR>
1325
Permission to use, copy, modify, and distribute this software and
1326
its documentation for any purpose and without fee is hereby granted,
1327
provided that the above copyright notice appears in all copies and
1328
that both the above copyright notice and this permission notice appear
1329
in supporting documentation, and that the name of the University of
1330
Washington not be used in advertising or publicity pertaining to distribution
1331
of the software without specific, written prior permission.&nbsp; This
1332
software is made available &#34;as is&#34;, and THE UNIVERSITY
1333
OF WASHINGTON DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD
1334
TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES
1335
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND IN NO
1336
EVENT SHALL THE UNIVERSITY OF WASHINGTON BE LIABLE FOR ANY SPECIAL,
1337
INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
1338
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
1339
TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF OR
1340
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1341
1342
</BLOCKQUOTE>
1343
1344
<P>
1345
1346
<H3><A NAME="SECTION00218100000000000000">
1347
The OpenSSL toolkit:</A>
1348
</H3>
1349
1350
<P>
1351
Mahogany can be linked with the OpenSSL toolkit to support secure
1352
communications over SSL. In that case, we must give due credit to
1353
the authors and copyright of this library:
1354
1355
<P>
1356
<BLOCKQUOTE>
1357
This product includes software developed by the OpenSSL Project for
1358
use in the <A NAME="tex2html4"
1359
  HREF="http://www.openssl.org/">OpenSSL Toolkit</A>
1360
.This product includes cryptographic software written by Eric Young
1361
(eay@cryptsoft.com) This product includes software written by Tim
1362
Hudson (tjh@cryptsoft.com)&#34;
1363
1364
</BLOCKQUOTE>
1365
1366
<P>
1367
1368
<H3><A NAME="SECTION00218200000000000000">
1369
wxWidgets (formerly known as wxWindows):</A>
1370
</H3>
1371
1372
<P>
1373
Mahogany is built using <A NAME="tex2html5"
1374
  HREF="http://www.wxwidgets.org/">wxWidgets</A>
1375
cross-platform class library - without it, Mahogany wouldn't have been
1376
possible.
1377
1378
<P>
1379
1380
<H1><A NAME="SECTION00220000000000000000">
1381
Introduction / Tutorial</A>
1382
</H1>
1383
1384
<P>
1385
To get started on Mahogany, you should look at the following sections
1386
of this manual:
1387
1388
<P>
1389
1390
<UL>
1391
<LI>The Folder Tree (<A HREF="#FolderTreeCtrl"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) and how to create new folders
1392
(<A HREF="#CreateNewFolderDialog"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
1393
</LI>
1394
<LI>The explanation of the INBOX (<A HREF="#INBOX_Folder"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) and New Mail (<A HREF="#New_Mail_Folder"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
1395
folders.
1396
</LI>
1397
</UL>
1398
Obviously, the more of this manual you read, the better use you can
1399
make of Mahogany. Once the manual has grown too large, we will provide
1400
a short tutorial, but for now we go on coding instead.
1401
1402
<P>
1403
1404
<H2><A NAME="SECTION00221000000000000000">
1405
Getting started</A>
1406
</H2>
1407
1408
<P>
1409
When you start Mahogany for the first time, it will first ask you
1410
to accept the terms of its license. Note that you must accept it to
1411
be able to use the program. After doing it, you will see the installation
1412
wizard. It will guide you through several pages whose purpose is to
1413
get the information absolutely required for running the program and
1414
also prepare a useable initial setup for you. Please avoid abandoning
1415
the wizard unless you really know what you are doing, so just click
1416
next and ignore the checkbox on the first page for now.
1417
1418
<P>
1419
It is quite likely that you already have some other email program
1420
installed on your computer. Mahogany may import the configuration
1421
settings for some of them (currently, Netscape Communicator, Pine
1422
and XFMail but we have plans to add support for more programs in the
1423
future) meaning that it will provide your existing settings as the
1424
default values in the next pages. Of course, it is absolutely safe
1425
to just skip this step and continue directly.
1426
1427
<P>
1428
Next page asks you for your minimal personal information. You may
1429
enter an empty personal name here if you wish (although it is better
1430
to enter something) but it is required that you enter a valid email
1431
address below. It will be used as your default return email address.
1432
Note that you will be able to change this address in the future in
1433
the program prefernces dialog as well as add other identities, possibly
1434
with different email addresses, later.
1435
1436
<P>
1437
The next page proposes you to setup some default servers. Windows
1438
users <SPAN  CLASS="textbf">must</SPAN> specify an SMTP server here. Under Unix you may
1439
leave it empty if you want to use a local MTA such as <SMALL>SENDMAIL</SMALL>,
1440
<SMALL>QMAIL</SMALL> or <SMALL>EXIM.</SMALL> For the other servers you are free
1441
to enter the server name or leave the entry empty if you don't want
1442
to use it.
1443
1444
<P>
1445
The following page is more interesting as it gives you the possibility
1446
to configure some of the basic Mahogany options to your liking. Let's
1447
consider them in order:
1448
1449
<P>
1450
1451
<UL>
1452
<LI>Collect new mail (Unix only): typically, new mail arrives into the
1453
system I<SMALL>NBOX</SMALL> folder on a Unix workstation. It is strongly
1454
recommended that you don't leave it there but copy it immediately
1455
instead into your own mail folder. Mahogany proposes to do this for
1456
you by default, please let it do it unless you know better.
1457
</LI>
1458
<LI>Use Trash mailbox: this should be self explanatory except that you
1459
should note that this is just the global default setting and that
1460
it can be changed later on folder per folder basis (i.e. you can have
1461
some unimportant folders from which mail is deleted directly but just
1462
move the more important messages from other folders. which you might
1463
wish to undelete later, to the Trash).
1464
</LI>
1465
<LI>Use Outbox: again, this should be clear but this is a global setting.
1466
It can be changed later but it is probably worth setting it right
1467
from the very beginning. If you have a permanent net connection you
1468
probably don't need to use it.
1469
</LI>
1470
<LI>Use dial-up network: Mahogany may bring up or down your Internet connection
1471
for the dial up users. This is a half-experimental feature and, as
1472
above, is not particularly useful if have a permanent net connection
1473
</LI>
1474
<LI>Mailbox format (Unix only): this allows you to select the format for
1475
the local system mailbox files Mahogany is going to create soon (you
1476
will be able to choose the format for the folders you create yourself
1477
when you do it, of course). The default is the MBX format which is
1478
by far the most efficient but it is a binary format which is not understood
1479
by as many programs as the traditional Berkeley MBOX format.
1480
</LI>
1481
</UL>
1482
After finishing with the previous page you are almost done - the last
1483
page of the wizard doesn't have any more options. It just proposes
1484
you to send a test email to the address you had entered in the beginning
1485
(remember that it must have been a valid one?). If you are absolutely
1486
sure that you made no mistakes or if you can't or don't want to send
1487
mail currently, please uncheck the checkbox at the bottom of the page.
1488
Otherwise, let Mahogany do it as it might discover some problem with
1489
your SMTP server. In any case, you should now see the main Mahogany
1490
window which is described in the main section in front of you and
1491
it means that Mahogany has been successfully installed. Congratulations!
1492
1493
<P>
1494
1495
<H2><A NAME="SECTION00222000000000000000">
1496
The main window</A>
1497
</H2>
1498
1499
<P>
1500
The main window is broken in three parts. There is a tree of folders
1501
(<A HREF="#FolderTreeCtrl"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) on the left and a view of the currently selected
1502
folder (<A HREF="#FolderView"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) to the right of it which itself has two
1503
parts: the upper one shows the list of all messages in the folder
1504
while the lower one shows the currently previewed message.
1505
1506
<P>
1507
The installation wizard has created a small number of standard folders
1508
that Mahogany uses itself. Exactly which folders you now see on your
1509
screen depends, of course, on the choices you have done in the wizard
1510
but it should be a subset of the following list:
1511
1512
<P>
1513
1514
<UL>
1515
<LI>``SentMail'': This folder is always created as Mahogany stores
1516
copies of the messages you send in it. You may tell Mahogany not to
1517
do it or save them in a different folder by modifying the options
1518
near the top of the ``Compose'' page in the preferences dialog.
1519
</LI>
1520
<LI>``Trash'': If you have chosen to use it in the wizard, this
1521
is the folder where the deleted messages will be moved to. The settings
1522
for using it can be found in the ``Folders'' page of the preferences
1523
dialog.
1524
</LI>
1525
<LI>``New Mail'': This is the central new mail folder. Under Unix
1526
the messages arriving into the system I<SMALL>NBOX</SMALL> will be moved
1527
here. Also, when you choose to collect mail from a remote POP3 or
1528
IMAP4 server (see next subsection) it will be moved here as well.
1529
</LI>
1530
<LI>``INBOX'' represents the ``system inbox'' for your system.
1531
You will only see it if you had chosen (in spite of multiple advices
1532
against it) to not move new mail from it to the ``New Mail''
1533
folder. Exact location of this folder depends on your system setup
1534
but some common locations are <TT>/var/spool/mail</TT> or <TT>/var/mail.</TT>
1535
</LI>
1536
<LI>Server entries: you may also have entries for POP3, IMAP and NNTP
1537
folders if you had specified them in the installation wizard. They
1538
are described in details below.
1539
</LI>
1540
</UL>
1541
The folder view on the right should show only one or two messages
1542
right now (unless you already had some mail in your I<SMALL>NBOX</SMALL>).
1543
The first of them should be self-explanatory and the second, if any,
1544
is the test message Mahogany has sent to test your configuration.
1545
If you didn't disable this test but don't see this message in the
1546
folder, something may have gone wrong. Please look at the activity
1547
log window which Mahogany has also created to see if there are any
1548
errors in it. Also please see (<A HREF="#Troubleshooting"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) section.
1549
1550
<P>
1551
1552
<H2><A NAME="SECTION00223000000000000000">
1553
How to configure POP and IMAP folders?</A>
1554
</H2>
1555
1556
<P>
1557
Although the installation wizard did create entries for POP and/or
1558
IMAP servers in the folder, they are probably not very useful right
1559
now. Or maybe you didn't create them then and want to do it now -
1560
then just choose ``Create'' item from the ``Folder'' menu
1561
and follow the instructions. If you are already fed up with the wizards
1562
you may prefer to dismiss it on the first page by selecting the checkbox
1563
there and enter all the folder parameters directly in the folder properties
1564
dialog.
1565
1566
<P>
1567
If you have let the wizard create the folder, you still need to use
1568
the folder properties dialog to customize it. By the way, this dialog
1569
can be accessed by selecting the corresponding item either from the
1570
``Folder'' menu in the menu bar or from the popup menu you obtain
1571
by right-clicking the folder in the tree.
1572
1573
<P>
1574
Browse this dialog to get an idea of some of the options you may change.
1575
Please note that most of the options in the first, ``Access'',
1576
page cannot be changed after the folder creation. The different options
1577
are described in more details elsewhere in this manual.
1578
1579
<P>
1580
Right now let us just give some examples of the typical configurations:
1581
1582
<P>
1583
1584
<OL>
1585
<LI>Typical POP3 server: normally, the new mail is downloaded from the
1586
POP3 folders locally so go to the ``New Mail'' page and select
1587
``Collect new mail from this folder''. This will move all new
1588
mail from the POP3 server to the ``New Mail'' folder. If you
1589
want to copy it instead just check the ``Leave mail in this folder''
1590
checkbox as well. Finally, if you want Mahogany to check the POP3
1591
folder for the updates automatically please check the ``Permanently
1592
monitor this folder'' checkbox and change the polling interval
1593
for it if needed.
1594
</LI>
1595
<LI>IMAP server with only INBOX: if you only have INBOX folder on your
1596
IMAP server you may configure it exactly as the POP3 server above.
1597
You may also decide not to collect mail from it but read it directly
1598
on the server - this is, in fact, the preferred mode of operation
1599
as this works much better with IMAP than with POP.
1600
</LI>
1601
<LI>IMAP server with multiple folders: in this case you almost surely
1602
don't want to download all new mail from the IMAP INBOX to the local
1603
folders but keep it on server. You will probably be interested in
1604
using filters (<A HREF="#Filters"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) in this case.
1605
</LI>
1606
</OL>
1607
1608
<P>
1609
1610
<H2><A NAME="SECTION00224000000000000000">
1611
How to set up your mail accounts</A>
1612
</H2>
1613
1614
<P>
1615
** This is currently missing, see the text in the FAQ. I will
1616
explain here how to set up your accounts.
1617
1618
<P>
1619
1620
<H1><A NAME="SECTION00230000000000000000">
1621
Setting up Mahogany, its configuration files</A>
1622
</H1>
1623
1624
<P>
1625
1626
<H2><A NAME="SECTION00231000000000000000"></A><A NAME="cmdlineargs"></A>
1627
<BR>
1628
Mahogany command line options
1629
</H2>
1630
1631
<P>
1632
The following options are accepted. When both short and long options are listed
1633
either one can be used and if the long options requires an argument, it must be
1634
specified for the short one as well. The delimiter for the short options is
1635
either <TT>/</TT> or <TT>-</TT> but only <TT>-</TT> can be used for the long ones.
1636
1637
<P>
1638
<BR>
1639
<BR>
1640
1641
   <DIV ALIGN="CENTER">
1642
1643
</DIV><TABLE CELLPADDING=3 BORDER="1">
1644
<TR><TD ALIGN="CENTER">Option</TD>
1645
<TD ALIGN="CENTER">Meaning</TD>
1646
</TR>
1647
<TR><TD ALIGN="CENTER">-h, -help</TD>
1648
<TD ALIGN="CENTER">show the summary of the command line options</TD>
1649
</TR>
1650
<TR><TD ALIGN="CENTER">-verbose</TD>
1651
<TD ALIGN="CENTER">generate verbose messages (off by default)</TD>
1652
</TR>
1653
<TR><TD ALIGN="CENTER">-debug</TD>
1654
<TD ALIGN="CENTER">enable debug logging</TD>
1655
</TR>
1656
<TR><TD ALIGN="CENTER">-safe</TD>
1657
<TD ALIGN="CENTER">don't do anything automatically on startup</TD>
1658
</TR>
1659
<TR><TD ALIGN="CENTER">&nbsp;</TD>
1660
<TD ALIGN="CENTER">may be useful if Mahogany crashes when trying</TD>
1661
</TR>
1662
<TR><TD ALIGN="CENTER">&nbsp;</TD>
1663
<TD ALIGN="CENTER">to automatically do something after starting up</TD>
1664
</TR>
1665
<TR><TD ALIGN="CENTER">-userdir=dir</TD>
1666
<TD ALIGN="CENTER">specify a non default directory containing all user</TD>
1667
</TR>
1668
<TR><TD ALIGN="CENTER">&nbsp;</TD>
1669
<TD ALIGN="CENTER">data including, but not limited to, the file mailboxes</TD>
1670
</TR>
1671
<TR><TD ALIGN="CENTER">-config=file</TD>
1672
<TD ALIGN="CENTER">specify the alternate configuration file to use</TD>
1673
</TR>
1674
<TR><TD ALIGN="CENTER">&nbsp;</TD>
1675
<TD ALIGN="CENTER">may be also used to force using file instead of</TD>
1676
</TR>
1677
<TR><TD ALIGN="CENTER">&nbsp;</TD>
1678
<TD ALIGN="CENTER">the registry under Windows</TD>
1679
</TR>
1680
<TR><TD ALIGN="CENTER">-b, -bcc=adr</TD>
1681
<TD ALIGN="CENTER">specify a blind carbon-copy (BCC) recipient</TD>
1682
</TR>
1683
<TR><TD ALIGN="CENTER">-c, -cc=adr</TD>
1684
<TD ALIGN="CENTER">specify a carbon-copy (CC) recipient</TD>
1685
</TR>
1686
<TR><TD ALIGN="CENTER">-s, -subject=str</TD>
1687
<TD ALIGN="CENTER">specify the subject for the new message</TD>
1688
</TR>
1689
<TR><TD ALIGN="CENTER">-body=str</TD>
1690
<TD ALIGN="CENTER">the initial text of the message</TD>
1691
</TR>
1692
<TR><TD ALIGN="CENTER">-f, -folder=str</TD>
1693
<TD ALIGN="CENTER">the folder to open in the main frame on startup</TD>
1694
</TR>
1695
<TR><TD ALIGN="CENTER">-lang=lng</TD>
1696
<TD ALIGN="CENTER">the language to use for the program messages,</TD>
1697
</TR>
1698
<TR><TD ALIGN="CENTER">&nbsp;</TD>
1699
<TD ALIGN="CENTER">overrides the default language choice</TD>
1700
</TR>
1701
<TR><TD ALIGN="CENTER">-newsgroup=group</TD>
1702
<TD ALIGN="CENTER">the news group to post the message to</TD>
1703
</TR>
1704
<TR><TD ALIGN="CENTER">-nopython</TD>
1705
<TD ALIGN="CENTER">disable the embedded Python interpreter, even if it is
1706
enabled in the program options (<A HREF="#PythonOptions"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)</TD>
1707
</TR>
1708
</TABLE>
1709
1710
<P>
1711
<BR>
1712
<BR>
1713
1714
<P>
1715
The remaining command line arguments are taken as the recipients for the new
1716
message.
1717
1718
<P>
1719
If either of the <TT>-bcc</TT>, <TT>-cc</TT>, <TT>-subject</TT>, <TT>-newsgroup</TT> or
1720
<TT>-body</TT> options is given or a command line argument follows the options,
1721
the composer will be automatically opened on startup. If the ``Always run only
1722
one instance'' option (see <A HREF="#onlyoneinstance"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) is set, the composer will be
1723
opened in the already running instance of the program, if any.
1724
1725
<P>
1726
Please do use <TT>-debug</TT> option if something goes wrongly, it can give
1727
valuable information about the problem! See also the corresponding option
1728
(<A HREF="#debugoption"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
1729
1730
<P>
1731
<A NAME="configcmdlineopt"></A>If you want to use the configuration files under Windows (by default the
1732
registry will be used to store the program options) you should use the
1733
<TT>-config=file</TT> option each time when running the program. The easiest way
1734
to do it is to create a shortcut to <TT>M.exe</TT> and enter this argument there.
1735
1736
<P>
1737
1738
<H2><A NAME="SECTION00232000000000000000">
1739
User configuration files (Unix only)</A>
1740
</H2>
1741
1742
<P>
1743
When run for the first time, <SPAN  CLASS="textit">Mahogany</SPAN> creates a directory called
1744
<TT>.M</TT> in the user's home directory. The file <TT>$HOME/.M/config</TT>
1745
will contain the current program configuration for this user. Only
1746
values different from the default configuration are stored here. If
1747
you want to obtain a list of all possible options (although arguably
1748
if you are so curious, you'd better read <SPAN  CLASS="textit">Mahogany</SPAN> sources directly),
1749
you can manually add the entry
1750
1751
<P>
1752
<BLOCKQUOTE>
1753
<TT>RecordDefaults = 1</TT>
1754
1755
</BLOCKQUOTE>
1756
to the <TT>[M/Profiles]</TT> section of the configuration file.
1757
This will cause all values which are used to be written to the configuration
1758
file.
1759
1760
<P>
1761
Note that an easy way to ``reinstall'' Mahogany is to move <TT>$HOME/.M/config</TT>
1762
file to some other location or even delete it and restart Mahogany
1763
- then it will go through the installation process once again.
1764
1765
<P>
1766
1767
<H3><A NAME="SECTION00232100000000000000">
1768
System wide configuration file</A>
1769
</H3>
1770
1771
<P>
1772
<SPAN  CLASS="textit">Mahogany</SPAN> can be pre-configured on a system wide basis by supplying
1773
a <TT>M.conf</TT> file in the installation directory (e.g. <TT>/usr/share/mahogany/M.conf</TT>).
1774
The syntax for this configuration file is identical to the user's
1775
configuration file, so you can just copy a user's file to this location
1776
and edit it by hand. Useful settings for a system wide default are
1777
servers or mail return addresses. Entries prefixed with an exclamation
1778
mark ``!'' are marked as immutable and cannot be overwritten
1779
by the user. This can be used by the system administrator to hard-wire
1780
certain settings, like, for example the return mail addresses or mail
1781
servers to use.
1782
1783
<P>
1784
1785
<H2><A NAME="SECTION00233000000000000000"></A><A NAME="registrykey"></A>
1786
<BR>
1787
Registry (Windows only)
1788
</H2>
1789
1790
<P>
1791
Under Windows the user settings are by default stored in the registry, under
1792
<TT>HKCU<SPAN CLASS="MATH"><IMG
1793
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
1794
 SRC="img2.png"
1795
 ALT="$\backslash$"></SPAN>Software<SPAN CLASS="MATH"><IMG
1796
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
1797
 SRC="img2.png"
1798
 ALT="$\backslash$"></SPAN>Mahogany-Team<SPAN CLASS="MATH"><IMG
1799
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
1800
 SRC="img2.png"
1801
 ALT="$\backslash$"></SPAN>M</TT> key
1802
where <TT>HKCU</TT> stands for <TT>HKEY_CURRENT_USER</TT>.
1803
1804
<P>
1805
If you encounter a mention of some <TT>Entry</TT> in the group <TT>[Group]</TT>
1806
of the config file, it maps to a value <TT>Entry</TT> in the key
1807
<TT>Profiles<SPAN CLASS="MATH"><IMG
1808
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
1809
 SRC="img2.png"
1810
 ALT="$\backslash$"></SPAN>Group</TT> under the root key specified above under
1811
Windows.
1812
1813
<P>
1814
1815
<H2><A NAME="SECTION00234000000000000000"></A><A NAME="multiconfigsources"></A>
1816
<BR>
1817
Using multiple configuration sources
1818
</H2>
1819
1820
<P>
1821
The default behaviour described in the sections above is the simplest possible
1822
and works well as long as Mahogany is only used on a single machine. However it
1823
is not ideal if you want to use it from several different installations. It
1824
should be noted that in the simplest case, when all these installations use the
1825
same operating system and are similarly configured, you may simply transfer the
1826
Mahogany configuration file <A NAME="tex2html6"
1827
  HREF="#foot312"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A> to the other machine, however this doesn't work if you want to use the
1828
program from both Unix and Windows as in such case some settings are bound to
1829
be different.
1830
1831
<P>
1832
The solution is to use multiple <SPAN  CLASS="textit">configuration sources</SPAN> (they are called
1833
sources and not files because, in general, the settings can also be stored in
1834
other locations such as on a remote IMAP server). To set this up, choose the
1835
corresponding command from the <TT>"Edit"</TT> menu: it will present you with
1836
the dialog allowing to create more configuration sources (currently only local
1837
files are supported) and to change their priority by moving them up or down in
1838
the list.
1839
1840
<P>
1841
Here is an example of a setup recommended for IMAP users:
1842
1843
<OL>
1844
<LI>OS-specific settings are stored in <TT>machine-os.conf</TT>: this
1845
         file should be tiny as the only OS-specific options are those that
1846
         involve external paths, e.g. the user directory.
1847
</LI>
1848
<LI>Machine-specific settings are stored in <TT>machine.conf</TT>: this
1849
         file is still quite small as the only machine-specific entries are
1850
         usually the IMAP and SMTP host names.
1851
</LI>
1852
<LI>All the rest is stored in <TT>global.conf</TT> which may be shared
1853
         among all installations. This file is, correspondingly, usually large.
1854
</LI>
1855
</OL>
1856
1857
<P>
1858
1859
<H1><A NAME="SECTION00240000000000000000">
1860
The User Interface</A>
1861
</H1>
1862
1863
<P>
1864
1865
<H2><A NAME="SECTION00241000000000000000">
1866
The Main Window</A>
1867
</H2>
1868
1869
<P>
1870
<SPAN  CLASS="textit">Mahogany</SPAN>'s main window is vertically divided into two parts.
1871
On the left it has a tree view (<A HREF="#FolderTreeCtrl"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) of all available
1872
mail or news folders. On the right of it, it shows the currently selected
1873
folder in a folder view (see <A HREF="#FolderView"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
1874
1875
<P>
1876
1877
<H2><A NAME="SECTION00242000000000000000">
1878
The Folder Tree</A>
1879
</H2>
1880
1881
<P>
1882
<A NAME="FolderTreeCtrl"></A>The folder tree shows a hierarchical view of
1883
all folders managed by <SPAN  CLASS="textit">Mahogany</SPAN>, this includes both mail folders
1884
and newsgroups. Folders can be grouped hierarchically and inherit
1885
settings from their parent folders (e.g. the server host). Clicking
1886
the right mouse button on any tree node will pop up a menu with some
1887
options. To open a folder or connection to a server for the first
1888
time, choose ``Create New Folder'' which will show you a dialog
1889
(<A HREF="#CreateNewFolderDialog"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
1890
1891
<P>
1892
1893
<H2><A NAME="SECTION00243000000000000000">
1894
Create New Folder Dialog</A>
1895
</H2>
1896
1897
<P>
1898
<A NAME="CreateNewFolderDialog"></A>This menu entry allows you to open a
1899
connection to a server or view a mailfolder. No matter whether it
1900
is a POP, IMAP, NNTP connection , a file based mailfolder, a newsgroup
1901
or whatever, Mahogany treats them all the same and calls them all
1902
``folder''. The dialog has several pages which include at least:
1903
<SPAN  CLASS="textbf">Access</SPAN> (<A HREF="#FolderAccessPage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>), <SPAN  CLASS="textbf">New Mail</SPAN> ()<SPAN  CLASS="textbf">,
1904
Compose</SPAN> (<A HREF="#ComposePage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) and <SPAN  CLASS="textbf">MessageViewer</SPAN> (<A HREF="#MessageViewerPage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
1905
1906
<P>
1907
1908
<H3><A NAME="SECTION00243100000000000000">
1909
Access</A>
1910
</H3>
1911
1912
<P>
1913
1914
<UL>
1915
<LI><SPAN  CLASS="textbf"><A NAME="FolderAccessPage"></A>Folder Type</SPAN>
1916
<BR>
1917
Here you can choose from the currently supported folder types. The
1918
``News'' type is for reading a local newsspool, it is only partially
1919
supported at present but should work fine in most circumstances. ``NNTP''
1920
is for reading news from a remote newsserver. ``IMAP'' and ``POP3''
1921
are for accessing remote mail server. If possible, prefer IMAP over
1922
POP, it is much more powerful and significantly faster, saving modem
1923
time.
1924
</LI>
1925
<LI><SPAN  CLASS="textbf">User name</SPAN>
1926
<BR>
1927
For those folder types where it is required, the user name or login
1928
to get access to them.
1929
</LI>
1930
<LI><SPAN  CLASS="textbf">Password</SPAN>
1931
<BR>
1932
For those folder types where it is required, you can specify the password
1933
here. If you leave it empty, Mahogany will prompt you for the password
1934
whenever it is needed. If you want to auto-collect mail from this
1935
folder or even just check it in the background, you should specify
1936
it, otherwise you will be asked for it at least once per session (you
1937
will be able to tell Mahogany if it should keep it for the session
1938
duration or not). <SPAN  CLASS="textbf">Note that storing passwords is a potential
1939
security risk!</SPAN> The password typed in here will get stored in your
1940
<TT>$HOME/.M/config</TT> configuration file on Unix or in the registry
1941
on Windows. While this file will be created as only readable by you
1942
and the passwords be encrypted (using very weak encryption), it is
1943
nevertheless a certain risk. If you accidentally change the permissions
1944
of that file, someone else could obtain your passwords, though Mahogany
1945
would detect this the next time it starts and warn you about it.
1946
</LI>
1947
<LI><SPAN  CLASS="textbf">Server</SPAN>
1948
<BR>
1949
For the folders which require a server setting, you can specify the
1950
server host here. If unspecified they will inherit the setting from
1951
the global preferences. You may use a colon (:) after the server name
1952
to specify a non default port.
1953
</LI>
1954
<LI><SPAN  CLASS="textbf">Newsgroup</SPAN>
1955
<BR>
1956
For NNTP and Newsspool folders, the name of the newsgroup, e.g. comp.os.linux.announce
1957
.
1958
</LI>
1959
<LI><SPAN  CLASS="textbf">Comment</SPAN>
1960
<BR>
1961
Whatever you like to add, this is ignored by Mahogany.
1962
</LI>
1963
<LI><SPAN  CLASS="textbf">File name</SPAN>
1964
<BR>
1965
For folders of type ``File'', the filename or directory where
1966
the folder is.
1967
</LI>
1968
<LI><SPAN  CLASS="textbf">Collect all mail from this folder</SPAN>
1969
<BR>
1970
Makes this folder ``incoming''. Mahogany will regularly check
1971
the folder for new mail and move any messages to the global folder
1972
for new mail, usually the ``New Mail'' folder.
1973
</LI>
1974
<LI><SPAN  CLASS="textbf">Keep server connection when idle</SPAN>
1975
<BR>
1976
If selected, Mahogany will keep the folder open during the entire
1977
program session after it had been opened for the first time. This
1978
can significantly speed up access to large folders as opening them
1979
can take some time. A very useful option for frequently used folders
1980
and Mahogany uses it by default for the ``SentMail'' folder,
1981
for example.
1982
</LI>
1983
<LI><SPAN  CLASS="textbf">Force re-open on ping</SPAN>
1984
<BR>
1985
This forces Mahogany to close and re-open the mailbox when trying
1986
to update the information about it. This is required for some broken
1987
servers to correctly detect new mail. Usually this should not be needed.
1988
</LI>
1989
<LI><SPAN  CLASS="textbf">Anonymous access</SPAN>
1990
<BR>
1991
This marks the folder as anonymous, such as for anonymous IMAP access,
1992
telling Mahogany that no user name or password are required to access
1993
it.
1994
</LI>
1995
<LI><SPAN  CLASS="textbf">Use Secure Sockets Layer (SSL)</SPAN>
1996
<BR>
1997
This option is only available if your copy of Mahogany was built with
1998
SSL support. Tick this box to access a secure IMAP/POP/NNTP server.
1999
It must, of course, be supported by the server side, too. It will
2000
ensure that your communication with the server is encrypted and safe
2001
from eavesdropping. For this to work, the user might also need to
2002
open the preferences dialog, and, in the <SPAN  CLASS="textbf">Misc</SPAN> tab, fill-out
2003
the boxes labeled ``Path where to find shared libssl'' and ``Path
2004
where to find shared libcrypto''. Linux users must also see the SSL
2005
section of the FAQ.
2006
</LI>
2007
<LI><SPAN  CLASS="textbf">Folder can be accessed without network</SPAN>
2008
<BR>
2009
This option is only useful if you use Mahogany dial-up support - then
2010
check it to tell Mahogany that you don't need your Internet connection
2011
(and thus don't want to dial your ISP) to access this folder.
2012
</LI>
2013
<LI><SPAN  CLASS="textbf">Can be opened</SPAN>
2014
<BR>
2015
This is usually checked for the normal folder but may be unchecked
2016
for the folders which only contain subfolders (see also below) but
2017
not any messages. Normally you should allow Mahogany detect this itself,
2018
this checkbox is only here to allow you to override Mahogany if it
2019
does something wrong.
2020
</LI>
2021
<LI><SPAN  CLASS="textbf">Contains subfolders</SPAN>
2022
<BR>
2023
Select this if the mailbox represents not a mailbox or newsgroup but
2024
a hierarchy on an IMAP or NNTP server. E.g. comp.os.linux.announce
2025
would be a normal newsgroup (unticked), while comp.os.linux would
2026
be a new hierarchy (ticked). Normally you should allow Mahogany detect
2027
this itself, this checkbox is only here to allow you to override Mahogany
2028
if it does something wrong.
2029
</LI>
2030
<LI><SPAN  CLASS="textbf">Hide folder in tree</SPAN>
2031
<BR>
2032
If you do not want this mailbox to be shown in the folder tree (unless
2033
you select the option to show all hidden folders), tick this box.
2034
For example, if you move all new mail from your POP3 folder to your
2035
INBOX you probably don't need to show POP3 folder in the tree at all
2036
so you may want to hide it to save valuable screen estate.
2037
</LI>
2038
<LI><SPAN  CLASS="textbf">Folder subtype</SPAN>
2039
<BR>
2040
Here you can select some sub-type, e.g. different mailbox formats.
2041
This option cannot be changed after the folder creation.
2042
</LI>
2043
<LI><SPAN  CLASS="textbf">Icon for this folder</SPAN>
2044
<BR>
2045
Allows you to set a different icon for the mailbox.
2046
</LI>
2047
</UL>
2048
2049
<P>
2050
2051
<H2><A NAME="SECTION00244000000000000000">
2052
Folder Views</A>
2053
</H2>
2054
2055
<P>
2056
<A NAME="FolderView"></A>A Folder View is a window or part of a window displaying
2057
the contents of a mail folder or a newsgroup. It consists of two parts:
2058
2059
<P>
2060
2061
<UL>
2062
<LI>The list of message headers at the top, showing message subjects,
2063
authors, dates, etc.
2064
</LI>
2065
<LI>The contents of the currently selected message below.
2066
</LI>
2067
</UL>
2068
2069
<P>
2070
2071
<H3><A NAME="SECTION00244100000000000000">
2072
Understanding the folder view</A>
2073
</H3>
2074
2075
<P>
2076
The messages are displayed in the folder view according to the curent
2077
sort order which may be changed either from the folder properties
2078
dialog (of course, it can be set independently for each folder or
2079
be the same for all folders at once) or by clicking on the column
2080
header. In the latter case, clicking on, for example, ``S<SMALL>UBJECT</SMALL>''
2081
column, will sort the messages by subject if they were not sorted
2082
by subject already, otherwise it will sort them by subject in the
2083
reverse order. This allows you to sort the listing on some column
2084
by just clicking it and to reverse the sort order by clicking it again.
2085
2086
<P>
2087
Most of the columns are self explanatory. It should be mentioned that
2088
the date format is configurable from the folder view page of the folder
2089
properties dialog and you may set it to anything you like. In particular,
2090
some people find it very useful to show the date in GMT instead of
2091
the local time.
2092
2093
<P>
2094
The status column (which is usually the first one, although you may
2095
change the column order from the same page already mentioned above)
2096
may be empty or contain one or more flags:
2097
2098
<P>
2099
<TABLE CELLPADDING=3 BORDER="1">
2100
<TR><TD ALIGN="CENTER">Symbol</TD>
2101
<TD ALIGN="CENTER">Meaning</TD>
2102
</TR>
2103
<TR><TD ALIGN="CENTER">*</TD>
2104
<TD ALIGN="CENTER">message is flagged or important</TD>
2105
</TR>
2106
<TR><TD ALIGN="CENTER">A</TD>
2107
<TD ALIGN="CENTER">message was answered to</TD>
2108
</TR>
2109
<TR><TD ALIGN="CENTER">D</TD>
2110
<TD ALIGN="CENTER">message is marked as deleted and will disappear after expunge</TD>
2111
</TR>
2112
<TR><TD ALIGN="CENTER">U</TD>
2113
<TD ALIGN="CENTER">message is unread: you haven't seen its body yet</TD>
2114
</TR>
2115
<TR><TD ALIGN="CENTER">R</TD>
2116
<TD ALIGN="CENTER">message is recent: this is the first time you see it</TD>
2117
</TR>
2118
<TR><TD ALIGN="CENTER">N</TD>
2119
<TD ALIGN="CENTER">message is new: it is recent and unread</TD>
2120
</TR>
2121
</TABLE>
2122
2123
<P>
2124
Accordingly, if nothing appears in the status column, the message
2125
was read but wasn't deleted nor flagged and this is not the first
2126
time you see it. Note that not all kinds of folders support all kinds
2127
of flags: while IMAP servers always do, POP servers are not capable
2128
of storing the message flags and so all messages will always appear
2129
as new in them.
2130
2131
<P>
2132
Note that each message flag has also the corresponding colour which
2133
is used to highlight the message in the folder view and also to highlight
2134
the folder containing this message in the folder tree. These colours
2135
can be changed from the folder view page of the options dialog, as
2136
usual.
2137
2138
<P>
2139
2140
<H3><A NAME="SECTION00244200000000000000"></A><A NAME="keybindings"></A>
2141
<BR>
2142
Keyboard and mouse handling
2143
</H3>
2144
2145
<P>
2146
The reaction to a mouse click in the list of messages depends on the
2147
preferences setting ``Preview message when selected``. When
2148
the option is selected, a single mouse click will select the message
2149
and load it into the preview window. If the option is not set, the
2150
message will only be selected but not previewed automatically, which
2151
is very useful for accessing mail folders through a slow connection.
2152
The same setting effects the behaviour of the space bar, it acts exactly
2153
like a single mouse click in the window and will only cause a message
2154
to be previewed if a single mouse click is configured to do so. The
2155
space key can be used to view the message under the current cursor.
2156
2157
<P>
2158
Other keyboard bindings are summarized in the following table (except where
2159
explicitly noticed, lower and uppe case keys work do the same thing):
2160
2161
<P>
2162
<BR>
2163
<BR>
2164
<DIV ALIGN="CENTER">
2165
2166
</DIV><TABLE CELLPADDING=3 BORDER="1">
2167
<TR><TD ALIGN="CENTER">Key</TD>
2168
<TD ALIGN="CENTER">Action performed</TD>
2169
</TR>
2170
<TR><TD ALIGN="CENTER">*</TD>
2171
<TD ALIGN="CENTER">mark/unmark message under cursor</TD>
2172
</TR>
2173
<TR><TD ALIGN="CENTER">SPACE</TD>
2174
<TD ALIGN="CENTER">preview message under cursor</TD>
2175
</TR>
2176
<TR><TD ALIGN="CENTER">D or DEL</TD>
2177
<TD ALIGN="CENTER">mark selected messages for deletion</TD>
2178
</TR>
2179
<TR><TD ALIGN="CENTER">U</TD>
2180
<TD ALIGN="CENTER">remove deletion mark from selected messages</TD>
2181
</TR>
2182
<TR><TD ALIGN="CENTER">X or #</TD>
2183
<TD ALIGN="CENTER">expunge messages marked for deletion</TD>
2184
</TR>
2185
<TR><TD ALIGN="CENTER">C</TD>
2186
<TD ALIGN="CENTER">copy marked messages to another folder</TD>
2187
</TR>
2188
<TR><TD ALIGN="CENTER">M</TD>
2189
<TD ALIGN="CENTER">move selected messages to another folder</TD>
2190
</TR>
2191
<TR><TD ALIGN="CENTER">S</TD>
2192
<TD ALIGN="CENTER">save marked messages to files</TD>
2193
</TR>
2194
<TR><TD ALIGN="CENTER">P</TD>
2195
<TD ALIGN="CENTER">print marked messages</TD>
2196
</TR>
2197
<TR><TD ALIGN="CENTER">R</TD>
2198
<TD ALIGN="CENTER">reply to messages</TD>
2199
</TR>
2200
<TR><TD ALIGN="CENTER">F</TD>
2201
<TD ALIGN="CENTER">forward messages</TD>
2202
</TR>
2203
<TR><TD ALIGN="CENTER">O</TD>
2204
<TD ALIGN="CENTER">open messages in separate window</TD>
2205
</TR>
2206
<TR><TD ALIGN="CENTER">H</TD>
2207
<TD ALIGN="CENTER">toggle display of all headers</TD>
2208
</TR>
2209
<TR><TD ALIGN="CENTER">BACK/PG UP</TD>
2210
<TD ALIGN="CENTER">scroll the message preview one page up</TD>
2211
</TR>
2212
<TR><TD ALIGN="CENTER">PG DOWN</TD>
2213
<TD ALIGN="CENTER">scroll the message preview one page down</TD>
2214
</TR>
2215
<TR><TD ALIGN="CENTER">Ctrl-U</TD>
2216
<TD ALIGN="CENTER">view next unread message</TD>
2217
</TR>
2218
<TR><TD ALIGN="CENTER">/</TD>
2219
<TD ALIGN="CENTER">start forward search for a string</TD>
2220
</TR>
2221
<TR><TD ALIGN="CENTER">?</TD>
2222
<TD ALIGN="CENTER">start reverse search for a string</TD>
2223
</TR>
2224
<TR><TD ALIGN="CENTER">n</TD>
2225
<TD ALIGN="CENTER">go to the next match (after doing a search)</TD>
2226
</TR>
2227
<TR><TD ALIGN="CENTER">N</TD>
2228
<TD ALIGN="CENTER">go to the previous match (after doing a search)</TD>
2229
</TR>
2230
</TABLE>
2231
<P>
2232
2233
<BR>
2234
<BR>
2235
2236
<P>
2237
Note that all commands for which it makes sense operate either on
2238
the current message only if there is no selection or on all selected
2239
messages at once. You can use the mouse or the cursor arrows together
2240
with the SHIFT or CTRL keys to select multiple messages at once. The
2241
commands which affect the message preview are inactive if no message
2242
is previewed.
2243
2244
<P>
2245
2246
<H2><A NAME="SECTION00245000000000000000">
2247
Migrating from another mail client</A>
2248
</H2>
2249
2250
<P>
2251
<A NAME="Import"></A><SPAN  CLASS="textit">Mahogany</SPAN> supports importing the settings from
2252
a few other popular mail clients. The current list includes Netscape,
2253
Pine, XFMail and Eudora. Depending on the mail client only part of
2254
its settings may be imported but in the best case Mahogany can import
2255
the address books, the configuration settings, the filter rules and
2256
the list of folders to use. To use this feature, choose
2257
<TT>"Mail|Import..."</TT> command and follow the dialogs.
2258
2259
<P>
2260
Even if you don't find your email client in the list proposed in the
2261
dialog, everything is not lost. You won't be able to import its configuration
2262
information nor the filter rules but you might still recuperate the
2263
address book information if your program can export the addresses
2264
in the standard comma separated format or as vCards. In either case
2265
you can then import just the address books from the address book editor.
2266
2267
<P>
2268
Finally, <SPAN  CLASS="textit">Mahogany</SPAN> can automatically create the entries in the
2269
folder tree for all MBOX (standard Unix format, also used by Eudora)
2270
files under the given directory. To do this, select the folder in
2271
the tree which you want the new folders to appear under and choose
2272
<TT>"Folder|Import folder tree..."</TT> command.
2273
2274
<P>
2275
2276
<H1><A NAME="SECTION00250000000000000000">
2277
Reading Mail</A>
2278
</H1>
2279
2280
<P>
2281
2282
<H2><A NAME="SECTION00251000000000000000">
2283
The INBOX Folder</A>
2284
</H2>
2285
2286
<P>
2287
<A NAME="INBOX_Folder"></A>The folder named INBOX has a special meaning.
2288
It is the main system mailbox and cannot be deleted or renamed. All
2289
new mail will arrive in here. At present, Mahogany leaves all messages
2290
in the system inbox. Mahogany will collect mail from several different
2291
incoming mailboxes, e.g. the INBOX and some additional POP3 accounts,
2292
and move them to a new folder.
2293
2294
<P>
2295
2296
<H2><A NAME="SECTION00252000000000000000">
2297
The ``New Mail'' Folder</A>
2298
</H2>
2299
2300
<P>
2301
<A NAME="New_Mail_Folder"></A>Created by Mahogany the first time you start
2302
it, this is a file mailbox which by default receives all new mail.
2303
If you mark any folder as incoming, its contents will be checked regularly
2304
and any new mail in it moved to the ``New Mail'' folder. If
2305
you do not like this name, you can change it in the preferences dialog.
2306
Mahogany should in all situations recover from closed connections
2307
or disappearing mailboxes, so it is safe to let it run over long periods
2308
of time. If a server connection times out, you will receive one or
2309
possibly a few error messages but Mahogany will reopen the connection
2310
and continue as usual.
2311
2312
<P>
2313
2314
<H2><A NAME="SECTION00253000000000000000">
2315
Other Folders</A>
2316
</H2>
2317
2318
<P>
2319
The folders are organized in a tree structure: this is purely for
2320
the convenience of the user, so any folder may contain as many other
2321
folders as needed. Folders can be managed either from the top level
2322
menu or from the popup menu in the folder control invoked by pressing
2323
the right mouse button in it. You can group folders together by making
2324
the sub folders of another folder. This builds no physical connection
2325
between the folders but makes the sub folder inherit certain configuration
2326
defaults settings from their parent folder. We will soon add a ``folder
2327
group'' folder type not representing any mailbox but just being
2328
a group of folders.
2329
2330
<P>
2331
2332
<H2><A NAME="SECTION00254000000000000000">
2333
Accessing Mail Remotely</A>
2334
</H2>
2335
2336
<P>
2337
Mahogany supports two protocols for accessing remote mail servers:
2338
POP3 and IMAP. While POP3 is more commonly available, IMAP is definitely
2339
the superiour protocol and should be used where available. It will
2340
generally give you more functionality and will be much faster over
2341
slow connections. Both normally require you to log in with a username
2342
and password, but can be configured to work anonymously if supported
2343
by the server. IMAP additionally allows you to access any mailfolder
2344
file on the remote machine. For example, if you use Mahogany on a
2345
remote machine ``<TT>atwork.company.com</TT>'', you might have
2346
your local <TT>INBOX</TT> (which could be <TT>/var/spool/mail/MyUserName</TT>
2347
on a unix box) and also your ``New Mail'' folder, which usually
2348
is ``<TT>~/.M/New Mail</TT>''. With IMAP, if
2349
you log in from home, you can not only access your INBOX on the atwork.company.com
2350
mail server, but also the ``<TT>New Mail</TT>'' folder there,
2351
by telling Mahogany to use ``<TT>/home/MyUserName/.M/New Mail</TT>''
2352
as the path to the mailbox file. Like this, you can access any mail
2353
folder on that machine that you have access to locally, making remote
2354
access to your mail much more flexible than just accessing your new
2355
messages.
2356
2357
<P>
2358
2359
<H2><A NAME="SECTION00255000000000000000"></A><A NAME="searching"></A>
2360
<BR>
2361
Searching for Messages
2362
</H2>
2363
2364
<P>
2365
There are two ways to search for the messages in Mahogany. One is very simple:
2366
just press <TT>'/'</TT> or <TT>'?'</TT> in the folder view and then use
2367
<TT>'n'</TT> and <TT>'N'</TT> keys to go to the next and previous matches
2368
respectively (see also <A HREF="#keybindings"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>). This allows to only search for a
2369
string in the message header and to do it inside one folder only - but to do
2370
it quickly.
2371
2372
<P>
2373
If you need more powerful search, you should use <TT>"Folder|Search..."</TT>
2374
command which opens the search dialog where you can choose more options. In
2375
particular, you can use buttons there to add other folders to search (by
2376
default only the current folder is searched). If any messages are found, they
2377
are shown in a separate folder view.
2378
2379
<P>
2380
2381
<H2><A NAME="SECTION00256000000000000000">
2382
Filters</A>
2383
</H2>
2384
2385
<P>
2386
2387
<H3><A NAME="SECTION00256100000000000000"></A><A NAME="Filters"></A>
2388
<BR>
2389
Overview
2390
</H3>
2391
2392
<P>
2393
Mahogany has powerful builtin filters. The filters are written in
2394
a real (albeit small and specialized) programming language but there
2395
is also GUI support for creating them. All the existing filters appear
2396
in the dialog shown by the ``Filters rules'' command of the
2397
``Edit'' menu. You can also access the filters configured for
2398
a specific folder by selecting ``Filters'' from the ``Folders''
2399
menu. The difference between these dialogs is that not all filters
2400
are associated with all folder, i.e. you may have two filters and
2401
two folders but the first folder can use only the first filter rule
2402
and the second - only the second one. The global ``Filter rules''
2403
dialog allows you to manage all the filters but after creating a new
2404
one you still must associate it with some folder or folders for it
2405
to be useful.
2406
2407
<P>
2408
After creating some filters you may go to the ``Filters'' dialog
2409
of the ``Folder'' menu (you will also have an opportunity to
2410
go directly there immediately after the filter creation) and check
2411
the filters you would like to use for this folder. The filters are
2412
applied in the order in which they appear in the list, so use the
2413
up and down buttons to arrange them as needed: the order of filters
2414
is important because if one filter had decided to move a message to
2415
another folder the subsequent filters won't process this message at
2416
all.
2417
2418
<P>
2419
2420
<H3><A NAME="SECTION00256200000000000000">
2421
Filter Rule Editor</A>
2422
</H3>
2423
2424
<P>
2425
This dialog allows you to edit an individual filter. You may use the
2426
different controls to compose it, note the ``More'' button which
2427
allows you to add a new condition to the rule. You may notice that
2428
when you change something in the upper part of the dialog, the text
2429
in the lower part is updated to reflect it: this text is the source
2430
of the filter program which Mahogany will apply. By experimenting
2431
with the dialog controls it should be easy to see the different possibilities
2432
of this language. In a few words, it is a C-like language which has
2433
several built-in functions for testing for the various conditions
2434
and performing some actions. All of the usual C operations are supported.
2435
2436
<P>
2437
You may also edit the filter program text directly but be warned that
2438
it will be impossible to use the GUI controls to modify it then because
2439
they are not flexible enough to be able to express an arbitrary filter
2440
program.
2441
2442
<P>
2443
2444
<H3><A NAME="SECTION00256300000000000000">
2445
Quick Filter</A>
2446
</H3>
2447
2448
<P>
2449
There is another, quicker, way to create filters as well: this is
2450
done with ``Quick filter'' command from the ``Message''
2451
menu or the popup menu displayed when you right click the message.
2452
It allows to easily create filters for the most common cases. Note
2453
that you may update the filter rule later using the full-fledged filter
2454
edit dialog if you decide to add more conditions to it, for example.
2455
2456
<P>
2457
2458
<H3><A NAME="SECTION00256400000000000000"></A><A NAME="filterdialogs"></A>
2459
<BR>
2460
Managing Filters
2461
</H3>
2462
2463
<P>
2464
After some time of using the program, you will probably end up with quite a few
2465
filters. Several dialogs in Mahogany will help you with managing them:
2466
2467
<UL>
2468
<LI>The most useful dialog is the one allowing you to edit all the filters
2469
         associated to the current folder and it is accessed using
2470
         <TT>"Folder|Filters..."</TT>. It allows you to add new filters, edit
2471
         existing ones and also to change the order of applying the filters to
2472
         the messages in this folder.
2473
2474
<P>
2475
</LI>
2476
<LI>Another dialog in <TT>"Edit|Filter rules..."</TT> shows you all defined
2477
         filters and also allows you to add new ones or edit or delete the
2478
         existing ones.
2479
2480
<P>
2481
</LI>
2482
<LI>Finally, if you don't know which filter copies the messages to some
2483
         folder, you may use <TT>"Edit|Where is filter..."</TT> command to find
2484
         it out. This is handy if you realize that you want to filter some more
2485
         messages to the given folder - just use this command to quickly find
2486
         the filters you already have for it and add a new condition to an
2487
         existing filter.
2488
</LI>
2489
</UL>
2490
2491
<P>
2492
2493
<H3><A NAME="SECTION00256500000000000000">
2494
Filter Language</A>
2495
</H3>
2496
2497
<P>
2498
Almost, but not quite all constructs of the filter language are accessible from
2499
the GUI editor, so if you need something which it doesn't provide yuo can try
2500
editing the filter text directly. Be warned, however, that you wouldn't be able
2501
to use the GUI again if you do this.
2502
2503
<P>
2504
The syntax of the filter language is very simple. It is C-like but a program
2505
consists just of a sequence of <TT>if</TT> statements. Inside each of them you
2506
can have a condition of (almost) arbitrary complexity using the usual C
2507
operations <TT>&amp;&amp;</TT>, <TT>||</TT> and <TT>!</TT> and the built-in filter
2508
functions. The filter functions correspond to the choices in the GUI dialogs.
2509
2510
<P>
2511
Each test also has the associated code block executed only if it succeeds. Here
2512
again you can use the built-in functions which are the same as the verbs in the
2513
GUI controls.
2514
2515
<P>
2516
2517
<H2><A NAME="SECTION00257000000000000000"></A><A NAME="spam"></A>
2518
<BR>
2519
Spam filtering
2520
</H2>
2521
2522
<P>
2523
Mahogany supports pluggable spam filter modules. In theory it means that
2524
anybody can write such modules but in practice only two of them currently exist
2525
and are described in details below.
2526
2527
<P>
2528
However independently of the spam filters used, the interface to them remains
2529
always the same:
2530
2531
<UL>
2532
<LI>The spam filter options can be edited in
2533
         <TT>"Edit|Spam filters..."</TT> dialog. Mostly you can rely on the
2534
         default values (but see <A HREF="#DSPAM"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
2535
</LI>
2536
<LI>You can check whether the currently selected messages are deemed to
2537
         be spam by using <TT>"Message|Spam|Check message..."</TT> command.
2538
         This is mainly useful for testing, see below for how to check for spam
2539
         automatically.
2540
</LI>
2541
<LI>If a statistical filter mistakenly recognizes a message as spam (so
2542
         called false positive, this should hopefully be very rare) or misses a
2543
         spam message, you can correct its mistake by using the two other
2544
         commands of <TT>"Message|Spam"</TT> submenu. Please note that you
2545
         should <SPAN  CLASS="textit">not</SPAN> use these commands for the messages not seen by the
2546
         spam filter at all, i.e. they don't work for training it but only for
2547
         correcting its errors.
2548
</LI>
2549
</UL>
2550
2551
<P>
2552
To actually use the spam filters you need to configure a filter rule (see
2553
<A HREF="#Filters"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) using them. Usually you just create a rule named "Spam" using
2554
the "Seems to be spam" test and "Move to some Junk folder" (you will need to
2555
create this junk folder too) as its action. If you feel very confident in the
2556
spam filters (or just have backup of your mail somewhere) you can also
2557
configure the rule to delete the messages recognized as spam immediately but
2558
this is not recommended.
2559
2560
<P>
2561
2562
<H3><A NAME="SECTION00257100000000000000">
2563
Simple header analyzer</A>
2564
</H3>
2565
2566
<P>
2567
This is a very simple filter which looks for some common characteristics of
2568
spam mail in the message headers. Its accuracy is much worse than that of DSPAM
2569
but it is also much faster to execute and doesn't need any training. You may
2570
configure its options in the <TT>"Edit|Spam filters..."</TT> dialog.
2571
2572
<P>
2573
2574
<H3><A NAME="SECTION00257200000000000000"></A><A NAME="DSPAM"></A>
2575
<BR>
2576
DSPAM
2577
</H3>
2578
2579
<P>
2580
DSPAM is a statistical spam filter which means that to use it in the optimal
2581
way you need to <SPAN  CLASS="textit">train</SPAN> it first. Just open the <TT>"Edit|Spam
2582
filters..."</TT> dialog and use the <TT>Train</TT> button on the DSPAM page. For the
2583
best results you should train the filter with 2500 spam and 2500 non-spam (ham)
2584
messages. Be warned that this can take a rather long time and also consumes
2585
significant amount of disk space (of order of 50Mb) - however the results are
2586
well worth it.
2587
2588
<P>
2589
If you don't have enough messages to train it with, you can start using it
2590
immediately but in this case you should be ready to manually mark messages as
2591
spams as explained in <A HREF="#spam"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>. Please also remember to actually create a
2592
spam filter rule to really use DSPAM at all.
2593
2594
<P>
2595
2596
<H1><A NAME="SECTION00260000000000000000">
2597
Sending Mail</A>
2598
</H1>
2599
2600
<P>
2601
2602
<H2><A NAME="SECTION00261000000000000000">
2603
To: CC: and BCC: Settings</A>
2604
</H2>
2605
2606
<P>
2607
All of these fields accept either mail addresses, aliases or folder
2608
names. Aliases must be expanded by using the tabulator key or the
2609
Expand button next to the fields. If multiple entries match the text,
2610
you will be prompted with a list to choose from.
2611
2612
<P>
2613
2614
<H3><A NAME="SECTION00261100000000000000">
2615
Using Folder names as an address</A>
2616
</H3>
2617
2618
<P>
2619
Folder names can be entered by prefixing them with a hash ('#') sign.
2620
This will cause a copy of the message to be saved in the folder with
2621
this name. If no such folder exists, it will be created in the mail
2622
folder directory. For example, entering ``joe.user@foo.com, #myMail''
2623
in the To: field, will send the mail to Joe User and save a copy of
2624
it in the folder ``myMail''. Note, that if you have your folders
2625
organised hierarchically, you must specify the full path to the folder
2626
in the folder tree control. An example: If you have a group of folders
2627
in the tree, called ``Work'' and want to save a copy of the
2628
message to the folder ``TODO'' which is a sub-folder of ``Work'',
2629
you need to add ``#Work/TODO'' in the address field. Instead
2630
of using the To: field for this, you can also use CC: or BCC:, there
2631
is no difference.
2632
2633
<P>
2634
2635
<H3><A NAME="SECTION00261200000000000000">
2636
To:</A>
2637
</H3>
2638
2639
<P>
2640
The primary address to which to send the message, multiple addresses
2641
can be entered and must be comma-separated.
2642
2643
<P>
2644
2645
<H3><A NAME="SECTION00261300000000000000">
2646
CC:</A>
2647
</H3>
2648
2649
<P>
2650
CC means Carbon Copy - copies of the message will get sent to the
2651
addresses listed here.
2652
2653
<P>
2654
2655
<H3><A NAME="SECTION00261400000000000000">
2656
BCC:</A>
2657
</H3>
2658
2659
<P>
2660
BCC means Blind Carbon Copy - like CC:, copies will be sent to the
2661
addresses listed here, but the addresses will not be stored in the
2662
mail header. This allows you to send copies without other recipients
2663
of the message knowing about it.
2664
2665
<P>
2666
2667
<H2><A NAME="SECTION00262000000000000000">
2668
Key Bindings in the Message Editor</A>
2669
</H2>
2670
2671
<P>
2672
<BR>
2673
<BR>
2674
<DIV ALIGN="CENTER">
2675
2676
</DIV><TABLE CELLPADDING=3 BORDER="1">
2677
<TR><TD ALIGN="CENTER">Key</TD>
2678
<TD ALIGN="CENTER">Function</TD>
2679
</TR>
2680
<TR><TD ALIGN="CENTER">ALT-D</TD>
2681
<TD ALIGN="CENTER">delete word</TD>
2682
</TR>
2683
<TR><TD ALIGN="CENTER">CTRL-Y</TD>
2684
<TD ALIGN="CENTER">delete line</TD>
2685
</TR>
2686
<TR><TD ALIGN="CENTER">CTRL-U</TD>
2687
<TD ALIGN="CENTER">delete to begin of line</TD>
2688
</TR>
2689
<TR><TD ALIGN="CENTER">CTRL-K</TD>
2690
<TD ALIGN="CENTER">delete to end of line</TD>
2691
</TR>
2692
<TR><TD ALIGN="CENTER">CTRL-C</TD>
2693
<TD ALIGN="CENTER">copy selection to clipboard</TD>
2694
</TR>
2695
<TR><TD ALIGN="CENTER">SHIFT-INSERT</TD>
2696
<TD ALIGN="CENTER">&nbsp;</TD>
2697
</TR>
2698
<TR><TD ALIGN="CENTER">CTRL-X</TD>
2699
<TD ALIGN="CENTER">cut selection to clipboard</TD>
2700
</TR>
2701
<TR><TD ALIGN="CENTER">SHIFT-DELETE</TD>
2702
<TD ALIGN="CENTER">&nbsp;</TD>
2703
</TR>
2704
<TR><TD ALIGN="CENTER">CTRL-V</TD>
2705
<TD ALIGN="CENTER">paste text from clipboard</TD>
2706
</TR>
2707
<TR><TD ALIGN="CENTER">CTRL-INSERT</TD>
2708
<TD ALIGN="CENTER">&nbsp;</TD>
2709
</TR>
2710
<TR><TD ALIGN="CENTER">CTRL-S</TD>
2711
<TD ALIGN="CENTER">search for text</TD>
2712
</TR>
2713
<TR><TD ALIGN="CENTER">CTRL-T</TD>
2714
<TD ALIGN="CENTER">search same text again</TD>
2715
</TR>
2716
</TABLE>
2717
<P>
2718
2719
<BR>
2720
<BR>
2721
2722
<P>
2723
2724
<P>
2725
2726
<H2><A NAME="SECTION00263000000000000000">
2727
Using the address book</A>
2728
</H2>
2729
2730
<P>
2731
Although you may directly enter the addresses of recipients of your
2732
message into the different address fields (``To:``, ``Cc:``
2733
and ``Bcc:`` although the last two are optional and so might
2734
not appear), there is a more convenient way to do it using the address
2735
book. To insert an address fromyour address book you should type the
2736
first few letters of either the ``nick name'' (or the ``alias'')
2737
for this address or the the first letters of the e-mail address and
2738
press &lt;TAB&gt; key or click on the ``Expand'' button. If there
2739
is only one possible expansion for the letters you have typed, Mahogany
2740
will automatically replace them with the corresponding full e-mail
2741
address. Other possible cases: either there are no matches at all
2742
and a message in the status line of the window will tell you so, or
2743
there are more than one match in which case you will be presented
2744
with a choice of all possible completions.
2745
2746
<P>
2747
<SPAN  CLASS="textit">Hint:</SPAN> if you press &lt;TAB&gt; immediately after the address expansion
2748
it will bring you to the next text entry zone and will not attempt
2749
the address expansion the second time.
2750
2751
<P>
2752
A special feature of the address expansion is the so-called ``group
2753
extension'': if you type the first few letters of an address group
2754
name (see ``Address Book Editor'' description for more about
2755
it) it will be replaced by the addresses of all the addresses in this
2756
group. So, for example, if you have a group called ``Friends''
2757
you may type ``fri'' in the ``To:`` text entry zone and
2758
after pressing &lt;TAB&gt; it will be replaced by the e-mail addresses of
2759
all your friends.
2760
2761
<P>
2762
2763
<H2><A NAME="SECTION00264000000000000000">
2764
The Mail Composition Window</A>
2765
</H2>
2766
2767
<P>
2768
<A NAME="MailCompositionWindow"></A>The composition window's appearance
2769
depends on your configuration settings (<A HREF="#ComposePage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>). Generally,
2770
it will at least show text entry fields to specify who to send the
2771
message to, for the subject and a large editing window below for the
2772
actual message itself. It also features an EXPAND button next to the
2773
address field, which allows you to lookup addresses in the currently
2774
loaded addressbooks. If you type in the beginning or a substring of
2775
a name, alias or email address and either press the expand button
2776
or the tabulator key, Mahogany will look up a list of matching addressbook
2777
entries and either expand it directly or prompt you with the matching
2778
choices. This works for the main address field (``To'') as well
2779
as for the carbon copy addresses (``CC'' and ``BCC'').
2780
If you specify an address in the ``CC'' or ``BCC'' fields,
2781
these people will receive a copy of the message. The difference between
2782
them is that the list of addresses in ``CC'' is included in
2783
the message, while the ``BCC'' (blind carbon copy) addresses
2784
will be suppressed in the message keeping them anonymous. If you enter
2785
an address like ``#myfolder'', Mahogany will interpret it as
2786
the name of a mailfolder and save a copy of the message to that folder
2787
(in this case ``myfolder'').
2788
2789
<P>
2790
2791
<H2><A NAME="SECTION00265000000000000000">
2792
The News Article Composition Window</A>
2793
</H2>
2794
2795
<P>
2796
This window is essentially identical to the mail composition window
2797
(<A HREF="#MailCompositionWindow"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>), but instead of specifying a mail address
2798
to send the message to, you can enter one or more newsgroups names
2799
(comma separated). The newsserver used depends on from where this
2800
window was opened, if it was opened while reading a specific newgroup,
2801
it will use the same newsserver that the newsgroup was read from,
2802
otherwise it will fall back to the setting in the global preferences.
2803
2804
<P>
2805
2806
<H1><A NAME="SECTION00270000000000000000">
2807
Message Templates</A>
2808
</H1>
2809
2810
<P>
2811
2812
<H2><A NAME="SECTION00271000000000000000">
2813
What are they?</A>
2814
</H2>
2815
2816
<P>
2817
Mahogany uses the message templates to initialize the text of the new message
2818
whenever you start composing a new mail message or reply to or forward an
2819
existing one. By default, the standard templates are used which are empty for
2820
the "new mail" and "new article" and have some reasonable default values for
2821
the "reply", "forward" and "follow up". However you may define an arbitrary
2822
number of additional templates and also modify the standard ones using the
2823
<TT>"Edit|Templates..."</TT> menu command.
2824
2825
<P>
2826
Beyond customizing the standard templates to suit your tastes, it is also often
2827
useful to define additional templates for the messages you write often. For
2828
example, a system administrator could have some ready to use reply templates
2829
for answering the standard user questions and so on. If you create new
2830
templates, it is convenient to use the <TT>Shift-Ctrl-&lt;X&gt;</TT> versions of the
2831
usual commands, i.e. instead of using <TT>F</TT> in the folder view to forward
2832
a message you may use <TT>Shift-Ctrl-F</TT> to choose the template first. The
2833
same applies to the other commands.
2834
2835
<P>
2836
When you edit the templates in the dialog, most of the functionality is
2837
accessible via the right click menu in the control containing the template
2838
text, however it may sometimes be necessary to edit the templates by hand so
2839
the next section gives a brief description of their syntax.
2840
2841
<P>
2842
2843
<H2><A NAME="SECTION00272000000000000000">
2844
Templates syntax</A>
2845
</H2>
2846
2847
<P>
2848
First of all, any normal text appearing in the template will be copied as is to
2849
the text of the new message. Special constructions are introduced by the
2850
<SPAN  CLASS="textit">variable expansion</SPAN>, that is anything starting with the dollar sign
2851
(<TT>$</TT>). The general syntax of a variable expansion is the following:
2852
<DIV ALIGN="CENTER">
2853
</DIV><PRE>
2854
$([category:]name[?arguments][{+|-|=}&lt;number&gt;[!]])
2855
</PRE>
2856
<DIV ALIGN="CENTER">
2857
</DIV>
2858
(the parentheses around all this may be replaced with braces). For the
2859
simplest cases (no category, no arguments, no justficiation tail) the
2860
parentheses may be omitted entirely, as in <TT>$DATE</TT>.
2861
2862
<P>
2863
The possible values of <SPAN  CLASS="textit">category</SPAN> and <SPAN  CLASS="textit">name</SPAN> are described below.
2864
Both of them are "words", i.e. are sequences of alphabetic characters. The
2865
category also may be implied by using the special brackets: <TT>$`...`</TT>
2866
implies the category <TT>"cmd"</TT>, i.e. executes the command specified inside
2867
the single quotes and <TT>$&lt;...&lt;</TT> implies the category <TT>"file"</TT>
2868
(both of these shortcuts come from standard Unix shell notations).
2869
2870
<P>
2871
The arguments are optional and if they are present are either a
2872
comma-separated list of words (i.e. alphabetic characters only are allowed)
2873
or another variable expansion. For example, the following will insert
2874
the quoted contents of the file after asking the user for a file name
2875
defaulting to foo.bar:
2876
<DIV ALIGN="CENTER">
2877
</DIV><PRE>
2878
$(file:foo.bar?ASK,QUOTE)
2879
</PRE>
2880
<DIV ALIGN="CENTER">
2881
</DIV>
2882
and this example will set the value of the specified header as expected:
2883
<DIV ALIGN="CENTER">
2884
</DIV><PRE>
2885
$(header:X-UnixName?$`whoami`)
2886
</PRE>
2887
<DIV ALIGN="CENTER">
2888
</DIV>
2889
2890
<P>
2891
Finally, the optional tail <TT>{+|-|=}&lt;number&gt;</TT> may be used to justify
2892
the value: <TT>"+"</TT> aligns it to the right, <TT>"-"</TT> (which is default)
2893
to the left and <TT>"="</TT> centers it in the text field of width
2894
<SPAN  CLASS="textit">number</SPAN>. If the number is followed by <TT>"!"</TT>, the value is
2895
truncated if it doesn't fit into the given width instead of taking as much
2896
place as is required for it as it does by default.
2897
2898
<P>
2899
2900
<H2><A NAME="SECTION00273000000000000000">
2901
Template variables</A>
2902
</H2>
2903
2904
<P>
2905
After the description of the general syntax in the previous section, here are
2906
the possible values for the category and name parameter mentioned above:
2907
2908
<P>
2909
2910
<H3><A NAME="SECTION00273100000000000000">
2911
Unnamed category</A>
2912
</H3>
2913
2914
<P>
2915
This category contains the most commonly used variables and allows to write
2916
them in the shortest possible form, i.e. without any parentheses or braces
2917
around them and without the category name. The names in this category are:
2918
2919
<UL>
2920
<LI>date Inserts the current date in the configured format (see the
2921
      "Configure format for displaying dates" button in the "Message view" page
2922
      of the options dialog).
2923
</LI>
2924
<LI>cursor This is a special variable: its expansion is empty and instead
2925
      it has the effect of positioning the cursor at the place where it appears
2926
      in the template when the template expansion is done.
2927
</LI>
2928
<LI>to Shortcut for <TT>${original:to}</TT>
2929
</LI>
2930
<LI>cc Shortcut for <TT>${original:cc}</TT>
2931
</LI>
2932
<LI>subject Shortcut for <TT>${original:subject}</TT>
2933
</LI>
2934
<LI>quote Inserts the contents of the message being replied to or
2935
      forwarded as text. Not valid in new mail or article templates.
2936
</LI>
2937
<LI>quote822 Inserts the contents of the original message as an
2938
      attachment - unlike the previous variable, this allows to insert the
2939
      original message with all the attachments it contains in the new message.
2940
</LI>
2941
<LI>text Same as <TT>$quote</TT> but inserts the original text without
2942
      quoting it, i.e. without quotation marks in front of each line.
2943
</LI>
2944
<LI>sender Expands to the sender address.
2945
</LI>
2946
<LI>signature Expands to the text of your currently configured signature.
2947
</LI>
2948
</UL>
2949
2950
<P>
2951
2952
<H3><A NAME="SECTION00273200000000000000">
2953
Message category</A>
2954
</H3>
2955
2956
<P>
2957
The <TT>"message:"</TT> prefix gives access to the headers of the message being
2958
composed. It allows to use the same message template for composing messages to
2959
different people, for example, by reusing the value of <TT>To:</TT> header in
2960
the message text. It has the following variables:
2961
2962
<P>
2963
2964
<UL>
2965
<LI>to
2966
</LI>
2967
<LI>cc
2968
</LI>
2969
<LI>bcc
2970
</LI>
2971
<LI>subject
2972
</LI>
2973
<LI>firstname
2974
</LI>
2975
<LI>lastname
2976
</LI>
2977
</UL>
2978
2979
<P>
2980
2981
<H3><A NAME="SECTION00273300000000000000">
2982
Original message category</A>
2983
</H3>
2984
2985
<P>
2986
The category <TT>"original:"</TT> gives access to the message being forwarded
2987
or replied to. Accordingly, you can't use this category in the templates for
2988
the new messages.
2989
2990
<P>
2991
2992
<UL>
2993
<LI>date
2994
</LI>
2995
<LI>from
2996
</LI>
2997
<LI>subject
2998
</LI>
2999
<LI>fullname
3000
</LI>
3001
<LI>firstname
3002
</LI>
3003
<LI>lastname
3004
</LI>
3005
<LI>to
3006
</LI>
3007
<LI>cc
3008
</LI>
3009
<LI>replyto
3010
</LI>
3011
<LI>newsgroups
3012
</LI>
3013
<LI>domain
3014
</LI>
3015
<LI>header
3016
</LI>
3017
</UL>
3018
3019
<P>
3020
3021
<H3><A NAME="SECTION00273400000000000000">
3022
File category</A>
3023
</H3>
3024
3025
<P>
3026
The <TT>"file:"</TT> category doesn't contain any fixed names, instead it
3027
allows you to insert the named file in the message text by using (full) path to
3028
it as <SPAN  CLASS="textit">name</SPAN>. There are two arguments: <TT>ask</TT> and <TT>quote</TT>.
3029
The first will ask the user for the file to insert during the template
3030
expansion (with default being the file name in the template) and the second one
3031
will insert the file prepending a quote marker before each of its lines.
3032
3033
<P>
3034
3035
<H3><A NAME="SECTION00273500000000000000">
3036
Attach category</A>
3037
</H3>
3038
3039
<P>
3040
The <TT>"attach:"</TT> category is very similar to the <TT>"file:"</TT> one,
3041
the only difference being that the contents of the file is attached and not
3042
inserted as text. It also supports <TT>ask</TT> but not <TT>quote</TT>
3043
arguments as the latter doesn't make sense for attachments.
3044
3045
<P>
3046
3047
<H3><A NAME="SECTION00273600000000000000">
3048
Command category</A>
3049
</H3>
3050
3051
<P>
3052
Like the two previous one, this category doesn't have any standard names
3053
neither. The syntax <TT>"cmd:<SPAN  CLASS="textit">name</SPAN>"</TT> allows to execute an external
3054
command <SPAN  CLASS="textit">name</SPAN> and insert its output in the message text. The template
3055
arguments are passed to the command as command line parameters.
3056
3057
<P>
3058
3059
<H3><A NAME="SECTION00273700000000000000">
3060
Python category</A>
3061
</H3>
3062
3063
<P>
3064
Very similar to the previous category, this one allows to execute arbitrary
3065
Python scripts. The syntax is <TT>"python:<TT>function</TT>"</TT> and you may
3066
additional string arguments which will be passed to the function.
3067
3068
<P>
3069
Possibility to use Python functions allows to do almost anything in the message
3070
expansion. For example, to use different signatures in replies to different
3071
people all you have to do is to append <TT>"${python:sig?$to}"</TT> at the
3072
end of your reply template and add a Python function like this to your
3073
<TT>Minit.py</TT> file:
3074
<PRE>
3075
   def sig(to):
3076
      if to == "someone@some.where":
3077
         return "Hello someone!"
3078
      elif to == "someoneelse@...":
3079
         return "Goodbye someone else"
3080
      else # general case
3081
         return "No special signature for you, sorry"
3082
</PRE>
3083
3084
<P>
3085
3086
<H3><A NAME="SECTION00273800000000000000">
3087
Header category</A>
3088
</H3>
3089
3090
<P>
3091
Using <TT>"header:"</TT> category you can <SPAN  CLASS="textit">change</SPAN> the values of the
3092
headers of the new message. This is mostly useful in the templates for the
3093
messages which are always sent to the same addressee as then you don't have to
3094
enter it manually each time. The <SPAN  CLASS="textit">name</SPAN> is the name of the header to set
3095
and the (only allowed) argument is its value. Any header names, standard or
3096
not, can be used.
3097
3098
<P>
3099
3100
<H1><A NAME="SECTION00280000000000000000">
3101
Understanding program options</A>
3102
</H1>
3103
3104
<P>
3105
One of the goals of the Mahogany project is to be as configurable
3106
as possible. Of course, it means that Mahogany has a lot of options
3107
- however we hope that it doesn't make the program more difficult
3108
to use because you have the complete liberty to ignore all options
3109
until you need to use them. Moreover, many program options are completely
3110
transparent to the user because they are automatically remembered
3111
by the program. All the other ones may be changed from the main options
3112
dialog which may be invoked from the <TT>"Edit"</TT> menu of any window.
3113
3114
<P>
3115
3116
<H2><A NAME="SECTION00281000000000000000"></A><A NAME="optionshighlight"></A>
3117
<BR>
3118
Hierarchical options organization
3119
</H2>
3120
3121
<P>
3122
Before starting to change options, it is important to understand that Mahogany
3123
configuration settings are inherited in a logical fashion. The settings in the
3124
preferences dialog are the global default settings and can be overridden on a
3125
per-folder basis. The top level folders in the tree use by default the same
3126
global options but you may also edit each folders options via
3127
<TT>"Folder|Properties..."</TT> menu item. Subfolders inherit from their
3128
parent folders and, again, you can change their options independently.
3129
3130
<P>
3131
To make visualizing this mechanism easier, the names of the options with non
3132
default values are highlighted in the options dialog. Those whose values are
3133
set at the level of the folder currently being edited are shown in bright
3134
blue, while those which inherit values from the parent folder are shown in
3135
darker shade of blue. Of coourse, this behaviour in itself is customizable and
3136
the colours may be changed (or disabled completely) in the ``Miscellaneous''
3137
page of the options dialog (<A HREF="#miscellaneouspage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
3138
3139
<P>
3140
3141
<H2><A NAME="SECTION00282000000000000000">
3142
Automatically remembered options</A>
3143
</H2>
3144
3145
<P>
3146
These options include the sizes and the positions of all windows,
3147
the texts of all prompts, the positions of splitters in the main program
3148
window and the other folder views as well as several other things.
3149
These options are special in that they do not appear in the options
3150
dialog and so can not be changed directly - instead Mahogany remembers
3151
them each time it is shut down, so when it is reopened it will be
3152
in exactly the same state as during the last run. Try to play with
3153
it: adjust the sizes of the main program window and the splitters
3154
in it as you like, exit Mahogany and restart it (this is for testing
3155
only, of course, you do not need to do it each time!) - you should
3156
see that the window reappears on the same position (although this
3157
might not work under some window managers), has the same size and
3158
is split in the same manner.
3159
3160
<P>
3161
3162
<H2><A NAME="SECTION00283000000000000000">
3163
Other options</A>
3164
</H2>
3165
3166
<P>
3167
All other options except those mentioned in the previous subsection
3168
can be changed from the program options dialog. This dialog has several
3169
pages which are described in more details below:
3170
3171
<P>
3172
3173
<H3><A NAME="SECTION00283100000000000000">
3174
Identity page</A>
3175
</H3>
3176
3177
<P>
3178
<A NAME="IdentityPage"></A><P>
3179
Here several important settings are configured, so it is advised (as
3180
the program itself will tell you when it is run for the first time)
3181
to set them up before starting using Mahogany. These include your
3182
personal identity settings - see also your preferred mail and news
3183
servers which is configured from the network page (<A HREF="#NetworkPage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
3184
3185
<P>
3186
3187
<UL>
3188
<LI><SPAN  CLASS="textbf">Personal name</SPAN>
3189
<BR>
3190
Your full personal name to be included in your address. This field is free
3191
form. It is not mandatory but should normally be set.
3192
</LI>
3193
<LI><SPAN  CLASS="textbf">Organization</SPAN>
3194
<BR>
3195
This field is optional and may be filled with the name of the organization you
3196
work in. If it is non empty, an appropriate header is automatically added to
3197
all outgoing messages.
3198
</LI>
3199
<LI><SPAN  CLASS="textbf">User name or login</SPAN>
3200
<BR>
3201
This is used as (default) login name for the accounts which require
3202
one (POP3 or IMAP4) and also as the base for the return address unless
3203
it is overridden by explicit setting of the email address below. This field is
3204
mandatory and is usually a single word.
3205
</LI>
3206
<LI><SPAN  CLASS="textbf">E-mail address</SPAN>
3207
<BR>
3208
Your primary address (others can be used if needed). It is used as the default
3209
value of "From:" header and should be set correctly if you want to get replies
3210
to your mail.
3211
</LI>
3212
<LI><SPAN  CLASS="textbf">Reply address</SPAN> 
3213
<BR>
3214
Here you can specify a return mail address if it is different from the email
3215
address above. Usually this is not needed.
3216
</LI>
3217
<LI><SPAN  CLASS="textbf">Domain</SPAN> 
3218
<BR>
3219
This is used as the default domain for local addresses.
3220
</LI>
3221
<LI><SPAN  CLASS="textbf">Set "From:" header from "To:" field</SPAN>
3222
<BR>
3223
If set, Mahogany will use the original <TT>To:</TT> address field
3224
values for the <TT>From:</TT> header entry of any message replies
3225
that you send. This makes sure that the same person sending you mail
3226
will always see the same mail address for you. It is especially useful,
3227
if you collect mail from several different incoming mail folders.
3228
An example: Someone sends you mail to <TT>John.Doe@mycompany.com</TT>.
3229
If you reply to this message, it will appear as coming from <TT>John.Doe@mycompany.com</TT>,
3230
even if you read this mail from home, on a machine called <TT>MyBox.fun.org</TT>.
3231
On the other hand, if someone sends you mail to <TT>MyAlias@writeme.com</TT>,
3232
your reply will carry that as a return address, so that person will
3233
never know about your <TT>mycompany.com</TT> office address. Notice that for
3234
this option to work correctly, you should enter all addresses you usually
3235
receive mail from in the "Addresses" options page (<A HREF="#AddressesPage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
3236
</LI>
3237
<LI><SPAN  CLASS="textbf">And add personal name if needed</SPAN>
3238
<BR>
3239
This option only makes sense if the above one is true and if it is set, then
3240
your personal name will be used if the recipient address didn't contain it.
3241
</LI>
3242
</UL>
3243
3244
<P>
3245
<A NAME="NetworkPage"></A><P>
3246
This page allows you to configure the network-related settings. Please
3247
notice that the four server names (for POP3, IMAP4, SMTP and NNTP)
3248
are only the default values and that Mahogany can use as many different
3249
servers (in particular, POP3 and NNTP) as you wish - for this, it
3250
is just enough to change the server name when creating a new folder
3251
from the default value specified here.
3252
3253
<P>
3254
3255
<UL>
3256
<LI><SPAN  CLASS="textbf">POP server</SPAN>
3257
<BR>
3258
This is the default server for your POP3 mail folders.
3259
</LI>
3260
<LI><SPAN  CLASS="textbf">IMAP server</SPAN>
3261
<BR>
3262
This is the default server for your IMAP mail folders.
3263
</LI>
3264
<LI><SPAN  CLASS="textbf">SMTP server</SPAN>
3265
<BR>
3266
This is the server used for sending outgoing mail, please ask your
3267
system administrator if you don't know its name. This option is disabled
3268
if ``Use local mail transfer agent'' is checked.
3269
</LI>
3270
<LI><SPAN  CLASS="textbf">NNTP server</SPAN>
3271
<BR>
3272
This is the server used for reading USENET newsgroups and posting
3273
news articles.
3274
</LI>
3275
<LI><SPAN  CLASS="textbf">TCP Timeout Values</SPAN>
3276
<BR>
3277
These timeouts are used for all accesses to remote servers. Generally
3278
it is a good idea to set them to small values to avoid unnecessary
3279
delays if something goes wrong. On the other hand, you want to make
3280
sure that they are long enough for slow connections, like for example
3281
through a modem line. If you get a lot of error messages about failed
3282
accesses to remote servers, you should try to increase these settings.
3283
3284
<P>
3285
3286
<UL>
3287
<LI><SPAN  CLASS="textbf">TCP Open Timeout</SPAN> 
3288
<BR>
3289
This setting decides after how many seconds the attempt to open a
3290
connection to a remote mail or newsserver will time out. I.e. if no
3291
connection can be made within this time interval, the request will
3292
fail.
3293
</LI>
3294
<LI><SPAN  CLASS="textbf">TCP Write Timeout</SPAN> 
3295
<BR>
3296
If the attempt to write data to a remote server takes longer than
3297
this, it will fail.
3298
</LI>
3299
<LI><SPAN  CLASS="textbf">TCP Read Timeout</SPAN> 
3300
<BR>
3301
If the attempt to read data from a remote server takes longer than
3302
this, it will fail.
3303
</LI>
3304
<LI><SPAN  CLASS="textbf">TCP Close Timeout</SPAN> 
3305
<BR>
3306
If the attempt to close the connection to a remote server takes longer
3307
than this, it will fail.
3308
</LI>
3309
<LI><SPAN  CLASS="textbf">TCP Rsh Timeout</SPAN> 
3310
<BR>
3311
If the attempt to open a remote shell connection (used for some mail
3312
operations) to a remote server takes longer than this, it will fail.
3313
</LI>
3314
</UL>
3315
</LI>
3316
</UL>
3317
3318
<P>
3319
3320
<H3><A NAME="SECTION00283200000000000000"></A><A NAME="NewMailPage"></A>
3321
<BR>
3322
New Mail Page
3323
</H3>
3324
3325
<P>
3326
This page looks slightly differently in the global preferences dialog
3327
and in the folder properties one as some of the settings here must
3328
be the same for all folders while the others can only be set for a
3329
specific folder. First here is the list of the settings which appear
3330
in the global dialog:
3331
3332
<P>
3333
3334
<UL>
3335
<LI><SPAN  CLASS="textbf">Execute new mail command</SPAN>
3336
<BR>
3337
You may specify a command to execute when new mail is received.
3338
</LI>
3339
<LI><SPAN  CLASS="textbf">Play a sound on new mail</SPAN>
3340
<BR>
3341
You can select a sound file to be played on new mail reception.
3342
</LI>
3343
<LI><SPAN  CLASS="textbf">Show new mail notification</SPAN>
3344
<BR>
3345
If this option is on, Mahogany will show a message about the new mail
3346
in the log window
3347
</LI>
3348
<LI><SPAN  CLASS="textbf">Ping folder interval</SPAN>
3349
<BR>
3350
This setting specifies how often should the currently opened folder(s)
3351
be updated. It is typically smaller than the poll interval below because
3352
it is faster to check an already opened folder, especially when it
3353
is a remote folder.
3354
</LI>
3355
<LI><SPAN  CLASS="textbf">Poll interval</SPAN>
3356
<BR>
3357
How often should Mahogany update the mail folders which it monitors
3358
in the background
3359
</LI>
3360
</UL>
3361
In addition to these settings, the folder ``New Mail'' properties
3362
page also proposes you the following settings:
3363
3364
<P>
3365
3366
<UL>
3367
<LI><SPAN  CLASS="textbf">Configure filters</SPAN>
3368
<BR>
3369
This button gives you access to the filters dialog. Please see the
3370
corresponding manual section (<A HREF="#Filters"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) for more details
3371
</LI>
3372
<LI><SPAN  CLASS="textbf">Collect new mail from this folder</SPAN>
3373
<BR>
3374
If checked, all new mail detected in this folder (either automatically
3375
or manually) not handled by the filters will be copied or moved to
3376
another folder, normally the central ``New Mail'' folder. You
3377
may change the destination folder if you are in advanced user mode.
3378
Of course, copying the new mail to a local folder from remote server
3379
may be time consuming so it may be worth to set the filters deleting
3380
the unwanted spam messages for this folder to avoid downloading them.
3381
</LI>
3382
<LI><SPAN  CLASS="textbf">Leave mail in this folder</SPAN>
3383
<BR>
3384
If this checkbox is checked, the new mail will be copied to the ``New
3385
Mail'' folder and also left in this folder. Otherwise it will be
3386
moved to ``New Mail'' and deleted from this folder.
3387
<BR>
3388
This option is often called ``Leave mail on server'' in the
3389
other email clients.
3390
</LI>
3391
<LI><SPAN  CLASS="textbf">Permanently monitor this folder</SPAN>
3392
<BR>
3393
Choose this to tell Mahogany to poll this folder in the background
3394
periodically (the interval may be set below). If you leave it unset,
3395
you can still trigger new mail detection (including applying filters
3396
to it and/or downloading it from server) by either opening the folder
3397
or updating it (``Open'' and ``Update'' commands in the
3398
``Folder'' manu respectively)
3399
</LI>
3400
<LI><SPAN  CLASS="textbf">Poll folder at startup</SPAN>
3401
<BR>
3402
If on, Mahogany will check for new mail in this folder immediately
3403
after the program launch. Of course, if you have many permanently
3404
monitored folders this can make the program startup quite slow.
3405
</LI>
3406
</UL>
3407
3408
<P>
3409
3410
<H3><A NAME="SECTION00283300000000000000"></A><A NAME="ComposePage"></A>
3411
<BR>
3412
Compose Page 
3413
</H3>
3414
3415
<P>
3416
On this page you may configure different settings which control the
3417
behaviour of the message composer (it is also used when replying or
3418
forwarding mail messages, not only for composing the new ones).
3419
3420
<P>
3421
3422
<UL>
3423
<LI><SPAN  CLASS="textbf">Save sent messages</SPAN>
3424
<BR>
3425
If enabled, Mahogany will keep a copy of each message you send.
3426
</LI>
3427
<LI><SPAN  CLASS="textbf">Folder file for sent messages</SPAN>
3428
<BR>
3429
Where you want Mahogany to save the copies of sent messages.
3430
</LI>
3431
<LI><SPAN  CLASS="textbf">Wrap margin</SPAN>
3432
<BR>
3433
If set to a value greater than zero, the message editor will wrap
3434
lines for you at that margin. It is recommended to set it at number
3435
less than 75, otherwise the lines in your mail messages might become
3436
too long to be conveniently read.
3437
</LI>
3438
<LI><SPAN  CLASS="textbf">Reply string in subject</SPAN>
3439
<BR>
3440
The prefix for subject lines in message replies, usually set to ``Re:``
3441
</LI>
3442
<LI><SPAN  CLASS="textbf">Collapse reply marker</SPAN>
3443
<BR>
3444
Mahogany can collapse multiple reply markers (such as ``Re:``)
3445
into one in three different ways:
3446
3447
<P>
3448
3449
<UL>
3450
<LI>no : do not collapse reply markers
3451
</LI>
3452
<LI>collapse : collapse them into one
3453
</LI>
3454
<LI>count : collapse them into one and add a counter for the reply level,
3455
such as ``Re[2]:``
3456
</LI>
3457
</UL>
3458
</LI>
3459
<LI><SPAN  CLASS="textbf">Quote character</SPAN>
3460
<BR>
3461
The text inserted before each line of the quoted message when replying.
3462
</LI>
3463
<LI><SPAN  CLASS="textbf">Use signature</SPAN>
3464
<BR>
3465
If enabled, Mahogany will append the contents of your signature file
3466
to each message sent.
3467
</LI>
3468
<LI><SPAN  CLASS="textbf">Use signature separator</SPAN>
3469
<BR>
3470
If enabled, your signature will be separated from the text with two
3471
dashes. This is a common Internet/Usenet convention.
3472
</LI>
3473
<LI><SPAN  CLASS="textbf">Use XFace</SPAN>
3474
<BR>
3475
XFaces are small black and white bitmaps which can be added to the
3476
message header to identify the sender. Mahogany will recognise and
3477
display them if enabled. It will also attempt to load your XFace from
3478
the file specified and send it with messages you write. If you do
3479
not have your own XFace file, Mahogany will use its own default XFace.
3480
</LI>
3481
<LI><SPAN  CLASS="textbf">XFace file</SPAN>
3482
<BR>
3483
This file must contain a 48x48 pixel black and white image. Most image
3484
formats should be recognised, XPM is recommended. If the file cannot
3485
be loaded, the default XFace will be substituted.
3486
</LI>
3487
<LI><SPAN  CLASS="textbf">Mail alias substring expansion</SPAN>
3488
<BR>
3489
If enabled, the EXPAND button will search the mail address databases
3490
using substring search rather than just comparing the text against
3491
the beginning of addresses and aliases. Produces many more matches
3492
than the default search and might take a bit longer.
3493
</LI>
3494
<LI><SPAN  CLASS="textbf">Font family, font sizes, foreground colour, background colour</SPAN>
3495
<BR>
3496
These settings determine the appearance of the composition window's
3497
message editor.
3498
</LI>
3499
<LI><SPAN  CLASS="textbf">Configure headers</SPAN>
3500
<BR>
3501
Allows you to specify default values for the To:, CC: and BCC: fields
3502
and whether to display them in the compose view or not. Hint: you
3503
may want to configure the folder where you collect all messages from
3504
some person (or the mailing list) to have this persons reply address
3505
default value for the ``To:`` field.
3506
<BR>
3507
<BR>
3508
The dialog shown will also allow you to edit the custom headers for
3509
outgoing messages (i.e. add arbitrary additional headers) if the user
3510
level (<A HREF="#UserLevel"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) is set to ``Advanced''.
3511
</LI>
3512
</UL>
3513
3514
<P>
3515
3516
<H3><A NAME="SECTION00283400000000000000">
3517
Folders page</A>
3518
</H3>
3519
3520
<P>
3521
3522
<UL>
3523
<LI><SPAN  CLASS="textbf">Folders to open on startup</SPAN>
3524
<BR>
3525
Mahogany will open these folders on program startup.
3526
</LI>
3527
<LI><SPAN  CLASS="textbf">Folder opened in main frame</SPAN>
3528
<BR>
3529
This specifies the folder to open in the main frame on program startup.
3530
It will be automatically remembered each time you exit Mahogany.
3531
</LI>
3532
<LI><SPAN  CLASS="textbf">Poll for new mail delay</SPAN>
3533
<BR>
3534
Mahogany will check all incoming mailboxes for new mail. Specify the
3535
time between checks in seconds here. Notice that each check causes
3536
a short delay as Mahogany polls the folders, set it to a longer value
3537
to reduce the annoying screen updates, set it to a shorter value if
3538
you care about receiving your new mail with little delay.
3539
</LI>
3540
<LI><SPAN  CLASS="textbf">Ping/check folder interval in seconds</SPAN>
3541
<BR>
3542
Mahogany checks periodically whether the opened folders are still
3543
``alive'' (a folder may become dead if, for example, the remote
3544
server goes down or the network link fails).
3545
</LI>
3546
<LI><SPAN  CLASS="textbf">Automatically select first message in viewer</SPAN>
3547
<BR>
3548
If enabled, Mahogany will automatically select and display the first
3549
message in the message viewer whenever you open a folder. This can
3550
be inconvenient if you want to just look at headers without downloading
3551
messages over a slow link.
3552
</LI>
3553
<LI><SPAN  CLASS="textbf">Threshold for displaying progress dialog</SPAN>
3554
<BR>
3555
Mahogany will display progress dialogs when parsing mail folders or
3556
querying servers. If the number of messages is less than this threshold
3557
value, the progress dialog will be suppressed - play with this setting
3558
and set it to the value which doesn't show the progress dialogs which
3559
disappear too quickly, but still shows them if the operation lasts
3560
a long time.
3561
</LI>
3562
<LI><SPAN  CLASS="textbf">Create "folder internal data" message</SPAN>
3563
<BR>
3564
Mahogany normally creates hidden message entitled "don't delete this
3565
message - folder internal data" to store its private data. This is done
3566
only with Unix mailbox and MMDF formats, because other formats have
3567
built-in mechanisms for storing folder properties. This allows Mahogany
3568
to provide extra functionality, but it confuses new mail notification
3569
programs and it looks ugly in mail software that doesn't support it.
3570
Unchecking this option prevents Mahogany from creating new such messages
3571
and you can delete previously created messages using text editor. Keep
3572
in mind many other programs can create such messages and this option
3573
applies only to Mahogany.
3574
</LI>
3575
</UL>
3576
3577
<P>
3578
3579
<H3><A NAME="SECTION00283500000000000000"></A><A NAME="PythonOptions"></A>
3580
<BR>
3581
Python page
3582
</H3>
3583
3584
<P>
3585
(This page is only present if you have a Python-enabled version of Mahogany)
3586
3587
<P>
3588
3589
<UL>
3590
<LI><SPAN  CLASS="textbf">Enable Python</SPAN>
3591
<BR>
3592
Enables the built-in python interpreter which can be used to extend
3593
Mahogany. It is not essential for normal operation, but if you want
3594
to do unusual things, python gives you the power to do practically
3595
anything you want with the program.
3596
</LI>
3597
<LI><SPAN  CLASS="textbf">Python DLL</SPAN>
3598
<BR>
3599
This option is only present if Mahogany is configured to load Python
3600
interpreter from a shared library (also known as DLL under Windows).
3601
You should only use it if you have Python DLL installed in a non standard
3602
location where Mahogany can't find it or if you have several Python versions
3603
installed and you want to use a different one from the one Mahogany
3604
automatically detects.
3605
</LI>
3606
<LI><SPAN  CLASS="textbf">Python Path</SPAN>
3607
<BR>
3608
Where to search for python files.
3609
</LI>
3610
<LI><SPAN  CLASS="textbf">Startup script</SPAN>
3611
<BR>
3612
The name of a python script which will be executed at program startup.
3613
</LI>
3614
</UL>
3615
3616
<P>
3617
3618
<H4><A NAME="SECTION00283510000000000000">
3619
Callbacks</A>
3620
</H4>
3621
3622
<P>
3623
Callbacks are python functions that can be called from different parts
3624
of Mahogany's code. See the section <A HREF="#pythonhooks"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> for more information on
3625
this.
3626
3627
<P>
3628
3629
<UL>
3630
<LI><SPAN  CLASS="textbf">Folder open callback</SPAN>
3631
</LI>
3632
<LI><SPAN  CLASS="textbf">Folder update callback</SPAN>
3633
</LI>
3634
<LI><SPAN  CLASS="textbf">Folder expunge callback</SPAN>
3635
</LI>
3636
<LI><SPAN  CLASS="textbf">Flag set callback</SPAN>
3637
</LI>
3638
<LI><SPAN  CLASS="textbf">Flag clear callback</SPAN>
3639
</LI>
3640
</UL>
3641
3642
<P>
3643
3644
<H3><A NAME="SECTION00283600000000000000">
3645
Message Viewer</A>
3646
</H3>
3647
3648
<P>
3649
3650
<UL>
3651
<LI><SPAN  CLASS="textbf"><A NAME="MessageViewerPage"></A>Preview message when selected</SPAN>
3652
<BR>
3653
When this option is set, any message that gets selected in the list
3654
of messages will get pre-viewed automatically. If using a modem connection,
3655
it makes sense to disable it, so messages will only get loaded and
3656
pre-viewed when double-clicked upon or when the 'V' key is pressed.
3657
By default, this is enabled, so that clicking on a message or pressing
3658
the spacebar to select it, will also pre-view it.
3659
</LI>
3660
<LI><SPAN  CLASS="textbf">Font family, font size, foreground colour, background colour,
3661
colour for URLs, colour for header names, colour for header values</SPAN>
3662
<BR>
3663
These settings control the appearance of messages in the message viewer
3664
window. Mahogany will detect URLs embedded in messages and by using
3665
a different colour for them, can highlight them. When the user clicks
3666
on a URL, it will be opened in an external browser.
3667
</LI>
3668
<LI><SPAN  CLASS="textbf">Inline graphics</SPAN>
3669
<BR>
3670
If enabled, Mahogany will display images included as MIME content
3671
in the message window. If disabled, images will be represented by
3672
a filetype icon like any other MIME content.
3673
</LI>
3674
<LI><SPAN  CLASS="textbf">Conversion graphics format</SPAN>
3675
<BR>
3676
Mahogany uses an external conversion program (<A HREF="#HelpersPage"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
3677
for image formats which it does not support natively. Here you can
3678
chose one of the natively supported formats to use for the conversion.
3679
At present, the most reliable format appears to be XPM. If configured
3680
properly and all libraries are available, Mahogany should support
3681
XPM, PNG, JPEG and BMP. Notice that XPM files are extremely large,
3682
so you might want to change this setting to one of the other formats.
3683
</LI>
3684
<LI><SPAN  CLASS="textbf">Support special fax mailers</SPAN>
3685
<BR>
3686
This enables support for domains sending faxes by email, such as the
3687
<A NAME="tex2html7"
3688
  HREF="http://www.efax.com/">EFAX</A>
3689
fax to email gateway.
3690
Faxes are sent as MIME attachments and need treatment different from
3691
normal images.
3692
</LI>
3693
<LI><SPAN  CLASS="textbf">Domains sending faxes</SPAN>
3694
<BR>
3695
This is a colon-separated list of domains sending faxes. All IMAGE/TIFF
3696
or APPLICATION/OCTET-STREAM MIME content in mails coming from these
3697
domains will be treated as TIFF-G3 faxes. Note that the strings in
3698
this field do not need to be real domain names but are substrings
3699
looked for in the sender's email address.
3700
</LI>
3701
<LI><SPAN  CLASS="textbf">Maximum size of message</SPAN>
3702
<BR>
3703
If you attempt to view a message larger than this limit, Mahogany
3704
will prompt you for confirmation. This is to prevent you from accidentally
3705
downloading large messages over a slow remote connection. Setting
3706
it to 0 will disable this. The limit is not applied to mailfolder
3707
files.
3708
</LI>
3709
<LI><SPAN  CLASS="textbf">Maximum number of messages</SPAN>
3710
<BR>
3711
If you open a folder with more than this limit of messages, Mahogany
3712
will ask you whether you want to limit the amount of messages downloaded
3713
(or partially downloaded). Again, this is to prevent you from accidentally
3714
downloading huge numbers of messages over a slow remote connection.
3715
Setting it to 0 disables this. It does not apply to mailfolder files.
3716
Also, for NNTP connections, this might be triggered although there
3717
could be less messages in the newsgroup, as at the time of testing
3718
the number of unread messages is not know yet.
3719
</LI>
3720
<LI><SPAN  CLASS="textbf">Configure headers to show</SPAN>
3721
<BR>
3722
This allows you to chose from a list of the most commonly viewed header
3723
lines, which you would like to display together with the message contents.
3724
By default, To:, From:, Subject: and Date: are shown. Note that you
3725
can always view the complete header information or the raw message
3726
text, no matter what you chose here.
3727
</LI>
3728
<LI><SPAN  CLASS="textbf">Configure Date Format</SPAN>
3729
<BR>
3730
This will pop up a sub-dialog (<A HREF="#date_format_dialog"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) for setting
3731
the format for displaying dates.
3732
</LI>
3733
</UL>
3734
3735
<P>
3736
3737
<H3><A NAME="SECTION00283700000000000000">
3738
Addresses page</A>
3739
</H3>
3740
3741
<P>
3742
Mahogany may automatically remember all addresses from all e-mail
3743
messages you receive (actually, only those which you read). This is
3744
called <SPAN  CLASS="textit">address autocollection</SPAN> and, as almost any other feature
3745
of Mahogany can be turned on and off as desired. In this page you
3746
may choose whether you want to use this feature at all (it is on by
3747
default) and, if so, where should be the autocollected addresses be
3748
put and other settings. See the Addressbook section (<A HREF="#AddressDatabase"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)
3749
for more information on Mahogany's built-in addressbook.
3750
3751
<P>
3752
3753
<UL>
3754
<LI><SPAN  CLASS="textbf">Address to replace with "To"</SPAN>
3755
<BR>
3756
The addresses in this listbox are considered to be your own addresses. It is
3757
not necessary to add the primary email address here but you can add as many of
3758
other addresses as needed. You can use the <TT>*</TT> wildcard in the
3759
addresses here to stand for any number of arbitrary characters.
3760
</LI>
3761
<LI><SPAN  CLASS="textbf">Mailing list addresses</SPAN>
3762
<BR>
3763
If the "Reply to list" command doesn't work you should enter the mailing list
3764
address here. Normally this is not necessary as modern mailing list software
3765
usually identifies itself correctly in the message headers anyhow.
3766
</LI>
3767
<LI><SPAN  CLASS="textbf">Autocollect addresses</SPAN>
3768
<BR>
3769
You may choose ``No'' to disable autocollecting addresses completely,
3770
or choose ``Yes'' to always autocollect them. The remaining
3771
option, ``Ask'', means that you will be presented with a message
3772
box each time an address is about to be autocollected.
3773
</LI>
3774
<LI><SPAN  CLASS="textbf">Address book to use</SPAN>
3775
<BR>
3776
You may enter the path of the address book to use for autocollected
3777
addresses. Although you may use any address book for this, it is probably
3778
better to have a special address book for all autocollected addresses.
3779
If the path name given here is an absolute one, it is used as is.
3780
Otherwise, it is considered to be relative to your Mahogany directory.
3781
For example, the default for this option is ``autocollect.adb''
3782
and so the default autocollect book will be created in 
3783
<BR>$HOME/.M/<SMALL>AUTOCOLLECT.ADB</SMALL> 
3784
<BR>
3785
under Unix.
3786
</LI>
3787
<LI><SPAN  CLASS="textbf">Collect addresses in outgoing mail</SPAN>
3788
<BR>
3789
If autocollection is activated above and this option is checked, the addresses
3790
in the outgoing mail will be automatically collected as well.
3791
</LI>
3792
<LI><SPAN  CLASS="textbf">Ignore addresses without names</SPAN>
3793
<BR>
3794
You may with to autocollect only addresses which have a full name
3795
- in this case you should check this option. If it is off and the
3796
address has no name, the first part of e-mail address (the one preceding
3797
the '@' symbol) will be used instead of the name.
3798
</LI>
3799
<LI><SPAN  CLASS="textbf">Whitelist</SPAN>
3800
<BR>
3801
Spam filter option "No match in whitelist" uses this address book.
3802
</LI>
3803
</UL>
3804
3805
<P>
3806
In addition to its own built-in addressbook format, Mahogany also
3807
supports the addressbook files of the BBDB addressbook used with Emacs
3808
(see <A HREF="#BBDB"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>). Some settings can be set here which apply only
3809
to the BBDB addressbook support:
3810
3811
<P>
3812
3813
<UL>
3814
<LI><SPAN  CLASS="textbf">Ignore entries without names</SPAN>
3815
<BR>
3816
BBDB can store entries which have only an e-mail address with them,
3817
but no name. If you set this option, Mahogany will discard such entries.
3818
</LI>
3819
<LI><SPAN  CLASS="textbf">Generate unique aliases</SPAN>
3820
<BR>
3821
Setting this option allows Mahogany to ensure that all aliases are
3822
unique. If two entries have the same alias, one of them will be modified
3823
to distinguish them. This is especially useful in conjuction with
3824
the following option. If this option is set, reading in of BBDB addressbooks
3825
is slowed down considerably. However, setting it once, then saving
3826
the addressbook and disabling it, will make sure that all aliases
3827
are unique without slowing down subsequent loading of the addressbook
3828
the next time it is used.
3829
</LI>
3830
<LI><SPAN  CLASS="textbf">Name for nameless entries</SPAN>
3831
<BR>
3832
If Mahogany finds entries without a name and is not set to ignore
3833
it, this name will be used for such entries. It can be combined with
3834
the option to generate unique aliases.
3835
</LI>
3836
<LI><SPAN  CLASS="textbf">Save on exit</SPAN>
3837
<BR>
3838
As saving BBDB addressbook can potentially lead to some loss of information
3839
in the original database file (BBDB and Mahogany support different
3840
fields), you can choose whether you want Mahogany to automatically
3841
save the data on exit or ask you for confirmation. Read section <A HREF="#BBDB"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>
3842
for more details about how BBDB and Mahogany differ in interpreting
3843
the database.
3844
</LI>
3845
</UL>
3846
3847
<P>
3848
3849
<H4><A NAME="SECTION00283710000000000000">
3850
Helpers</A>
3851
</H4>
3852
3853
<P>
3854
<A NAME="HelpersPage"></A>On this page you can customise which external
3855
helper applications Mahogany uses for different action that it does
3856
not perform itself.
3857
3858
<P>
3859
3860
<UL>
3861
<LI><SPAN  CLASS="textbf">Open URLs with</SPAN>
3862
<BR>
3863
Mahogany will use the program listed here to open URLs embedded in
3864
email messages. If you want to use Lynx as your Web browser you should
3865
prefix it with ``xterm -e'' under Unix in order to open Lynx
3866
in a separate window. For example, you may use <SMALL>XTERM -T </SMALL>L<SMALL>YNX
3867
-E </SMALL>L<SMALL>YNX.</SMALL>
3868
</LI>
3869
<LI><SPAN  CLASS="textbf">URL browser is Netscape</SPAN>
3870
<BR>
3871
If the browser used to open URLs belongs to the family of Netscape
3872
programs, tick this box. Instead of calling a new browser each time,
3873
Mahogany will tell the already running Netscape process to load the
3874
new URL. Also, don't forget to clear it if you use another browser
3875
- otherwise it will fail to start up.
3876
</LI>
3877
<LI><SPAN  CLASS="textbf">Help viewer</SPAN>
3878
<BR>
3879
The program listed here will be used to view the online help system
3880
in HTML format. Any simple HTML viewer can be used here.
3881
</LI>
3882
<LI><SPAN  CLASS="textbf">Help viewer is Netscape</SPAN>
3883
<BR>
3884
Just like the option for the URL browser, this will take talk to an
3885
already running Netscape process instead of opening a new one each
3886
time.
3887
</LI>
3888
<LI><SPAN  CLASS="textbf">External editor</SPAN>
3889
<BR>
3890
This is the external editor which will be invoked if you choose ``External
3891
editor...'' from the compose view menu. You should use the ``%s''
3892
characters to indicate the place where the file name will be inserted
3893
in the command line (if you don't do it, an implicit ``%s''
3894
will be added to the end of the string).
3895
</LI>
3896
<LI><SPAN  CLASS="textbf">New Mail Command</SPAN>
3897
<BR>
3898
The line in this field will be executed whenever Mahogany receives
3899
new mail. This can be used to play a sound to notify the user of incoming
3900
messages, or do something else to alert him.
3901
</LI>
3902
</UL>
3903
3904
<P>
3905
3906
<H3><A NAME="SECTION00283800000000000000"></A><A NAME="miscellaneouspage"></A>
3907
<BR>
3908
Miscellaneous
3909
</H3>
3910
3911
<P>
3912
All options which don't fit in any other pages are collected here.
3913
3914
<P>
3915
3916
<UL>
3917
<LI><SPAN  CLASS="textbf">Show log window</SPAN>
3918
<BR>
3919
If this option is on, the log window showing all program messages
3920
will be displayed during program execution. It is advised to leave
3921
it on because the log messages (which can be saved to a file from
3922
the log window menu) can be valuable for the bug reports.
3923
</LI>
3924
<LI><SPAN  CLASS="textbf">Debug server and mail folder access</SPAN><A NAME="debugoption"></A>
3925
<BR>
3926
This is another troubleshooting option: please turn it on if you experience
3927
any mail-related problems (either sending or receiving). It slows
3928
down the program a lot but allows to see what exactly is going on
3929
between the client and the server and this can be of great help sometimes.
3930
</LI>
3931
<LI><SPAN  CLASS="textbf">Splash screen on startup</SPAN>
3932
<BR>
3933
If this option is on, a splash screen is shown on startup. It will
3934
go away when clicked with the mouse or when a given delay (see the
3935
next item) expires.
3936
</LI>
3937
<LI><SPAN  CLASS="textbf">Splash screen delay</SPAN>
3938
<BR>
3939
The delay after which the splash screen disappears.
3940
</LI>
3941
<LI><SPAN  CLASS="textbf">Autosave delay</SPAN>
3942
<BR>
3943
This option allows to automatically save all program settings (but
3944
not messages being composed so far) each time the given delay (in
3945
seconds) passes. It can be disabled by setting the delay to 0, but
3946
it is advised to leave it enabled - so that your changes to the program
3947
configuration will be always saved.
3948
</LI>
3949
<LI><SPAN  CLASS="textbf">Confirm exit</SPAN>
3950
<BR>
3951
If this options is on, you will be asked whether you want to leave
3952
the program each time before exiting. The checkbox on the message
3953
box with this question can be used to change the value of this option
3954
as well.
3955
</LI>
3956
<LI><SPAN  CLASS="textbf">Click folder to open<A NAME="clicktoopen"></A></SPAN>
3957
<BR>
3958
If this option is on, it is enough to select (for example, by clicking
3959
on it) a folder in the folder tree control in the main window to open
3960
it in the integrated folder view. Double clicking the folder or choosing
3961
``Open'' from the popup menu will open folder in a separate
3962
window. This approach has a drawback of being a little slow with either
3963
very big folders or on slow machines/network connections, so an alternative
3964
way is to uncheck this checkbox. Then double clicking a folder will
3965
be needed to open it in the integrated folder view - while ``Open''
3966
popup menu item will still open it in a separate window.
3967
</LI>
3968
<LI><SPAN  CLASS="textbf">Always run only one instance</SPAN><A NAME="onlyoneinstance"></A>
3969
<BR>
3970
If this option is on and you launch another instance of Mahogany, i.e. execute
3971
it again while another copy of it is still running, the control will be given
3972
to the already running instance instead of launching another one in parallel.
3973
3974
<P>
3975
This is especially useful when Mahogany is configured as your default mail
3976
client as otherwise another copy of it would have to be opened each time when
3977
you start writing a new message.
3978
3979
<P>
3980
</LI>
3981
<LI><SPAN  CLASS="textbf">Show option values origin</SPAN>
3982
<BR>
3983
This item controls highlighting of the names of the options which have non
3984
default values. It is on by default.
3985
</LI>
3986
<LI><SPAN  CLASS="textbf">Colour for options set here</SPAN>
3987
<BR>
3988
Only used if the option above is on and allows to choose the colour used for
3989
highlighting the options set at this folder level.
3990
</LI>
3991
<LI><SPAN  CLASS="textbf">Colour for inherited options</SPAN>
3992
<BR>
3993
Same as the option above but for the options which have inherited their (non
3994
default) value from their parent folder.
3995
3996
<P>
3997
</LI>
3998
<LI><SPAN  CLASS="textbf">Show new mail notification</SPAN>
3999
<BR>
4000
If this option is on, a message box will be shown each time new messages
4001
are received.
4002
</LI>
4003
<LI><SPAN  CLASS="textbf">Path where to find AFM files</SPAN> (Unix version only)
4004
<BR>
4005
To properly scale printing under Unix, Mahogany needs access to a
4006
set of AFM files. The searchpath where to look for them can be modified
4007
here.
4008
</LI>
4009
<LI><SPAN  CLASS="textbf">Remote configuration synchronisation settings</SPAN>
4010
<BR>
4011
Please refer to the section below for a detailed explanation.
4012
</LI>
4013
</UL>
4014
4015
<P>
4016
4017
<H2><A NAME="SECTION00284000000000000000">
4018
Remote configuration synchronisation</A>
4019
</H2>
4020
4021
<P>
4022
Mahogany can automatically save a subset of its configuration settings
4023
in a mailbox at program exit and automatically retrieve that information
4024
the next time it is started up. This option becomes useful if you
4025
are using the program from different systems, e.g. if sometimes from
4026
the office and some other times from home over a dialup link. In this
4027
case, you can save some settings in a special IMAP folder and tell
4028
the program to use this for some of the settings. Like that, you can
4029
share the program settings no matter from where you run Mahogany and
4030
you do not need to manually adjust both configurations.
4031
4032
<P>
4033
To use this option, first create a folder on an IMAP server. Do not
4034
use a POP3 server, as the program cannot store information via POP3,
4035
IMAP is required for this to work. Then, activate the ``Sync options
4036
with remote server'' setting and choose which settings you wish
4037
to share. Currently supported are:
4038
4039
<P>
4040
4041
<UL>
4042
<LI><SPAN  CLASS="textbf">Sync Filter Rules</SPAN>: This keeps the global list of all filter
4043
rules synchronised via the IMAP folder. Very useful if you want to
4044
use the same set of filter rules no matter where you run Mahogany.
4045
</LI>
4046
<LI><SPAN  CLASS="textbf">Sync Identities</SPAN>: This keeps the list of available identity
4047
settings synchronised. Be careful: some things such as server settings
4048
might cause problems if they are used on a machine with different
4049
network settings.
4050
</LI>
4051
<LI><SPAN  CLASS="textbf">Sync part of the folder tree</SPAN>: This allows you to synchronise
4052
a complete sub-tree of the mailbox/folder tree. Activate this and
4053
pick a group of folders from the tree (Click on the [&gt;&gt;]
4054
button to choose one.) and this tree of folders will be available
4055
no matter from where you run Mahogany. Note: this only makes sense
4056
if the folder group contains networked folders which are accessible
4057
from both machines. It synchronises configuration information, not
4058
folder contents. So you cannot access a mailbox file residing on one
4059
machine via this mechanism, but you can share configuration entries
4060
for remote mailboxes, such as IMAP, POP3 or newsgroups.
4061
</LI>
4062
</UL>
4063
4064
<P>
4065
4066
<H2><A NAME="SECTION00285000000000000000">
4067
Some Other Dialogs You May Encounter</A>
4068
</H2>
4069
4070
<P>
4071
4072
<H3><A NAME="SECTION00285100000000000000">
4073
Date Format</A>
4074
</H3>
4075
4076
<P>
4077
<A NAME="date_format_dialog"></A>The dates of messages for the list of headers
4078
can be displayed in a format of your choice. The same format is used
4079
for inserting the current date in templates when writing messages.
4080
The format of the date is controlled by a list of format specifiers
4081
(as accepted by the <TT>strftime()</TT> function in the c-library).
4082
Most of the available format specifiers are available via a little
4083
popup menu which appears if you press the right-mouse button in the
4084
input field.
4085
4086
<P>
4087
4088
<H4><A NAME="SECTION00285110000000000000">
4089
Display time in GMT/UST</A>
4090
</H4>
4091
4092
<P>
4093
If you tick this box, all times will be displayed in Greenwich Mean
4094
Time (= Universal Standard Time) rather than local time. If not checked,
4095
all dates and times will be displayed in your own timezone. <SPAN  CLASS="textit">Note
4096
that the time and date displayed is not the local time in the sender's
4097
timezone but the time it was in your local timezone when the message
4098
was sent.</SPAN>
4099
4100
<P>
4101
4102
<H3><A NAME="SECTION00285200000000000000">
4103
Message Sorting Dialog</A>
4104
</H3>
4105
4106
<P>
4107
Here you can choose the criteria for sorting mailfolder listings.
4108
If you want to use message score as a sort criterium, you need to
4109
have a plugin module loaded which provides the ``Scoring'' interface.
4110
At time of writing no such plugin is available, it will appear soon,
4111
though.
4112
4113
<P>
4114
4115
<H4><A NAME="SECTION00285210000000000000">
4116
Use Threading</A>
4117
</H4>
4118
4119
<P>
4120
If you tick this box, all messages will be threaded, i.e. sorted in
4121
hierarchical orders, with replies following earlier messages in the
4122
same discussion thread.
4123
4124
<P>
4125
4126
<H4><A NAME="SECTION00285220000000000000">
4127
Re-Sort on status change</A>
4128
</H4>
4129
4130
<P>
4131
The effect of this option feels a bit strange at first and you might
4132
not like it. If selected, the messages will be re-sorted each time
4133
the status of a message changes. If you sort messages by message status
4134
and delete a message, it will immediately drop to the bottom of the
4135
list. Useful to always maintain a strict sorting order, but can be
4136
confusing.
4137
4138
<P>
4139
4140
<H2><A NAME="SECTION00286000000000000000">
4141
Mahogany Plugin Modules</A>
4142
</H2>
4143
4144
<P>
4145
<A NAME="Modules"></A>Mahogany can load plugin modules at runtime to extend
4146
its functionality. Currently we are working on plugins to supply PGP/GPG
4147
encryption support and a scoring engine for sorting mailfolder listings.
4148
A plugin to use IBM's ViaVoice will be started work on as soon as
4149
the Debian/Linux ``Potato'' release becomes stable.
4150
4151
<P>
4152
Generally, if you want to write an extension for Mahogany without
4153
using Python (which we hope to turn into a plugin, too, soon), you
4154
can do that very easily by writing it as a plugin module. Get in touch
4155
with the developers and we will show you how to do so.
4156
4157
<P>
4158
4159
<H3><A NAME="SECTION00286100000000000000">
4160
The Plugin Module Configuration Dialog</A>
4161
</H3>
4162
4163
<P>
4164
This dialog allows you to decide which plugins get loaded at program
4165
start. At present, modules don't get loaded/unloaded at runtime, so
4166
you need to restart Mahogany for these options to take effect. On
4167
the top left you see a list of all modules that Mahogany has found
4168
in either the global <TT>modules</TT> directory or in your local directory
4169
(<TT>$HOME/.M/modules/</TT>). The window below shows some information
4170
about the module currently selected in the list, such as the name,
4171
author, a description of what it does and the name of the interface
4172
it provides. The interface would e.g. be ``Scoring'' for the
4173
plugin providing the functionality for scoring messages and is used
4174
by the program to find the right plugin for a given operation.
4175
4176
<P>
4177
<SPAN  CLASS="textbf">Any changes to the plugin module settings will only take effect
4178
after you re-started Mahogany!</SPAN>
4179
4180
<P>
4181
4182
<H1><A NAME="SECTION00290000000000000000"></A><A NAME="AddressDatabase"></A>
4183
<BR>
4184
The Address Database
4185
</H1>
4186
4187
<P>
4188
Mahogany has a built-in address book system with flexible support
4189
for different addressbook formats. It can be easily expanded to handle
4190
other programs' file formats and at present supports three formats -
4191
it's own ADB format (<A HREF="#ADB"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>), (X)Emacs' BBDB (<A HREF="#BBDB"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) address
4192
book format, and simple one address per line file (<A HREF="#LineADB"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
4193
Generally the address books are ordered hierarchically,
4194
with the possibility to order entries in groups and sub-groups in
4195
a tree-like fashion. Alias expansion is configurable and also handles
4196
group names, to expand to the full list of email addresses within
4197
that given group.
4198
4199
<P>
4200
4201
<H2><A NAME="SECTION00291000000000000000">
4202
The native Address Book </A>
4203
</H2>
4204
4205
<P>
4206
<A NAME="ADB"></A>This is Mahogany's own address book format, offering you
4207
the maximum set of functionality supported by the address book editor.
4208
It offers hierarchical grouping of address entries and it also the
4209
default address book format used by the address auto-collection mechanisms,
4210
which uses different groups for address entries collected from different
4211
mail folders.
4212
4213
<P>
4214
4215
<H2><A NAME="SECTION00292000000000000000">
4216
The Address Book Editor</A>
4217
</H2>
4218
4219
<P>
4220
To edit the address book, open the address book editor. If the book
4221
is already present in the address book tree on the left side of the
4222
window, you may expand it (and any subgroups it might have) and start
4223
editing immediately. If not, you must first add it to the tree by
4224
choosing ``New..'' from the ``Book'' submenu or using
4225
the corresponding toolbar button.
4226
4227
<P>
4228
Generally speaking, there are several ways to perform the same action
4229
in the address book editor:
4230
4231
<P>
4232
4233
<OL>
4234
<LI>use the menus: the commands for creating and deleting address book
4235
entries are in the ``Edit'' menu, the corresponding commands
4236
for the address books - in ``Book'' one.
4237
</LI>
4238
<LI>use the toolbar: this may be more convenient because, depending on
4239
the current position of the selected item in the tree it will propose
4240
to create either an address book or an entry.
4241
</LI>
4242
<LI>use keyboard: &lt;INSERT&gt; key creates a new entry or address book if
4243
the current selection is the root of the tree, &lt;DELETE&gt; deletes an
4244
item and &lt;Alt-ENTER&gt; brings up the ``Properties'' dialog.
4245
</LI>
4246
</OL>
4247
To edit the entry, simply select it in the tree. The data associated
4248
to it is spread over several notebook pages - select the one which
4249
contains the field you want to change and change it. If you want to
4250
undo your changes, simply press ``Cancel'' at any moment - however,
4251
this only works while you're editing the entry. As soon as you pass
4252
to another one, all previous changes are saved and cannot be undone
4253
any more. The changes are saved automatically when you select another
4254
entry or close the address book editor - there is no special ``Save''
4255
button.
4256
4257
<P>
4258
To quickly move in the address book tree you may use either the ``Find''
4259
or ``Go to'' dialogs (both available in the ``Find'' menu).
4260
The first dialog allows you to find the entry by its contents while
4261
the second one allows you to quickly go to the entry (in thecurrent
4262
address book only) if you know its nickname. In the ``Find''
4263
dialog you have several options to configure the search: it may be
4264
either case sensitive or not (should ``mike'' match ``Mike''?)
4265
and try to find only the whole string or just the substring of it
4266
(should ``mik'' match ``Mike''?). You may also choose
4267
among which fields should the search be done. You may choose as many
4268
fields as you like (possibly all of them) but you must choose at least
4269
one.
4270
4271
<P>
4272
After you used the ``Find'' dialog once, you may choose the
4273
``Find next'' menu item to go to the next address book entry
4274
matching your search criterium (notice that a message in the status
4275
bar will notify you about how many matches, if any, were found). Keep
4276
hitting ``Find next'' until the search wraps to the beginning
4277
(again, watch the status line for the message) or until you find the
4278
entry you're looking for.
4279
4280
<P>
4281
You may import your existing address book file by choosing the ``Import
4282
book...''entry from the ``Book'' menu - this will open the
4283
address book import dialog proposing you to select the
4284
4285
<P>
4286
4287
<H2><A NAME="SECTION00293000000000000000">
4288
Support for BBDB Address Books</A>
4289
</H2>
4290
4291
<P>
4292
<A NAME="BBDB"></A>Mahogany supports reading and writing of BBDB address
4293
book files. BBDB is the Big Brother DataBase used with the Emacs family
4294
of editors. If you have an existing address book file, usually called
4295
<TT>.bbdb</TT>, you can load it into Mahogany and use it. This is
4296
especially useful if you have an existing file with auto-collected
4297
email addresses that you want to continue to use.
4298
4299
<P>
4300
4301
<H4><A NAME="SECTION00293010000000000000">
4302
Caution:</A>
4303
</H4>
4304
4305
<P>
4306
The BBDB address book format supports different fields than Mahogany's
4307
native database. When reading a BBDB file, Mahogany will only read
4308
the first two addresses and telephone numbers and assign them to the
4309
``Home'' and ``Work'' addresses and phone numbers. All
4310
additional addresses and phone numbers, the AKA list and the comments
4311
will get lost. Mahogany will only save the information displayed in
4312
the address editor window. Currently saving of phone numbers to BBDB
4313
files is unsupported as it uses a different format from Mahogany.
4314
<SPAN  CLASS="textit">Therefore, reading a BBDB file and saving it back to disk
4315
may lead to a loss of information!</SPAN>
4316
4317
<P>
4318
4319
<H2><A NAME="SECTION00294000000000000000">
4320
One Address per Line File Address Books</A>
4321
</H2>
4322
4323
<P>
4324
<A NAME="LineADB"></A>This is probably the simplest possible address book format.
4325
It is useful for integration with external programs and scripts. Addresses
4326
are stored without name and angle brackets. Mahogany doesn't attempt to lock
4327
the file, so care must be taken when writing to it from both Mahogany and
4328
external program.
4329
4330
<P>
4331
4332
<H2><A NAME="SECTION00295000000000000000">
4333
Support for Palm Address Books</A>
4334
</H2>
4335
4336
<P>
4337
<A NAME="PalmADB"></A><SPAN  CLASS="textit">Mahogany</SPAN> does currently support reading of
4338
Palm Addressbooks (referring to a ``Palm'' we mean the handheld
4339
organizer Palm Pilot running PalmOS). For being able to do that it
4340
is required to include the PalmOS-Module (see below). The support
4341
of Palm Addressbooks is not yet fully implemented, as so far it is
4342
only possible to download the addresses from the Palm and to display
4343
them. Changing and uploading changed/new addresses to the Palm is
4344
something we plan to add in the next release.
4345
4346
<P>
4347
To display the Palm addressbook, create a new addressbook of type
4348
``PalmOS''. You will be asked to put your Palm into the cradle
4349
and to push the HotSync-button. After the download the addressbook
4350
is accessible in read-only mode. Restarting <SPAN  CLASS="textit">Mahogany</SPAN> requires
4351
to download the addressbook again.
4352
4353
<P>
4354
4355
<H1><A NAME="SECTION00300000000000000000"></A><A NAME="Scripting"></A>
4356
<BR>
4357
Scripting and Extending Mahogany
4358
</H1>
4359
4360
<P>
4361
4362
<H1><A NAME="SECTION00310000000000000000"></A><A NAME="python"></A>
4363
<BR>
4364
Python Scripting
4365
</H1>
4366
4367
<P>
4368
4369
<H2><A NAME="SECTION00311000000000000000">
4370
Introduction</A>
4371
</H2>
4372
4373
<P>
4374
<SPAN  CLASS="textsl">Mahogany</SPAN> has an embedded Python interpreter, if compiled
4375
with Python support enabled (check if Python appears in the ``Extra features''
4376
list in the <TT>"Help|About..."</TT> screen if you are unsure about this).
4377
Python is an object-oriented script language which can be used to write scripts
4378
to be executed by <SPAN  CLASS="textsl">Mahogany</SPAN> or even to extend <SPAN  CLASS="textsl">Mahogany</SPAN>'s
4379
functionality. Python scripts have full access to all internal Mahogany data
4380
structures and objects.
4381
4382
<P>
4383
A number of user definable callback functions are available. Scripts
4384
have access to most objects living in Mahogany. Scripting can be disabled
4385
in the Preferences dialog (see <A HREF="#PythonOptions"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
4386
4387
<P>
4388
Currently the scripting support is quite basic. If you are interested
4389
in writing scripts and need additional callbacks or support for them
4390
within <SPAN  CLASS="textsl">Mahogany</SPAN>, please get in touch with the developers
4391
who will be happy to add it.
4392
4393
<P>
4394
4395
<H2><A NAME="SECTION00312000000000000000">
4396
Initialisation </A>
4397
</H2>
4398
4399
<P>
4400
At startup, <SPAN  CLASS="textsl">Mahogany</SPAN> will load a file called <TT>Minit.py</TT>
4401
and call the <TT>Init()</TT> function defined in there, without any
4402
arguments.
4403
4404
<P>
4405
4406
<H2><A NAME="SECTION00313000000000000000">
4407
Using Python with Filters</A>
4408
</H2>
4409
4410
<P>
4411
It is possible to write filter tests and actions in Python. The test function
4412
should return an integer which determines whether the test passed (non zero) or
4413
not (zero). Both test and action functions receive as their single parameter
4414
the <TT>Message</TT> object which corresponds to the message currently being
4415
filtered.
4416
4417
<P>
4418
Please have a look at <TT>spam.py</TT> example included in Mahogany
4419
distribution (in <TT>Python</TT> directory under Windows and in
4420
<TT>/usr/share/mahogany/scripts</TT> under Unix) to see a real life example of
4421
using Python for writing non trivial filters.
4422
4423
<P>
4424
4425
<H2><A NAME="SECTION00314000000000000000"></A><A NAME="pythonhooks"></A>
4426
<BR>
4427
Callback Functions (Hooks)
4428
</H2>
4429
4430
<P>
4431
There are a number of callbacks available which will be called from
4432
different places within <SPAN  CLASS="textsl">Mahogany</SPAN>. These are defined in the
4433
header file <TT>Mcallbacks.h</TT>. There is no documentation for these
4434
callbacks yet, but don't hesitate to ask us if you need more information
4435
about this. All of these callbacks are called with at least one arguments
4436
which is a pointer to the object from which it was called. E.g. for
4437
<TT>FolderOpenHook</TT>, this would be a <TT>MailFolder</TT> object.
4438
4439
<P>
4440
The callback return value is usually a boolean and indicates whether Mahogany
4441
should proceed normally (<SPAN CLASS="MATH"><IMG
4442
 WIDTH="14" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
4443
 SRC="img3.png"
4444
 ALT="$1$"></SPAN>) or cancel the operation (<SPAN CLASS="MATH"><IMG
4445
 WIDTH="14" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
4446
 SRC="img4.png"
4447
 ALT="$0$"></SPAN>).
4448
4449
<P>
4450
4451
<H2><A NAME="SECTION00315000000000000000">
4452
Namespaces</A>
4453
</H2>
4454
4455
<P>
4456
To avoid repeatedly typing in the name of the module (<TT>MailFolder</TT>
4457
in this case), it can be imported into the global namespace with ``<TT>from&nbsp;MailFolder&nbsp;import&nbsp;*</TT>''.
4458
By default modules are not imported into the global namespace and
4459
must be explicitly named.
4460
4461
<P>
4462
4463
<H2><A NAME="SECTION00316000000000000000">
4464
List of Callbacks</A>
4465
</H2>
4466
4467
<P>
4468
<BR>
4469
<BR>
4470
<DIV ALIGN="CENTER">
4471
4472
</DIV><TABLE CELLPADDING=3 BORDER="1">
4473
<TR><TD ALIGN="CENTER">0 8 1 0 0 0 00 8 1 0 0 0 0Callback Name</TD>
4474
<TD ALIGN="CENTER">Object Type</TD>
4475
<TD ALIGN="CENTER">Additional Arguments/Types</TD>
4476
<TD ALIGN="CENTER">Return Value</TD>
4477
<TD ALIGN="CENTER">Documentation</TD>
4478
</TR>
4479
<TR><TD ALIGN="CENTER">FolderOpenHook</TD>
4480
<TD ALIGN="CENTER">MailFolder</TD>
4481
<TD ALIGN="CENTER">&nbsp;</TD>
4482
<TD ALIGN="CENTER">void</TD>
4483
<TD ALIGN="CENTER">Called after a folder has been opened.</TD>
4484
</TR>
4485
<TR><TD ALIGN="CENTER">FolderUpdateHook</TD>
4486
<TD ALIGN="CENTER">MailFolder</TD>
4487
<TD ALIGN="CENTER">&nbsp;</TD>
4488
<TD ALIGN="CENTER">void</TD>
4489
<TD ALIGN="CENTER">Called after a folder has been updated.</TD>
4490
</TR>
4491
<TR><TD ALIGN="CENTER">FolderSetMessageFlag</TD>
4492
<TD ALIGN="CENTER">MailFolder</TD>
4493
<TD ALIGN="CENTER">(long) index of message</TD>
4494
<TD ALIGN="CENTER">1 if changing flags is ok,0 otherwise</TD>
4495
<TD ALIGN="CENTER">Called before changing flags for a message.</TD>
4496
</TR>
4497
<TR><TD ALIGN="CENTER">&nbsp;</TD>
4498
<TD ALIGN="CENTER">&nbsp;</TD>
4499
<TD ALIGN="CENTER">(string)name of flag</TD>
4500
<TD ALIGN="CENTER">&nbsp;</TD>
4501
<TD ALIGN="CENTER">&nbsp;</TD>
4502
</TR>
4503
<TR><TD ALIGN="CENTER">FolderClearMessageFlag</TD>
4504
<TD ALIGN="CENTER">MailFolder</TD>
4505
<TD ALIGN="CENTER">(long) index of message</TD>
4506
<TD ALIGN="CENTER">1 if changing flags is ok,0 otherwise</TD>
4507
<TD ALIGN="CENTER">Called before changing flags for a message.</TD>
4508
</TR>
4509
<TR><TD ALIGN="CENTER">&nbsp;</TD>
4510
<TD ALIGN="CENTER">&nbsp;</TD>
4511
<TD ALIGN="CENTER">(string) name of flag</TD>
4512
<TD ALIGN="CENTER">&nbsp;</TD>
4513
<TD ALIGN="CENTER">&nbsp;</TD>
4514
</TR>
4515
<TR><TD ALIGN="CENTER">FolderExpungeHook</TD>
4516
<TD ALIGN="CENTER">MailFolder</TD>
4517
<TD ALIGN="CENTER">&nbsp;</TD>
4518
<TD ALIGN="CENTER">1 to expunge, 0 to abort</TD>
4519
<TD ALIGN="CENTER">Called before expunging messages.</TD>
4520
</TR>
4521
<TR><TD ALIGN="CENTER">FolderNewMailHook</TD>
4522
<TD ALIGN="CENTER">MailFolder</TD>
4523
<TD ALIGN="CENTER">&nbsp;</TD>
4524
<TD ALIGN="CENTER">1 to suppress default message, 0 else</TD>
4525
<TD ALIGN="CENTER">Called when new mail arrived in folder.</TD>
4526
</TR>
4527
<TR><TD ALIGN="CENTER">GlobalNewMailHook</TD>
4528
<TD ALIGN="CENTER">mApplication</TD>
4529
<TD ALIGN="CENTER">(string) sender of mail</TD>
4530
<TD ALIGN="CENTER">1 to suppress default message, 0 else</TD>
4531
<TD ALIGN="CENTER">Called when new mail arrived anywhere.</TD>
4532
</TR>
4533
<TR><TD ALIGN="CENTER">&nbsp;</TD>
4534
<TD ALIGN="CENTER">&nbsp;</TD>
4535
<TD ALIGN="CENTER">(string) subject of mail</TD>
4536
<TD ALIGN="CENTER">&nbsp;</TD>
4537
<TD ALIGN="CENTER">&nbsp;</TD>
4538
</TR>
4539
</TABLE>
4540
<P>
4541
4542
<BR>
4543
<BR>
4544
4545
<P>
4546
4547
<H2><A NAME="SECTION00317000000000000000">
4548
Supported Classes</A>
4549
</H2>
4550
4551
<P>
4552
Python has access to Mahogany's internal class hierarchy. At present
4553
we supply interface definitions and Python modules for only a small
4554
number of classes, however if there is need for more classes being
4555
supported, we can easily extend the list - please ask us if you want
4556
more support!
4557
4558
<P>
4559
Some automatically generated documentation of the Python interface
4560
to Mahogany classes can be found in the <A NAME="tex2html8"
4561
  HREF="../Python/">doc/Python directory</A>.
4562
Documentation about all classes, including those not available to
4563
Python, can be found in the <A NAME="tex2html9"
4564
  HREF="../classes/">doc/classes directory</A>.
4565
4566
<P>
4567
4568
<H1><A NAME="SECTION00320000000000000000">
4569
Plugins</A>
4570
</H1>
4571
4572
<P>
4573
4574
<H2><A NAME="SECTION00321000000000000000">
4575
Introduction</A>
4576
</H2>
4577
4578
<P>
4579
Starting with release 0.5, <SPAN  CLASS="textit">Mahogany</SPAN> allows the use of plugins
4580
(modules). This allows for an easy and comfortable way to enlarge
4581
<SPAN  CLASS="textit">Mahogany</SPAN>'s functionality. These modules can be loaded at runtime
4582
and do not need to be part of the main executable.
4583
4584
<P>
4585
4586
<H2><A NAME="SECTION00322000000000000000">
4587
The Filters Module</A>
4588
</H2>
4589
4590
<P>
4591
This module provides a filtering language for Mahogany. It allows
4592
you to have Mahogany look at different message properties, such as
4593
message contents, size or header lines and execute arbitrary action
4594
on them. The most common use would be to sort mails from different
4595
mailing lists in corresponding mailfolders, to reduce the number of
4596
messages in your main incoming mailbox. Filters can be specified in
4597
three possible ways:
4598
4599
<P>
4600
4601
<UL>
4602
<LI>You can use the filters dialog. This is the most convenient and best
4603
supported option.
4604
</LI>
4605
<LI>You can write them by hand, using a simple programming language remotely
4606
similar to 'C', and put the filtering rules directly into the Mahogany
4607
configuration file or registry.
4608
</LI>
4609
<LI>You can write complex rules yourself, save them to a file and tell
4610
Mahogany to read the rules from that file.
4611
</LI>
4612
</UL>
4613
The normal way to set up filters is to specify them in the filters
4614
dialog (<A HREF="#FiltersDialog"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) and then tell Mahogany folder which
4615
of the filter rules to use for the individual folders with athe folder
4616
filters dialog (<A HREF="#FolderFiltersDialog"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
4617
4618
<P>
4619
4620
<H3><A NAME="SECTION00322100000000000000"></A><A NAME="FiltersDialog"></A>
4621
<BR>
4622
The Filters Dialog
4623
</H3>
4624
4625
<P>
4626
This dialog allows you to define any number of filter rules available
4627
to Mahogany. In a seaparate dialog (<A HREF="#FolderFiltersDialog"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) you
4628
can then pick any rule from the list and assign it to a folder. As
4629
you can have different sets of rules for each folder and might want
4630
to share rules for some folders, this dialog simply sets up rules
4631
and you can later specify for which folders to use them. When editing
4632
or adding a new filter rule, you will get to the following dialog:
4633
4634
<P>
4635
4636
<H3><A NAME="SECTION00322200000000000000">
4637
The Filter-Rule Dialog</A>
4638
</H3>
4639
4640
<P>
4641
This dialog allows you to set up or edit an individual filtering rule,
4642
it contains of the following components:
4643
4644
<P>
4645
4646
<UL>
4647
<LI>The rule name, in the text entry field at the very top. This name
4648
is only to help you remember what the rule does and will appear in
4649
the list of rules in the main Filters Dialog, but is without any further
4650
significance.
4651
</LI>
4652
<LI>Underneath the name, you find the text ``If Message...'' followed
4653
by at least one row of conditioncontrols.
4654
</LI>
4655
<LI>Under the condition controls you find the text ``Then do this:``
4656
followed by some action controls.
4657
</LI>
4658
</UL>
4659
You can add more pattern matching controls by pressing the [More]
4660
button, and you can delete the last pattern matching rule by pressing
4661
the [Less] button. The number of actions to execute is fixed to
4662
one.
4663
4664
<P>
4665
You can use several condition and connect them via logical AND and
4666
OR, optionally negating them by ticking the [Not] box. The following
4667
conditions can be tested for at present:
4668
4669
<P>
4670
4671
<UL>
4672
<LI>Always - this rule will always be executed
4673
</LI>
4674
<LI>Contains - check if the text next to it is contained in the message
4675
component selected
4676
</LI>
4677
<LI>Match - check if the message component selected is exactly this text
4678
(case independent)
4679
</LI>
4680
<LI>Match Case - check if the message compent selected is exactly this
4681
text (case dependent)
4682
</LI>
4683
<LI>Match RegExp - check if the message compent selected matches the regular
4684
expression specified
4685
</LI>
4686
<LI>Larger Than - check if the message is larger than this in KByte
4687
</LI>
4688
<LI>Smaller Than - check if the message is smaller than this in KByte
4689
</LI>
4690
<LI>Older Than - check if the message is older than this many days
4691
</LI>
4692
<LI>Newer Than - check if the message is newer than this many days
4693
</LI>
4694
<LI>Is SPAM - check if the message originates from a system blacklisted
4695
as sending unsolicited emails (SPAM).
4696
</LI>
4697
<LI>Python - execute the text in the box in the built-in Python interpreter
4698
and proceed if it returns a non-0 result.
4699
</LI>
4700
</UL>
4701
The possible actions which can be performed, are:
4702
4703
<P>
4704
4705
<UL>
4706
<LI>Delete - deletes the message
4707
</LI>
4708
<LI>Copy to - copies the message to the folder specified
4709
</LI>
4710
<LI>Move to - moves the message to the folder specified
4711
</LI>
4712
<LI>Expunge - expunge all messages in this folder
4713
</LI>
4714
<LI>MessageBox - open a message box dialog with the text specified
4715
</LI>
4716
<LI>LogEntry - add the text specified to the log window
4717
</LI>
4718
<LI>Python - execute the text specified in the built-in Python interpreter
4719
</LI>
4720
</UL>
4721
If you are not using a Trash folder, it is a good idea to add a rule
4722
at the end of the list of filtering rules, that always expunges all
4723
messages. For testing filters, you can leave that rule disabled, an
4724
all messages will get treated and marked as deleted, but stay around.
4725
Only when expunge is executed, will they really disappear in the original
4726
mailbox. Notice, if you are using a Trash folder, this does not apply,
4727
as messages won't be marked as deleted but moved straight to Trash.
4728
4729
<P>
4730
4731
<H3><A NAME="SECTION00322300000000000000"></A><A NAME="FolderFiltersDialog"></A>
4732
<BR>
4733
The Folder Filters dialog
4734
</H3>
4735
4736
<P>
4737
This dialog allows you to assign filter rules to a folder. You can
4738
pick them from the set of existing filter rules (set up via the Filters
4739
Dialog (<A HREF="#FiltersDialog"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>)) and change the order of the rules.
4740
The listbox on the left lists the existing filtering rules for the
4741
currently selected folder in the order in which they are executed.
4742
You can use the buttons to change the order or rules. You can also
4743
activate/deactivate rules by clicking on the litte checkbox ([X]
4744
or [ ]) next to their name.
4745
4746
<P>
4747
If you want to apply rules to all incoming messages and are collecting
4748
mail from different servers, simply apply the rules to the ``New
4749
Mail'' folder if you have one, alternatively you can set up rules
4750
for individual servers or INBOX.
4751
4752
<P>
4753
4754
<H2><A NAME="SECTION00323000000000000000">
4755
The PalmOS Module</A>
4756
</H2>
4757
4758
<P>
4759
When 3Com released its first PalmPilots several years ago, many people
4760
did not believe in a success. But they were proven wrong, the Palm
4761
Pilot (or short: Palm) is today the most used handheld organizer.
4762
4763
<P>
4764
For all the people possessing one of those little helpers, the PalmOS
4765
Module allows (or will allow) for an easy integration of the Palm's
4766
data in Mahogany. In future releases there will be full support for
4767
addressbook synching, schedules etc. Currently you can only view the
4768
Palm's addressbook (see above) and use <SPAN  CLASS="textit">Mahogany</SPAN> as your Palm
4769
desktop software.
4770
4771
<P>
4772
4773
<H3><A NAME="SECTION00323100000000000000">
4774
Desktop functionality</A>
4775
</H3>
4776
4777
<P>
4778
As there is not really a common Palm desktop in the Unix/Linux environment
4779
(not like under MS Windows), we thought it a nice idea to include
4780
the desktop into <SPAN  CLASS="textit">Mahogany</SPAN>. Therefore <SPAN  CLASS="textit">Mahogany</SPAN> does allow
4781
to
4782
4783
<P>
4784
4785
<UL>
4786
<LI>create backups of the Palm's databases using the ``Backup''
4787
function
4788
</LI>
4789
<LI>restore the previously backup-ed databases using the ``Restore''
4790
function
4791
</LI>
4792
<LI>install new files to the Palm using the ``Install'' function
4793
</LI>
4794
</UL>
4795
To use this functionality, you must of course have the PalmOS module
4796
enabled. You can access the functions via the Plugin menu. In addition
4797
to the above mentioned tasks, you can specify quite a lot of options
4798
to adapt for instance the backup process to your personal needs.
4799
4800
<P>
4801
There is an additional function not mentioned yet, labelled ``Synchronize''.
4802
Via the configuration dialog you can specify what should happen during
4803
synchronization - starting with mail exchange, backups and automatic
4804
installations. Read the following section about the configuration
4805
dialog to get see how you can customize your PalmOS-Module.
4806
4807
<P>
4808
4809
<H3><A NAME="SECTION00323200000000000000">
4810
The configuration dialog</A>
4811
</H3>
4812
4813
<P>
4814
You can configure the PalmOS module via the Plugin menu in a lot of
4815
ways. Let's go through every single item in the configuration dialog
4816
which you can access using the Plugin-Menu:
4817
4818
<P>
4819
<DL>
4820
<DT><STRONG>Synchronise&nbsp;Mail</STRONG></DT>
4821
<DD>When you have this enabled, you can specify a mailbox
4822
which will be used as place of exchange for mails. Mails in this folder
4823
will be transfered to the Palm at the next hotsync and the outbox
4824
of the Palm's mail program will be send. This mailbox is also used
4825
as a configuration setting for messages sent. <SPAN  CLASS="textit">Mahogany</SPAN> will
4826
use the properties of this mailbox when sending the messages retrieved
4827
from the Palm's Outbox. If you have enabled the ``advanced user''
4828
option in the program preferences' identity tab, you can set up a
4829
separate return-address or completely different options for this mailbox
4830
and therefore have the mail sent from the PalmPilot with different
4831
settings as those sent normally. The options for user name and return
4832
address as set on the Palm are ignored when mails are sent with <SPAN  CLASS="textit">Mahogany</SPAN>.
4833
</DD>
4834
<DT><STRONG>Mailbox&nbsp;for&nbsp;Exchange</STRONG></DT>
4835
<DD>Enter here the name of the mailbox that should
4836
be used for mail exchange when you have the ``Synchronise Mail''
4837
feature enabled (see above).
4838
</DD>
4839
<DT><STRONG>Mail&nbsp;disposal&nbsp;mode</STRONG></DT>
4840
<DD>This specifies what to do with outgoing e-mails
4841
retrieved from the PalmPilot and sent. You have three options:
4842
4843
<P>
4844
4845
<UL>
4846
<LI>file : move messages from Outbox to Filed mailbox on the Palm
4847
</LI>
4848
<LI>delete : delete messages after sending
4849
</LI>
4850
<LI>keep : keep messages in Palm's Outbox
4851
</LI>
4852
</UL>
4853
</DD>
4854
<DT><STRONG>Always&nbsp;do&nbsp;Backup</STRONG></DT>
4855
<DD>Setting this checkbox to true will make a backup
4856
take place every time you ``Synchronize''.
4857
</DD>
4858
<DT><STRONG>Directory&nbsp;for&nbsp;backup&nbsp;files</STRONG></DT>
4859
<DD>This field does contain a valid directory
4860
path where the PalmOS-Module will store the backup of your Palm's
4861
databases.
4862
</DD>
4863
<DT><STRONG>Delete&nbsp;no&nbsp;longer&nbsp;existing&nbsp;backups</STRONG></DT>
4864
<DD>This checkbox determines whether
4865
you want files to be deleted on the PC that are residing in the backup
4866
directory but are not any longer on the Palm. This makes it possible
4867
to really keep the backup identical to the Palm, but has the disadvantage
4868
that you might loose data if you (accidently?) delete important data
4869
on the Palm and do a backup, as the backup-ed databases will be deleted
4870
too. So think carefully whether you do really want to do this.
4871
</DD>
4872
<DT><STRONG>Make&nbsp;incremental&nbsp;backup&nbsp;only</STRONG></DT>
4873
<DD>Enable this checkbox if you only
4874
want to make an incremental backup. Using this features will speed
4875
the backup process up, as only changed or new databases are downloaded
4876
from the Palm.
4877
</DD>
4878
<DT><STRONG>Backup&nbsp;all&nbsp;databases</STRONG></DT>
4879
<DD>Enabling this checkbox will make the PalmOS-Module
4880
ignore the backup flags of the databases. By default the PalmOS-Module
4881
does only backup files with a set backup flag. Use this option if
4882
you want all files to be backup'ed.
4883
</DD>
4884
<DT><STRONG>Exclude&nbsp;these&nbsp;databases</STRONG></DT>
4885
<DD>Here you can specify a comma separated
4886
list of databases (without spaces!) that should not be backup'ed.
4887
</DD>
4888
<DT><STRONG>Do&nbsp;auto-install</STRONG></DT>
4889
<DD>Using this feature enables the auto-install feature
4890
and everytime you ``Synchronize'' the module will check the
4891
auto-install directory for Palm databases. If databases are found
4892
they will be installed and deleted without further notice!
4893
</DD>
4894
<DT><STRONG>Auto-install&nbsp;directory</STRONG></DT>
4895
<DD>Specify here a directory where the files
4896
to be auto-installed can be found.
4897
</DD>
4898
</DL>
4899
Besides that, some general options are available:
4900
4901
<P>
4902
<DL>
4903
<DT><STRONG>Pilot&nbsp;device</STRONG></DT>
4904
<DD>Here you can specify the device where the Pilot is
4905
residing (this ought to be /dev/pilot under Unix/Linux and Com1: or
4906
Com2: under MS Windows (not yet supported)).
4907
</DD>
4908
<DT><STRONG>Connection&nbsp;speed</STRONG></DT>
4909
<DD>You have the choice beetween different hotsync
4910
speeds (``connection speed''), measured in baud.
4911
</DD>
4912
<DT><STRONG>Try&nbsp;to&nbsp;lock&nbsp;device</STRONG></DT>
4913
<DD>You can force a lock of the above set device
4914
by enabling ``Try to lock device''
4915
</DD>
4916
</DL>
4917
4918
<P>
4919
4920
<H3><A NAME="SECTION00323300000000000000">
4921
Accessing the Palms</A>
4922
</H3>
4923
4924
<P>
4925
There is the ``general'' approach to get the Palm databases
4926
on your computer and the more selective one. For the first one, just
4927
use the ``Synchronize'' menu point in the plugin menu. Depending
4928
on what you have enabled in the configuration dialog (see above),
4929
different actions will be taken (backup, mail exchange, ...).
4930
4931
<P>
4932
If you only want to update your backup or to install a file or to
4933
restore your Palm's contents, you can access these functions individually
4934
by using the corresponding menu points in the plugin menu.
4935
4936
<P>
4937
4938
<H1><A NAME="SECTION00400000000000000000">
4939
Getting Help and Support</A>
4940
</H1>
4941
4942
<P>
4943
4944
<H1><A NAME="SECTION00410000000000000000"></A><A NAME="Troubleshooting"></A>
4945
<BR>
4946
Troubleshooting
4947
</H1>
4948
4949
<P>
4950
Before asking for the help on our mailing lists, please try to see
4951
if you cannot fix, or, at least, understand the reasons of, the problem
4952
yourself. It is difficult to list everything which could go wrong
4953
here but here are some basic recommendations:
4954
4955
<P>
4956
4957
<UL>
4958
<LI>(Unix) If the program doesn't compile, please make sure you use GNU
4959
make. If it still doesn't help, please let us know about it but don't
4960
forget to include the compilation errors log (if there are too many
4961
errors, there is no need to include all of them, just the few first
4962
ones). If the problem has happened at configure time, please look
4963
at config.log file configure created and include it in your report.
4964
</LI>
4965
<LI>(Unix) If the program crashes mysteriously please make sure you don't
4966
have incompatible and/or different versions of the program sources,
4967
headers and modules. Also, please check that you have only one version
4968
of wxWidgets installed. Also, make sure to rebuild everything (ideally,
4969
create a new build directory) after installing or uninstalling a new
4970
wxWidgets or Mahogany version. If the problem still persists, please
4971
try building the debug version of the program (you need debug wxWidgets
4972
library and run configure with <TT>-enable-debug switch</TT>), run it under
4973
<SMALL>GDB</SMALL> and send us the output of ``bt'' command in the
4974
debugger when it crashes.
4975
</LI>
4976
<LI>If your problem is related to receiving or sending mail, please look
4977
at the message log window for possible explanation. If you don't see
4978
the log window, make sure it wasn't disabled in the ``Miscellaneous''
4979
(last) page of the preferences dialog - and reenable it if it was.
4980
If there is nothing helpful in the log window, please turn on ``Debug
4981
server and mailbox access'' option in the same page. It may also
4982
be useful to enable logging to a file if the program crashes as the
4983
file contents, unlike the log window, is not lost in this case.
4984
</LI>
4985
</UL>
4986
4987
<P>
4988
4989
<H1><A NAME="SECTION00420000000000000000">
4990
WWW Support</A>
4991
</H1>
4992
4993
<P>
4994
Mahogany has a home on the world wide web where you can get up to
4995
date information about development and the last releases. Come and
4996
visit us at the <A NAME="tex2html10"
4997
  HREF="http://mahogany.sourceforge.net/">Mahogany Homepage</A>
4998
<P>
4999
5000
<H1><A NAME="SECTION00430000000000000000">
5001
Mailing Lists</A>
5002
</H1>
5003
5004
<P>
5005
Several mailing lists exist to contact the developers, to receive
5006
updates of new releases and to exchange information and experiences
5007
with other users. Please visit the <A NAME="tex2html11"
5008
  HREF="http://sourceforge.net/projects/mahogany">Mahogany Project Page</A>for
5009
more information and to join the lists.
5010
5011
<P>
5012
If you want to help further development of Mahogany, please go to
5013
the same place and you will find all the information you need about
5014
how to contribute or how to contact us.
5015
5016
<P>
5017
5018
<H1><A NAME="SECTION00500000000000000000">
5019
Advanced Usage</A>
5020
</H1>
5021
5022
<P>
5023
5024
<H1><A NAME="SECTION00510000000000000000">
5025
Compiling <SPAN  CLASS="textsl">Mahogany</SPAN> from source</A>
5026
</H1>
5027
5028
<P>
5029
Run ./configure; make; make doc; make install.
5030
5031
<P>
5032
Some quick notes about common compilation problems can be found in
5033
the FAQ, in section <A HREF="#CompileErrors"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
5034
5035
<P>
5036
5037
<H1><A NAME="SECTION00520000000000000000">
5038
Using <SPAN  CLASS="textsl">Mahogany</SPAN> more efficiently</A>
5039
</H1>
5040
5041
<P>
5042
This section contains assorted tips about how you can make <SPAN  CLASS="textsl">Mahogany</SPAN>
5043
run faster.
5044
5045
<P>
5046
5047
<H2><A NAME="SECTION00521000000000000000">
5048
Speeding up <SPAN  CLASS="textsl">Mahogany</SPAN> startup</A>
5049
</H2>
5050
5051
<P>
5052
Unix users only: <SPAN  CLASS="textsl">Mahogany</SPAN> accesses the file <SMALL>~</SMALL>/.M/<SMALL>CONFIG</SMALL>
5053
which stores all program options on startup. If this file is located
5054
on a slow partition such as a network disk (NFS), the startup time
5055
can be reduced just by moving it elsewhere and creating a link to
5056
it from <SMALL>~</SMALL>/.M directory.
5057
5058
<P>
5059
You can choose to not open any folders at startup (``Folders''
5060
page of the options dialog) if doing this takes too long in your case.
5061
Also, remember to close the address book editor window if you don't
5062
want it to be reopened the next time you run <SPAN  CLASS="textsl">Mahogany.</SPAN>
5063
5064
<P>
5065
5066
<H2><A NAME="SECTION00522000000000000000"></A><A NAME="limitdatatransfer"></A>
5067
<BR>
5068
Limiting Amount of Data Transferred
5069
</H2>
5070
5071
<P>
5072
When using a remote server, especially over a slow link (such as a
5073
modem), it may be undesirable to automatically retrieve all messages
5074
from the server. Mahogany provides several options to help you with
5075
limiting the amount of data transferred.
5076
5077
<P>
5078
First, you should probably disable the ``Open folder at single
5079
click'' and ``Preview message when selected'' options from
5080
the ``Message View'' and ``Miscellaneous'' pages of the
5081
options dialog to avoid accidentally open a folder or a message.
5082
5083
<P>
5084
Second, there are several useful settings in the ``Folders''
5085
page. Note that they can be set for each folder separately so you
5086
can only choose to change the default values for some slow servers
5087
but keep the original values for all the other ones. These options
5088
allow you to specify a threshold for message size: before downloading
5089
a message of size bigger than the specified (in Kb), you will be asked
5090
for the confirmation.
5091
5092
<P>
5093
5094
<H1><A NAME="SECTION00600000000000000000">
5095
FAQ - Frequently Asked Questions</A>
5096
</H1>
5097
5098
<P>
5099
Being a brand new program, this section is currently pretty empty.
5100
However, we will constantly update this chapter with questions received
5101
on the mailing lists.
5102
5103
<P>
5104
5105
<H1><A NAME="SECTION00610000000000000000">
5106
Installation Problems</A>
5107
</H1>
5108
5109
<P>
5110
5111
<H2><A NAME="SECTION00611000000000000000">
5112
All Mahogany icons show a question mark</A>
5113
</H2>
5114
5115
<P>
5116
<SPAN  CLASS="textit">I'm a linux user (redhat) who just found Mahogany and really
5117
likes it, but I have a problem, I can't get all the widgets to work,
5118
the pictures on the buttons and the ones before the mailboxes all
5119
appear as an questionmark?</SPAN>
5120
5121
<P>
5122
It depends how you installed it. If the icon with the question mark
5123
appears, it means that Mahogany didn't find its installation directory
5124
with the icons. If you installed the linux version from the .tar.gz
5125
with the binary, it should go into /usr/local or a similar place and
5126
you should have the icons in /usr/local/share/M/icons. If they are
5127
not there, Mahogany cannot find them. If you have installed it in
5128
a different location, Mahogany should ask you for the installation
5129
(&#34;global Mahogany directory&#34;) when you start it
5130
for the first time.
5131
5132
<P>
5133
If you have compiled it yourself, make sure you do a &#34;make
5134
install&#34; or &#34;make install_all&#34; (of which
5135
parts might fail, depending on your setup), to install everything
5136
in the right place. If you just grabbed the binary of the daily snapshot,
5137
you need to have a working Mahogany installation as well or it won't
5138
get the icons. You do not need any additional library, Mahogany handles
5139
xpm files internally.
5140
5141
<P>
5142
5143
<H2><A NAME="SECTION00612000000000000000">
5144
How do I unpack the compressed files?</A>
5145
</H2>
5146
5147
<P>
5148
The distribution files for Solaris and some of the other ones are
5149
in compressed tar format, having the ending <TT>.tar.gz</TT> . To
5150
unpack them you need <TT>gzip</TT> and <TT>tar</TT>. Change to the
5151
directory where you want to install Mahogany, e.g to <TT>/usr</TT>
5152
or <TT>/opt</TT> or <TT>/usr/local</TT> and issue the following command:
5153
5154
<P>
5155
<BLOCKQUOTE>
5156
<TT>gzip -dc &lt; thedistributionfile | tar xvof -</TT>
5157
5158
</BLOCKQUOTE>
5159
Where <TT>thedistributionfile</TT> is the complete path to the file
5160
you downloaded. You will need to have proper write access to the directory
5161
where you install it and <TT>tar</TT> should show you a list of all
5162
files being installed as it unpacks them.
5163
5164
<P>
5165
5166
<H2><A NAME="SECTION00613000000000000000">
5167
Compiling aborts with errors</A>
5168
</H2>
5169
5170
<P>
5171
<A NAME="CompileErrors"></A>A common problem with compiling wxGTK and Mahogany
5172
is, that you need to follow the instructions in Mahogany's README
5173
file and use the configure script to set them up as explained. If
5174
you use different arguments for configure than those shown in README,
5175
things will not work! Also, before running configure again, remove
5176
any *.cache and *status files in the working directory or configure
5177
will re-use some old settings.
5178
5179
<P>
5180
Also, as we are omitting some unused subdirectories from the wxGTK
5181
source, to save you download time, you may need to run ``make -k''
5182
rather than just ``make'' to get it to ignore some errors caused
5183
by this. On non-Linux/GNU systems, you need to use the GNU make utility,
5184
i.e. ``gmake'' rather than the default ``make''.
5185
5186
<P>
5187
5188
<H2><A NAME="SECTION00614000000000000000">
5189
Mahogany fails to find wxWidgets, configure fails</A>
5190
</H2>
5191
5192
<P>
5193
The following steps should identify and solve the problem:
5194
5195
<P>
5196
5197
<OL>
5198
<LI>Do a &#34;make install&#34; for wxWidgets and watch the
5199
output, it should copy lots of things to /usr/local/....
5200
</LI>
5201
<LI>Do a &#34;which wx-config&#34;, it should report wx-config
5202
to be in /usr/local/bin
5203
</LI>
5204
<LI>Just type &#34;wx-config -cxxflags&#34;, it should run
5205
the wx-config script and report the compiler flags, which should include
5206
something like &#34;-I/usr/local/include&#34;.
5207
</LI>
5208
<LI>Then go to the Mahogany directory and &#34;rm *cache*&#34;
5209
to remove old configuration info and run ./configure
5210
</LI>
5211
<LI>This *should* find wx/wx.h if all of the above worked, if not,
5212
look at the end of config.log to see what went wrong.
5213
</LI>
5214
<LI>If it does not find the wxWidgets library, you need to add /usr/local/lib
5215
to either your LD_LIBRARY_PATH or to /etc/ld.so.conf (and run /sbin/ldconfig
5216
as root), then remove *cache* and try again. Again, if something
5217
fails, look at config.log.
5218
</LI>
5219
</OL>
5220
5221
<P>
5222
5223
<H2><A NAME="SECTION00615000000000000000">
5224
SSL does not work</A>
5225
</H2>
5226
5227
<P>
5228
<SPAN  CLASS="textit">I went to the &#34;Miscellaneous&#34; tab in preferences
5229
menu and made sure the pathnames of libcrypto and libssl where correct.
5230
I enabled SSL in the access tab of my mail folder preferences. However,
5231
when I try to open that folder, it fails and the log window talks
5232
about being unable to load libssl.</SPAN>
5233
5234
<P>
5235
Under Linux, this is due to a combination of factors, fixing one of
5236
them is enough to fix the problem. Versions of libssl.so older than
5237
0.9.6 require libcrypto to be explicitly loaded beforehand. Updating
5238
to version 0.9.6 or newer fixes the problem. Versions of libwx_gtk
5239
older than or equal to 2.2.0 load shared libraries in such a way that,
5240
even though M loads libcrypto, libssl still fails to load. Upgrading
5241
libwx_gtk to a later version will fix the problem. Finally, if everything
5242
else fails, starting M with the command: ``LD_PRELOAD=/usr/lib/libcrypto.so
5243
M'' will fix the problem as well. If the second solution is used,
5244
the pathname of libcrypto.so must be set properly. Otherwise it is
5245
better to leave it blank.
5246
5247
<P>
5248
5249
<H1><A NAME="SECTION00620000000000000000">
5250
Other Problems / Questions</A>
5251
</H1>
5252
5253
<P>
5254
5255
<H2><A NAME="SECTION00621000000000000000">
5256
The Preferences Dialog does not show up properly</A>
5257
</H2>
5258
5259
<P>
5260
<SPAN  CLASS="textit">When I set up Mahogany or select the preferences dialog, its
5261
contents do not appear. Sometimes I cannot enter anything in the fields.</SPAN>
5262
5263
<P>
5264
wxGTK has a problem with constraint handling which can cause this
5265
dialog to sometimes get into an endless loop trying to do the layout.
5266
On most windowmanagers it helps if you resize the dialog a little
5267
and it will appear correctly. This seems to depend on the platform
5268
and window manager. Also, wxGTK does not seem to work correctly with
5269
OpenLook which does not allow you to enter anything.
5270
5271
<P>
5272
Sometimes there may be some dialog window opened behind Mahogany window
5273
or on another desktop. Please check this (with Alt-Tab) if you think
5274
Mahogany got stuck.
5275
5276
<P>
5277
5278
<H2><A NAME="SECTION00622000000000000000">
5279
How to use Mahogany with fetchmail/procmail?</A>
5280
</H2>
5281
5282
<P>
5283
<SPAN  CLASS="textit">I use fetchmail and procmail to deliver my mail (Redhat Linux).
5284
I'm reading mail with Netscape right now and I want to move to M.
5285
I cannot for the life of me get M to open my mail when it loads. I
5286
have to open them manually. Can someone please help me to get M to
5287
open all of my Linux Folders at startup.</SPAN>
5288
5289
<P>
5290
You should be able to right-click on the folder treecontrol on the
5291
left of the main screen and &#34;Create a new folder&#34;.
5292
Make it of type &#34;file&#34; and specify the path to the
5293
the folder file as the filename. Your normal mailspool /var/spool/mail/username
5294
is available under the name INBOX anyway, but I guess you have fetchmail/procmail
5295
deliver your mail to some other place.
5296
5297
<P>
5298
5299
<H2><A NAME="SECTION00623000000000000000">
5300
Does Mahogany have group aliases?</A>
5301
</H2>
5302
5303
<P>
5304
Mahogany supports alias expansion for individual entries and for groups.
5305
There are two ways in which you can expand an alias to a group of
5306
addresses:
5307
5308
<P>
5309
5310
<UL>
5311
<LI>The quick and dirty approach: Create an addressbook entry and simply
5312
list multiple, comma separated, addresses in its Email field. Mahogany
5313
will use the whole contents of this field when expanding aliases.
5314
</LI>
5315
<LI>The more elegant method: Create a new group in your addressbook and
5316
add the individual addresses as sub-entries of this group. If you
5317
use the group name as a mail alias, Mahogany will expand it to the
5318
list of email addresses of all of its group members. This is more
5319
powerful, as you can easily add and remove entries to sub groups.
5320
</LI>
5321
</UL>
5322
5323
<P>
5324
5325
<H2><A NAME="SECTION00624000000000000000">
5326
How can I set up POP3/IMAP access?</A>
5327
</H2>
5328
5329
<P>
5330
<SPAN  CLASS="textit">It is not immediately apparent how to set up my POP3 server
5331
under 0.23a , can someone give me a hand, please? It appears there
5332
is no section in the initial configuration utility for this. <A NAME="POP3"></A></SPAN>
5333
5334
<P>
5335
Mahogany allows you to have as many folders or mail accounts as you
5336
like. That's why it doesn't ask you at the beginning. To add a POP
5337
account:
5338
5339
<P>
5340
5341
<OL>
5342
<LI>right click on the folder tree and choose &#34;Create Folder&#34;
5343
</LI>
5344
<LI>give the folder a name, set its type to POP3 and fill in the required
5345
fields, such as server and login
5346
</LI>
5347
<LI>Click on [OK]. The folder will now appear in the tree
5348
</LI>
5349
<LI>Double-click on the folder to open it.
5350
</LI>
5351
</OL>
5352
5353
<UL>
5354
<LI>If opening fails, right click on it again and choose &#34;Properties&#34;,
5355
make sure that all settings are correct.
5356
</LI>
5357
<LI>- If you want Mahogany to collect all mail from that box, you can
5358
tick that checkbox and whenever Mahogany starts, it will open that
5359
box and continue collecting all mail from there and move it to the
5360
&#34;New Mail&#34; folder.
5361
</LI>
5362
</UL>
5363
5364
<P>
5365
5366
<H2><A NAME="SECTION00625000000000000000">
5367
How can I set up IMAP access?</A>
5368
</H2>
5369
5370
<P>
5371
Follow the rules for setting up POP3 access<A HREF="#POP3"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> but set the
5372
folder type to be ``IMAP folder''. Then enter the name of your
5373
IMAP server, your username and password (or leave it empty to be asked
5374
later) for that server and, optionally, the path to the folder on
5375
the IMAP server. You can leave the path empty, and it will use the
5376
default folder (usually INBOX).
5377
5378
<P>
5379
If you want to access many IMAP folders on the same server, or a directory
5380
there, you can create foldertree entries representing the IMAP server
5381
itself (i.e. the top-level directory on it) or a directory on the
5382
IMAP server. For these, if not using the Wizard dialog, make sure
5383
that the folder properties dialog has the ``is directory'' checkbox
5384
ticked, which tells Mahogany that it is not a mailbox file to open,
5385
but a directory which can be browsed for entries via the popup menu.
5386
5387
<P>
5388
5389
<H2><A NAME="SECTION00626000000000000000">
5390
Can I have multiple POP3 or IMAP accounts?</A>
5391
</H2>
5392
5393
<P>
5394
<SPAN  CLASS="textit">Can I access multiple different POP3 or IMAP accounts?</SPAN>
5395
5396
<P>
5397
Yes, <SPAN  CLASS="textit">Mahogany</SPAN> allows you to have any number of different
5398
folders configured, and you can choose different account type ("Folder
5399
Type" setting in "Access" page when creating a folder) for them.
5400
Just right-click on the folder tree control and
5401
choose the ``Create Folder...'' option from the popup-menu.
5402
You can then switch between the different folders by selecting them
5403
(usually with a double-click on the tree control) for display in the
5404
main window, or, by selecting ``Open'' from the popup-menu which
5405
will open the folders in their own individual windows.
5406
5407
<P>
5408
You can also select the ``Collect all mail from this folder''
5409
option when creating the entries for them (or later, via the ``Preferences''
5410
popup-menu option) to let <SPAN  CLASS="textit">Mahogany</SPAN> automatically check these
5411
accounts for new mail and collect it from there.
5412
5413
<P>
5414
5415
<H2><A NAME="SECTION00627000000000000000">
5416
Can I have multiple identities?</A>
5417
</H2>
5418
5419
<P>
5420
<SPAN  CLASS="textit">Does Mahogany allow me to send email as different people?
5421
That is, if I monitor two IMAP or POP servers, one for my work email,
5422
and one for my home email, can I reply to emails and specify it to
5423
use my home or work email address as the sender?</SPAN>
5424
5425
<P>
5426
Yes, you can set almost *all* options on a per-folder basis, including
5427
your name or return address, even outgoing SMTP servers to make it
5428
perfect. To have full access to all these configuration options in
5429
the folder properties dialog, you must first set your user level to
5430
``advanced'' in the main configuration dialog, otherwise only
5431
a small subset of configuration options is available. You can also
5432
create global identities which are available in all folders.
5433
5434
<P>
5435
5436
<H2><A NAME="SECTION00628000000000000000">
5437
Can I run Mahogany as root?</A>
5438
</H2>
5439
5440
<P>
5441
<SPAN  CLASS="textit">Very simple question: can I run Mahogany on a unix system
5442
as the superuser (root)?</SPAN>
5443
5444
<P>
5445
Not directly. There are two problems with it:
5446
5447
<P>
5448
5449
<OL>
5450
<LI>It is not a good idea for security reasons. In fact, you should not
5451
even run X11 as root. Though, we would not dare to impose that on
5452
you, if you want to, that is your problem.
5453
</LI>
5454
<LI>The technical reason, and this is why Mahogany does not allow it:
5455
The c-client library that we use for accessing mail folders and servers
5456
uses the user-Id 0 (root) internally and does not work when called
5457
as root. When inquiring why this is so, c-client's author told us
5458
that it was bad to read mail as root - he thinks he knows what is
5459
good for you. Unless we find an easy way to circumvent that problem,
5460
you will not be able to run Mahogany as root as we have no time and
5461
desire to re-write the c-client library just for this.
5462
</LI>
5463
</OL>
5464
There is a workaround however:
5465
5466
<P>
5467
You can forward your email to another user, say ``<TT>user1</TT>'',
5468
by creating a <TT>/root/.forward</TT> file containing that user's
5469
name. Then, run Mahogany through the ``<TT>su</TT>'' command:
5470
``<TT>su user1 -c mahogany</TT>''. This will work just fine.
5471
If you get an error message about it being unable to access your X11
5472
display, do a ``<TT>xhost localhost</TT>'' before, which will
5473
allow all local users to access your display. All this is not very
5474
safe from a security point of view if you don't trust your local machine,
5475
but perfectly fine for standalone or dialup boxes.
5476
5477
<P>
5478
Update: Mahogany now runs as &#34;root&#34;.
5479
5480
<P>
5481
5482
<H2><A NAME="SECTION00629000000000000000">
5483
How can I set which language to use?</A>
5484
</H2>
5485
5486
<P>
5487
Under Unix: simply set and export your LANG environment variable like
5488
for any other program, too. Under Windows: the environment variable
5489
LANG will be recognised if it is set, but in addition Mahogany will
5490
automatically detect which language your system is set to use.
5491
5492
<P>
5493
In addition, there is a <TT>-lang</TT> command line option, see
5494
<A HREF="#cmdlineargs"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
5495
5496
<P>
5497
5498
<H2><A NAME="SECTION006210000000000000000">
5499
How can I delete messages?</A>
5500
</H2>
5501
5502
<P>
5503
<SPAN  CLASS="textit">If I press 'D' or 'Del' or use the menu to delete messages,
5504
they get marked as deleted but never disappear. How can I delete them?</SPAN>
5505
5506
<P>
5507
Simple, press '#' or 'x' or select Message/Expunge from the menu.
5508
Mahogany will also ask you if you want to expunge them when closing
5509
the folder. If you use the Trash folder, this only applies to that
5510
one as all other folders will move messages straight to Trash instead
5511
of marking them deleted.
5512
5513
<P>
5514
5515
<H2><A NAME="SECTION006211000000000000000">
5516
How can I forward a message with attachments?</A>
5517
</H2>
5518
5519
<P>
5520
Do &#34;Forward with template&#34; and create a new template
5521
containing $quote822 - this will forward the entire message. You
5522
can also change the default forward template to do it.
5523
5524
<P>
5525
5526
<H2><A NAME="SECTION006212000000000000000">
5527
How can I customize the position of folders in the tree?</A>
5528
</H2>
5529
5530
<P>
5531
Unfortunately there is no GUI support for doing it yet. You may vote for the
5532
<A NAME="tex2html12"
5533
  HREF="http://mahogany.sourceforge.net/cgi-bin/show_bug.cgi?id=404">bug 404</A>
5534
or subscribe to
5535
it if you want to be notified when this is implemented.
5536
5537
<P>
5538
But in the meanwhile you can do it manually relatively simply. Under Unix you
5539
will need to edit the configuration file (<TT>$HOME/.M/config</TT> by default)
5540
and under Windows you need to directly modify the registry entries (see
5541
<A HREF="#registrykey"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>). In any case the program shouldn't run when you are
5542
doing this modification.
5543
5544
<P>
5545
Here is what you should do: just add ``Index=N'' entry in the folder
5546
profile section of the config file. I.e. if you add the marked lines:
5547
5548
<P>
5549
<PRE>
5550
[IMAP/Inbox]
5551
Index=0                 # added manually
5552
...
5553
5554
[IMAP/Mahogany]
5555
Index=1                 # added manually
5556
...
5557
5558
[IMAP/Junk]
5559
Index=100               # added manually
5560
</PRE>
5561
5562
<P>
5563
then Inbox and Mahogany will appear first and Junk last in the tree.
5564
5565
<P>
5566
Under Windows you need to add the registry values of type DWORD using
5567
the registry editor. For example, the value for Junk folder should be added
5568
under <TT>HKCU<SPAN CLASS="MATH"><IMG
5569
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
5570
 SRC="img2.png"
5571
 ALT="$\backslash$"></SPAN>Software<SPAN CLASS="MATH"><IMG
5572
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
5573
 SRC="img2.png"
5574
 ALT="$\backslash$"></SPAN>Mahogany-Team<SPAN CLASS="MATH"><IMG
5575
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
5576
 SRC="img2.png"
5577
 ALT="$\backslash$"></SPAN>M<SPAN CLASS="MATH"><IMG
5578
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
5579
 SRC="img2.png"
5580
 ALT="$\backslash$"></SPAN>Profiles<SPAN CLASS="MATH"><IMG
5581
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
5582
 SRC="img2.png"
5583
 ALT="$\backslash$"></SPAN>IMAP<SPAN CLASS="MATH"><IMG
5584
 WIDTH="14" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
5585
 SRC="img2.png"
5586
 ALT="$\backslash$"></SPAN>Junk</TT>
5587
key.
5588
5589
<P>
5590
5591
<H2><A NAME="SECTION006213000000000000000">
5592
How can I ``leave messages on server'' (POP3)?</A>
5593
</H2>
5594
5595
<P>
5596
Typical POP3 server: normally, the new mail is downloaded from the
5597
POP3 folders locally so go to the ``New Mail'' page in folder
5598
properties and select ``Collect new mail from this folder''.
5599
This will move all new mail from the POP3 server to the ``New Mail''
5600
folder. If you want to copy it instead (leave messages on server)
5601
just check the ``Leave mail in this folder'' checkbox as well.
5602
5603
<P>
5604
5605
<H2><A NAME="SECTION006214000000000000000">
5606
Can I have ``subfolders'' of File type (mbox) folders?</A>
5607
</H2>
5608
5609
<P>
5610
Mahogany tries to preserve some sanity by disabling &#34;Create
5611
new folder&#34; in the popup menu when you select a folder of
5612
a non hierarchical format (such as MBX) but you can still circumvent
5613
this by doing <TT>"Folder|Create..."</TT> and selecting the
5614
folder you want as the parent.
5615
5616
<P>
5617
5618
<H2><A NAME="SECTION006215000000000000000">
5619
Can I ``Follow-up'' to the message?</A>
5620
</H2>
5621
5622
<P>
5623
You can open the message in the Sent Mail folder and do <TT>"Message|Edit
5624
in composer"</TT>. It is sort of like &#34;replying to yourself&#34;
5625
but the to/from fields remain the same.
5626
5627
<P>
5628
<BR><HR><H4>Footnotes</H4>
5629
<DL>
5630
<DT><A NAME="foot149">... LGPL</A><A
5631
 HREF="Manual.html#tex2html3"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
5632
<DD>which we recently felt victim of - due to some strong demand, we have
5633
decided to allow alternatively licensing Mahogany under GPL
5634
5635
5636
</DD>
5637
<DT><A NAME="foot312">... file</A><A
5638
 HREF="Manual.html#tex2html6"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
5639
<DD>use the option in the synchronisation
5640
page of the options dialog to force using a file instead of the registry under
5641
Windows
5642
5643
</DD>
5644
</DL>
5645
<BR><HR>
5646
<ADDRESS>
5647
Vadim Zeitlin
5648
2006-08-06
5649
</ADDRESS>
5650
</BODY>
5651
</HTML>
(-)mahogany-0.67/doc/release.txt (-2 / +1 lines)
Lines 98-104 Link Here
98
98
99
mahogany-announce@lists.sourceforge.net
99
mahogany-announce@lists.sourceforge.net
100
mahogany-users@lists.sourceforge.net
100
mahogany-users@lists.sourceforge.net
101
mahogany-developers@lists.sourceforge.net
102
101
103
c-client@u.washington.edu
102
c-client@u.washington.edu
104
wxwin-announce@lists.wxwindows.org
103
wxwin-announce@lists.wxwindows.org
Lines 118-124 Link Here
118
117
119
Update the FM record
118
Update the FM record
120
119
121
d) GNOME app map: http://www.gnome.org/softwaremap/projects/mahogany/
120
d) GNOME app map: http://www.gnomefiles.org/app.php/Mahogany
122
121
123
e) GNU Free Software Directory: http://www.gnu.org/directory/mahogany.html
122
e) GNU Free Software Directory: http://www.gnu.org/directory/mahogany.html
124
123
(-)mahogany-0.67/include/gui/wxBrowseButton.h (-6 / +1 lines)
Lines 6-12 Link Here
6
// Author:      Vadim Zeitlin
6
// Author:      Vadim Zeitlin
7
// Modified by:
7
// Modified by:
8
// Created:     24.12.98
8
// Created:     24.12.98
9
// CVS-ID:      $Id: wxBrowseButton.h,v 1.26 2006/01/16 20:32:01 nerijus Exp $
9
// CVS-ID:      $Id: wxBrowseButton.h,v 1.27 2006/08/31 23:18:29 vadz Exp $
10
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
10
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
11
// Licence:     M license
11
// Licence:     M license
12
///////////////////////////////////////////////////////////////////////////////
12
///////////////////////////////////////////////////////////////////////////////
Lines 293-303 Link Here
293
   // show the font selection dialog
293
   // show the font selection dialog
294
   virtual void DoBrowse();
294
   virtual void DoBrowse();
295
295
296
   // convert between wxNativeFontInfo description and the string we show to
297
   // the user in the text control
298
   static String FontDescToUser(const String& desc);
299
   static String FontDescFromUser(const String& desc);
300
301
private:
296
private:
302
   DECLARE_NO_COPY_CLASS(wxFontBrowseButton)
297
   DECLARE_NO_COPY_CLASS(wxFontBrowseButton)
303
};
298
};
(-)mahogany-0.67/include/guidef.h (-13 / +31 lines)
Lines 1-14 Link Here
1
/*-*- c++ -*-********************************************************
1
///////////////////////////////////////////////////////////////////////////////
2
 * guidef.h define the GUI implementation                           *
2
// Project:     M - cross platform e-mail GUI client
3
 *                                                                  *
3
// File name:   guidef.h
4
 * (C) 1997 by Karsten Ballüder (Ballueder@usa.net)                 *
4
// Purpose:     miscellaneous GUI helpers
5
 *                                                                  *
5
// Author:      Karsten Ballüder, Vadim Zeitlin
6
 * $Id: guidef.h,v 1.25 2004/08/13 20:57:56 vadz Exp $
6
// Created:     1998
7
 *
7
// CVS-ID:      $Id: guidef.h,v 1.26 2006/08/19 13:11:59 vadz Exp $
8
 *******************************************************************/
8
// Copyright:   (c) 1998-2006 Mahogany team
9
// Licence:     M license
10
///////////////////////////////////////////////////////////////////////////////
9
11
10
#ifndef GUIDEF_H
12
#ifndef M_GUIDEF_H_
11
#define GUIDEF_H
13
#define M_GUIDEF_H_
12
14
13
#ifndef USE_PCH
15
#ifndef USE_PCH
14
#  include <wx/frame.h>
16
#  include <wx/frame.h>
Lines 63-70 Link Here
63
  find a replacement encoding - if this succeeds, the text is translated into
65
  find a replacement encoding - if this succeeds, the text is translated into
64
  this encoding and the encoding parameter is modified in place.
66
  this encoding and the encoding parameter is modified in place.
65
67
66
  Note that this function is implemented in wxMApp.cpp.
67
68
  @param encoding the encoding to check, may be modified
68
  @param encoding the encoding to check, may be modified
69
  @param text the text we want to show in this encoding, may be translated
69
  @param text the text we want to show in this encoding, may be translated
70
  @return true if this or equivalent encoding is available, false otherwise
70
  @return true if this or equivalent encoding is available, false otherwise
Lines 73-78 Link Here
73
                                        wxString *text = NULL,
73
                                        wxString *text = NULL,
74
                                        bool mayAskUser = false);
74
                                        bool mayAskUser = false);
75
75
76
/**
77
   Create a font from the given native font description or font family and
78
   size.
79
80
   Notice that if neither of the parameters is specified (description is empty
81
   and the other ones are -1), an invalid font is returned and the caller
82
   should check for it and avoid using it in this case to avoid overriding the
83
   default system font if the user didn't set any specific font to use.
84
85
   @param fontDesc opaque string returned by wxFont::GetNativeFontInfoDesc()
86
   @param fontSize font size, -1 if not specified
87
   @param fontFamily font family, wxFONTFAMILY_DEFAULT if not specified
88
   @return font which may be invalid, to be checked by the caller
89
 */
90
extern wxFont
91
CreateFontFromDesc(const String& fontDesc, int fontSize, int fontFamily);
92
93
76
// Prevent MEvent dispatch inside wxYield
94
// Prevent MEvent dispatch inside wxYield
77
extern int g_busyCursorYield;
95
extern int g_busyCursorYield;
78
96
Lines 86-89 Link Here
86
   ~MBusyCursor() { MEndBusyCursor(); }
104
   ~MBusyCursor() { MEndBusyCursor(); }
87
};
105
};
88
106
89
#endif // GUIDEF_H
107
#endif // M_GUIDEF_H_
(-)mahogany-0.67/include/Mdefaults.h (-9 / +1 lines)
Lines 5-11 Link Here
5
// Author:      Karsten Ballüder
5
// Author:      Karsten Ballüder
6
// Modified by: Vadim Zeitlin at 22.08.01 to use MOption class
6
// Modified by: Vadim Zeitlin at 22.08.01 to use MOption class
7
// Created:     1997
7
// Created:     1997
8
// CVS-ID:      $Id: Mdefaults.h,v 1.259 2005/05/15 21:16:50 vadz Exp $
8
// CVS-ID:      $Id: Mdefaults.h,v 1.260 2006/08/19 13:11:59 vadz Exp $
9
// Copyright:   (c) 1997-2001 Mahogany team
9
// Copyright:   (c) 1997-2001 Mahogany team
10
// Licence:     M licence
10
// Licence:     M licence
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 15-28 Link Here
15
15
16
class Profile;
16
class Profile;
17
17
18
// under Windows 12pt font looks too huge, letters are like in a book for
19
// children
20
#ifdef OS_WIN
21
#  define DEFAULT_FONT_SIZE 10l
22
#else
23
#  define DEFAULT_FONT_SIZE 12l
24
#endif
25
26
/** @name Levels of  interaction, do something or not?
18
/** @name Levels of  interaction, do something or not?
27
19
28
    NB: these values can't be changed as they are written to (and read from)
20
    NB: these values can't be changed as they are written to (and read from)
(-)mahogany-0.67/include/Moptions.h (-7 / +7 lines)
Lines 7-13 Link Here
7
// Author:      Vadim Zeitlin
7
// Author:      Vadim Zeitlin
8
// Modified by:
8
// Modified by:
9
// Created:     23.08.01
9
// Created:     23.08.01
10
// CVS-ID:      $Id: Moptions.h,v 1.105 2006/06/23 23:27:30 vadz Exp $
10
// CVS-ID:      $Id: Moptions.h,v 1.106 2006/08/19 13:11:59 vadz Exp $
11
// Copyright:   (c) 2001 Vadim Zeitlin
11
// Copyright:   (c) 2001 Vadim Zeitlin
12
// Licence:     M licence
12
// Licence:     M licence
13
///////////////////////////////////////////////////////////////////////////////
13
///////////////////////////////////////////////////////////////////////////////
Lines 1906-1914 Link Here
1906
/// message view title
1906
/// message view title
1907
#define   MP_MVIEW_TITLE_FMT_DEFVAL   _("from $from about \"$subject\"")
1907
#define   MP_MVIEW_TITLE_FMT_DEFVAL   _("from $from about \"$subject\"")
1908
/// which font to use
1908
/// which font to use
1909
#define   MP_MVIEW_FONT_DEFVAL         6L
1909
#define   MP_MVIEW_FONT_DEFVAL         0L
1910
/// which font size
1910
/// which font size
1911
#define   MP_MVIEW_FONT_SIZE_DEFVAL         DEFAULT_FONT_SIZE
1911
#define   MP_MVIEW_FONT_SIZE_DEFVAL         -1
1912
/// the full font desc (replaces the 2 settings above)
1912
/// the full font desc (replaces the 2 settings above)
1913
#define   MP_MVIEW_FONT_DESC_DEFVAL   wxEmptyString
1913
#define   MP_MVIEW_FONT_DESC_DEFVAL   wxEmptyString
1914
/// which foreground colour for the font
1914
/// which foreground colour for the font
Lines 1944-1952 Link Here
1944
/**@name  Font settings for message view */
1944
/**@name  Font settings for message view */
1945
//@{
1945
//@{
1946
/// which font to use
1946
/// which font to use
1947
#define   MP_FVIEW_FONT_DEFVAL         4L
1947
#define   MP_FVIEW_FONT_DEFVAL         0L
1948
/// which font size
1948
/// which font size
1949
#define   MP_FVIEW_FONT_SIZE_DEFVAL         DEFAULT_FONT_SIZE
1949
#define   MP_FVIEW_FONT_SIZE_DEFVAL         -1
1950
/// the full font desc (replaces the 2 settings above)
1950
/// the full font desc (replaces the 2 settings above)
1951
#define   MP_FVIEW_FONT_DESC_DEFVAL   wxEmptyString
1951
#define   MP_FVIEW_FONT_DESC_DEFVAL   wxEmptyString
1952
/// don't show full e-mail, only sender's name
1952
/// don't show full e-mail, only sender's name
Lines 2007-2015 Link Here
2007
/**@name Font settings for compose view */
2007
/**@name Font settings for compose view */
2008
//@{
2008
//@{
2009
/// which font to use
2009
/// which font to use
2010
#define   MP_CVIEW_FONT_DEFVAL         6L
2010
#define   MP_CVIEW_FONT_DEFVAL         0L
2011
/// which font size
2011
/// which font size
2012
#define   MP_CVIEW_FONT_SIZE_DEFVAL    DEFAULT_FONT_SIZE
2012
#define   MP_CVIEW_FONT_SIZE_DEFVAL    -1
2013
/// the full font desc (replaces the 2 settings above)
2013
/// the full font desc (replaces the 2 settings above)
2014
#define   MP_CVIEW_FONT_DESC_DEFVAL   wxEmptyString
2014
#define   MP_CVIEW_FONT_DESC_DEFVAL   wxEmptyString
2015
/// which foreground colour for the font
2015
/// which foreground colour for the font
(-)mahogany-0.67/include/sysutil.h (-30 / +53 lines)
Lines 1-18 Link Here
1
/*-*- c++ -*-********************************************************
1
///////////////////////////////////////////////////////////////////////////////
2
 * sysutil.h : utility functions for various OS functionality       *
2
// Project:     M - cross platform e-mail GUI client
3
 *                                                                  *
3
// File name:   include/sysutil.h
4
 * (C) 1999 by Karsten Ballüder (Ballueder@usa.net)                 *
4
// Purpose:     utility functions for various OS-level functionality
5
 *                                                                  *
5
// Author:      Karsten Ballüder, Vadim Zeitlin
6
 * $Id: sysutil.h,v 1.10 2003/09/18 16:30:43 robertvazan Exp $
6
// Created:     1999
7
 *
7
// CVS-ID:      $Id: sysutil.h,v 1.11 2006/08/31 23:45:05 vadz Exp $
8
 *******************************************************************/
8
// Copyright:   (c) 1999 Karsten Ballüder
9
//              (c) 2000-2006 Vadim Zeitlin <vadim@wxwindows.org>
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
9
12
10
13
#ifndef M_SYSUTIL_H
11
#ifndef SYSUTIL_H
14
#define M_SYSUTIL_H
12
#define SYSUTIL_H
13
14
#ifndef  USE_PCH
15
#endif // USE_PCH
16
15
17
#include <wx/filename.h>
16
#include <wx/filename.h>
18
17
Lines 38-64 Link Here
38
class MTempFileName
37
class MTempFileName
39
{
38
{
40
public:
39
public:
41
   // def ctor: creates the temp file and doesn't delete it unless told to do
40
   /**
42
   // so (i.e. Ok() is called)
41
      Ctor creates a temporary file name and possibly associates it with the
43
   MTempFileName() : m_name (wxFileName::CreateTempFileName(_T("Mahogany")))
42
      specified file.
44
      { m_ok = false; }
43
45
44
      If the temp file name is used for writing some data to it, the file
46
   // ctor which takes a temp file name: still won't be deleted unless Ok() is
45
      parameter must be specified as otherwise the operation wouldn't be atomic
47
   // called
46
      and race conditions could occur. Do close the file before this object
48
   MTempFileName(const String& name) : m_name(name) { m_ok = false; }
47
      goes out of scope in this case though as otherwise we could fail to
48
      delete the temp file under Windows.
49
50
      @param file if non-NULL, the file to open (for writing) with the
51
                  temporary file name
52
    */
53
   MTempFileName(wxFile *file = NULL)
54
      : m_name(wxFileName::CreateTempFileName(_T("Mahogany"), file))
55
   {
56
      m_keepFile = false;
57
   }
58
59
   /**
60
      Ctor from an existing temporary file name.
49
61
50
   /// returns FALSE if temp file name couldn't be generated
62
      The specified file will be deleted when this object is destroyed unless
51
   bool IsOk() const { return !!m_name; }
63
      Ok() is called.
52
64
53
   /// get the name of the temp file
65
      @param name of the existing temporary file
66
    */
67
   MTempFileName(const String& name) : m_name(name)
68
   {
69
      m_keepFile = false;
70
   }
71
72
   /// Returns false if temp file name couldn't be generated
73
   bool IsOk() const { return !m_name.empty(); }
74
75
   /// Get the name of the temp file
54
   const String& GetName() const { return m_name; }
76
   const String& GetName() const { return m_name; }
55
77
56
   /// tells us not to delete the temp file
78
   /// Tells us not to delete the temp file
57
   void Ok() { m_ok = true; }
79
   void Ok() { m_keepFile = true; }
58
80
59
   ~MTempFileName()
81
   ~MTempFileName()
60
   {
82
   {
61
      if ( !m_ok && !m_name.empty() )
83
      if ( !m_keepFile && !m_name.empty() )
62
      {
84
      {
63
         if ( wxRemove(m_name) != 0 )
85
         if ( wxRemove(m_name) != 0 )
64
         {
86
         {
Lines 69-77 Link Here
69
91
70
private:
92
private:
71
   String m_name;
93
   String m_name;
72
   bool   m_ok;
94
   bool   m_keepFile;
73
};
95
};
74
96
75
//@}
97
//@}
76
#endif
98
99
#endif // M_SYSUTIL_H
77
100
(-)mahogany-0.67/src/adb/AdbFrame.cpp (-2 / +2 lines)
Lines 5-11 Link Here
5
// Author:      Vadim Zeitlin
5
// Author:      Vadim Zeitlin
6
// Modified by:
6
// Modified by:
7
// Created:     09.08.98
7
// Created:     09.08.98
8
// CVS-ID:      $Id: AdbFrame.cpp,v 1.121 2006/01/16 20:32:26 nerijus Exp $
8
// CVS-ID:      $Id: AdbFrame.cpp,v 1.122 2006/08/25 16:06:53 vadz Exp $
9
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
9
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
10
// Licence:     M license
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 3166-3172 Link Here
3166
3166
3167
wxAdbTree::wxAdbTree(wxAdbEditFrame *frame, wxWindow *parent, long id)
3167
wxAdbTree::wxAdbTree(wxAdbEditFrame *frame, wxWindow *parent, long id)
3168
         : wxTreeCtrl(parent, id, wxDefaultPosition, wxDefaultSize,
3168
         : wxTreeCtrl(parent, id, wxDefaultPosition, wxDefaultSize,
3169
                      wxTR_HAS_BUTTONS | wxSUNKEN_BORDER)
3169
                      wxTR_DEFAULT_STYLE | wxSUNKEN_BORDER)
3170
{
3170
{
3171
  m_frame = frame;
3171
  m_frame = frame;
3172
  m_menu = NULL;
3172
  m_menu = NULL;
(-)mahogany-0.67/src/classes/MessageView.cpp (-27 / +8 lines)
Lines 8-14 Link Here
8
// Author:      Vadim Zeitlin (based on gui/MessageView.cpp by Karsten)
8
// Author:      Vadim Zeitlin (based on gui/MessageView.cpp by Karsten)
9
// Modified by:
9
// Modified by:
10
// Created:     24.07.01
10
// Created:     24.07.01
11
// CVS-ID:      $Id: MessageView.cpp,v 1.173 2006/07/24 14:13:41 vadz Exp $
11
// CVS-ID:      $Id: MessageView.cpp,v 1.175 2006/08/23 15:41:53 vadz Exp $
12
// Copyright:   (c) 2001 Mahogany Team
12
// Copyright:   (c) 2001 Mahogany Team
13
// Licence:     Mahogany license
13
// Licence:     Mahogany license
14
///////////////////////////////////////////////////////////////////////////////
14
///////////////////////////////////////////////////////////////////////////////
Lines 505-539 Link Here
505
505
506
wxFont MessageView::AllProfileValues::GetFont(wxFontEncoding encoding) const
506
wxFont MessageView::AllProfileValues::GetFont(wxFontEncoding encoding) const
507
{
507
{
508
   wxFont font;
508
   wxFont font(CreateFontFromDesc(fontDesc, fontSize, fontFamily));
509
509
510
   if ( !fontDesc.empty() )
510
   // assume that wxFONTENCODING_DEFAULT (US-ASCII) text can be shown in any
511
   // encoding
512
   if ( encoding != wxFONTENCODING_DEFAULT )
511
   {
513
   {
512
      wxNativeFontInfo fontInfo;
514
      if ( !font.Ok() )
513
      if ( fontInfo.FromString(fontDesc) )
515
         font = *wxNORMAL_FONT;
514
      {
515
         font.SetNativeFontInfo(fontInfo);
516
516
517
         // assume that iso8859-1 text can be shown in any encoding - it's
517
      font.SetEncoding(encoding);
518
         // true for all normal fonts
519
         if ( font.Ok() &&
520
               (encoding != wxFONTENCODING_DEFAULT) &&
521
                  (encoding != wxFONTENCODING_ISO8859_1) )
522
         {
523
            font.SetEncoding(encoding);
524
         }
525
      }
526
   }
527
528
   if ( !font.Ok() )
529
   {
530
      font = wxFont(fontSize,
531
                    fontFamily,
532
                    wxFONTSTYLE_NORMAL,
533
                    wxFONTWEIGHT_NORMAL,
534
                    FALSE,   // not underlined
535
                    wxEmptyString,  // no specific face name
536
                    encoding);
537
   }
518
   }
538
519
539
   return font;
520
   return font;
(-)mahogany-0.67/src/classes/MModule.cpp (-2 / +2 lines)
Lines 3-9 Link Here
3
 *                                                                  *
3
 *                                                                  *
4
 * (C) 1999 by Karsten Ballüder (karsten@phy.hw.ac.uk)              *
4
 * (C) 1999 by Karsten Ballüder (karsten@phy.hw.ac.uk)              *
5
 *                                                                  *
5
 *                                                                  *
6
 * $Id: MModule.cpp,v 1.97 2006/02/12 22:36:40 vadz Exp $
6
 * $Id: MModule.cpp,v 1.98 2006/08/25 15:59:30 vadz Exp $
7
 *******************************************************************/
7
 *******************************************************************/
8
8
9
/*
9
/*
Lines 158-165 Link Here
158
   wxDynamicLibrary *dll = module->GetDLL();
158
   wxDynamicLibrary *dll = module->GetDLL();
159
159
160
   // call cleanup function, if any
160
   // call cleanup function, if any
161
   if ( dll->HasSymbol(MMODULE_CLEANUP_FUNCTION) )
161
   {
162
   {
162
      wxLogNull noLog;
163
      MModule_CleanUpFuncType funcCleanup =
163
      MModule_CleanUpFuncType funcCleanup =
164
         (MModule_CleanUpFuncType)dll->GetSymbol(MMODULE_CLEANUP_FUNCTION);
164
         (MModule_CleanUpFuncType)dll->GetSymbol(MMODULE_CLEANUP_FUNCTION);
165
      if ( funcCleanup )
165
      if ( funcCleanup )
(-)mahogany-0.67/src/gui/ClickURL.cpp (-5 / +9 lines)
Lines 6-12 Link Here
6
// Author:      Vadim Zeitlin
6
// Author:      Vadim Zeitlin
7
// Modified by:
7
// Modified by:
8
// Created:     05.12.02 (extracted from MessageView.cpp and wxMessageView.cpp)
8
// Created:     05.12.02 (extracted from MessageView.cpp and wxMessageView.cpp)
9
// CVS-ID:      $Id: ClickURL.cpp,v 1.24 2006/06/26 23:24:41 vadz Exp $
9
// CVS-ID:      $Id: ClickURL.cpp,v 1.26 2006/08/31 17:59:27 nerijus Exp $
10
// Copyright:   (c) 2001-2002 Mahogany Team
10
// Copyright:   (c) 2001-2002 Mahogany Team
11
// Licence:     Mahogany license
11
// Licence:     Mahogany license
12
///////////////////////////////////////////////////////////////////////////////
12
///////////////////////////////////////////////////////////////////////////////
Lines 48-53 Link Here
48
#include "Collect.h"
48
#include "Collect.h"
49
49
50
#include <wx/clipbrd.h>
50
#include <wx/clipbrd.h>
51
#include <wx/mimetype.h>
51
52
52
#ifdef OS_UNIX
53
#ifdef OS_UNIX
53
   #include <sys/stat.h>
54
   #include <sys/stat.h>
Lines 260-268 Link Here
260
            }
261
            }
261
            else
262
            else
262
            {
263
            {
264
#ifdef DEBUG_nerijus
263
               wxTheClipboard->UsePrimarySelection();
265
               wxTheClipboard->UsePrimarySelection();
264
               wxTheClipboard->SetData(new
266
               wxTheClipboard->SetData(new wxTextDataObject(m_clickableURL->GetUrl()));
265
                     wxTextDataObject(m_clickableURL->GetUrl()));
267
#endif
268
               wxURLDataObject *dobj = new wxURLDataObject;
269
               dobj->SetURL(m_clickableURL->GetUrl());
270
               wxTheClipboard->SetData(dobj);
266
            }
271
            }
267
         }
272
         }
268
         break;
273
         break;
Lines 500-507 Link Here
500
      // either not netscape or ns isn't running or we have non-UNIX
505
      // either not netscape or ns isn't running or we have non-UNIX
501
      if(! bOk)
506
      if(! bOk)
502
      {
507
      {
503
         command = browser;
508
         String command = wxFileType::ExpandCommand(browser, m_url);
504
         command << _T(' ') << m_url;
505
509
506
         wxString errmsg;
510
         wxString errmsg;
507
         errmsg.Printf(_("Couldn't launch browser: '%s' failed"),
511
         errmsg.Printf(_("Couldn't launch browser: '%s' failed"),
(-)mahogany-0.67/src/gui/wxBrowseButton.cpp (-32 / +3 lines)
Lines 6-12 Link Here
6
// Author:      Vadim Zeitlin
6
// Author:      Vadim Zeitlin
7
// Modified by:
7
// Modified by:
8
// Created:     24.12.98
8
// Created:     24.12.98
9
// CVS-ID:      $Id: wxBrowseButton.cpp,v 1.43 2006/04/09 20:36:54 vadz Exp $
9
// CVS-ID:      $Id: wxBrowseButton.cpp,v 1.44 2006/08/31 23:18:28 vadz Exp $
10
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
10
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
12
12
Lines 384-418 Link Here
384
{
384
{
385
}
385
}
386
386
387
// FIXME: these methods rely on internals of wxNativeFontInfo because they
388
//        know that it prepends the format version number (currently 0) to
389
//        the real font desc string - they shouldn't but we should add methods
390
//        to wxNativeFontInfo to do this conversion instead!
391
392
String wxFontBrowseButton::FontDescToUser(const String& desc)
393
{
394
   String user = desc;
395
   if ( user.length() > 2 && user[0u] == '0' && user[1u] == ';' )
396
   {
397
      user.erase(0, 2);
398
   }
399
400
   return user;
401
}
402
403
String wxFontBrowseButton::FontDescFromUser(const String& user)
404
{
405
   String desc;
406
   if ( !user.empty() )
407
   {
408
      desc = _T("0;");
409
   }
410
411
   desc += user;
412
413
   return desc;
414
}
415
416
void wxFontBrowseButton::DoBrowse()
387
void wxFontBrowseButton::DoBrowse()
417
{
388
{
418
   wxFont font;
389
   wxFont font;
Lines 420-426 Link Here
420
   wxString desc = GetText();
391
   wxString desc = GetText();
421
   if ( !desc.empty() )
392
   if ( !desc.empty() )
422
   {
393
   {
423
      if ( fontInfo.FromString(FontDescFromUser(desc)) )
394
      if ( fontInfo.FromString(desc) )
424
      {
395
      {
425
         font.SetNativeFontInfo(fontInfo);
396
         font.SetNativeFontInfo(fontInfo);
426
      }
397
      }
Lines 434-440 Link Here
434
   {
405
   {
435
      font = dialog.GetFontData().GetChosenFont();
406
      font = dialog.GetFontData().GetChosenFont();
436
407
437
      SetText(FontDescToUser(font.GetNativeFontInfoDesc()));
408
      SetText(font.GetNativeFontInfoDesc());
438
   }
409
   }
439
}
410
}
440
411
(-)mahogany-0.67/src/gui/wxComposeView.cpp (-30 / +38 lines)
Lines 5-11 Link Here
5
// Author:      Karsten Ballüder, Vadim Zeitlin
5
// Author:      Karsten Ballüder, Vadim Zeitlin
6
// Modified by:
6
// Modified by:
7
// Created:     1998
7
// Created:     1998
8
// CVS-ID:      $Id: wxComposeView.cpp,v 1.413 2006/06/28 15:55:15 vadz Exp $
8
// CVS-ID:      $Id: wxComposeView.cpp,v 1.418 2006/08/25 13:25:48 vadz Exp $
9
// Copyright:   (c) 1998-2001 Mahogany team
9
// Copyright:   (c) 1998-2001 Mahogany team
10
// Licence:     M license
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 924-948 Link Here
924
924
925
wxFont ComposerOptions::GetFont() const
925
wxFont ComposerOptions::GetFont() const
926
{
926
{
927
   wxFont font;
927
   return CreateFontFromDesc(m_font, m_fontSize, m_fontFamily);
928
   if ( !m_font.empty() )
929
   {
930
      wxNativeFontInfo fontInfo;
931
      if ( fontInfo.FromString(m_font) )
932
      {
933
         font.SetNativeFontInfo(fontInfo);
934
      }
935
   }
936
937
   if ( !font.Ok() )
938
   {
939
      font = wxFont(m_fontSize,
940
                    m_fontFamily,
941
                    wxFONTSTYLE_NORMAL,
942
                    wxFONTWEIGHT_NORMAL);
943
   }
944
945
   return font;
946
}
928
}
947
929
948
// ----------------------------------------------------------------------------
930
// ----------------------------------------------------------------------------
Lines 2288-2294 Link Here
2288
   {
2270
   {
2289
      text->SetForegroundColour(m_options.m_fg);
2271
      text->SetForegroundColour(m_options.m_fg);
2290
      text->SetBackgroundColour(m_options.m_bg);
2272
      text->SetBackgroundColour(m_options.m_bg);
2291
      text->SetFont(m_options.GetFont());
2273
      wxFont font(m_options.GetFont());
2274
      if ( font.Ok() )
2275
         text->SetFont(font);
2292
2276
2293
      wxSizer *sizer = text->GetContainingSizer();
2277
      wxSizer *sizer = text->GetContainingSizer();
2294
      if ( sizer )
2278
      if ( sizer )
Lines 3764-3771 Link Here
3764
         // we have a handy function in wxFileType which will replace
3748
         // we have a handy function in wxFileType which will replace
3765
         // '%s' with the file name or add the file name at the end if
3749
         // '%s' with the file name or add the file name at the end if
3766
         // there is no '%s'
3750
         // there is no '%s'
3767
         wxFileType::MessageParameters params(tmpFileName.GetName(), wxEmptyString);
3751
         String
3768
         String command = wxFileType::ExpandCommand(extEdit, params);
3752
            command = wxFileType::ExpandCommand(extEdit, tmpFileName.GetName());
3769
3753
3770
         // do start the external process
3754
         // do start the external process
3771
         m_procExtEdit = new wxProcess(this, HelperProcess_Editor);
3755
         m_procExtEdit = new wxProcess(this, HelperProcess_Editor);
Lines 4074-4085 Link Here
4074
      }
4058
      }
4075
      else // non empty file
4059
      else // non empty file
4076
      {
4060
      {
4077
         wxChar *p = text.GetWriteBuf(lenFile + 1);
4061
         wxStringBuffer buf(text, lenFile + 1);
4078
         p[lenFile] = '\0';
4062
         buf[lenFile] = '\0';
4079
4080
         ok = file.Read(p, lenFile) != wxInvalidOffset;
4081
4063
4082
         text.UngetWriteBuf();
4064
         ok = file.Read(buf, lenFile) != wxInvalidOffset;
4083
      }
4065
      }
4084
   }
4066
   }
4085
4067
Lines 4095-4105 Link Here
4095
   return true;
4077
   return true;
4096
}
4078
}
4097
4079
4098
/// inserts a text
4099
void
4080
void
4100
wxComposeView::InsertText(const String &text)
4081
wxComposeView::InsertText(const String &text)
4101
{
4082
{
4102
   m_editor->InsertText(text, MessageEditor::Insert_Append);
4083
   // the text here may come from a file and so can be in an encoding different
4084
   // from the one we currently use, but we -- unfortunately -- have no way of
4085
   // knowing about it, except in the special case when we use UTF-8 and then
4086
   // we must check if text is a valid UTF-8 string as otherwise inserting it
4087
   // is going to fail
4088
   String textCopy;
4089
   if ( wxLocale::GetSystemEncoding() == wxFONTENCODING_UTF8 )
4090
   {
4091
      if ( wxConvUTF8.MB2WC(NULL, text, 0) == (size_t)-1 )
4092
      {
4093
         // not a valid UTF-8 string, must suppose it's in some other encoding
4094
         // and as we have no idea about what it is, choose latin1 as the most
4095
         // common (among Mahogany users, anyhow)
4096
         if ( m_encoding == wxFONTENCODING_SYSTEM )
4097
         {
4098
            // change the encoding to latin1 if none explicitly specified
4099
            SetEncoding(wxFONTENCODING_ISO8859_1);
4100
         }
4101
         else // we already have an existing encoding
4102
         {
4103
            // transform the text from latin1 to the current encoding
4104
            textCopy = wxCSConv(m_encoding).cWC2MB(wxConvISO8859_1.cMB2WC(text));
4105
         }
4106
      }
4107
   }
4108
4109
   m_editor->InsertText(textCopy.empty() ? text : textCopy,
4110
                        MessageEditor::Insert_Append);
4103
}
4111
}
4104
4112
4105
void
4113
void
(-)mahogany-0.67/src/gui/wxFolderTree.cpp (-2 / +2 lines)
Lines 5-11 Link Here
5
// Author:      Vadim Zeitlin
5
// Author:      Vadim Zeitlin
6
// Modified by:
6
// Modified by:
7
// Created:     03.10.98
7
// Created:     03.10.98
8
// CVS-ID:      $Id: wxFolderTree.cpp,v 1.243 2006/06/28 12:46:34 vadz Exp $
8
// CVS-ID:      $Id: wxFolderTree.cpp,v 1.244 2006/08/19 14:22:53 vadz Exp $
9
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
9
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
10
// Licence:     M license
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 1754-1760 Link Here
1754
                                   wxWindow *parent, wxWindowID id,
1754
                                   wxWindow *parent, wxWindowID id,
1755
                                   const wxPoint& pos, const wxSize& size)
1755
                                   const wxPoint& pos, const wxSize& size)
1756
                : wxPTreeCtrl(_T("FolderTree"), parent, id, pos, size,
1756
                : wxPTreeCtrl(_T("FolderTree"), parent, id, pos, size,
1757
                              wxTR_HAS_BUTTONS | wxTR_EDIT_LABELS)
1757
                              wxTR_DEFAULT_STYLE | wxTR_EDIT_LABELS)
1758
{
1758
{
1759
   // init member vars
1759
   // init member vars
1760
   m_current = NULL;
1760
   m_current = NULL;
(-)mahogany-0.67/src/gui/wxFolderView.cpp (-31 / +13 lines)
Lines 5-11 Link Here
5
// Author:      Karsten Ballüder (Ballueder@gmx.net)
5
// Author:      Karsten Ballüder (Ballueder@gmx.net)
6
// Modified by: VZ at 13.07.01: use virtual list control, update on demand
6
// Modified by: VZ at 13.07.01: use virtual list control, update on demand
7
// Created:     1997
7
// Created:     1997
8
// CVS-ID:      $Id: wxFolderView.cpp,v 1.679 2006/06/30 11:08:18 nerijus Exp $
8
// CVS-ID:      $Id: wxFolderView.cpp,v 1.683 2006/08/19 13:12:00 vadz Exp $
9
// Copyright:   (c) 1997-2001 Mahogany team
9
// Copyright:   (c) 1997-2001 Mahogany team
10
// Licence:     M license
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 1608-1631 Link Here
1608
   SetTextColour( fg );
1608
   SetTextColour( fg );
1609
   SetBackgroundColour( bg );
1609
   SetBackgroundColour( bg );
1610
1610
1611
   wxFont font;
1611
   wxFont font(CreateFontFromDesc(fontDesc, fontSize, fontFamily));
1612
   if ( !fontDesc.empty() )
1612
   if ( font.Ok() )
1613
   {
1613
   {
1614
      wxNativeFontInfo fontInfo;
1614
      SetFont(font);
1615
      if ( fontInfo.FromString(fontDesc) )
1616
      {
1617
         font.SetNativeFontInfo(fontInfo);
1618
      }
1619
   }
1620
1621
   if ( !font.Ok() )
1622
   {
1623
      font = wxFont(fontSize, fontFamily,
1624
                    wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
1625
   }
1615
   }
1626
1616
1627
   SetFont(font);
1628
1629
   if ( memcmp(m_columns, columns, sizeof(m_columns)) != 0 )
1617
   if ( memcmp(m_columns, columns, sizeof(m_columns)) != 0 )
1630
   {
1618
   {
1631
      // the control must be recreated if the order of columns changed
1619
      // the control must be recreated if the order of columns changed
Lines 4626-4651 Link Here
4626
         }
4614
         }
4627
         break;
4615
         break;
4628
4616
4629
      case WXK_UP:
4630
      case WXK_DOWN:
4631
      case WXK_HOME:
4632
      case WXK_END:
4633
      case WXK_RETURN:
4634
#if !defined DEBUG_nerijus
4635
      case WXK_SPACE:
4636
#endif
4637
         // let the control process these keys as they're used for navigation
4638
         event.Skip();
4639
         return false;
4640
4641
      default:
4617
      default:
4642
         // pressing any alphanumeric character in the list control starts
4618
         // pressing any alphanumeric character in the list control starts
4643
         // incremental search in it which is worse than useless in our case
4619
         // incremental search in it which is worse than useless in our case
4644
         // because it's never going to find anything (the first column is
4620
         // because it's never going to find anything (the first column is
4645
         // always flags in this case and won't match...) and we just lost the
4621
         // always flags in this case and won't match...) and we just lose the
4646
         // current selection, so prevent this from happening by *not* calling
4622
         // current selection, so prevent this from happening by *not* calling
4647
         // event.Skip() here
4623
         // event.Skip() in this case
4648
         ;
4624
         if ( key >= 0x7f || !isalnum(key) )
4625
         {
4626
            // let the control process other keys (some are used for navigation
4627
            // in it)
4628
            event.Skip();
4629
            return false;
4630
         }
4649
   }
4631
   }
4650
4632
4651
   if ( cmd )
4633
   if ( cmd )
(-)mahogany-0.67/src/gui/wxIconManager.cpp (-6 / +13 lines)
Lines 3-9 Link Here
3
 *                                                                  *
3
 *                                                                  *
4
 * (C) 1997-1999 by Karsten Ballüder (ballueder@gmx.net)            *
4
 * (C) 1997-1999 by Karsten Ballüder (ballueder@gmx.net)            *
5
 *                                                                  *
5
 *                                                                  *
6
 * $Id: wxIconManager.cpp,v 1.110 2006/01/16 20:32:27 nerijus Exp $
6
 * $Id: wxIconManager.cpp,v 1.112 2006/08/25 16:23:13 vadz Exp $
7
 *******************************************************************/
7
 *******************************************************************/
8
8
9
// ============================================================================
9
// ============================================================================
Lines 556-568 Link Here
556
      return icon;
556
      return icon;
557
557
558
   // next step: try to load the icon files .png,.xpm,.gif:
558
   // next step: try to load the icon files .png,.xpm,.gif:
559
   bool found = false;
560
   if(m_GlobalDir.Length())
559
   if(m_GlobalDir.Length())
561
   {
560
   {
562
      PathFinder pf(READ_APPCONFIG(MP_ICONPATH));
561
      PathFinder pf(READ_APPCONFIG(MP_ICONPATH));
563
562
564
#ifdef M_TOP_SOURCEDIR
563
#ifdef M_TOP_SOURCEDIR
564
      // look in the source directory to make it possible to use the program
565
      // without installing it
565
      pf.AddPaths(String(M_TOP_SOURCEDIR) + _T("/src/icons"));
566
      pf.AddPaths(String(M_TOP_SOURCEDIR) + _T("/src/icons"));
567
      pf.AddPaths(String(M_TOP_SOURCEDIR) + _T("/res"));
566
#endif // M_TOP_SOURCEDIR
568
#endif // M_TOP_SOURCEDIR
567
569
568
      pf.AddPaths(m_GlobalDir, false);
570
      pf.AddPaths(m_GlobalDir, false);
Lines 580-590 Link Here
580
      String name;
582
      String name;
581
      for ( int ext = 0; wxIconManagerFileExtensions[ext]; ext++ )
583
      for ( int ext = 0; wxIconManagerFileExtensions[ext]; ext++ )
582
      {
584
      {
583
         // Use iconNameOrig to preserve captialisation:
585
         // use iconNameOrig here to preserve the original case
584
         name = iconNameOrig + wxIconManagerFileExtensions[ext];
586
         name = pf.FindFile(iconNameOrig + wxIconManagerFileExtensions[ext]);
585
         name = pf.FindFile(name, &found);
586
587
587
         if( found )
588
         // but if it's not found, also fall back to the usual lower case
589
         if ( name.empty() )
590
         {
591
            name = pf.FindFile(iconName + wxIconManagerFileExtensions[ext]);
592
         }
593
594
         if ( !name.empty() )
588
         {
595
         {
589
            ms_IconPath = name.BeforeLast('/');
596
            ms_IconPath = name.BeforeLast('/');
590
597
(-)mahogany-0.67/src/gui/wxMApp.cpp (-70 / +24 lines)
Lines 6-12 Link Here
6
// Author:      Karsten Ballüder, Vadim Zeitlin
6
// Author:      Karsten Ballüder, Vadim Zeitlin
7
// Modified by:
7
// Modified by:
8
// Created:     1997
8
// Created:     1997
9
// CVS-ID:      $Id: wxMApp.cpp,v 1.305 2006/04/19 00:55:04 vadz Exp $
9
// CVS-ID:      $Id: wxMApp.cpp,v 1.309 2006/09/02 12:41:30 vadz Exp $
10
// Copyright:   (c) 1997-2002 M-Team
10
// Copyright:   (c) 1997-2002 M-Team
11
// Licence:     M license
11
// Licence:     M license
12
///////////////////////////////////////////////////////////////////////////////
12
///////////////////////////////////////////////////////////////////////////////
Lines 913-920 Link Here
913
bool
913
bool
914
wxMApp::OnInit()
914
wxMApp::OnInit()
915
{
915
{
916
   // we want our OnAbnormalTermination() be called if we crash
916
   // we want our OnAbnormalTermination() be called if we crash but don't use
917
#if wxUSE_ON_FATAL_EXCEPTION
917
   // it in debug builds as it interferes with the debugger
918
#if wxUSE_ON_FATAL_EXCEPTION && !defined(__WXDEBUG__)
918
   wxHandleFatalExceptions();
919
   wxHandleFatalExceptions();
919
#endif
920
#endif
920
921
Lines 1101-1106 Link Here
1101
   }
1102
   }
1102
#endif // USE_I18N
1103
#endif // USE_I18N
1103
1104
1105
   // wxLocale::GetSystemEncoding() is broken in wx <= 2.6.3, it returns
1106
   // ISO-8859-1 for UTF-8 locale
1107
#if defined(__WXGTK20__) && wxCHECK_VERSION(2, 6, 4)
1108
   // we need UTF-8 support to be able to work with messages in different
1109
   // encodings
1110
   if ( wxLocale::GetSystemEncoding() != wxFONTENCODING_UTF8 )
1111
   {
1112
      // TODO: set encoding to UTF-8 (but keeping the current language)
1113
      //       ourselves
1114
      wxLogWarning(_("Your current locale doesn't use UTF-8 encoding!\n"
1115
                     "\n"
1116
                     "This means that Mahogany will not be able to work "
1117
                     "with texts in encodings other than the default one\n"
1118
                     "which may result in messages not being displayed or "
1119
                     "even sent correctly.\n"
1120
                     "\n"
1121
                     "Please change the system locale to UTF-8."));
1122
   }
1123
#endif // GTK+ 2.0
1124
1104
   wxInitAllImageHandlers();
1125
   wxInitAllImageHandlers();
1105
   wxFileSystem::AddHandler(new wxMemoryFSHandler);
1126
   wxFileSystem::AddHandler(new wxMemoryFSHandler);
1106
//   wxFileSystem::AddHandler(new wxZipFSHandler); // for zipped docs
1127
//   wxFileSystem::AddHandler(new wxZipFSHandler); // for zipped docs
Lines 2503-2575 Link Here
2503
   return true;
2524
   return true;
2504
}
2525
}
2505
2526
2506
// ----------------------------------------------------------------------------
2507
// global functions implemented here
2508
// ----------------------------------------------------------------------------
2509
2510
extern bool EnsureAvailableTextEncoding(wxFontEncoding *enc,
2511
                                        wxString *text,
2512
                                        bool mayAskUser)
2513
{
2514
   CHECK( enc, false, _T("CheckEncodingAvailability: NULL encoding") );
2515
2516
   if ( !wxFontMapper::Get()->IsEncodingAvailable(*enc) )
2517
   {
2518
      // try to find another encoding
2519
      wxFontEncoding encAlt;
2520
      if ( wxFontMapper::Get()->
2521
            GetAltForEncoding(*enc, &encAlt, wxEmptyString, mayAskUser) )
2522
      {
2523
         // translate the text (if any) to the equivalent encoding
2524
         if ( text && !text->empty() )
2525
         {
2526
#if wxUSE_WCHAR_T
2527
            // try converting via Unicode
2528
            wxCSConv a2w(*enc);
2529
            wxWCharBuffer wbuf(a2w.cMB2WC(text->c_str()));
2530
            if ( *wbuf )
2531
            {
2532
               // special case of UTF-8 which is used all the time under wxGTK
2533
               if ( encAlt == wxFONTENCODING_UTF8 )
2534
               {
2535
                  *text = wxConvUTF8.cWC2MB(wbuf);
2536
               }
2537
               else // all the other encodings, use generic converter
2538
               {
2539
                  wxCSConv w2a(encAlt);
2540
                  *text = w2a.cWC2MB(wbuf);
2541
               }
2542
2543
               if ( !text->empty() )
2544
                  return true;
2545
               //else: fall back to wxEncodingConverter
2546
            }
2547
            //else: conversion to Unicode failed
2548
#endif // wxUSE_WCHAR_T
2549
2550
            wxEncodingConverter conv;
2551
            if ( !conv.Init(*enc, encAlt) )
2552
            {
2553
               // failed to convert the text
2554
               return false;
2555
            }
2556
2557
            *text = conv.Convert(*text);
2558
         }
2559
         //else: just return the encoding
2560
2561
         *enc = encAlt;
2562
      }
2563
      else // no equivalent encoding
2564
      {
2565
         return false;
2566
      }
2567
   }
2568
2569
   // we have either the requested encoding or an equivalent one
2570
   return true;
2571
}
2572
2573
// ============================================================================
2527
// ============================================================================
2574
// IPC and multiple program instances handling
2528
// IPC and multiple program instances handling
2575
// ============================================================================
2529
// ============================================================================
(-)mahogany-0.67/src/gui/wxMDialogs.cpp (-4 / +6 lines)
Lines 3-9 Link Here
3
 *                                                                  *
3
 *                                                                  *
4
 * (C) 1998-2000 by Karsten Ballüder (karsten@phy.hw.ac.uk)         *
4
 * (C) 1998-2000 by Karsten Ballüder (karsten@phy.hw.ac.uk)         *
5
 *                                                                  *
5
 *                                                                  *
6
 * $Id: wxMDialogs.cpp,v 1.433 2006/08/06 20:02:01 vadz Exp $
6
 * $Id: wxMDialogs.cpp,v 1.435 2006/08/25 16:22:46 vadz Exp $
7
 *******************************************************************/
7
 *******************************************************************/
8
8
9
#ifdef __GNUG__
9
#ifdef __GNUG__
Lines 2163-2170 Link Here
2163
                                             MH_DIALOG_LICENSE);
2163
                                             MH_DIALOG_LICENSE);
2164
   wxHtmlWindow *license = new wxHtmlWindow(this);
2164
   wxHtmlWindow *license = new wxHtmlWindow(this);
2165
2165
2166
   wxBitmap bmp(mApplication->GetIconManager()-> GetBitmap(_T("Msplash")));
2166
   wxBitmap bmp(mApplication->GetIconManager()->GetBitmap(_T("Msplash")));
2167
   const int w = bmp.Ok() ? bmp.GetWidth() : 400;
2167
   int w = bmp.Ok() ? bmp.GetWidth() : 0;
2168
   if ( w < 400 )
2169
      w = 400;
2168
2170
2169
   wxMemoryFSHandler::AddFile(_T("splash.png"), bmp, wxBITMAP_TYPE_PNG);
2171
   wxMemoryFSHandler::AddFile(_T("splash.png"), bmp, wxBITMAP_TYPE_PNG);
2170
2172
Lines 2740-2746 Link Here
2740
   m_frame->CentreOnParent();
2742
   m_frame->CentreOnParent();
2741
   m_frame->Show();
2743
   m_frame->Show();
2742
2744
2743
   wxYield();
2745
   m_frame->Update();
2744
}
2746
}
2745
2747
2746
void MProgressInfo::SetLabel(const wxString& label)
2748
void MProgressInfo::SetLabel(const wxString& label)
(-)mahogany-0.67/src/gui/wxMGuiUtils.cpp (+129 lines)
Line 0 Link Here
1
///////////////////////////////////////////////////////////////////////////////
2
// Project:     M - cross platform e-mail GUI client
3
// File name:   gui/wxMGuiUtils.cpp
4
// Purpose:     miscellaneous GUI helpers
5
// Author:      Vadim Zeitlin
6
// Created:     2006-08-19
7
// CVS-ID:      $Id: wxMGuiUtils.cpp,v 1.1 2006/08/19 13:12:00 vadz Exp $
8
// Copyright:   (c) 2006 Vadim Zeitlin
9
// Licence:     M license
10
///////////////////////////////////////////////////////////////////////////////
11
12
// ============================================================================
13
// declarations
14
// ============================================================================
15
16
// ----------------------------------------------------------------------------
17
// headers
18
// ----------------------------------------------------------------------------
19
20
#include "Mpch.h"
21
22
#ifndef  USE_PCH
23
#  include "Mcommon.h"
24
#  include "guidef.h"
25
26
#  include <wx/fontmap.h>
27
#endif // USE_PCH
28
29
#include <wx/encconv.h>
30
31
// ============================================================================
32
// implementation
33
// ============================================================================
34
35
bool
36
EnsureAvailableTextEncoding(wxFontEncoding *enc, wxString *text, bool mayAskUser)
37
{
38
   CHECK( enc, false, _T("CheckEncodingAvailability: NULL encoding") );
39
40
   if ( !wxFontMapper::Get()->IsEncodingAvailable(*enc) )
41
   {
42
      // try to find another encoding
43
      wxFontEncoding encAlt;
44
      if ( wxFontMapper::Get()->
45
            GetAltForEncoding(*enc, &encAlt, wxEmptyString, mayAskUser) )
46
      {
47
         // translate the text (if any) to the equivalent encoding
48
         if ( text && !text->empty() )
49
         {
50
#if wxUSE_WCHAR_T
51
            // try converting via Unicode
52
            wxCSConv a2w(*enc);
53
            wxWCharBuffer wbuf(a2w.cMB2WC(text->c_str()));
54
            if ( *wbuf )
55
            {
56
               // special case of UTF-8 which is used all the time under wxGTK
57
               if ( encAlt == wxFONTENCODING_UTF8 )
58
               {
59
                  *text = wxConvUTF8.cWC2MB(wbuf);
60
               }
61
               else // all the other encodings, use generic converter
62
               {
63
                  wxCSConv w2a(encAlt);
64
                  *text = w2a.cWC2MB(wbuf);
65
               }
66
67
               if ( !text->empty() )
68
                  return true;
69
               //else: fall back to wxEncodingConverter
70
            }
71
            //else: conversion to Unicode failed
72
#endif // wxUSE_WCHAR_T
73
74
            wxEncodingConverter conv;
75
            if ( !conv.Init(*enc, encAlt) )
76
            {
77
               // failed to convert the text
78
               return false;
79
            }
80
81
            *text = conv.Convert(*text);
82
         }
83
         //else: just return the encoding
84
85
         *enc = encAlt;
86
      }
87
      else // no equivalent encoding
88
      {
89
         return false;
90
      }
91
   }
92
93
   // we have either the requested encoding or an equivalent one
94
   return true;
95
}
96
97
wxFont
98
CreateFontFromDesc(const String& fontDesc, int fontSize, int fontFamily)
99
{
100
   wxFont font;
101
102
   // use the native font description if we have it
103
   if ( !fontDesc.empty() )
104
   {
105
      wxNativeFontInfo fontInfo;
106
      if ( fontInfo.FromString(fontDesc) )
107
      {
108
         font.SetNativeFontInfo(fontInfo);
109
      }
110
   }
111
112
   // if we don't, or if creating font from it failed, create the font with the
113
   // given size and family if we have [either of] them
114
   if ( !font.Ok() && (fontSize != -1 || fontFamily != -1) )
115
   {
116
      font = wxFont
117
             (
118
               fontSize == -1 ? wxNORMAL_FONT->GetPointSize()
119
                              : fontSize,
120
               fontFamily == wxFONTFAMILY_DEFAULT ? wxNORMAL_FONT->GetFamily()
121
                                                  : fontFamily,
122
               wxFONTSTYLE_NORMAL,
123
               wxFONTWEIGHT_NORMAL
124
             );
125
   }
126
127
   return font;
128
}
129
(-)mahogany-0.67/src/gui/wxMSplash.cpp (-4 / +6 lines)
Lines 4-10 Link Here
4
// Purpose:     splash screen/about dialog implementation
4
// Purpose:     splash screen/about dialog implementation
5
// Author:      Vadim Zeitlin
5
// Author:      Vadim Zeitlin
6
// Created:     2006-06-04 (extracted from wxMDialogs.cpp)
6
// Created:     2006-06-04 (extracted from wxMDialogs.cpp)
7
// CVS-ID:      $Id: wxMSplash.cpp,v 1.2 2006/06/04 19:24:54 nerijus Exp $
7
// CVS-ID:      $Id: wxMSplash.cpp,v 1.6 2006/08/31 23:09:06 nerijus Exp $
8
// Copyright:   (c) 1998-2006 Vadim Zeitlin <vadim@wxwindows.org>
8
// Copyright:   (c) 1998-2006 Vadim Zeitlin <vadim@wxwindows.org>
9
// Licence:     M license
9
// Licence:     M license
10
///////////////////////////////////////////////////////////////////////////////
10
///////////////////////////////////////////////////////////////////////////////
Lines 174-180 Link Here
174
   wxStaticBitmap *top = new wxStaticBitmap(this, wxID_ANY, bmp,
174
   wxStaticBitmap *top = new wxStaticBitmap(this, wxID_ANY, bmp,
175
                                            wxPoint(0, 0), sizeBmp);
175
                                            wxPoint(0, 0), sizeBmp);
176
   wxHtmlWindow *bottom = new wxHtmlWindow(this, wxID_ANY,
176
   wxHtmlWindow *bottom = new wxHtmlWindow(this, wxID_ANY,
177
                                           wxPoint(0, sizeBmp.y + 1), sizeBmp);
177
                                           wxPoint(0, sizeBmp.y + 1), sizeBmp,
178
                                           wxHW_DEFAULT_STYLE | wxHW_NO_SELECTION);
178
179
179
   ConnectMouseAndKeyEvents(top);
180
   ConnectMouseAndKeyEvents(top);
180
   ConnectMouseAndKeyEvents(bottom);
181
   ConnectMouseAndKeyEvents(bottom);
Lines 219-224 Link Here
219
   wxString pageHtmlText;
220
   wxString pageHtmlText;
220
221
221
   pageHtmlText << _T("<body text=#000000 bgcolor=#ffffff>"
222
   pageHtmlText << _T("<body text=#000000 bgcolor=#ffffff>"
223
                   "<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;charset=UTF-8\">"
222
                   "<font face=\"Times New Roman,times\">"
224
                   "<font face=\"Times New Roman,times\">"
223
225
224
                   "<h4>") << _("Mahogany information") << _T("</h4>")
226
                   "<h4>") << _("Mahogany information") << _T("</h4>")
Lines 261-268 Link Here
261
                << "<p>"
263
                << "<p>"
262
                   _T("<h4>") << _("List of contributors:") << _T("</h4>")
264
                   _T("<h4>") << _("List of contributors:") << _T("</h4>")
263
                   "<p>"
265
                   "<p>"
264
                   "Karsten Ball&uuml;der, Vadim Zeitlin, Greg Noel,<br> "
266
                   "Karsten Ball" "\xC3\xBC" "der, Vadim Zeitlin, Greg Noel,<br>"
265
                   "Nerijus Bali&#363;nas, Xavier Nodet, Vaclav Slavik,<br>"
267
                   "Nerijus Bali" "\xC5\xAB" "nas, Xavier Nodet, Vaclav Slavik,<br>"
266
                   "Daniel Seifert, Michele Ravani, Michael A Chase,<br>"
268
                   "Daniel Seifert, Michele Ravani, Michael A Chase,<br>"
267
                   "Robert Vazan " << _("and many others") << "<br>"
269
                   "Robert Vazan " << _("and many others") << "<br>"
268
                   "<br>"
270
                   "<br>"
(-)mahogany-0.67/src/gui/wxOptionsDlg.cpp (-6 / +1 lines)
Lines 5-11 Link Here
5
// Author:      Vadim Zeitlin
5
// Author:      Vadim Zeitlin
6
// Modified by:
6
// Modified by:
7
// Created:     20.08.98
7
// Created:     20.08.98
8
// CVS-ID:      $Id: wxOptionsDlg.cpp,v 1.430 2006/07/31 00:38:47 vadz Exp $
8
// CVS-ID:      $Id: wxOptionsDlg.cpp,v 1.431 2006/08/31 23:18:28 vadz Exp $
9
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
9
// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
10
// Licence:     M license
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 2818-2826 Link Here
2818
               strValue = strutil_decrypt(strValue);
2818
               strValue = strutil_decrypt(strValue);
2819
2819
2820
         case Field_Font:
2820
         case Field_Font:
2821
            strValue = wxFontBrowseButton::FontDescToUser(strValue);
2822
            // fall through
2823
2824
         case Field_Dir:
2821
         case Field_Dir:
2825
         case Field_File:
2822
         case Field_File:
2826
         case Field_Folder:
2823
         case Field_Folder:
Lines 2987-2994 Link Here
2987
            // post processing is needed for some fields
2984
            // post processing is needed for some fields
2988
            if ( fieldType == Field_Passwd )
2985
            if ( fieldType == Field_Passwd )
2989
               strValue = strutil_encrypt(strValue);
2986
               strValue = strutil_encrypt(strValue);
2990
            else if ( fieldType == Field_Font )
2991
               strValue = wxFontBrowseButton::FontDescFromUser(strValue);
2992
            else if ( fieldType == Field_Number ) {
2987
            else if ( fieldType == Field_Number ) {
2993
               wxASSERT( m_aDefaults[n].IsNumeric() );
2988
               wxASSERT( m_aDefaults[n].IsNumeric() );
2994
2989
(-)mahogany-0.67/src/gui/wxTemplateDialog.cpp (-5 / +17 lines)
Lines 6-12 Link Here
6
// Author:      Vadim Zeitlin
6
// Author:      Vadim Zeitlin
7
// Modified by: VZ at 09.05.00 to allow editing all templates
7
// Modified by: VZ at 09.05.00 to allow editing all templates
8
// Created:     16.07.99
8
// Created:     16.07.99
9
// CVS-ID:      $Id: wxTemplateDialog.cpp,v 1.42 2006/01/16 20:32:28 nerijus Exp $
9
// CVS-ID:      $Id: wxTemplateDialog.cpp,v 1.43 2006/08/19 14:49:52 vadz Exp $
10
// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
10
// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
11
// Licence:     M license
11
// Licence:     M license
12
///////////////////////////////////////////////////////////////////////////////
12
///////////////////////////////////////////////////////////////////////////////
Lines 527-536 Link Here
527
      listbox->Append(wxGetTranslation(gs_templateNames[n]));
527
      listbox->Append(wxGetTranslation(gs_templateNames[n]));
528
   }
528
   }
529
529
530
   int wLbox = listbox->GetBestSize().x;
531
   if ( wLbox > 3*wBtn )
532
      wLbox = 3*wBtn;
533
530
   c = new wxLayoutConstraints;
534
   c = new wxLayoutConstraints;
531
   c->top.Below(msg, LAYOUT_Y_MARGIN);
535
   c->top.Below(msg, LAYOUT_Y_MARGIN);
532
   c->left.SameAs(box, wxLeft, 2*LAYOUT_X_MARGIN);
536
   c->left.SameAs(box, wxLeft, 2*LAYOUT_X_MARGIN);
533
   c->width.AsIs();
537
   c->width.Absolute(wLbox);
534
   c->height.Absolute(5*hBtn);
538
   c->height.Absolute(5*hBtn);
535
   listbox->SetConstraints(c);
539
   listbox->SetConstraints(c);
536
540
Lines 612-618 Link Here
612
{
616
{
613
   m_kind = kind;
617
   m_kind = kind;
614
618
615
   SetDefaultSize(6*wBtn, 10*hBtn);
619
   SetDefaultSize(10*wBtn, 10*hBtn);
616
}
620
}
617
621
618
bool wxTemplatesDialogBase::TransferDataToWindow()
622
bool wxTemplatesDialogBase::TransferDataToWindow()
Lines 755-765 Link Here
755
   // now lay them out
759
   // now lay them out
756
   // ----------------
760
   // ----------------
757
761
762
   int wLbox = m_listbox->GetBestSize().x;
763
   if ( wLbox > 3*wBtn )
764
      wLbox = 3*wBtn;
765
758
   wxLayoutConstraints *c;
766
   wxLayoutConstraints *c;
759
   c = new wxLayoutConstraints;
767
   c = new wxLayoutConstraints;
760
   c->left.SameAs(box, wxLeft, 2*LAYOUT_X_MARGIN);
768
   c->left.SameAs(box, wxLeft, 2*LAYOUT_X_MARGIN);
761
   c->top.SameAs(box, wxTop, 4*LAYOUT_Y_MARGIN);
769
   c->top.SameAs(box, wxTop, 4*LAYOUT_Y_MARGIN);
762
   c->width.AsIs();
770
   c->width.Absolute(wLbox);
763
   c->bottom.SameAs(box, wxBottom, 2*LAYOUT_Y_MARGIN);
771
   c->bottom.SameAs(box, wxBottom, 2*LAYOUT_Y_MARGIN);
764
   m_listbox->SetConstraints(c);
772
   m_listbox->SetConstraints(c);
765
773
Lines 887-896 Link Here
887
   // constraints
895
   // constraints
888
   FillListBox();
896
   FillListBox();
889
897
898
   int wLbox = m_listbox->GetBestSize().x;
899
   if ( wLbox > 3*wBtn )
900
      wLbox = 3*wBtn;
901
890
   c = new wxLayoutConstraints;
902
   c = new wxLayoutConstraints;
891
   c->top.Below(combo, 2*LAYOUT_Y_MARGIN);
903
   c->top.Below(combo, 2*LAYOUT_Y_MARGIN);
892
   c->left.SameAs(msg, wxLeft, 2*LAYOUT_X_MARGIN);
904
   c->left.SameAs(msg, wxLeft, 2*LAYOUT_X_MARGIN);
893
   c->width.AsIs();
905
   c->width.Absolute(wLbox);
894
   c->bottom.SameAs(box, wxBottom, 2*LAYOUT_Y_MARGIN);
906
   c->bottom.SameAs(box, wxBottom, 2*LAYOUT_Y_MARGIN);
895
   m_listbox->SetConstraints(c);
907
   m_listbox->SetConstraints(c);
896
908
(-)mahogany-0.67/src/gui/wxTextDialog.cpp (-33 / +38 lines)
Lines 5-11 Link Here
5
// Author:      Vadim Zeitlin
5
// Author:      Vadim Zeitlin
6
// Modified by:
6
// Modified by:
7
// Created:     14.02.03 (extracted from src/gui/wxMDialogs.cpp)
7
// Created:     14.02.03 (extracted from src/gui/wxMDialogs.cpp)
8
// CVS-ID:      $Id: wxTextDialog.cpp,v 1.10 2006/01/16 20:32:28 nerijus Exp $
8
// CVS-ID:      $Id: wxTextDialog.cpp,v 1.14 2006/08/24 17:58:37 vadz Exp $
9
// Copyright:   (c) 2001-2003 Vadim Zeitlin
9
// Copyright:   (c) 2001-2003 Vadim Zeitlin
10
// Licence:     M licence
10
// Licence:     M licence
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 143-180 Link Here
143
143
144
   m_configPath = configPath;
144
   m_configPath = configPath;
145
145
146
   // we may have or not the location in config where the dialogs position/size
147
   // are stored
148
   int x, y, w, h;
149
   if ( m_configPath )
150
   {
151
      wxMFrame::RestorePosition(configPath, &x, &y, &w, &h);
152
   }
153
   else
154
   {
155
      x =
156
      y = -1;
157
      w = 500;
158
      h = 300;
159
   }
160
161
   SetSize(x, y, w, h);
162
163
   // create controls
146
   // create controls
164
   // ---------------
147
   // ---------------
165
148
166
   m_text = new wxTextCtrl(this, -1, wxEmptyString,
149
   m_text = new wxTextCtrl(this, -1, wxEmptyString,
167
                           wxPoint(0, 0),
150
                           wxDefaultPosition,
168
                           wxSize(w, h),
151
                           wxDefaultSize,
169
                           wxTE_MULTILINE |
152
                           wxTE_MULTILINE |
170
                           wxTE_READONLY |
153
                           wxTE_READONLY |
171
                           wxTE_NOHIDESEL |
154
                           wxTE_NOHIDESEL |
172
                           wxTE_RICH2);
155
                           wxTE_RICH2);
173
   m_text->SetValue(text);
174
156
175
   // use fixed-width font
157
   // use fixed-width font and latin1 encoding in which all text is valid:
176
   m_text->SetFont(wxFont(12, wxFONTFAMILY_TELETYPE,
158
   // without encoding information (which wouldn't make sense anyhow as we can
177
                          wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
159
   // have multiple parts using different encodings) we must do this to at
160
   // least show something to the user while using the default UTF-8 encoding
161
   // of GTK+ 2 could result in nothing being shown at all
162
   m_text->SetFont(wxFont(wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_TELETYPE,
163
                          wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL,
164
                          false /* not underlined */, wxEmptyString,
165
                          wxFONTENCODING_ISO8859_1));
166
167
   // now that the encoding is set, we can show the text
168
   m_text->SetValue(text);
178
169
179
   // in TAB order we want "Save" to get focus before "Close", so create
170
   // in TAB order we want "Save" to get focus before "Close", so create
180
   // them in order
171
   // them in order
Lines 196-215 Link Here
196
   sizerTop->Add(m_text, 1, wxEXPAND);
187
   sizerTop->Add(m_text, 1, wxEXPAND);
197
   sizerTop->Add(sizerBtns, 0, wxCENTRE | wxTOP | wxBOTTOM, LAYOUT_Y_MARGIN);
188
   sizerTop->Add(sizerBtns, 0, wxCENTRE | wxTOP | wxBOTTOM, LAYOUT_Y_MARGIN);
198
189
199
   // set the sizer &c
200
   // ----------------
201
202
   SetSizer(sizerTop);
190
   SetSizer(sizerTop);
203
   SetAutoLayout(TRUE);
204
191
205
   // FIXME: bug in wxMSW? without Layout() the buttons are not positioned
192
   // final initialization
206
   //        correctly initially
193
   // --------------------
207
#ifdef __WXMSW__
208
   Layout();
209
#endif
210
194
211
   m_text->SetFocus();
195
   m_text->SetFocus();
212
196
197
   // under wxGTK SetFocus() scrolls the control to the bottom for some reason
198
   // while we always want to show the top of the message
199
   m_text->SetInsertionPoint(0);
200
201
   // we may have or not the location in config where the dialogs position/size
202
   // are stored
203
   int x, y, w, h;
204
   if ( m_configPath )
205
   {
206
      wxMFrame::RestorePosition(configPath, &x, &y, &w, &h);
207
   }
208
   else
209
   {
210
      x =
211
      y = -1;
212
      w = 500;
213
      h = 300;
214
   }
215
216
   SetSize(x, y, w, h);
217
213
   Show(TRUE);
218
   Show(TRUE);
214
}
219
}
215
220
(-)mahogany-0.67/src/icons/adb_palmos.xpm (-21 / +16 lines)
Lines 178-202 Link Here
178
"/. c #a4a8a8",
178
"/. c #a4a8a8",
179
"(. c #a8b6ad",
179
"(. c #a8b6ad",
180
/* pixels */
180
/* pixels */
181
"                      ",
181
"g g e.e.S.S._ J Y I ^ A.X.X.% % ",
182
"                      ",
182
"j j D D H H A r M 2 e -.=.=.@ @ ",
183
"g e.S._ J Y I ^ A.X.% ",
183
"5 5 $.$.V V L i.6.j.g.D.*.*., , ",
184
"j D H A r M 2 e -.=.@ ",
184
"z z H.H.R.R.T.G.b.V.!.Q.p.p.4 4 ",
185
"5 $.V L i.6.j.g.D.*., ",
185
"b b n.n.1.1.z.M.9.f.Z.B.l.l.7 7 ",
186
"z H.R.T.G.b.V.!.Q.p.4 ",
186
"t t F.F.x.x.G U ] { r.g.y.y.9 9 ",
187
"b n.1.z.M.9.f.Z.B.l.7 ",
187
"< < L.L.t.t.5.4.2.>.v.C.%.%.q q ",
188
"t F.x.G U ] { r.g.y.9 ",
188
"a a P.P.( ( :.} ) m.a.d.3.3.w w ",
189
"< L.t.5.4.2.>.v.C.%.q ",
189
"p p u.u.[ [ S B P / F ,.+.+.8 8 ",
190
"a P.( :.} ) m.a.d.3.w ",
190
"k k ! ! ~ ~ s.<.o.;. .8.O.O.3 3 ",
191
"p u.[ S B P / F ,.+.8 ",
191
"d d N.N.....W./.^.~.(.' Q Q > > ",
192
"k ! ~ s.<.o.;. .8.O.3 ",
192
"y y #.#.R R U.I.E.K.Y.` T T = = ",
193
"d N...W./.^.~.(.' Q > ",
193
"1 1 | | &.&.@.c.k.q.7.h.W W # # ",
194
"y #.R U.I.E.K.Y.` T = ",
194
"h h v v $ $ o X + . *   n n O O ",
195
"1 | &.@.c.k.q.7.h.W # ",
195
"i i u u 0.0.K Z N l w.E J.J.: : ",
196
"h v $ o X + . *   n O ",
196
"c c & & - - 0 x s f 6 ; m m C C ",
197
"i u 0.K Z N l w.E J.: ",
198
"c & - 0 x s f 6 ; m C ",
199
"                      ",
200
"                      ",
201
"                      ",
202
};
197
};
(-)mahogany-0.67/src/mail/SendMessageCC.cpp (-17 / +27 lines)
Lines 5-11 Link Here
5
// Author:      Karsten Ballüder
5
// Author:      Karsten Ballüder
6
// Modified by:
6
// Modified by:
7
// Created:     1998
7
// Created:     1998
8
// CVS-ID:      $Id: SendMessageCC.cpp,v 1.233 2006/06/23 23:27:31 vadz Exp $
8
// CVS-ID:      $Id: SendMessageCC.cpp,v 1.234 2006/08/31 23:45:33 vadz Exp $
9
// Copyright:   (C) 1999-2001 by M-Team
9
// Copyright:   (C) 1999-2001 by M-Team
10
// Licence:     M license
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 43-48 Link Here
43
#include "Message.h"
43
#include "Message.h"
44
#include "MFolder.h"
44
#include "MFolder.h"
45
45
46
#ifdef OS_UNIX
47
#  include "sysutil.h"
48
#endif // OS_UNIX
49
46
// has to be included before SendMessage.h, as it includes windows.h which
50
// has to be included before SendMessage.h, as it includes windows.h which
47
// defines SendMessage under Windows
51
// defines SendMessage under Windows
48
#include <wx/fontmap.h>          // for GetEncodingName()
52
#include <wx/fontmap.h>          // for GetEncodingName()
Lines 1920-1927 Link Here
1920
1924
1921
            // write to temp file:
1925
            // write to temp file:
1922
            wxFile out;
1926
            wxFile out;
1923
            const String filename = wxFileName::CreateTempFileName(
1927
            MTempFileName tmpFN(&out);
1924
               _T("Mtemp"), &out);
1928
            const String& filename = tmpFN.GetName();
1925
1929
1926
            bool success = false;
1930
            bool success = false;
1927
            if ( !filename.empty() )
1931
            if ( !filename.empty() )
Lines 1930-1947 Link Here
1930
               out.Close();
1934
               out.Close();
1931
               if ( written == lfOnly.Length() )
1935
               if ( written == lfOnly.Length() )
1932
               {
1936
               {
1933
                  String command;
1937
                  int rc = system(m_SendmailCmd + " < " + filename);
1934
                  command.Printf(_T("%s < '%s'; exec /bin/rm -f '%s'"),
1938
                  if ( WEXITSTATUS(rc) != 0 )
1935
                                 m_SendmailCmd.c_str(),
1939
                  {
1936
                                 filename.c_str(), filename.c_str());
1940
                     ERRORMESSAGE((_("Failed to execute local MTA \"%s\""),
1937
                  // HORRIBLE HACK: this should be `const char *' but wxExecute's
1941
                                   m_SendmailCmd.c_str()));
1938
                  // prototype doesn't allow it...
1942
                  }
1939
                  wxChar *argv[4];
1943
                  else
1940
                  argv[0] = (wxChar *)"/bin/sh";
1944
                  {
1941
                  argv[1] = (wxChar *)"-c";
1945
                     success = true;
1942
                  argv[2] = (wxChar *)command.c_str();
1946
                  }
1943
                  argv[3] = 0;  // NULL
1947
               }
1944
                  success = wxExecute(argv) != 0;
1948
               else
1949
               {
1950
                  ERRORMESSAGE((_("Failed to write to temporary file \"%s\""),
1951
                                filename.c_str()));
1945
               }
1952
               }
1946
            }
1953
            }
1947
            else
1954
            else
Lines 1961-1968 Link Here
1961
            }
1968
            }
1962
            else
1969
            else
1963
            {
1970
            {
1964
               ERRORMESSAGE((_("Failed to send message via '%s'"),
1971
               ERRORMESSAGE((_("Failed to send message via local MTA, maybe "
1965
                             m_SendmailCmd.c_str()));
1972
                               "it's not configured correctly?\n"
1973
                               "\n"
1974
                               "Please try using an SMTP server if you are not "
1975
                               " sure.")));
1966
            }
1976
            }
1967
1977
1968
            return success;
1978
            return success;
(-)mahogany-0.67/src/modules/HtmlViewer.cpp (-12 / +15 lines)
Lines 6-12 Link Here
6
// Author:      Vadim Zeitlin
6
// Author:      Vadim Zeitlin
7
// Modified by:
7
// Modified by:
8
// Created:     26.07.01
8
// Created:     26.07.01
9
// CVS-ID:      $Id: HtmlViewer.cpp,v 1.77 2006/06/27 00:35:07 vadz Exp $
9
// CVS-ID:      $Id: HtmlViewer.cpp,v 1.78 2006/08/19 13:12:00 vadz Exp $
10
// Copyright:   (c) 2001 Vadim Zeitlin
10
// Copyright:   (c) 2001 Vadim Zeitlin
11
// Licence:     M license
11
// Licence:     M license
12
///////////////////////////////////////////////////////////////////////////////
12
///////////////////////////////////////////////////////////////////////////////
Lines 140-147 Link Here
140
   // add "attr=#colour" attribute to m_htmlText if col is valid
140
   // add "attr=#colour" attribute to m_htmlText if col is valid
141
   void AddColourAttr(const wxChar *attr, const wxColour& col);
141
   void AddColourAttr(const wxChar *attr, const wxColour& col);
142
142
143
   // calculate font size
143
   // calculate HTML font size for the given font
144
   int CalculateFontSize(int diff);
144
   int CalculateFontSize(const wxFont& font);
145
145
146
   // get the name of the virtual file for the n-th image we use
146
   // get the name of the virtual file for the n-th image we use
147
   wxString GetVirtualFileName(size_t n) const;
147
   wxString GetVirtualFileName(size_t n) const;
Lines 844-855 Link Here
844
   }
844
   }
845
}
845
}
846
846
847
int HtmlViewer::CalculateFontSize(int diff)
847
int HtmlViewer::CalculateFontSize(const wxFont& font)
848
{
848
{
849
   if ( !font.Ok() )
850
   {
851
      // use default size
852
      return 0;
853
   }
854
849
   // map the point size into the HTML font size so that if the standard font
855
   // map the point size into the HTML font size so that if the standard font
850
   // size is 12pt, 6pt is very small and 24pt is very big
856
   // size is 12pt, 6pt is very small and 24pt is very big
851
   //
857
   //
852
   // this is not very rigorous, of course...
858
   // this is not very rigorous, of course...
859
   int diff = font.GetPointSize() - wxNORMAL_FONT->GetPointSize();
853
   if ( diff > 0 )
860
   if ( diff > 0 )
854
      diff /= 4;
861
      diff /= 4;
855
   else
862
   else
Lines 901-909 Link Here
901
   // close <body> tag
908
   // close <body> tag
902
   m_htmlText += _T(">");
909
   m_htmlText += _T(">");
903
910
904
   wxFont font = profileValues.GetFont();
911
   wxFont font(profileValues.GetFont());
905
912
   int diff = CalculateFontSize(font);
906
   int diff = CalculateFontSize(font.GetPointSize() - DEFAULT_FONT_SIZE);
907
   if ( diff )
913
   if ( diff )
908
   {
914
   {
909
      m_htmlText << _T("<font size=") << wxString::Format(_T("%+d"), diff) << _T(">");
915
      m_htmlText << _T("<font size=") << wxString::Format(_T("%+d"), diff) << _T(">");
Lines 913-919 Link Here
913
   // map the font family into HTML font face name
919
   // map the font family into HTML font face name
914
   //
920
   //
915
   // TODO: use <font face="...">
921
   // TODO: use <font face="...">
916
   if ( font.IsFixedWidth() )
922
   if ( font.Ok() && font.IsFixedWidth() )
917
   {
923
   {
918
      m_htmlText << _T("<tt>");
924
      m_htmlText << _T("<tt>");
919
      m_htmlEnd.Prepend(_T("</tt>"));
925
      m_htmlEnd.Prepend(_T("</tt>"));
Lines 925-934 Link Here
925
931
926
void HtmlViewer::ShowRawHeaders(const String& header)
932
void HtmlViewer::ShowRawHeaders(const String& header)
927
{
933
{
928
   const ProfileValues& profileValues = GetOptions();
934
   int diff = CalculateFontSize(GetOptions().GetFont());
929
   wxFont font = profileValues.GetFont();
930
931
   int diff = CalculateFontSize(font.GetPointSize() - DEFAULT_FONT_SIZE);
932
   m_htmlText << _T("<pre>") << _T("<font size=") << wxString::Format(_T("%+d"), diff) << _T(">")
935
   m_htmlText << _T("<pre>") << _T("<font size=") << wxString::Format(_T("%+d"), diff) << _T(">")
933
              << MakeHtmlSafe(header) << _T("</font>") << _T("</pre>");
936
              << MakeHtmlSafe(header) << _T("</font>") << _T("</pre>");
934
}
937
}
(-)mahogany-0.67/src/modules/spam/HeadersFilter.cpp (-2 / +2 lines)
Lines 5-11 Link Here
5
// Author:      Vadim Zeitlin
5
// Author:      Vadim Zeitlin
6
// Modified by:
6
// Modified by:
7
// Created:     2004-07-10 (mostly extracted from Filters.cpp)
7
// Created:     2004-07-10 (mostly extracted from Filters.cpp)
8
// CVS-ID:      $Id: HeadersFilter.cpp,v 1.15 2006/06/25 14:36:07 vadz Exp $
8
// CVS-ID:      $Id: HeadersFilter.cpp,v 1.16 2006/08/25 10:47:57 vadz Exp $
9
// Copyright:   (c) 2004 Vadim Zeitlin <vadim@wxwindows.org>
9
// Copyright:   (c) 2004 Vadim Zeitlin <vadim@wxwindows.org>
10
// Licence:     M licence
10
// Licence:     M licence
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 70-79 Link Here
70
   Spam_Test_HTML,
70
   Spam_Test_HTML,
71
   Spam_Test_BadMIME,
71
   Spam_Test_BadMIME,
72
   Spam_Test_ExeAttachment,
72
   Spam_Test_ExeAttachment,
73
   Spam_Test_WhiteList,
74
#ifdef USE_RBL
73
#ifdef USE_RBL
75
   Spam_Test_RBL,
74
   Spam_Test_RBL,
76
#endif // USE_RBL
75
#endif // USE_RBL
76
   Spam_Test_WhiteList,
77
77
78
   Spam_Test_Max
78
   Spam_Test_Max
79
};
79
};
(-)mahogany-0.67/src/modules/TextViewer.cpp (-2 / +4 lines)
Lines 5-11 Link Here
5
// Author:      Vadim Zeitlin
5
// Author:      Vadim Zeitlin
6
// Modified by:
6
// Modified by:
7
// Created:     26.07.01
7
// Created:     26.07.01
8
// CVS-ID:      $Id: TextViewer.cpp,v 1.67 2006/01/16 20:32:28 nerijus Exp $
8
// CVS-ID:      $Id: TextViewer.cpp,v 1.68 2006/08/19 13:12:00 vadz Exp $
9
// Copyright:   (c) 2001 Vadim Zeitlin
9
// Copyright:   (c) 2001 Vadim Zeitlin
10
// Licence:     M license
10
// Licence:     M license
11
///////////////////////////////////////////////////////////////////////////////
11
///////////////////////////////////////////////////////////////////////////////
Lines 549-555 Link Here
549
549
550
   const ProfileValues& profileValues = GetOptions();
550
   const ProfileValues& profileValues = GetOptions();
551
551
552
   m_window->SetFont(profileValues.GetFont());
552
   wxFont font(profileValues.GetFont());
553
   if ( font.Ok() )
554
      m_window->SetFont(font);
553
   m_window->SetForegroundColour(profileValues.FgCol);
555
   m_window->SetForegroundColour(profileValues.FgCol);
554
   m_window->SetBackgroundColour(profileValues.BgCol);
556
   m_window->SetBackgroundColour(profileValues.BgCol);
555
}
557
}

Return to bug 143894