sync with 0.6.6hiro3-0.6.6hiro9
This commit is contained in:
parent
9465e8ab61
commit
c0bceaf6c7
36 changed files with 976 additions and 554 deletions
57
ChangeLog
57
ChangeLog
|
@ -1,3 +1,60 @@
|
|||
2001-12-21
|
||||
|
||||
* src/template.c: template_write_config(): fixed a typo.
|
||||
* src/compose.c: toolbar_linewrap_cb(): call compose_wrap_line_all().
|
||||
* src/filter.[ch]
|
||||
src/prefs_filter.c: supported regular expression (thanks to
|
||||
Yukihiro Nakai).
|
||||
* src/undo.c: undo_paste_clipboard_cb(): fixed a bug that broke
|
||||
undo state when pasted clipboard was empty.
|
||||
undo_check_size(): use g_list_last().
|
||||
undo_undo()
|
||||
undo_redo(): fixed NULL checking and made a bit of optimization.
|
||||
Some code cleanups.
|
||||
* src/prefs_common.c: changed the default value of linewrap length
|
||||
to 72.
|
||||
|
||||
2001-12-20
|
||||
|
||||
* reorganization of pixmap management.
|
||||
* src/stock_pixmap.[ch]: new. This module manages all static pixmaps.
|
||||
* modified every files which directly use pixmaps data to use
|
||||
stock_pixmap_*().
|
||||
* src/undo.[ch]: renamed undo_set_undo_change_funct() to
|
||||
undo_set_change_state_func(), and changed its argument from
|
||||
GtkWidget* to gpointer.
|
||||
undo_merge(): code cleanup.
|
||||
* src/compose.c: renamed compose_set_undo() to
|
||||
compose_undo_state_changed().
|
||||
|
||||
2001-12-19
|
||||
|
||||
* src/account.c: account_find_from_address(): made it case
|
||||
insensitive.
|
||||
* src/addressbook.c: addressbook_create(): set wmclass.
|
||||
* src/compose.c: compose_insert_file(): supported DOS/Win/Mac line
|
||||
break.
|
||||
* src/importldif.c
|
||||
src/ldif.[ch]: merged from the claws branch.
|
||||
* src/importldif.c: removed some warnings.
|
||||
imp_ldif_field_list_toggle(): fixed button checking.
|
||||
imp_ldif_dialog_create(): minor layout fix.
|
||||
* src/ldif.c: removed some warnings.
|
||||
* INSTALL
|
||||
INSTALL.jp: updated confirmation list.
|
||||
* src/vcard.c:
|
||||
vcard_read_file()
|
||||
vcard_test_read_file(): fixed a memory leak of tagtemp.
|
||||
Some code cleanups (decreasing the indent level).
|
||||
* src/addrindex.c
|
||||
src/jpilot.[ch]
|
||||
src/syldap.[ch]: disabled runtime library checking because JPilot
|
||||
and LDAP libraries are linked on the build time, and the program
|
||||
doesn't execute without them anyway.
|
||||
* src/addressbook.c
|
||||
src/addrindex.c: changed "J-Pilot" to "JPilot".
|
||||
Removed warning for atoi().
|
||||
|
||||
2001-12-18
|
||||
|
||||
* src/procmsg.c: procmsg_empty_trash()
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2001-12-21 [alfons] 0.6.6claws7
|
||||
|
||||
* sync with sylpheed 0.6.6cvs4-9
|
||||
(may have forgotten something: LAST_STABLE is 0.6.6claws6)
|
||||
|
||||
2001-12-21 [christoph] 0.6.6claws6
|
||||
|
||||
* src/compose.c
|
||||
|
|
56
ChangeLog.jp
56
ChangeLog.jp
|
@ -1,3 +1,59 @@
|
|||
2001-12-21
|
||||
|
||||
* src/template.c: template_write_config(): typo を修正。
|
||||
* src/compose.c: toolbar_linewrap_cb(): compose_wrap_line_all() を
|
||||
呼ぶようにした。
|
||||
* src/filter.[ch]
|
||||
src/prefs_filter.c: 正規表現に対応(中井さん thanks)。
|
||||
* src/undo.c: undo_paste_clipboard_cb(): ペーストしたクリップボード
|
||||
が空のときアンドゥの状態を破壊するバグを修正。
|
||||
undo_check_size(): g_list_last() を使用。
|
||||
undo_undo()
|
||||
undo_redo(): NULL チェックを修正し、少し最適化。
|
||||
コードの整理。
|
||||
* src/prefs_common.c: 自動改行の行長のデフォルトを72に変更。
|
||||
|
||||
2001-12-20
|
||||
|
||||
* pixmap 管理の再構成。
|
||||
* src/stock_pixmap.[ch]: 新規。このモジュールは全ての static な
|
||||
pixmap を管理する。
|
||||
* pixmap データを直接使う全てのファイルを stock_pixmap_*() を
|
||||
使用するように修正。
|
||||
* src/undo.[ch]: undo_set_undo_change_funct() を
|
||||
undo_set_change_state_func() に名称変更し、引数を GtkWidget*
|
||||
から gpointer に変更。
|
||||
undo_merge(): コードの整理。
|
||||
* src/compose.c: compose_set_undo() を compose_undo_state_changed()
|
||||
に名称変更。
|
||||
|
||||
2001-12-19
|
||||
|
||||
* src/account.c: account_find_from_address(): 大小文字を区別しない
|
||||
ようにした。
|
||||
* src/addressbook.c: addressbook_create(): wmclass をセット。
|
||||
* src/compose.c: compose_insert_file(): DOS/Win/Mac の改行に対応。
|
||||
* src/importldif.c
|
||||
src/ldif.[ch]: claws ブランチからマージ。
|
||||
* src/importldif.c: 警告を除去。
|
||||
imp_ldif_field_list_toggle(): ボタンのチェックを修正。
|
||||
imp_ldif_dialog_create(): レイアウトをわずかに修正。
|
||||
* src/ldif.c: 警告を除去。
|
||||
* INSTALL
|
||||
INSTALL.jp: 動作確認リストを更新。
|
||||
* src/vcard.c:
|
||||
vcard_read_file()
|
||||
vcard_test_read_file(): tagtemp のメモリリークを修正。
|
||||
コードの整理(インデントのレベルを削減)。
|
||||
* src/addrindex.c
|
||||
src/jpilot.[ch]
|
||||
src/syldap.[ch]: JPilot と LDAP のライブラリはビルド時にリンクされ、
|
||||
それらなしでは結局実行できないため、実行時のライブラリチェックを
|
||||
行わないようにした。
|
||||
* src/addressbook.c
|
||||
src/addrindex.c: "J-Pilot" を "JPilot" に変更。
|
||||
atoi() の警告を除去。
|
||||
|
||||
2001-12-18
|
||||
|
||||
* src/procmsg.c: procmsg_empty_trash()
|
||||
|
|
16
INSTALL
16
INSTALL
|
@ -9,18 +9,24 @@ on the other environment.
|
|||
|
||||
It is confirmed to work on the following environments:
|
||||
|
||||
Linux
|
||||
|
||||
o Debian GNU/Linux unstable (sid) (glibc 2.2.x)
|
||||
o Debian GNU/Linux testing (woody) (glibc 2.2.x)
|
||||
o Debian GNU/Linux 2.2 (potato) (glibc 2.1.3)
|
||||
o Kondara MNU/Linux (glibc 2.1.x)
|
||||
o Kondara MNU/Linux 1.2
|
||||
o Kondara MNU/Linux 2.0
|
||||
o Vine Linux 1.1 (glibc 2.0.x + libwcsmbs)
|
||||
o Vine Linux 2.0 (glibc 2.1.x) (Intel, PPC)
|
||||
o Vine Linux 2.1
|
||||
o Vine Linux 2.1.5
|
||||
o Laser5 Linux 6.0 (glibc 2.1.x)
|
||||
o Laser5 Linux 6.2 (glibc 2.1.x)
|
||||
o Laser5 Linux 6.4 (glibc 2.1.x)
|
||||
o TurboLinux 4.0 (glibc 2.0.7 + libwcsmbs)
|
||||
o TurboLinux 6.0 (glibc 2.1.2)
|
||||
o TurboLinux 7.0 (glibc 2.2.x)
|
||||
o Miracle Linux Standard Edition Version1.0
|
||||
o Miracle Linux for PostgreSQL Version1.0
|
||||
o Miracle Linux for Samba Version1.0
|
||||
|
@ -63,6 +69,9 @@ o Conectiva Linux 5.0
|
|||
o Vector Linux 1.5
|
||||
o Yellow Dog Linux 2.0 (glibc 2.2.1)
|
||||
o Yellow Dog Linux 2.1 (PowerPC)
|
||||
|
||||
BSD
|
||||
|
||||
o FreeBSD 3.2-RELEASE
|
||||
o FreeBSD 3.4-RELEASE
|
||||
o FreeBSD 4.0-RELEASE
|
||||
|
@ -78,7 +87,11 @@ o NetBSD 1.5.2
|
|||
o OpenBSD 2.7
|
||||
o OpenBSD 2.8 (i386)
|
||||
o OpenBSD 2.9
|
||||
o OpenBSD 3.0
|
||||
o BSD/OS 4.0.1
|
||||
|
||||
Other commercial Unix
|
||||
|
||||
o Solaris 2.5
|
||||
o Solaris 2.5.1
|
||||
o Solaris 2.6
|
||||
|
@ -92,6 +105,9 @@ o HP-UX 11i
|
|||
o Tru64 Unix 5.0 (OSF1 V5.0)
|
||||
o SCO UnixWare 7
|
||||
o Mac OS X (Darwin 1.3) + Xtools (has locale problem)
|
||||
|
||||
Others
|
||||
|
||||
o Windows (cygwin + GTK+ for win32) (unstable)
|
||||
|
||||
|
||||
|
|
16
INSTALL.jp
16
INSTALL.jp
|
@ -8,18 +8,24 @@
|
|||
|
||||
以下の環境で動作が確認されています:
|
||||
|
||||
Linux
|
||||
|
||||
o Debian GNU/Linux unstable (sid) (glibc 2.2.x)
|
||||
o Debian GNU/Linux testing (woody) (glibc 2.2.x)
|
||||
o Debian GNU/Linux 2.2 (potato) (glibc 2.1.3)
|
||||
o Kondara MNU/Linux (glibc 2.1.x)
|
||||
o Kondara MNU/Linux 1.2
|
||||
o Kondara MNU/Linux 2.0
|
||||
o Vine Linux 1.1 (glibc 2.0.x + libwcsmbs)
|
||||
o Vine Linux 2.0 (glibc 2.1.x) (Intel, PPC)
|
||||
o Vine Linux 2.1
|
||||
o Vine Linux 2.1.5
|
||||
o Laser5 Linux 6.0 (glibc 2.1.x)
|
||||
o Laser5 Linux 6.2 (glibc 2.1.x)
|
||||
o Laser5 Linux 6.4 (glibc 2.1.x)
|
||||
o TurboLinux 4.0 (glibc 2.0.7 + libwcsmbs)
|
||||
o TurboLinux 6.0 (glibc 2.1.2)
|
||||
o TurboLinux 7.0 (glibc 2.2.x)
|
||||
o Miracle Linux Standard Edition Version1.0
|
||||
o Miracle Linux for PostgreSQL Version1.0
|
||||
o Miracle Linux for Samba Version1.0
|
||||
|
@ -62,6 +68,9 @@ o Conectiva Linux 5.0
|
|||
o Vector Linux 1.5
|
||||
o Yellow Dog Linux 2.0 (glibc 2.2.1)
|
||||
o Yellow Dog Linux 2.1 (PowerPC)
|
||||
|
||||
BSD
|
||||
|
||||
o FreeBSD 3.2-RELEASE
|
||||
o FreeBSD 3.4-RELEASE
|
||||
o FreeBSD 4.0-RELEASE
|
||||
|
@ -77,7 +86,11 @@ o NetBSD 1.5.2
|
|||
o OpenBSD 2.7
|
||||
o OpenBSD 2.8 (i386)
|
||||
o OpenBSD 2.9
|
||||
o OpenBSD 3.0
|
||||
o BSD/OS 4.0.1
|
||||
|
||||
その他商用 Unix
|
||||
|
||||
o Solaris 2.5
|
||||
o Solaris 2.5.1
|
||||
o Solaris 2.6
|
||||
|
@ -91,6 +104,9 @@ o HP-UX 11i
|
|||
o Tru64 Unix 5.0 (OSF1 V5.0)
|
||||
o SCO UnixWare 7
|
||||
o Mac OS X (Darwin 1.3) + Xtools (locale に問題あり)
|
||||
|
||||
その他
|
||||
|
||||
o Windows (cygwin + GTK+ for win32) (unstable)
|
||||
|
||||
|
||||
|
|
5
NEWS
5
NEWS
|
@ -5,14 +5,15 @@ Changes of Sylpheed
|
|||
* The newsgroup subscription dialog has been enhanced.
|
||||
* Template function has been improved.
|
||||
* New wrapping function for composition window has been implemented.
|
||||
* Mailto URL has been supported on the --compose option.
|
||||
* The --status option that displays current message count was added.
|
||||
* Mailto URL has been supported for the --compose option.
|
||||
* The --status option to display current message count has been added.
|
||||
* Workaround for RFC-incompliant Date header has been made.
|
||||
* Check connection between IMAP or NNTP server only if access time
|
||||
limit is expired.
|
||||
* Thai encodings have been supported.
|
||||
* Hungarian message catalog has been added.
|
||||
* Copy and paste problems have been fixed.
|
||||
* Some IMAP4 bugs have been fixed.
|
||||
* Some other bugs have been fixed.
|
||||
|
||||
* 0.6.5
|
||||
|
|
|
@ -8,7 +8,7 @@ MINOR_VERSION=6
|
|||
MICRO_VERSION=6
|
||||
INTERFACE_AGE=0
|
||||
BINARY_AGE=0
|
||||
EXTRA_VERSION=claws6
|
||||
EXTRA_VERSION=claws7
|
||||
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
|
||||
|
||||
dnl
|
||||
|
|
|
@ -24,6 +24,7 @@ sylpheed_SOURCES = \
|
|||
gtkshruler.c gtkshruler.h \
|
||||
gtksctree.c gtksctree.h \
|
||||
menu.c menu.h \
|
||||
stock_pixmap.c stock_pixmap.h \
|
||||
prefs.c prefs.h \
|
||||
prefs_common.c prefs_common.h \
|
||||
prefs_filter.c prefs_filter.h \
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#include <gtk/gtksignal.h>
|
||||
#include <gtk/gtkvbox.h>
|
||||
#include <gtk/gtkhbox.h>
|
||||
#include <gtk/gtkpixmap.h>
|
||||
#include <gtk/gtklabel.h>
|
||||
#include <gtk/gtkhseparator.h>
|
||||
#include <gtk/gtkscrolledwindow.h>
|
||||
|
@ -43,12 +42,11 @@
|
|||
#include "intl.h"
|
||||
#include "about.h"
|
||||
#include "gtkutils.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "prefs_common.h"
|
||||
#include "utils.h"
|
||||
#include "version.h"
|
||||
|
||||
#include "pixmaps/sylpheed-logo.xpm"
|
||||
|
||||
static GtkWidget *window;
|
||||
|
||||
static void about_create(void);
|
||||
|
@ -66,8 +64,6 @@ void about_show(void)
|
|||
static void about_create(void)
|
||||
{
|
||||
GtkWidget *vbox;
|
||||
GdkPixmap *logoxpm = NULL;
|
||||
GdkBitmap *logoxpmmask;
|
||||
GtkWidget *pixmap;
|
||||
GtkWidget *label;
|
||||
GtkWidget *hbox;
|
||||
|
@ -101,8 +97,7 @@ static void about_create(void)
|
|||
vbox = gtk_vbox_new(FALSE, 6);
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
|
||||
PIXMAP_CREATE(window, logoxpm, logoxpmmask, sylpheed_logo_xpm);
|
||||
pixmap = gtk_pixmap_new(logoxpm, logoxpmmask);
|
||||
pixmap = stock_pixmap_widget(window, STOCK_PIXMAP_SYLPHEED_LOGO);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), pixmap, FALSE, FALSE, 0);
|
||||
|
||||
label = gtk_label_new("version "VERSION);
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "prefs_folder_item.h"
|
||||
#include "compose.h"
|
||||
#include "manage_window.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "inc.h"
|
||||
#include "gtkutils.h"
|
||||
#include "utils.h"
|
||||
|
@ -175,6 +176,9 @@ PrefsAccount *account_find_from_smtp_server(const gchar *address,
|
|||
GList *cur;
|
||||
PrefsAccount *ac;
|
||||
|
||||
g_return_val_if_fail(address != NULL, NULL);
|
||||
g_return_val_if_fail(smtp_server != NULL, NULL);
|
||||
|
||||
for (cur = account_list; cur != NULL; cur = cur->next) {
|
||||
ac = (PrefsAccount *)cur->data;
|
||||
if (!strcmp2(address, ac->address) &&
|
||||
|
@ -198,9 +202,12 @@ PrefsAccount *account_find_from_address(const gchar *address)
|
|||
GList *cur;
|
||||
PrefsAccount *ac;
|
||||
|
||||
g_return_val_if_fail(address != NULL, NULL);
|
||||
|
||||
for (cur = account_list; cur != NULL; cur = cur->next) {
|
||||
ac = (PrefsAccount *)cur->data;
|
||||
if (ac->protocol != A_NNTP && strcasestr(address, ac->address))
|
||||
if (ac->protocol != A_NNTP && ac->address &&
|
||||
!g_strcasecmp(address, ac->address))
|
||||
return ac;
|
||||
}
|
||||
|
||||
|
@ -527,10 +534,11 @@ static void account_edit_create(void)
|
|||
GTK_SIGNAL_FUNC (account_edit_close),
|
||||
NULL);
|
||||
|
||||
PIXMAP_CREATE(clist, markxpm, markxpmmask, mark_xpm);
|
||||
PIXMAP_CREATE(clist, checkboxonxpm, checkboxonxpmmask, checkbox_on_xpm);
|
||||
PIXMAP_CREATE(clist, checkboxoffxpm, checkboxoffxpmmask,
|
||||
checkbox_off_xpm);
|
||||
stock_pixmap_gdk(clist, STOCK_PIXMAP_MARK, &markxpm, &markxpmmask);
|
||||
stock_pixmap_gdk(clist, STOCK_PIXMAP_CHECKBOX_ON,
|
||||
&checkboxonxpm, &checkboxonxpmmask);
|
||||
stock_pixmap_gdk(clist, STOCK_PIXMAP_CHECKBOX_OFF,
|
||||
&checkboxoffxpm, &checkboxoffxpmmask);
|
||||
|
||||
edit_account.window = window;
|
||||
edit_account.clist = clist;
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
#include "intl.h"
|
||||
#include "gtkutils.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "prefs_common.h"
|
||||
#include "addressadd.h"
|
||||
#include "addritem.h"
|
||||
|
@ -46,9 +47,6 @@
|
|||
#include "addrindex.h"
|
||||
#include "manage_window.h"
|
||||
|
||||
#include "pixmaps/book.xpm"
|
||||
#include "pixmaps/dir-open.xpm"
|
||||
|
||||
typedef struct {
|
||||
AddressBookFile *book;
|
||||
ItemFolder *folder;
|
||||
|
@ -270,8 +268,9 @@ static void addressadd_create( void ) {
|
|||
|
||||
gtk_widget_show_all( window );
|
||||
|
||||
PIXMAP_CREATE( window, bookXpm, bookXpmMask, book_xpm );
|
||||
PIXMAP_CREATE( window, folderXpm, folderXpmMask, dir_open_xpm );
|
||||
stock_pixmap_gdk( window, STOCK_PIXMAP_BOOK, &bookXpm, &bookXpmMask );
|
||||
stock_pixmap_gdk( window, STOCK_PIXMAP_DIR_OPEN,
|
||||
&folderXpm, &folderXpmMask );
|
||||
}
|
||||
|
||||
static void addressadd_load_folder( GtkCTreeNode *parentNode, ItemFolder *parentFolder,
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "alertpanel.h"
|
||||
#include "inputdialog.h"
|
||||
#include "menu.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "xml.h"
|
||||
#include "prefs.h"
|
||||
#include "procmime.h"
|
||||
|
@ -91,17 +92,6 @@
|
|||
#define ADDRESSBOOK_LDAP_BUSYMSG "Busy"
|
||||
#endif
|
||||
|
||||
#include "pixmaps/dir-close.xpm"
|
||||
#include "pixmaps/dir-open.xpm"
|
||||
#include "pixmaps/group.xpm"
|
||||
#include "pixmaps/interface.xpm"
|
||||
#include "pixmaps/book.xpm"
|
||||
#include "pixmaps/address.xpm"
|
||||
#include "pixmaps/vcard.xpm"
|
||||
#include "pixmaps/jpilot.xpm"
|
||||
#include "pixmaps/category.xpm"
|
||||
#include "pixmaps/ldap.xpm"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
COL_NAME = 0,
|
||||
|
@ -339,7 +329,7 @@ static void addressbook_list_select_clear (void);
|
|||
static void addressbook_list_select_add (AddressObject *obj);
|
||||
static void addressbook_list_select_remove (AddressObject *obj);
|
||||
|
||||
static void addressbook_import_ldif_cb ();
|
||||
static void addressbook_import_ldif_cb (void);
|
||||
static void addressbook_import_mutt_cb ();
|
||||
|
||||
static GtkItemFactoryEntry addressbook_entries[] =
|
||||
|
@ -348,7 +338,7 @@ static GtkItemFactoryEntry addressbook_entries[] =
|
|||
{N_("/_File/New _Book"), "<alt>B", addressbook_new_book_cb, 0, NULL},
|
||||
{N_("/_File/New _vCard"), "<alt>D", addressbook_new_vcard_cb, 0, NULL},
|
||||
#ifdef USE_JPILOT
|
||||
{N_("/_File/New _J-Pilot"), "<alt>J", addressbook_new_jpilot_cb, 0, NULL},
|
||||
{N_("/_File/New _JPilot"), "<alt>J", addressbook_new_jpilot_cb, 0, NULL},
|
||||
#endif
|
||||
#ifdef USE_LDAP
|
||||
{N_("/_File/New _Server"), "<alt>S", addressbook_new_ldap_cb, 0, NULL},
|
||||
|
@ -367,7 +357,7 @@ static GtkItemFactoryEntry addressbook_entries[] =
|
|||
{N_("/_Address/_Edit"), "<alt>Return", addressbook_edit_address_cb, 0, NULL},
|
||||
{N_("/_Address/_Delete"), NULL, addressbook_delete_address_cb, 0, NULL},
|
||||
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_Tools/Import _LDIF"), NULL, addressbook_import_ldif_cb, 0, NULL},
|
||||
{N_("/_Tools/Import _LDIF file"), NULL, addressbook_import_ldif_cb, 0, NULL},
|
||||
{N_("/_Tools/Import M_utt"), NULL, addressbook_import_mutt_cb, 0, NULL},
|
||||
{N_("/_Help"), NULL, NULL, 0, "<LastBranch>"},
|
||||
{N_("/_Help/_About"), NULL, about_show, 0, NULL}
|
||||
|
@ -383,8 +373,8 @@ static GtkItemFactoryEntry addressbook_entries[] =
|
|||
{N_("/_Tools/Import _Mozilla"), NULL, NULL, 0, NULL},
|
||||
{N_("/_Tools/Import _vCard"), NULL, NULL, 0, NULL},
|
||||
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_Tools/Export _LDIF"), NULL, NULL, 0, NULL},
|
||||
{N_("/_Tools/Export V-_Card"), NULL, NULL, 0, NULL},
|
||||
{N_("/_Tools/Export _LDIF file"), NULL, NULL, 0, NULL},
|
||||
{N_("/_Tools/Export v_Card"), NULL, NULL, 0, NULL},
|
||||
*/
|
||||
|
||||
static GtkItemFactoryEntry addressbook_tree_popup_entries[] =
|
||||
|
@ -675,7 +665,8 @@ static void addressbook_create(void)
|
|||
GINT_TO_POINTER(COMPOSE_BCC));
|
||||
|
||||
/* Build icons for interface */
|
||||
PIXMAP_CREATE( window, interfacexpm, interfacexpmmask, interface_xpm );
|
||||
stock_pixmap_gdk( window, STOCK_PIXMAP_INTERFACE,
|
||||
&interfacexpm, &interfacexpmmask );
|
||||
|
||||
/* Build control tables */
|
||||
addrbookctl_build_map(window);
|
||||
|
@ -1008,7 +999,7 @@ static void addressbook_menubar_set_sensitive( gboolean sensitive ) {
|
|||
menu_set_sensitive( addrbook.menu_factory, "/File/New Book", sensitive );
|
||||
menu_set_sensitive( addrbook.menu_factory, "/File/New vCard", sensitive );
|
||||
#ifdef USE_JPILOT
|
||||
menu_set_sensitive( addrbook.menu_factory, "/File/New J-Pilot", sensitive );
|
||||
menu_set_sensitive( addrbook.menu_factory, "/File/New JPilot", sensitive );
|
||||
#endif
|
||||
#ifdef USE_LDAP
|
||||
menu_set_sensitive( addrbook.menu_factory, "/File/New Server", sensitive );
|
||||
|
@ -1883,7 +1874,7 @@ static void addressbook_edit_address_cb( gpointer data, guint action, GtkWidget
|
|||
/* Edit person - basic page */
|
||||
ItemPerson *person = ( ItemPerson * ) obj;
|
||||
if( addressbook_edit_person( abf, NULL, person, FALSE ) == NULL ) return;
|
||||
gtk_ctree_select( ctree, addrbook.opened);
|
||||
gtk_ctree_select( ctree, addrbook.opened );
|
||||
invalidate_address_completion();
|
||||
return;
|
||||
}
|
||||
|
@ -3020,15 +3011,15 @@ void addrbookctl_build_map( GtkWidget *window ) {
|
|||
AddressTypeControlItem *atci;
|
||||
|
||||
/* Build icons */
|
||||
PIXMAP_CREATE(window, folderxpm, folderxpmmask, dir_close_xpm);
|
||||
PIXMAP_CREATE(window, folderopenxpm, folderopenxpmmask, dir_open_xpm);
|
||||
PIXMAP_CREATE(window, groupxpm, groupxpmmask, group_xpm);
|
||||
PIXMAP_CREATE(window, vcardxpm, vcardxpmmask, vcard_xpm);
|
||||
PIXMAP_CREATE(window, bookxpm, bookxpmmask, book_xpm);
|
||||
PIXMAP_CREATE(window, addressxpm, addressxpmmask, address_xpm);
|
||||
PIXMAP_CREATE(window, jpilotxpm, jpilotxpmmask, jpilot_xpm);
|
||||
PIXMAP_CREATE(window, categoryxpm, categoryxpmmask, category_xpm);
|
||||
PIXMAP_CREATE(window, ldapxpm, ldapxpmmask, ldap_xpm);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_DIR_CLOSE, &folderxpm, &folderxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_DIR_OPEN, &folderopenxpm, &folderopenxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_GROUP, &groupxpm, &groupxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_VCARD, &vcardxpm, &vcardxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_BOOK, &bookxpm, &bookxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_ADDRESS, &addressxpm, &addressxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_JPILOT, &jpilotxpm, &jpilotxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_CATEGORY, &categoryxpm, &categoryxpmmask);
|
||||
stock_pixmap_gdk(window, STOCK_PIXMAP_LDAP, &ldapxpm, &ldapxpmmask);
|
||||
|
||||
_addressBookTypeHash_ = g_hash_table_new( g_int_hash, g_int_equal );
|
||||
_addressBookTypeList_ = NULL;
|
||||
|
@ -3145,19 +3136,19 @@ void addrbookctl_build_map( GtkWidget *window ) {
|
|||
g_hash_table_insert( _addressBookTypeHash_, &atci->objectType, atci );
|
||||
_addressBookTypeList_ = g_list_append( _addressBookTypeList_, atci );
|
||||
|
||||
/* J-Pilot */
|
||||
/* JPilot */
|
||||
atci = g_new0( AddressTypeControlItem, 1 );
|
||||
atci->objectType = ADDR_JPILOT;
|
||||
atci->interfaceType = ADDR_IF_JPILOT;
|
||||
atci->showInTree = TRUE;
|
||||
atci->treeExpand = TRUE;
|
||||
atci->treeLeaf = FALSE;
|
||||
atci->displayName = _( "J-Pilot" );
|
||||
atci->displayName = _( "JPilot" );
|
||||
atci->iconXpm = jpilotxpm;
|
||||
atci->maskXpm = jpilotxpmmask;
|
||||
atci->iconXpmOpen = jpilotxpm;
|
||||
atci->maskXpmOpen = jpilotxpmmask;
|
||||
atci->menuCommand = "/File/New J-Pilot";
|
||||
atci->menuCommand = "/File/New JPilot";
|
||||
g_hash_table_insert( _addressBookTypeHash_, &atci->objectType, atci );
|
||||
_addressBookTypeList_ = g_list_append( _addressBookTypeList_, atci );
|
||||
|
||||
|
@ -3168,7 +3159,7 @@ void addrbookctl_build_map( GtkWidget *window ) {
|
|||
atci->showInTree = TRUE;
|
||||
atci->treeExpand = TRUE;
|
||||
atci->treeLeaf = TRUE;
|
||||
atci->displayName = _( "J-Pilot" );
|
||||
atci->displayName = _( "JPilot" );
|
||||
atci->iconXpm = categoryxpm;
|
||||
atci->maskXpm = categoryxpmmask;
|
||||
atci->iconXpmOpen = categoryxpm;
|
||||
|
@ -3526,4 +3517,3 @@ static void addressbook_import_mutt_cb() {
|
|||
/*
|
||||
* End of Source.
|
||||
*/
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "defs.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "intl.h"
|
||||
#include "mgutils.h"
|
||||
|
@ -180,9 +181,10 @@ static void addrindex_build_if_list( AddressIndex *addrIndex ) {
|
|||
addrIndex->interfaceList = g_list_append( addrIndex->interfaceList, iface );
|
||||
ADDRITEM_PARENT(iface) = ADDRITEM_OBJECT(addrIndex);
|
||||
|
||||
iface = addrindex_create_interface( ADDR_IF_JPILOT, "J-Pilot", TAG_IF_JPILOT, TAG_DS_JPILOT );
|
||||
iface = addrindex_create_interface( ADDR_IF_JPILOT, "JPilot", TAG_IF_JPILOT, TAG_DS_JPILOT );
|
||||
#ifdef USE_JPILOT
|
||||
iface->haveLibrary = jpilot_test_pilot_lib();
|
||||
/* iface->haveLibrary = jpilot_test_pilot_lib(); */
|
||||
iface->haveLibrary = TRUE;
|
||||
iface->useInterface = iface->haveLibrary;
|
||||
iface->getModifyFlag = ( void * ) jpilot_get_modified;
|
||||
iface->getAccessFlag = ( void * ) jpilot_get_accessed;
|
||||
|
@ -204,7 +206,8 @@ static void addrindex_build_if_list( AddressIndex *addrIndex ) {
|
|||
|
||||
iface = addrindex_create_interface( ADDR_IF_LDAP, "LDAP", TAG_IF_LDAP, TAG_DS_LDAP );
|
||||
#ifdef USE_LDAP
|
||||
iface->haveLibrary = syldap_test_ldap_lib();
|
||||
/* iface->haveLibrary = syldap_test_ldap_lib(); */
|
||||
iface->haveLibrary = TRUE;
|
||||
iface->useInterface = iface->haveLibrary;
|
||||
iface->getAccessFlag = ( void * ) syldap_get_accessed;
|
||||
/* iface->getModifyFlag = ( void * ) syldap_get_modified; */
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
#include "folderview.h"
|
||||
#include "procmsg.h"
|
||||
#include "menu.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "send.h"
|
||||
#include "imap.h"
|
||||
#include "news.h"
|
||||
|
@ -229,10 +230,10 @@ static void compose_input_cb (gpointer data,
|
|||
static void compose_set_ext_editor_sensitive (Compose *compose,
|
||||
gboolean sensitive);
|
||||
|
||||
static void compose_set_undo (UndoMain *undostruct,
|
||||
static void compose_undo_state_changed (UndoMain *undostruct,
|
||||
gint undo_state,
|
||||
gint redo_state,
|
||||
GtkWidget *changewidget);
|
||||
gpointer data);
|
||||
|
||||
static gint calc_cursor_xpos (GtkSText *text,
|
||||
gint extra,
|
||||
|
@ -1809,15 +1810,13 @@ static void compose_insert_file(Compose *compose, const gchar *file)
|
|||
gtk_stext_freeze(text);
|
||||
|
||||
while (fgets(buf, sizeof(buf), fp) != NULL) {
|
||||
/* Strip <CR> if DOS/Windoze file, replace <CR> with <LF> if MAC file */
|
||||
/* strip <CR> if DOS/Windows file,
|
||||
replace <CR> with <LF> if Macintosh file. */
|
||||
strcrchomp(buf);
|
||||
len = strlen(buf);
|
||||
if (len > 1 && buf[len - 2] == '\r' && buf[len - 1] == '\n') {
|
||||
buf[len - 2] = '\n';
|
||||
buf[len - 1] = '\0';
|
||||
} else {
|
||||
while (--len > 0)
|
||||
if (buf[len] == '\r')
|
||||
buf[len] = '\n';
|
||||
if (len > 0 && buf[len - 1] != '\n') {
|
||||
while (--len >= 0)
|
||||
if (buf[len] == '\r') buf[len] = '\n';
|
||||
}
|
||||
|
||||
gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
|
||||
|
@ -4361,7 +4360,8 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
|
|||
}
|
||||
|
||||
undostruct = undo_init(text);
|
||||
undo_set_undo_change_funct(undostruct, &compose_set_undo, menubar);
|
||||
undo_set_change_state_func(undostruct, &compose_undo_state_changed,
|
||||
menubar);
|
||||
|
||||
gtk_widget_show(window);
|
||||
|
||||
|
@ -4560,8 +4560,6 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
|
|||
static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
||||
{
|
||||
GtkWidget *toolbar;
|
||||
GdkPixmap *icon;
|
||||
GdkBitmap *mask;
|
||||
GtkWidget *icon_wid;
|
||||
GtkWidget *send_btn;
|
||||
GtkWidget *sendl_btn;
|
||||
|
@ -4581,15 +4579,14 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
gtk_toolbar_set_space_style(GTK_TOOLBAR(toolbar),
|
||||
GTK_TOOLBAR_SPACE_LINE);
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_send_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_SEND);
|
||||
send_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Send"),
|
||||
_("Send message"),
|
||||
"Send",
|
||||
icon_wid, toolbar_send_cb, compose);
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_send_queue_xpm);
|
||||
/* CREATE_TOOLBAR_ICON(tb_mail_queue_send_xpm); */
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_SEND_QUEUE);
|
||||
sendl_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Send later"),
|
||||
_("Put into queue folder and send later"),
|
||||
|
@ -4597,7 +4594,7 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
icon_wid, toolbar_send_later_cb,
|
||||
compose);
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL);
|
||||
draft_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Draft"),
|
||||
_("Save to draft folder"),
|
||||
|
@ -4607,7 +4604,7 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_paste_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_PASTE);
|
||||
insert_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Insert"),
|
||||
_("Insert file"),
|
||||
|
@ -4615,7 +4612,7 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
icon_wid, toolbar_insert_cb,
|
||||
compose);
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_attach_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_ATTACH);
|
||||
attach_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Attach"),
|
||||
_("Attach file"),
|
||||
|
@ -4625,7 +4622,7 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL);
|
||||
sig_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Signature"),
|
||||
_("Insert signature"),
|
||||
|
@ -4634,7 +4631,7 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_compose_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_COMPOSE);
|
||||
exteditor_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Editor"),
|
||||
_("Edit with external editor"),
|
||||
|
@ -4643,10 +4640,10 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
toolbar_ext_editor_cb,
|
||||
compose);
|
||||
|
||||
CREATE_TOOLBAR_ICON(linewrap_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_LINEWRAP);
|
||||
linewrap_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Linewrap"),
|
||||
_("Wrap current paragraph"),
|
||||
_("Wrap all long lines"),
|
||||
"Linewrap",
|
||||
icon_wid,
|
||||
toolbar_linewrap_cb,
|
||||
|
@ -4654,7 +4651,7 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
|
||||
CREATE_TOOLBAR_ICON(tb_address_book_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_ADDRESS_BOOK);
|
||||
addrbook_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Address"),
|
||||
_("Address book"),
|
||||
|
@ -4676,8 +4673,6 @@ static void compose_toolbar_create(Compose *compose, GtkWidget *container)
|
|||
gtk_widget_show_all(toolbar);
|
||||
}
|
||||
|
||||
#undef CREATE_TOOLBAR_ICON
|
||||
|
||||
static GtkWidget *compose_account_option_menu_create(Compose *compose)
|
||||
{
|
||||
GList *accounts;
|
||||
|
@ -5383,20 +5378,21 @@ static void compose_set_ext_editor_sensitive(Compose *compose,
|
|||
}
|
||||
|
||||
/**
|
||||
* undo_set_undo:
|
||||
* compose_undo_state_changed:
|
||||
*
|
||||
* Change the sensivity of the menuentries undo and redo
|
||||
**/
|
||||
static void compose_set_undo(UndoMain *undostruct, gint undo_state,
|
||||
gint redo_state, GtkWidget *changewidget)
|
||||
static void compose_undo_state_changed(UndoMain *undostruct, gint undo_state,
|
||||
gint redo_state, gpointer data)
|
||||
{
|
||||
GtkWidget *widget = GTK_WIDGET(data);
|
||||
GtkItemFactory *ifactory;
|
||||
|
||||
g_return_if_fail(changewidget != NULL);
|
||||
g_return_if_fail(widget != NULL);
|
||||
|
||||
debug_print("Set_undo. UNDO:%i REDO:%i\n", undo_state, redo_state);
|
||||
|
||||
ifactory = gtk_item_factory_from_widget(changewidget);
|
||||
ifactory = gtk_item_factory_from_widget(widget);
|
||||
|
||||
switch (undo_state) {
|
||||
case UNDO_STATE_TRUE:
|
||||
|
|
29
src/filter.c
29
src/filter.c
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999,2000 Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2001 Hiroyuki Yamamoto
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -25,6 +25,7 @@
|
|||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <stdlib.h>
|
||||
#include <regex.h>
|
||||
|
||||
#include "intl.h"
|
||||
#include "procheader.h"
|
||||
|
@ -86,6 +87,26 @@ static gboolean strcasenotfind(const gchar *haystack, const gchar *needle)
|
|||
return strcasestr(haystack, needle) != NULL ? FALSE : TRUE;
|
||||
}
|
||||
|
||||
static gboolean strmatch_regex(const gchar *haystack, const gchar *needle)
|
||||
{
|
||||
gint ret = 0;
|
||||
regex_t preg;
|
||||
regmatch_t pmatch[1];
|
||||
|
||||
ret = regcomp(&preg, needle, 0);
|
||||
if (ret != 0) return FALSE;
|
||||
|
||||
ret = regexec(&preg, haystack, 1, pmatch, 0);
|
||||
regfree(&preg);
|
||||
|
||||
if (ret == REG_NOMATCH) return FALSE;
|
||||
|
||||
if (pmatch[0].rm_so != -1)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean filter_match_condition(Filter *filter, GSList *hlist)
|
||||
{
|
||||
Header *header;
|
||||
|
@ -94,13 +115,17 @@ gboolean filter_match_condition(Filter *filter, GSList *hlist)
|
|||
|
||||
g_return_val_if_fail(filter->name1 != NULL, FALSE);
|
||||
|
||||
if (FLT_IS_CASE_SENS(filter->flag1))
|
||||
if (FLT_IS_REGEX(filter->flag1))
|
||||
StrFind1 = strmatch_regex;
|
||||
else if (FLT_IS_CASE_SENS(filter->flag1))
|
||||
StrFind1 = FLT_IS_CONTAIN(filter->flag1)
|
||||
? strfind : strnotfind;
|
||||
else
|
||||
StrFind1 = FLT_IS_CONTAIN(filter->flag1)
|
||||
? strcasefind : strcasenotfind;
|
||||
|
||||
if (FLT_IS_REGEX(filter->flag2))
|
||||
StrFind2 = strmatch_regex;
|
||||
if (FLT_IS_CASE_SENS(filter->flag2))
|
||||
StrFind2 = FLT_IS_CONTAIN(filter->flag2)
|
||||
? strfind : strnotfind;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999,2000 Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2001 Hiroyuki Yamamoto
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -29,7 +29,8 @@ typedef struct _Filter Filter;
|
|||
typedef enum
|
||||
{
|
||||
FLT_CONTAIN = 1 << 0,
|
||||
FLT_CASE_SENS = 1 << 1
|
||||
FLT_CASE_SENS = 1 << 1,
|
||||
FLT_REGEX = 1 << 2
|
||||
} FilterFlag;
|
||||
|
||||
typedef enum
|
||||
|
@ -48,6 +49,7 @@ typedef enum
|
|||
|
||||
#define FLT_IS_CONTAIN(flag) ((flag & FLT_CONTAIN) != 0)
|
||||
#define FLT_IS_CASE_SENS(flag) ((flag & FLT_CASE_SENS) != 0)
|
||||
#define FLT_IS_REGEX(flag) ((flag & FLT_REGEX) != 0)
|
||||
|
||||
struct _Filter
|
||||
{
|
||||
|
|
|
@ -42,14 +42,12 @@
|
|||
#include "main.h"
|
||||
#include "utils.h"
|
||||
#include "gtkutils.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "foldersel.h"
|
||||
#include "alertpanel.h"
|
||||
#include "manage_window.h"
|
||||
#include "folder.h"
|
||||
|
||||
#include "pixmaps/dir-close.xpm"
|
||||
#include "pixmaps/dir-open.xpm"
|
||||
|
||||
static GdkPixmap *folderxpm;
|
||||
static GdkBitmap *folderxpmmask;
|
||||
static GdkPixmap *folderopenxpm;
|
||||
|
@ -191,8 +189,10 @@ static void foldersel_create(void)
|
|||
|
||||
static void foldersel_init(void)
|
||||
{
|
||||
PIXMAP_CREATE(ctree, folderxpm, folderxpmmask, dir_close_xpm);
|
||||
PIXMAP_CREATE(ctree, folderopenxpm, folderopenxpmmask, dir_open_xpm);
|
||||
stock_pixmap_gdk(ctree, STOCK_PIXMAP_DIR_CLOSE,
|
||||
&folderxpm, &folderxpmmask);
|
||||
stock_pixmap_gdk(ctree, STOCK_PIXMAP_DIR_OPEN,
|
||||
&folderopenxpm, &folderopenxpmmask);
|
||||
}
|
||||
|
||||
static gboolean foldersel_gnode_func(GtkCTree *ctree, guint depth,
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#include "manage_window.h"
|
||||
#include "alertpanel.h"
|
||||
#include "menu.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "procmsg.h"
|
||||
#include "utils.h"
|
||||
#include "gtkutils.h"
|
||||
|
@ -57,16 +58,6 @@
|
|||
#include "folder.h"
|
||||
#include "inc.h"
|
||||
|
||||
#include "pixmaps/inbox.xpm"
|
||||
#include "pixmaps/inbox-hrm.xpm"
|
||||
#include "pixmaps/outbox.xpm"
|
||||
#include "pixmaps/outbox-hrm.xpm"
|
||||
#include "pixmaps/dir-close.xpm"
|
||||
#include "pixmaps/dir-open.xpm"
|
||||
#include "pixmaps/dir-open-hrm.xpm"
|
||||
#include "pixmaps/trash.xpm"
|
||||
#include "pixmaps/trash-hrm.xpm"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
COL_FOLDER = 0,
|
||||
|
@ -455,16 +446,14 @@ void folderview_init(FolderView *folderview)
|
|||
{
|
||||
GtkWidget *ctree = folderview->ctree;
|
||||
|
||||
PIXMAP_CREATE(ctree, inboxxpm, inboxxpmmask, inbox_xpm);
|
||||
PIXMAP_CREATE(ctree, inboxhrmxpm, inboxhrmxpmmask, inbox_hrm_xpm);
|
||||
PIXMAP_CREATE(ctree, outboxxpm, outboxxpmmask, outbox_xpm);
|
||||
PIXMAP_CREATE(ctree, outboxhrmxpm, outboxhrmxpmmask, outbox_hrm_xpm);
|
||||
PIXMAP_CREATE(ctree, folderxpm, folderxpmmask, dir_close_xpm);
|
||||
PIXMAP_CREATE(ctree, folderopenxpm, folderopenxpmmask, dir_open_xpm);
|
||||
PIXMAP_CREATE(ctree, folderopenhrmxpm, folderopenhrmxpmmask,
|
||||
dir_open_hrm_xpm);
|
||||
PIXMAP_CREATE(ctree, trashxpm, trashxpmmask, trash_xpm);
|
||||
PIXMAP_CREATE(ctree, trashhrmxpm, trashhrmxpmmask, trash_hrm_xpm);
|
||||
stock_pixmap_gdk(ctree, STOCK_PIXMAP_INBOX, &inboxxpm, &inboxxpmmask);
|
||||
stock_pixmap_gdk(ctree, STOCK_PIXMAP_OUTBOX,
|
||||
&outboxxpm, &outboxxpmmask);
|
||||
stock_pixmap_gdk(ctree, STOCK_PIXMAP_DIR_CLOSE,
|
||||
&folderxpm, &folderxpmmask);
|
||||
stock_pixmap_gdk(ctree, STOCK_PIXMAP_DIR_OPEN,
|
||||
&folderopenxpm, &folderopenxpmmask);
|
||||
stock_pixmap_gdk(ctree, STOCK_PIXMAP_TRASH, &trashxpm, &trashxpmmask);
|
||||
|
||||
if (!normalfont)
|
||||
normalfont = gdk_fontset_load(NORMAL_FONT);
|
||||
|
|
|
@ -41,13 +41,12 @@
|
|||
#include "addressbook.h"
|
||||
#include "addressitem.h"
|
||||
#include "gtkutils.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "prefs_common.h"
|
||||
#include "manage_window.h"
|
||||
#include "mgutils.h"
|
||||
#include "ldif.h"
|
||||
|
||||
#include "pixmaps/mark.xpm"
|
||||
|
||||
#define IMPORTLDIF_GUESS_NAME "LDIF Import"
|
||||
|
||||
#define PAGE_FILE_INFO 0
|
||||
|
@ -219,7 +218,7 @@ static void imp_ldif_field_list_selected( GtkCList *clist, gint row, gint column
|
|||
static void imp_ldif_field_list_toggle( GtkCList *clist, GdkEventButton *event, gpointer data ) {
|
||||
if( ! event ) return;
|
||||
if( impldif_dlg.rowIndSelect < 0 ) return;
|
||||
if( event->button = 1 ) {
|
||||
if( event->button == 1 ) {
|
||||
if( event->type == GDK_2BUTTON_PRESS ) {
|
||||
Ldif_FieldRec *rec = gtk_clist_get_row_data( clist, impldif_dlg.rowIndSelect );
|
||||
if( rec ) {
|
||||
|
@ -325,7 +324,7 @@ static gboolean imp_ldif_file_move() {
|
|||
ldif_set_file( _ldifFile_, sFile );
|
||||
if( ldif_read_tags( _ldifFile_ ) == MGU_SUCCESS ) {
|
||||
/* Load fields */
|
||||
// ldif_print_file( _ldifFile_, stdout );
|
||||
/* ldif_print_file( _ldifFile_, stdout ); */
|
||||
imp_ldif_load_fields( _ldifFile_ );
|
||||
retVal = TRUE;
|
||||
}
|
||||
|
@ -481,10 +480,7 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
|
|||
GtkWidget *label;
|
||||
GtkWidget *file_entry;
|
||||
GtkWidget *name_entry;
|
||||
GtkWidget *hbbox;
|
||||
GtkWidget *hsep;
|
||||
GtkWidget *file_btn;
|
||||
GtkWidget *hsbox;
|
||||
gint top;
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 8);
|
||||
|
@ -505,7 +501,7 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
|
|||
gtk_table_set_row_spacings(GTK_TABLE(table), 8);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 8 );
|
||||
|
||||
// First row
|
||||
/* First row */
|
||||
top = 0;
|
||||
label = gtk_label_new(_("Address Book"));
|
||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1),
|
||||
|
@ -516,7 +512,7 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
|
|||
gtk_table_attach(GTK_TABLE(table), name_entry, 1, 2, top, (top + 1),
|
||||
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
|
||||
|
||||
// Second row
|
||||
/* Second row */
|
||||
top = 1;
|
||||
label = gtk_label_new(_("File Name"));
|
||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1),
|
||||
|
@ -658,10 +654,6 @@ static void imp_ldif_page_finish( gint pageNum, gchar *pageLbl ) {
|
|||
GtkWidget *labelBook;
|
||||
GtkWidget *labelFile;
|
||||
GtkWidget *labelRecs;
|
||||
GtkWidget *hbbox;
|
||||
GtkWidget *hsep;
|
||||
GtkWidget *file_btn;
|
||||
GtkWidget *hsbox;
|
||||
gint top;
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 8);
|
||||
|
@ -721,7 +713,6 @@ static void imp_ldif_dialog_create() {
|
|||
GtkWidget *vnbox;
|
||||
GtkWidget *notebook;
|
||||
GtkWidget *hbbox;
|
||||
GtkWidget *hsep;
|
||||
GtkWidget *btnPrev;
|
||||
GtkWidget *btnNext;
|
||||
GtkWidget *btnCancel;
|
||||
|
@ -764,9 +755,11 @@ static void imp_ldif_dialog_create() {
|
|||
gtk_box_pack_start(GTK_BOX(hsbox), statusbar, TRUE, TRUE, BORDER_WIDTH);
|
||||
|
||||
/* Button panel */
|
||||
gtkut_button_set_create( &hbbox, &btnPrev, _( "Prev" ),
|
||||
&btnNext, _( "Next" ), &btnCancel, _( "Dismiss" ) );
|
||||
gtkut_button_set_create(&hbbox, &btnPrev, _( "Prev" ),
|
||||
&btnNext, _( "Next" ),
|
||||
&btnCancel, _( "Cancel" ) );
|
||||
gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(hbbox), 2);
|
||||
gtk_widget_grab_default(btnNext);
|
||||
|
||||
/* Button handlers */
|
||||
|
@ -817,7 +810,8 @@ AddressBookFile *addressbook_imp_ldif( AddressIndex *addrIndex ) {
|
|||
gtk_notebook_set_page( GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO );
|
||||
gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
|
||||
gtk_widget_set_sensitive( impldif_dlg.btnNext, TRUE );
|
||||
PIXMAP_CREATE( impldif_dlg.window, markxpm, markxpmmask, mark_xpm);
|
||||
stock_pixmap_gdk( impldif_dlg.window, STOCK_PIXMAP_MARK,
|
||||
&markxpm, &markxpmmask );
|
||||
imp_ldif_message();
|
||||
gtk_widget_grab_focus(impldif_dlg.file_entry);
|
||||
|
||||
|
|
15
src/inc.c
15
src/inc.c
|
@ -56,6 +56,7 @@
|
|||
#include "gtkutils.h"
|
||||
#include "statusbar.h"
|
||||
#include "manage_window.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "progressdialog.h"
|
||||
#include "inputdialog.h"
|
||||
#include "alertpanel.h"
|
||||
|
@ -64,10 +65,6 @@
|
|||
#include "folder.h"
|
||||
#include "filtering.h"
|
||||
|
||||
#include "pixmaps/continue.xpm"
|
||||
#include "pixmaps/complete.xpm"
|
||||
#include "pixmaps/error.xpm"
|
||||
|
||||
static guint inc_lock_count = 0;
|
||||
|
||||
static GdkPixmap *currentxpm;
|
||||
|
@ -287,10 +284,12 @@ static IncProgressDialog *inc_progress_dialog_create(void)
|
|||
|
||||
progress_dialog_set_value(progress, 0.0);
|
||||
|
||||
PIXMAP_CREATE(progress->clist, okxpm, okxpmmask, complete_xpm);
|
||||
PIXMAP_CREATE(progress->clist,
|
||||
currentxpm, currentxpmmask, continue_xpm);
|
||||
PIXMAP_CREATE(progress->clist, errorxpm, errorxpmmask, error_xpm);
|
||||
stock_pixmap_gdk(progress->clist, STOCK_PIXMAP_COMPLETE,
|
||||
&okxpm, &okxpmmask);
|
||||
stock_pixmap_gdk(progress->clist, STOCK_PIXMAP_CONTINUE,
|
||||
¤txpm, ¤txpmmask);
|
||||
stock_pixmap_gdk(progress->clist, STOCK_PIXMAP_ERROR,
|
||||
&errorxpm, &errorxpmmask);
|
||||
|
||||
if (prefs_common.recv_dialog_mode == RECV_DIALOG_ALWAYS ||
|
||||
(prefs_common.recv_dialog_mode == RECV_DIALOG_ACTIVE &&
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <dlfcn.h>
|
||||
/* #include <dlfcn.h> */
|
||||
#include <netinet/in.h>
|
||||
|
||||
#ifdef HAVE_LIBPISOCK_PI_ARGS_H
|
||||
|
@ -1608,6 +1608,7 @@ gboolean jpilot_test_custom_label( JPilotFile *pilotFile, const gchar *labelName
|
|||
* Test whether pilot link library installed.
|
||||
* Return: TRUE if library available.
|
||||
*/
|
||||
#if 0
|
||||
gboolean jpilot_test_pilot_lib( void ) {
|
||||
void *handle, *fun;
|
||||
|
||||
|
@ -1631,6 +1632,7 @@ gboolean jpilot_test_pilot_lib( void ) {
|
|||
dlclose( handle );
|
||||
return TRUE;
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
#endif /* USE_JPILOT */
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ void jpilot_clear_custom_labels ( JPilotFile *pilotFile );
|
|||
void jpilot_add_custom_label ( JPilotFile *pilotFile, const gchar *labelName );
|
||||
GList *jpilot_get_custom_labels ( JPilotFile *pilotFile );
|
||||
gboolean jpilot_test_custom_label ( JPilotFile *pilotFile, const gchar *labelName );
|
||||
gboolean jpilot_test_pilot_lib ( void );
|
||||
/* gboolean jpilot_test_pilot_lib ( void ); */
|
||||
|
||||
gint jpilot_read_modified ( JPilotFile *pilotFile );
|
||||
|
||||
|
|
|
@ -463,7 +463,6 @@ static void ldif_add_user_attr( Ldif_ParsedRec *rec, gchar *tagName, gchar *tagV
|
|||
Ldif_FieldRec *fld = NULL;
|
||||
Ldif_UserAttr *attr = NULL;
|
||||
gchar *name;
|
||||
gchar *value;
|
||||
|
||||
fld = g_hash_table_lookup( hashField, tagName );
|
||||
if( fld ) {
|
||||
|
@ -554,6 +553,7 @@ static void ldif_clear_rec( Ldif_ParsedRec *rec ) {
|
|||
/*
|
||||
* Print parsed data.
|
||||
*/
|
||||
#if 0
|
||||
static void ldif_print_record( Ldif_ParsedRec *rec, FILE *stream ) {
|
||||
GSList *list;
|
||||
|
||||
|
@ -585,6 +585,7 @@ static void ldif_print_record( Ldif_ParsedRec *rec, FILE *stream ) {
|
|||
}
|
||||
list = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void ldif_dump_b64( gchar *buf ) {
|
||||
Base64Decoder *decoder = NULL;
|
||||
|
@ -766,7 +767,7 @@ static void ldif_hash_add_list( GHashTable *table, GSList *list ) {
|
|||
static int ldif_field_compare( gconstpointer ptr1, gconstpointer ptr2 ) {
|
||||
const Ldif_FieldRec *rec1 = ptr1;
|
||||
const Ldif_FieldRec *rec2 = ptr2;
|
||||
return strcasecmp(rec1->tagName, rec2->tagName );
|
||||
return g_strcasecmp( rec1->tagName, rec2->tagName );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "message_search.h"
|
||||
#include "headerview.h"
|
||||
#include "menu.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "folder.h"
|
||||
#include "inc.h"
|
||||
#include "compose.h"
|
||||
|
@ -1725,35 +1726,10 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
|
|||
debug_print(_("done.\n"));
|
||||
}
|
||||
|
||||
#include "pixmaps/stock_mail_receive.xpm"
|
||||
#include "pixmaps/stock_mail_receive_all.xpm"
|
||||
#include "pixmaps/stock_mail_compose.xpm"
|
||||
#include "pixmaps/stock_news_compose.xpm"
|
||||
#include "pixmaps/stock_mail_reply.xpm"
|
||||
#include "pixmaps/stock_mail_reply_to_all.xpm"
|
||||
#include "pixmaps/stock_mail_reply_to_author.xpm"
|
||||
#include "pixmaps/stock_mail_forward.xpm"
|
||||
#include "pixmaps/stock_mail_send.xpm"
|
||||
#include "pixmaps/stock_preferences.xpm"
|
||||
#include "pixmaps/stock_properties.xpm"
|
||||
#include "pixmaps/stock_down_arrow.xpm"
|
||||
#include "pixmaps/stock_close.xpm"
|
||||
#include "pixmaps/stock_exec.xpm"
|
||||
|
||||
#define CREATE_TOOLBAR_ICON(xpm_d) \
|
||||
{ \
|
||||
icon = gdk_pixmap_create_from_xpm_d(container->window, &mask, \
|
||||
&container->style->white, \
|
||||
xpm_d); \
|
||||
icon_wid = gtk_pixmap_new(icon, mask); \
|
||||
}
|
||||
|
||||
static void main_window_toolbar_create(MainWindow *mainwin,
|
||||
GtkWidget *container)
|
||||
{
|
||||
GtkWidget *toolbar;
|
||||
GdkPixmap *icon;
|
||||
GdkBitmap *mask;
|
||||
GtkWidget *icon_wid;
|
||||
GtkWidget *get_btn;
|
||||
GtkWidget *getall_btn;
|
||||
|
@ -1782,13 +1758,13 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
gtk_toolbar_set_space_style(GTK_TOOLBAR(toolbar),
|
||||
GTK_TOOLBAR_SPACE_LINE);
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_receive_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_RECEIVE);
|
||||
get_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Get"),
|
||||
_("Get new mail from current account"),
|
||||
"Get",
|
||||
icon_wid, toolbar_inc_cb, mainwin);
|
||||
CREATE_TOOLBAR_ICON(stock_mail_receive_all_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_RECEIVE_ALL);
|
||||
getall_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Get all"),
|
||||
_("Get new mail from all accounts"),
|
||||
|
@ -1799,7 +1775,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_send_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_SEND);
|
||||
send_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Send"),
|
||||
_("Send queued message(s)"),
|
||||
|
@ -1809,8 +1785,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
mainwin);
|
||||
|
||||
/* insert compose mail button widget */
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_compose_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_COMPOSE);
|
||||
compose_mail_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Email"),
|
||||
_("Compose an email message"),
|
||||
|
@ -1820,8 +1795,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
mainwin);
|
||||
|
||||
/* insert compose news button widget */
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_news_compose_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_NEWS_COMPOSE);
|
||||
compose_news_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("News"),
|
||||
_("Compose a news message"),
|
||||
|
@ -1834,7 +1808,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
|
||||
/* reply button */
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_reply_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_REPLY);
|
||||
reply_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Reply"),
|
||||
_("Reply to the message - Right button: more options"),
|
||||
|
@ -1844,8 +1818,8 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
mainwin);
|
||||
|
||||
/* replyall button */
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_reply_to_all_xpm);
|
||||
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_REPLY_TO_ALL);
|
||||
replyall_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("All"),
|
||||
_("Reply to all - Right button: more options"),
|
||||
|
@ -1855,8 +1829,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
mainwin);
|
||||
|
||||
/* reply to sender button */
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_reply_to_author_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_REPLY_TO_AUTHOR);
|
||||
replysender_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Sender"),
|
||||
_("Reply to sender - Right button: more options"),
|
||||
|
@ -1866,8 +1839,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
mainwin);
|
||||
|
||||
/* forward button */
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_mail_forward_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_MAIL_FORWARD);
|
||||
fwd_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Forward"),
|
||||
_("Forward the message - Right button: more options"),
|
||||
|
@ -1878,7 +1850,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_close_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_CLOSE);
|
||||
delete_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Delete"),
|
||||
_("Delete the message"),
|
||||
|
@ -1887,7 +1859,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
toolbar_delete_cb,
|
||||
mainwin);
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_exec_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_EXEC);
|
||||
exec_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Execute"),
|
||||
_("Execute marked process"),
|
||||
|
@ -1896,7 +1868,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
toolbar_exec_cb,
|
||||
mainwin);
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_down_arrow_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_DOWN_ARROW);
|
||||
next_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Next"),
|
||||
_("Next unread message"),
|
||||
|
@ -1908,7 +1880,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
/*
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
|
||||
CREATE_TOOLBAR_ICON(stock_preferences_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_PREFERENCES);
|
||||
prefs_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Prefs"),
|
||||
_("Common preference"),
|
||||
|
@ -1916,7 +1888,7 @@ static void main_window_toolbar_create(MainWindow *mainwin,
|
|||
icon_wid,
|
||||
toolbar_prefs_cb,
|
||||
mainwin);
|
||||
CREATE_TOOLBAR_ICON(stock_properties_xpm);
|
||||
icon_wid = stock_pixmap_widget(container, STOCK_PIXMAP_PROPERTIES);
|
||||
account_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
_("Account"),
|
||||
_("Account setting"),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999,2000 Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2001 Hiroyuki Yamamoto
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -29,7 +29,7 @@ GtkWidget *focus_window;
|
|||
gint manage_window_focus_in(GtkWidget *widget, GdkEventFocus *event,
|
||||
gpointer data)
|
||||
{
|
||||
debug_print("Focus in event: window: %08x\n", (guint)widget);
|
||||
/* debug_print("Focus in event: window: %08x\n", (guint)widget); */
|
||||
|
||||
focus_window = widget;
|
||||
|
||||
|
@ -39,8 +39,8 @@ gint manage_window_focus_in(GtkWidget *widget, GdkEventFocus *event,
|
|||
gint manage_window_focus_out(GtkWidget *widget, GdkEventFocus *event,
|
||||
gpointer data)
|
||||
{
|
||||
debug_print("Focused window: %08x\n", (guint)focus_window);
|
||||
debug_print("Focus out event: window: %08x\n", (guint)widget);
|
||||
/* debug_print("Focused window: %08x\n", (guint)focus_window); */
|
||||
/* debug_print("Focus out event: window: %08x\n", (guint)widget); */
|
||||
|
||||
if (focus_window == widget)
|
||||
focus_window = NULL;
|
||||
|
@ -50,8 +50,8 @@ gint manage_window_focus_out(GtkWidget *widget, GdkEventFocus *event,
|
|||
|
||||
void manage_window_set_transient(GtkWindow *window)
|
||||
{
|
||||
debug_print("window = %08x, focus_window = %08x\n",
|
||||
(guint)window, (guint)focus_window);
|
||||
/* debug_print("window = %08x, focus_window = %08x\n",
|
||||
(guint)window, (guint)focus_window); */
|
||||
|
||||
if (window && focus_window)
|
||||
gtk_window_set_transient_for(window, GTK_WINDOW(focus_window));
|
||||
|
|
|
@ -325,8 +325,8 @@ static PrefParam param[] = {
|
|||
&compose.spinbtn_undolevel,
|
||||
prefs_set_data_from_spinbtn, prefs_set_spinbtn},
|
||||
|
||||
{"linewrap_length", "74", &prefs_common.linewrap_len, P_INT,
|
||||
&compose.spinbtn_linewrap,
|
||||
{"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
|
||||
&compose.spinbtn_linewrap,
|
||||
prefs_set_data_from_spinbtn, prefs_set_spinbtn},
|
||||
{"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
|
||||
&compose.checkbtn_wrapquote,
|
||||
|
@ -2712,8 +2712,7 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
|
|||
datefmt_clist = gtk_clist_new_with_titles(2, titles);
|
||||
gtk_widget_show(datefmt_clist);
|
||||
gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
|
||||
/* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
|
||||
|
||||
/* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
|
||||
gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
|
||||
GTK_SELECTION_BROWSE);
|
||||
|
||||
|
@ -2831,7 +2830,6 @@ static void prefs_quote_colors_dialog_create(void)
|
|||
GtkWidget *tgt_folder_label;
|
||||
GtkWidget *hbbox;
|
||||
GtkWidget *ok_btn;
|
||||
//GtkWidget *cancel_btn;
|
||||
GtkWidget *recycle_colors_btn;
|
||||
GtkWidget *frame_colors;
|
||||
|
||||
|
|
|
@ -105,6 +105,7 @@ static void prefs_filter_row_move (GtkCList *clist,
|
|||
|
||||
static void prefs_filter_dest_radio_button_toggled (void);
|
||||
static void prefs_filter_notrecv_radio_button_toggled (void);
|
||||
static void prefs_filter_regex_check_button_toggled (void);
|
||||
|
||||
static gint prefs_filter_deleted (GtkWidget *widget,
|
||||
GdkEventAny *event,
|
||||
|
@ -367,7 +368,11 @@ static void prefs_filter_create(void)
|
|||
NULL);
|
||||
|
||||
PACK_CHECK_BUTTON (dest_hbox, regex_chkbtn, _("Use regex"));
|
||||
gtk_widget_set_sensitive(regex_chkbtn, FALSE);
|
||||
//gtk_widget_set_sensitive(regex_chkbtn, FALSE);
|
||||
gtk_signal_connect
|
||||
(GTK_OBJECT (regex_chkbtn), "toggled",
|
||||
GTK_SIGNAL_FUNC (prefs_filter_regex_check_button_toggled),
|
||||
NULL);
|
||||
|
||||
notrecv_radiobtn = gtk_radio_button_new_with_label
|
||||
(recv_group, _("Don't receive"));
|
||||
|
@ -646,12 +651,16 @@ static gint prefs_filter_clist_set_row(gint row)
|
|||
flt->body2 = g_strdup(entry_text);
|
||||
}
|
||||
|
||||
if (gtk_toggle_button_get_active
|
||||
(GTK_TOGGLE_BUTTON(filter.regex_chkbtn)))
|
||||
flt->flag1 = flt->flag2 = FLT_REGEX;
|
||||
|
||||
GET_ENTRY(filter.pred_entry1);
|
||||
if (!strcmp(entry_text, _("contains")))
|
||||
flt->flag1 = FLT_CONTAIN;
|
||||
flt->flag1 |= FLT_CONTAIN;
|
||||
GET_ENTRY(filter.pred_entry2);
|
||||
if (!strcmp(entry_text, _("contains")))
|
||||
flt->flag2 = FLT_CONTAIN;
|
||||
flt->flag2 |= FLT_CONTAIN;
|
||||
|
||||
GET_ENTRY(filter.op_entry);
|
||||
if (!strcmp(entry_text, "and"))
|
||||
|
@ -776,6 +785,7 @@ static void prefs_filter_select(GtkCList *clist, gint row, gint column,
|
|||
Filter default_flt = {"Subject", NULL, _("(none)"), NULL,
|
||||
FLT_CONTAIN, FLT_CONTAIN, FLT_AND,
|
||||
NULL, FLT_MOVE};
|
||||
gboolean is_regex;
|
||||
|
||||
flt = gtk_clist_get_row_data(clist, row);
|
||||
if (!flt)
|
||||
|
@ -795,6 +805,12 @@ static void prefs_filter_select(GtkCList *clist, gint row, gint column,
|
|||
FLT_IS_CONTAIN(flt->flag2)
|
||||
? _("contains") : _("not contain"));
|
||||
|
||||
is_regex = FLT_IS_REGEX(flt->flag1);
|
||||
gtk_widget_set_sensitive(filter.pred_combo1, !is_regex);
|
||||
gtk_widget_set_sensitive(filter.pred_combo2, !is_regex);
|
||||
gtk_toggle_button_set_active
|
||||
(GTK_TOGGLE_BUTTON(filter.regex_chkbtn), is_regex);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(filter.op_entry),
|
||||
flt->cond == FLT_OR ? "or" : "and");
|
||||
if (flt->action == FLT_NOTRECV)
|
||||
|
@ -827,6 +843,16 @@ static void prefs_filter_notrecv_radio_button_toggled(void)
|
|||
gtk_widget_set_sensitive(filter.destsel_btn, FALSE);
|
||||
}
|
||||
|
||||
static void prefs_filter_regex_check_button_toggled(void)
|
||||
{
|
||||
gboolean is_regex;
|
||||
|
||||
is_regex = gtk_toggle_button_get_active
|
||||
(GTK_TOGGLE_BUTTON(filter.regex_chkbtn));
|
||||
gtk_widget_set_sensitive(filter.pred_combo1, !is_regex);
|
||||
gtk_widget_set_sensitive(filter.pred_combo2, !is_regex);
|
||||
}
|
||||
|
||||
static gint prefs_filter_deleted(GtkWidget *widget, GdkEventAny *event,
|
||||
gpointer data)
|
||||
{
|
||||
|
|
169
src/stock_pixmap.c
Normal file
169
src/stock_pixmap.c
Normal file
|
@ -0,0 +1,169 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2001 Hiroyuki Yamamoto
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
#include <gtk/gtkpixmap.h>
|
||||
|
||||
#include "stock_pixmap.h"
|
||||
#include "gtkutils.h"
|
||||
|
||||
#include "pixmaps/address.xpm"
|
||||
#include "pixmaps/book.xpm"
|
||||
#include "pixmaps/category.xpm"
|
||||
#include "pixmaps/checkbox_off.xpm"
|
||||
#include "pixmaps/checkbox_on.xpm"
|
||||
#include "pixmaps/clip.xpm"
|
||||
#include "pixmaps/complete.xpm"
|
||||
#include "pixmaps/continue.xpm"
|
||||
#include "pixmaps/deleted.xpm"
|
||||
#include "pixmaps/dir-close.xpm"
|
||||
#include "pixmaps/dir-open.xpm"
|
||||
#include "pixmaps/error.xpm"
|
||||
#include "pixmaps/forwarded.xpm"
|
||||
#include "pixmaps/group.xpm"
|
||||
#include "pixmaps/inbox.xpm"
|
||||
#include "pixmaps/interface.xpm"
|
||||
#include "pixmaps/jpilot.xpm"
|
||||
#include "pixmaps/ldap.xpm"
|
||||
#include "pixmaps/linewrap.xpm"
|
||||
#include "pixmaps/mark.xpm"
|
||||
#include "pixmaps/new.xpm"
|
||||
#include "pixmaps/outbox.xpm"
|
||||
#include "pixmaps/replied.xpm"
|
||||
#include "pixmaps/stock_close.xpm"
|
||||
#include "pixmaps/stock_down_arrow.xpm"
|
||||
#include "pixmaps/stock_exec.xpm"
|
||||
#include "pixmaps/stock_mail.xpm"
|
||||
#include "pixmaps/stock_mail_attach.xpm"
|
||||
#include "pixmaps/stock_mail_compose.xpm"
|
||||
#include "pixmaps/stock_mail_forward.xpm"
|
||||
#include "pixmaps/stock_mail_receive.xpm"
|
||||
#include "pixmaps/stock_mail_receive_all.xpm"
|
||||
#include "pixmaps/stock_mail_reply.xpm"
|
||||
#include "pixmaps/stock_mail_reply_to_all.xpm"
|
||||
#include "pixmaps/stock_mail_reply_to_author.xpm"
|
||||
#include "pixmaps/stock_mail_send.xpm"
|
||||
#include "pixmaps/stock_mail_send_queue.xpm"
|
||||
#include "pixmaps/stock_news_compose.xpm"
|
||||
#include "pixmaps/stock_paste.xpm"
|
||||
#include "pixmaps/stock_preferences.xpm"
|
||||
#include "pixmaps/stock_properties.xpm"
|
||||
#include "pixmaps/sylpheed-logo.xpm"
|
||||
#include "pixmaps/tb_address_book.xpm"
|
||||
#include "pixmaps/trash.xpm"
|
||||
#include "pixmaps/unread.xpm"
|
||||
#include "pixmaps/vcard.xpm"
|
||||
|
||||
typedef struct _StockPixmapData StockPixmapData;
|
||||
|
||||
struct _StockPixmapData
|
||||
{
|
||||
gchar **data;
|
||||
GdkPixmap *pixmap;
|
||||
GdkBitmap *mask;
|
||||
};
|
||||
|
||||
static StockPixmapData pixmaps[] =
|
||||
{
|
||||
{address_xpm , NULL, NULL},
|
||||
{book_xpm , NULL, NULL},
|
||||
{category_xpm , NULL, NULL},
|
||||
{checkbox_off_xpm , NULL, NULL},
|
||||
{checkbox_on_xpm , NULL, NULL},
|
||||
{clip_xpm , NULL, NULL},
|
||||
{complete_xpm , NULL, NULL},
|
||||
{continue_xpm , NULL, NULL},
|
||||
{deleted_xpm , NULL, NULL},
|
||||
{dir_close_xpm , NULL, NULL},
|
||||
{dir_open_xpm , NULL, NULL},
|
||||
{error_xpm , NULL, NULL},
|
||||
{forwarded_xpm , NULL, NULL},
|
||||
{group_xpm , NULL, NULL},
|
||||
{inbox_xpm , NULL, NULL},
|
||||
{interface_xpm , NULL, NULL},
|
||||
{jpilot_xpm , NULL, NULL},
|
||||
{ldap_xpm , NULL, NULL},
|
||||
{linewrap_xpm , NULL, NULL},
|
||||
{mark_xpm , NULL, NULL},
|
||||
{new_xpm , NULL, NULL},
|
||||
{outbox_xpm , NULL, NULL},
|
||||
{replied_xpm , NULL, NULL},
|
||||
{stock_close_xpm , NULL, NULL},
|
||||
{stock_down_arrow_xpm , NULL, NULL},
|
||||
{stock_exec_xpm , NULL, NULL},
|
||||
{stock_mail_xpm , NULL, NULL},
|
||||
{stock_mail_attach_xpm , NULL, NULL},
|
||||
{stock_mail_compose_xpm , NULL, NULL},
|
||||
{stock_mail_forward_xpm , NULL, NULL},
|
||||
{stock_mail_receive_xpm , NULL, NULL},
|
||||
{stock_mail_receive_all_xpm , NULL, NULL},
|
||||
{stock_mail_reply_xpm , NULL, NULL},
|
||||
{stock_mail_reply_to_all_xpm , NULL, NULL},
|
||||
{stock_mail_reply_to_author_xpm , NULL, NULL},
|
||||
{stock_mail_send_xpm , NULL, NULL},
|
||||
{stock_mail_send_queue_xpm , NULL, NULL},
|
||||
{stock_news_compose_xpm , NULL, NULL},
|
||||
{stock_paste_xpm , NULL, NULL},
|
||||
{stock_preferences_xpm , NULL, NULL},
|
||||
{stock_properties_xpm , NULL, NULL},
|
||||
{sylpheed_logo_xpm , NULL, NULL},
|
||||
{tb_address_book_xpm , NULL, NULL},
|
||||
{trash_xpm , NULL, NULL},
|
||||
{unread_xpm , NULL, NULL},
|
||||
{vcard_xpm , NULL, NULL},
|
||||
};
|
||||
|
||||
/* return newly constructed GtkPixmap from GdkPixmap */
|
||||
GtkWidget *stock_pixmap_widget(GtkWidget *window, StockPixmap icon)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GdkBitmap *mask;
|
||||
|
||||
g_return_val_if_fail(window != NULL, NULL);
|
||||
g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, NULL);
|
||||
|
||||
stock_pixmap_gdk(window, icon, &pixmap, &mask);
|
||||
return gtk_pixmap_new(pixmap, mask);
|
||||
}
|
||||
|
||||
/* create GdkPixmap if it has not created yet */
|
||||
gint stock_pixmap_gdk(GtkWidget *window, StockPixmap icon,
|
||||
GdkPixmap **pixmap, GdkBitmap **mask)
|
||||
{
|
||||
StockPixmapData *pix_d;
|
||||
|
||||
if (pixmap) *pixmap = NULL;
|
||||
if (mask) *mask = NULL;
|
||||
|
||||
g_return_val_if_fail(window != NULL, -1);
|
||||
g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, -1);
|
||||
|
||||
pix_d = &pixmaps[icon];
|
||||
|
||||
if (!pix_d->pixmap) {
|
||||
PIXMAP_CREATE(window, pix_d->pixmap, pix_d->mask,
|
||||
pix_d->data);
|
||||
}
|
||||
|
||||
if (pixmap) *pixmap = pix_d->pixmap;
|
||||
if (mask) *mask = pix_d->mask;
|
||||
|
||||
return 0;
|
||||
}
|
85
src/stock_pixmap.h
Normal file
85
src/stock_pixmap.h
Normal file
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2001 Hiroyuki Yamamoto
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __STOCK_PIXMAP_H__
|
||||
#define __STOCK_PIXMAP_H__
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
STOCK_PIXMAP_ADDRESS,
|
||||
STOCK_PIXMAP_BOOK,
|
||||
STOCK_PIXMAP_CATEGORY,
|
||||
STOCK_PIXMAP_CHECKBOX_OFF,
|
||||
STOCK_PIXMAP_CHECKBOX_ON,
|
||||
STOCK_PIXMAP_CLIP,
|
||||
STOCK_PIXMAP_COMPLETE,
|
||||
STOCK_PIXMAP_CONTINUE,
|
||||
STOCK_PIXMAP_DELETED,
|
||||
STOCK_PIXMAP_DIR_CLOSE,
|
||||
STOCK_PIXMAP_DIR_OPEN,
|
||||
STOCK_PIXMAP_ERROR,
|
||||
STOCK_PIXMAP_FORWARDED,
|
||||
STOCK_PIXMAP_GROUP,
|
||||
STOCK_PIXMAP_INBOX,
|
||||
STOCK_PIXMAP_INTERFACE,
|
||||
STOCK_PIXMAP_JPILOT,
|
||||
STOCK_PIXMAP_LDAP,
|
||||
STOCK_PIXMAP_LINEWRAP,
|
||||
STOCK_PIXMAP_MARK,
|
||||
STOCK_PIXMAP_NEW,
|
||||
STOCK_PIXMAP_OUTBOX,
|
||||
STOCK_PIXMAP_REPLIED,
|
||||
STOCK_PIXMAP_CLOSE,
|
||||
STOCK_PIXMAP_DOWN_ARROW,
|
||||
STOCK_PIXMAP_EXEC,
|
||||
STOCK_PIXMAP_MAIL,
|
||||
STOCK_PIXMAP_MAIL_ATTACH,
|
||||
STOCK_PIXMAP_MAIL_COMPOSE,
|
||||
STOCK_PIXMAP_MAIL_FORWARD,
|
||||
STOCK_PIXMAP_MAIL_RECEIVE,
|
||||
STOCK_PIXMAP_MAIL_RECEIVE_ALL,
|
||||
STOCK_PIXMAP_MAIL_REPLY,
|
||||
STOCK_PIXMAP_MAIL_REPLY_TO_ALL,
|
||||
STOCK_PIXMAP_MAIL_REPLY_TO_AUTHOR,
|
||||
STOCK_PIXMAP_MAIL_SEND,
|
||||
STOCK_PIXMAP_MAIL_SEND_QUEUE,
|
||||
STOCK_PIXMAP_NEWS_COMPOSE,
|
||||
STOCK_PIXMAP_PASTE,
|
||||
STOCK_PIXMAP_PREFERENCES,
|
||||
STOCK_PIXMAP_PROPERTIES,
|
||||
STOCK_PIXMAP_SYLPHEED_LOGO,
|
||||
STOCK_PIXMAP_ADDRESS_BOOK,
|
||||
STOCK_PIXMAP_TRASH,
|
||||
STOCK_PIXMAP_UNREAD,
|
||||
STOCK_PIXMAP_VCARD,
|
||||
|
||||
N_STOCK_PIXMAPS
|
||||
} StockPixmap;
|
||||
|
||||
GtkWidget *stock_pixmap_widget (GtkWidget *window,
|
||||
StockPixmap icon);
|
||||
gint stock_pixmap_gdk (GtkWidget *window,
|
||||
StockPixmap icon,
|
||||
GdkPixmap **pixmap,
|
||||
GdkBitmap **mask);
|
||||
|
||||
#endif /* __STOCK_PIXMAP_H__ */
|
|
@ -65,6 +65,7 @@
|
|||
#include "compose.h"
|
||||
#include "utils.h"
|
||||
#include "gtkutils.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "filesel.h"
|
||||
#include "manage_window.h"
|
||||
#include "alertpanel.h"
|
||||
|
@ -81,17 +82,6 @@
|
|||
#include "prefs_folder_item.h"
|
||||
#include "filtering.h"
|
||||
|
||||
#include "pixmaps/dir-open.xpm"
|
||||
#include "pixmaps/mark.xpm"
|
||||
#include "pixmaps/deleted.xpm"
|
||||
#include "pixmaps/new.xpm"
|
||||
#include "pixmaps/unread.xpm"
|
||||
#include "pixmaps/replied.xpm"
|
||||
#include "pixmaps/forwarded.xpm"
|
||||
#include "pixmaps/clip.xpm"
|
||||
#include "pixmaps/ignorethread.xpm"
|
||||
#include "pixmaps/locked.xpm"
|
||||
|
||||
#define STATUSBAR_PUSH(mainwin, str) \
|
||||
{ \
|
||||
gtk_statusbar_push(GTK_STATUSBAR(mainwin->statusbar), \
|
||||
|
@ -120,9 +110,6 @@ static GtkStyle *small_style;
|
|||
static GtkStyle *small_marked_style;
|
||||
static GtkStyle *small_deleted_style;
|
||||
|
||||
static GdkPixmap *folderxpm;
|
||||
static GdkBitmap *folderxpmmask;
|
||||
|
||||
static GdkPixmap *markxpm;
|
||||
static GdkBitmap *markxpmmask;
|
||||
static GdkPixmap *deletedxpm;
|
||||
|
@ -534,21 +521,20 @@ void summary_init(SummaryView *summaryview)
|
|||
GtkStyle *style;
|
||||
GtkWidget *pixmap;
|
||||
|
||||
PIXMAP_CREATE(summaryview->ctree, markxpm, markxpmmask, mark_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, deletedxpm, deletedxpmmask,
|
||||
deleted_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, newxpm, newxpmmask, new_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, unreadxpm, unreadxpmmask, unread_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, repliedxpm, repliedxpmmask,
|
||||
replied_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, forwardedxpm, forwardedxpmmask,
|
||||
forwarded_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, ignorethreadxpm, ignorethreadxpmmask,
|
||||
ignorethread_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, lockedxpm, lockedxpmmask, locked_xpm);
|
||||
PIXMAP_CREATE(summaryview->ctree, clipxpm, clipxpmmask, clip_xpm);
|
||||
PIXMAP_CREATE(summaryview->hbox, folderxpm, folderxpmmask,
|
||||
dir_open_xpm);
|
||||
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_MARK,
|
||||
&markxpm, &markxpmmask);
|
||||
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_DELETED,
|
||||
&deletedxpm, &deletedxpmmask);
|
||||
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_NEW,
|
||||
&newxpm, &newxpmmask);
|
||||
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_UNREAD,
|
||||
&unreadxpm, &unreadxpmmask);
|
||||
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_REPLIED,
|
||||
&repliedxpm, &repliedxpmmask);
|
||||
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_FORWARDED,
|
||||
&forwardedxpm, &forwardedxpmmask);
|
||||
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP,
|
||||
&clipxpm, &clipxpmmask);
|
||||
|
||||
if (!small_style) {
|
||||
small_style = gtk_style_copy
|
||||
|
@ -584,7 +570,7 @@ void summary_init(SummaryView *summaryview)
|
|||
gtk_widget_set_style(summaryview->statlabel_select, style);
|
||||
gtk_widget_set_style(summaryview->statlabel_msgs, style);
|
||||
|
||||
pixmap = gtk_pixmap_new(folderxpm, folderxpmmask);
|
||||
pixmap = stock_pixmap_widget(summaryview->hbox, STOCK_PIXMAP_DIR_OPEN);
|
||||
gtk_box_pack_start(GTK_BOX(summaryview->hbox), pixmap, FALSE, FALSE, 4);
|
||||
gtk_box_reorder_child(GTK_BOX(summaryview->hbox), pixmap, 0);
|
||||
gtk_widget_show(pixmap);
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include <ldap.h>
|
||||
#include <lber.h>
|
||||
#include <pthread.h>
|
||||
#include <dlfcn.h>
|
||||
/* #include <dlfcn.h> */
|
||||
|
||||
#include "mgutils.h"
|
||||
#include "addritem.h"
|
||||
|
@ -1065,6 +1065,7 @@ gboolean syldap_test_connect( SyldapServer *ldapServer ) {
|
|||
* Test whether LDAP libraries installed.
|
||||
* Return: TRUE if library available.
|
||||
*/
|
||||
#if 0
|
||||
gboolean syldap_test_ldap_lib() {
|
||||
void *handle, *fun;
|
||||
|
||||
|
@ -1117,6 +1118,7 @@ gboolean syldap_test_ldap_lib() {
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
#endif /* USE_LDAP */
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ GList *syldap_read_basedn_s ( const gchar *host, const gint port, const gchar *b
|
|||
GList *syldap_read_basedn ( SyldapServer *ldapServer );
|
||||
gboolean syldap_test_connect_s ( const gchar *host, const gint port );
|
||||
gboolean syldap_test_connect ( SyldapServer *ldapServer );
|
||||
gboolean syldap_test_ldap_lib ( void );
|
||||
/* gboolean syldap_test_ldap_lib ( void ); */
|
||||
|
||||
#endif /* USE_LDAP */
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@ void template_write_config(GSList *tmpl_list)
|
|||
|
||||
if (!is_dir_exist(path)) {
|
||||
if (is_file_exist(path)) {
|
||||
g_warning(_("file %s allready exists\n"), path);
|
||||
g_warning(_("file %s already exists\n"), path);
|
||||
return;
|
||||
}
|
||||
if (mkdir(path, S_IRWXU) < 0) {
|
||||
|
|
438
src/undo.c
438
src/undo.c
|
@ -25,13 +25,13 @@
|
|||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
#include "gtkstext.h"
|
||||
|
||||
#include <string.h> /* for strlen */
|
||||
#include <stdlib.h> /* for mbstowcs */
|
||||
|
||||
#include "undo.h"
|
||||
#include "utils.h"
|
||||
#include "gtkstext.h"
|
||||
#include "prefs_common.h"
|
||||
|
||||
typedef struct _UndoInfo UndoInfo;
|
||||
|
@ -42,8 +42,8 @@ struct _UndoInfo
|
|||
gchar *text;
|
||||
gint start_pos;
|
||||
gint end_pos;
|
||||
float window_position;
|
||||
int mergeable;
|
||||
gfloat window_position;
|
||||
gint mergeable;
|
||||
};
|
||||
|
||||
static void undo_free_list (GList **list_pointer);
|
||||
|
@ -114,10 +114,10 @@ static UndoInfo *undo_object_new(gchar *text, gint start_pos, gint end_pos,
|
|||
{
|
||||
UndoInfo *undoinfo;
|
||||
undoinfo = g_new (UndoInfo, 1);
|
||||
undoinfo->text = text;
|
||||
undoinfo->start_pos = start_pos;
|
||||
undoinfo->end_pos = end_pos;
|
||||
undoinfo->action = action;
|
||||
undoinfo->text = text;
|
||||
undoinfo->start_pos = start_pos;
|
||||
undoinfo->end_pos = end_pos;
|
||||
undoinfo->action = action;
|
||||
undoinfo->window_position = window_position;
|
||||
return undoinfo;
|
||||
}
|
||||
|
@ -136,29 +136,27 @@ static void undo_object_free(UndoInfo *undo)
|
|||
**/
|
||||
static void undo_free_list(GList **list_pointer)
|
||||
{
|
||||
UndoInfo *nth_redo;
|
||||
GList *cur, *list = *list_pointer;
|
||||
UndoInfo *undo;
|
||||
GList *cur, *list = *list_pointer;
|
||||
|
||||
if (list == NULL)
|
||||
return;
|
||||
|
||||
debug_print("length of list: %d\n", g_list_length(list));
|
||||
if (list == NULL) return;
|
||||
|
||||
for (cur = list; cur != NULL; cur = cur->next) {
|
||||
nth_redo = cur->data;
|
||||
undo_object_free(nth_redo);
|
||||
undo = (UndoInfo *)cur->data;
|
||||
undo_object_free(undo);
|
||||
}
|
||||
|
||||
g_list_free(list);
|
||||
g_list_free(list);
|
||||
*list_pointer = NULL;
|
||||
}
|
||||
|
||||
void undo_set_undo_change_funct(UndoMain *undostruct, UndoChangeState func,
|
||||
GtkWidget *changewidget)
|
||||
void undo_set_change_state_func(UndoMain *undostruct, UndoChangeStateFunc func,
|
||||
gpointer data)
|
||||
{
|
||||
g_return_if_fail(undostruct != NULL);
|
||||
undostruct->change_func = func;
|
||||
undostruct->changewidget = changewidget;
|
||||
g_return_if_fail(undostruct != NULL);
|
||||
|
||||
undostruct->change_state_func = func;
|
||||
undostruct->change_state_data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -171,20 +169,20 @@ void undo_set_undo_change_funct(UndoMain *undostruct, UndoChangeState func,
|
|||
**/
|
||||
static void undo_check_size(UndoMain *undostruct)
|
||||
{
|
||||
UndoInfo *nth_undo;
|
||||
UndoInfo *last_undo;
|
||||
guint length;
|
||||
|
||||
if (prefs_common.undolevels < 1)
|
||||
return;
|
||||
if (prefs_common.undolevels < 1) return;
|
||||
|
||||
/* No need to check for the redo list size since the undo
|
||||
list gets freed on any call to compose_undo_add */
|
||||
if (g_list_length(undostruct->undo) >= prefs_common.undolevels && prefs_common.undolevels > 0) {
|
||||
nth_undo = g_list_nth_data(undostruct->undo, g_list_length(undostruct->undo) - 1);
|
||||
undostruct->undo = g_list_remove(undostruct->undo, nth_undo);
|
||||
g_free (nth_undo->text);
|
||||
g_free (nth_undo);
|
||||
}
|
||||
debug_print("g_list_length (undostruct->undo): %d\n", g_list_length(undostruct->undo));
|
||||
/* No need to check for the redo list size since the undo
|
||||
list gets freed on any call to compose_undo_add */
|
||||
length = g_list_length(undostruct->undo);
|
||||
if (length >= prefs_common.undolevels && prefs_common.undolevels > 0) {
|
||||
last_undo = (UndoInfo *)g_list_last(undostruct->undo)->data;
|
||||
undostruct->undo = g_list_remove(undostruct->undo, last_undo);
|
||||
undo_object_free(last_undo);
|
||||
}
|
||||
debug_print("g_list_length(undostruct->undo): %d\n", length);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -200,99 +198,90 @@ static void undo_check_size(UndoMain *undostruct)
|
|||
*
|
||||
* Return Value: TRUE is merge was sucessful, FALSE otherwise
|
||||
**/
|
||||
static gint undo_merge (GList *list, guint start_pos, guint end_pos, gint action, const guchar* text)
|
||||
static gint undo_merge(GList *list, guint start_pos, guint end_pos,
|
||||
gint action, const guchar *text)
|
||||
{
|
||||
guchar *temp_string;
|
||||
UndoInfo *last_undo;
|
||||
gboolean checkit = TRUE;
|
||||
guchar *temp_string;
|
||||
UndoInfo *last_undo;
|
||||
|
||||
/* This are the cases in which we will NOT merge :
|
||||
1. if (last_undo->mergeable == FALSE)
|
||||
[mergeable = FALSE when the size of the undo data was not 1.
|
||||
or if the data was size = 1 but = '\n' or if the undo object
|
||||
has been "undone" already ]
|
||||
2. The size of text is not 1
|
||||
3. If the new merging data is a '\n'
|
||||
4. If the last char of the undo_last data is a space/tab
|
||||
and the new char is not a space/tab ( so that we undo
|
||||
words and not chars )
|
||||
5. If the type (action) of undo is different from the last one
|
||||
Chema */
|
||||
/* This are the cases in which we will NOT merge :
|
||||
1. if (last_undo->mergeable == FALSE)
|
||||
[mergeable = FALSE when the size of the undo data was not 1.
|
||||
or if the data was size = 1 but = '\n' or if the undo object
|
||||
has been "undone" already ]
|
||||
2. The size of text is not 1
|
||||
3. If the new merging data is a '\n'
|
||||
4. If the last char of the undo_last data is a space/tab
|
||||
and the new char is not a space/tab ( so that we undo
|
||||
words and not chars )
|
||||
5. If the type (action) of undo is different from the last one
|
||||
Chema */
|
||||
|
||||
if (list == NULL)
|
||||
return FALSE;
|
||||
if (list == NULL) return FALSE;
|
||||
|
||||
last_undo = list->data;
|
||||
last_undo = list->data;
|
||||
|
||||
if (!last_undo->mergeable)
|
||||
return FALSE;
|
||||
if (!last_undo->mergeable) return FALSE;
|
||||
|
||||
if (end_pos-start_pos != 1) {
|
||||
last_undo->mergeable = FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (text[0] == '\n')
|
||||
checkit = FALSE;
|
||||
|
||||
if (action != last_undo->action)
|
||||
checkit = FALSE;
|
||||
|
||||
if (action == UNDO_ACTION_REPLACE_INSERT || action == UNDO_ACTION_REPLACE_DELETE)
|
||||
checkit = FALSE;
|
||||
|
||||
if (action == UNDO_ACTION_DELETE && checkit) {
|
||||
if (last_undo->start_pos!=end_pos && last_undo->start_pos != start_pos && checkit)
|
||||
checkit = FALSE;
|
||||
|
||||
if (last_undo->start_pos == start_pos && checkit) {
|
||||
/* Deleted with the delete key */
|
||||
if ( text[0] != ' ' && text[0] != '\t' && checkit &&
|
||||
(last_undo->text[last_undo->end_pos-last_undo->start_pos - 1] == ' '
|
||||
|| last_undo->text[last_undo->end_pos-last_undo->start_pos - 1] == '\t'))
|
||||
checkit = FALSE;
|
||||
|
||||
temp_string = g_strdup_printf("%s%s", last_undo->text, text);
|
||||
g_free(last_undo->text);
|
||||
last_undo->end_pos += 1;
|
||||
last_undo->text = temp_string;
|
||||
} else if (checkit) {
|
||||
/* Deleted with the backspace key */
|
||||
if ( text[0] != ' ' && text[0] != '\t' && checkit &&
|
||||
(last_undo->text[0] == ' '
|
||||
|| last_undo->text[0] == '\t'))
|
||||
checkit = FALSE;
|
||||
|
||||
temp_string = g_strdup_printf("%s%s", text, last_undo->text);
|
||||
g_free(last_undo->text);
|
||||
last_undo->start_pos = start_pos;
|
||||
last_undo->text = temp_string;
|
||||
}
|
||||
} else if (action == UNDO_ACTION_INSERT && checkit) {
|
||||
if (last_undo->end_pos != start_pos && checkit)
|
||||
checkit = FALSE;
|
||||
|
||||
/* if ( text[0]!=' ' && text[0]!='\t' &&
|
||||
(last_undo->text [last_undo->end_pos-last_undo->start_pos - 1] ==' '
|
||||
|| last_undo->text [last_undo->end_pos-last_undo->start_pos - 1] == '\t'))
|
||||
goto compose_undo_do_not_merge;
|
||||
*/
|
||||
if (checkit) {
|
||||
temp_string = g_strdup_printf("%s%s", last_undo->text, text);
|
||||
g_free(last_undo->text);
|
||||
last_undo->end_pos = end_pos;
|
||||
last_undo->text = temp_string;
|
||||
}
|
||||
} else if (checkit)
|
||||
debug_print("Unknown action [%i] inside undo merge encountered", action);
|
||||
|
||||
if (checkit) {
|
||||
debug_print("Merged: %s\n", text);
|
||||
return TRUE;
|
||||
} else {
|
||||
if (end_pos - start_pos != 1 ||
|
||||
text[0] == '\n' ||
|
||||
action != last_undo->action ||
|
||||
action == UNDO_ACTION_REPLACE_INSERT ||
|
||||
action == UNDO_ACTION_REPLACE_DELETE) {
|
||||
last_undo->mergeable = FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (action == UNDO_ACTION_DELETE) {
|
||||
gboolean checkit = TRUE;
|
||||
|
||||
if (last_undo->start_pos != end_pos &&
|
||||
last_undo->start_pos != start_pos) {
|
||||
last_undo->mergeable = FALSE;
|
||||
return FALSE;
|
||||
} else if (last_undo->start_pos == start_pos) {
|
||||
/* Deleted with the delete key */
|
||||
if (text[0] != ' ' && text[0] != '\t' &&
|
||||
(last_undo->text[last_undo->end_pos - last_undo->start_pos - 1] == ' ' ||
|
||||
last_undo->text[last_undo->end_pos - last_undo->start_pos - 1] == '\t'))
|
||||
checkit = FALSE;
|
||||
|
||||
temp_string = g_strdup_printf("%s%s", last_undo->text, text);
|
||||
last_undo->end_pos++;
|
||||
g_free(last_undo->text);
|
||||
last_undo->text = temp_string;
|
||||
} else {
|
||||
/* Deleted with the backspace key */
|
||||
if (text[0] != ' ' && text[0] != '\t' &&
|
||||
(last_undo->text[0] == ' ' ||
|
||||
last_undo->text[0] == '\t'))
|
||||
checkit = FALSE;
|
||||
|
||||
temp_string = g_strdup_printf("%s%s", text, last_undo->text);
|
||||
last_undo->start_pos = start_pos;
|
||||
g_free(last_undo->text);
|
||||
last_undo->text = temp_string;
|
||||
}
|
||||
|
||||
if (!checkit) {
|
||||
last_undo->mergeable = FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
} else if (action == UNDO_ACTION_INSERT) {
|
||||
if (last_undo->end_pos != start_pos) {
|
||||
last_undo->mergeable = FALSE;
|
||||
return FALSE;
|
||||
} else {
|
||||
temp_string = g_strdup_printf("%s%s", last_undo->text, text);
|
||||
g_free(last_undo->text);
|
||||
last_undo->end_pos = end_pos;
|
||||
last_undo->text = temp_string;
|
||||
}
|
||||
} else
|
||||
debug_print("Unknown action [%i] inside undo merge encountered", action);
|
||||
|
||||
debug_print("Merged: %s\n", text);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -312,18 +301,19 @@ static void undo_add(const gchar *text,
|
|||
gint start_pos, gint end_pos,
|
||||
UndoAction action, UndoMain *undostruct)
|
||||
{
|
||||
UndoInfo *undoinfo;
|
||||
UndoInfo *undoinfo;
|
||||
|
||||
debug_print("undo_add(%i)*%s*\n", strlen (text), text);
|
||||
debug_print("undo_add(%i)*%s*\n", strlen (text), text);
|
||||
|
||||
g_return_if_fail(text != NULL);
|
||||
g_return_if_fail(end_pos >= start_pos);
|
||||
g_return_if_fail(end_pos >= start_pos);
|
||||
|
||||
undo_free_list(&undostruct->redo);
|
||||
undo_free_list(&undostruct->redo);
|
||||
|
||||
/* Set the redo sensitivity */
|
||||
undostruct->change_func(undostruct, UNDO_STATE_UNCHANGED, UNDO_STATE_FALSE,
|
||||
undostruct->changewidget);
|
||||
/* Set the redo sensitivity */
|
||||
undostruct->change_state_func(undostruct,
|
||||
UNDO_STATE_UNCHANGED, UNDO_STATE_FALSE,
|
||||
undostruct->change_state_data);
|
||||
|
||||
if (undostruct->paste != 0) {
|
||||
if (action == UNDO_ACTION_INSERT)
|
||||
|
@ -335,8 +325,8 @@ static void undo_add(const gchar *text,
|
|||
undostruct->paste = 0;
|
||||
}
|
||||
|
||||
if (undo_merge(undostruct->undo, start_pos, end_pos, action, text))
|
||||
return;
|
||||
if (undo_merge(undostruct->undo, start_pos, end_pos, action, text))
|
||||
return;
|
||||
|
||||
undo_check_size(undostruct);
|
||||
|
||||
|
@ -345,14 +335,16 @@ static void undo_add(const gchar *text,
|
|||
undoinfo = undo_object_new(g_strdup(text), start_pos, end_pos, action,
|
||||
GTK_ADJUSTMENT(GTK_STEXT(undostruct->text)->vadj)->value);
|
||||
|
||||
if (end_pos-start_pos != 1 || text[0] == '\n')
|
||||
undoinfo->mergeable = FALSE;
|
||||
else
|
||||
undoinfo->mergeable = TRUE;
|
||||
if (end_pos - start_pos != 1 || text[0] == '\n')
|
||||
undoinfo->mergeable = FALSE;
|
||||
else
|
||||
undoinfo->mergeable = TRUE;
|
||||
|
||||
undostruct->undo = g_list_prepend(undostruct->undo, undoinfo);
|
||||
|
||||
undostruct->change_func(undostruct, UNDO_STATE_TRUE, UNDO_STATE_UNCHANGED, undostruct->changewidget);
|
||||
undostruct->change_state_func(undostruct,
|
||||
UNDO_STATE_TRUE, UNDO_STATE_UNCHANGED,
|
||||
undostruct->change_state_data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -365,30 +357,31 @@ static void undo_add(const gchar *text,
|
|||
void undo_undo(UndoMain *undostruct)
|
||||
{
|
||||
UndoInfo *undoinfo;
|
||||
guint start_pos, end_pos;
|
||||
|
||||
if (undostruct->undo == NULL)
|
||||
return;
|
||||
guint start_pos, end_pos;
|
||||
|
||||
g_return_if_fail(undostruct != NULL);
|
||||
|
||||
if (undostruct->undo == NULL) return;
|
||||
|
||||
/* The undo data we need is always at the top op the
|
||||
stack. So, therefore, the first one */
|
||||
undoinfo = g_list_nth_data(undostruct->undo, 0);
|
||||
undoinfo = (UndoInfo *)undostruct->undo->data;
|
||||
g_return_if_fail(undoinfo != NULL);
|
||||
undoinfo->mergeable = FALSE;
|
||||
undostruct->redo = g_list_prepend(undostruct->redo, undoinfo);
|
||||
undostruct->undo = g_list_remove(undostruct->undo, undoinfo);
|
||||
|
||||
/* Check if there is a selection active */
|
||||
start_pos = GTK_EDITABLE(undostruct->text)->selection_start_pos;
|
||||
end_pos = GTK_EDITABLE(undostruct->text)->selection_end_pos;
|
||||
start_pos = GTK_EDITABLE(undostruct->text)->selection_start_pos;
|
||||
end_pos = GTK_EDITABLE(undostruct->text)->selection_end_pos;
|
||||
if ((start_pos > 0 || end_pos > 0) && (start_pos != end_pos))
|
||||
gtk_editable_select_region(GTK_EDITABLE(undostruct->text), 0, 0);
|
||||
gtk_editable_select_region(GTK_EDITABLE(undostruct->text),
|
||||
0, 0);
|
||||
|
||||
/* Move the view (scrollbars) to the correct position */
|
||||
gtk_adjustment_set_value(GTK_ADJUSTMENT(GTK_STEXT(undostruct->text)->vadj), undoinfo->window_position);
|
||||
gtk_adjustment_set_value
|
||||
(GTK_ADJUSTMENT(GTK_STEXT(undostruct->text)->vadj),
|
||||
undoinfo->window_position);
|
||||
|
||||
switch (undoinfo->action) {
|
||||
case UNDO_ACTION_DELETE:
|
||||
|
@ -401,35 +394,37 @@ void undo_undo(UndoMain *undostruct)
|
|||
gtk_stext_backward_delete(GTK_STEXT(undostruct->text), undoinfo->end_pos-undoinfo->start_pos);
|
||||
debug_print("UNDO_ACTION_INSERT %d\n", undoinfo->end_pos-undoinfo->start_pos);
|
||||
break;
|
||||
case UNDO_ACTION_REPLACE_INSERT:
|
||||
case UNDO_ACTION_REPLACE_INSERT:
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text), undoinfo->end_pos);
|
||||
gtk_stext_backward_delete(GTK_STEXT(undostruct->text), undoinfo->end_pos-undoinfo->start_pos);
|
||||
debug_print("UNDO_ACTION_REPLACE %s\n", undoinfo->text);
|
||||
/* "pull" another data structure from the list */
|
||||
undoinfo = g_list_nth_data(undostruct->undo, 0);
|
||||
g_return_if_fail(undoinfo != NULL);
|
||||
undostruct->redo = g_list_prepend(undostruct->redo, undoinfo);
|
||||
undostruct->undo = g_list_remove(undostruct->undo, undoinfo);
|
||||
g_return_if_fail(undoinfo->action == UNDO_ACTION_REPLACE_DELETE);
|
||||
/* "pull" another data structure from the list */
|
||||
undoinfo = (UndoInfo *)undostruct->undo->data;
|
||||
g_return_if_fail(undoinfo != NULL);
|
||||
undostruct->redo = g_list_prepend(undostruct->redo, undoinfo);
|
||||
undostruct->undo = g_list_remove(undostruct->undo, undoinfo);
|
||||
g_return_if_fail(undoinfo->action == UNDO_ACTION_REPLACE_DELETE);
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text), undoinfo->start_pos);
|
||||
gtk_stext_insert(GTK_STEXT(undostruct->text), NULL, NULL, NULL, undoinfo->text, -1);
|
||||
debug_print("UNDO_ACTION_REPLACE %s\n", undoinfo->text);
|
||||
break;
|
||||
case UNDO_ACTION_REPLACE_DELETE:
|
||||
g_warning("This should not happen. UNDO_REPLACE_DELETE");
|
||||
break;
|
||||
break;
|
||||
case UNDO_ACTION_REPLACE_DELETE:
|
||||
g_warning("This should not happen. UNDO_REPLACE_DELETE");
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
|
||||
undostruct->change_func(undostruct, UNDO_STATE_UNCHANGED,
|
||||
UNDO_STATE_TRUE, undostruct->changewidget);
|
||||
|
||||
if (g_list_length (undostruct->undo) == 0)
|
||||
undostruct->change_func(undostruct, UNDO_STATE_FALSE,
|
||||
UNDO_STATE_UNCHANGED,
|
||||
undostruct->changewidget);
|
||||
undostruct->change_state_func(undostruct,
|
||||
UNDO_STATE_UNCHANGED, UNDO_STATE_TRUE,
|
||||
undostruct->change_state_data);
|
||||
|
||||
if (undostruct->undo == NULL)
|
||||
undostruct->change_state_func(undostruct,
|
||||
UNDO_STATE_FALSE,
|
||||
UNDO_STATE_UNCHANGED,
|
||||
undostruct->change_state_data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -442,22 +437,20 @@ void undo_undo(UndoMain *undostruct)
|
|||
void undo_redo(UndoMain *undostruct)
|
||||
{
|
||||
UndoInfo *redoinfo;
|
||||
guint start_pos, end_pos;
|
||||
guint start_pos, end_pos;
|
||||
|
||||
if (undostruct->redo == NULL)
|
||||
return;
|
||||
g_return_if_fail(undostruct != NULL);
|
||||
|
||||
if (undostruct==NULL)
|
||||
return;
|
||||
if (undostruct->redo == NULL) return;
|
||||
|
||||
redoinfo = g_list_nth_data(undostruct->redo, 0);
|
||||
g_return_if_fail (redoinfo!=NULL);
|
||||
redoinfo = (UndoInfo *)undostruct->redo->data;
|
||||
g_return_if_fail (redoinfo != NULL);
|
||||
undostruct->undo = g_list_prepend(undostruct->undo, redoinfo);
|
||||
undostruct->redo = g_list_remove(undostruct->redo, redoinfo);
|
||||
|
||||
/* Check if there is a selection active */
|
||||
start_pos = GTK_EDITABLE(undostruct->text)->selection_start_pos;
|
||||
end_pos = GTK_EDITABLE(undostruct->text)->selection_end_pos;
|
||||
start_pos = GTK_EDITABLE(undostruct->text)->selection_start_pos;
|
||||
end_pos = GTK_EDITABLE(undostruct->text)->selection_end_pos;
|
||||
if ((start_pos > 0 || end_pos > 0) && (start_pos != end_pos))
|
||||
gtk_editable_select_region(GTK_EDITABLE(undostruct->text), 0, 0);
|
||||
|
||||
|
@ -467,46 +460,55 @@ void undo_redo(UndoMain *undostruct)
|
|||
|
||||
switch (redoinfo->action) {
|
||||
case UNDO_ACTION_INSERT:
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text), redoinfo->start_pos);
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text),
|
||||
redoinfo->start_pos);
|
||||
gtk_stext_insert(GTK_STEXT(undostruct->text), NULL, NULL,
|
||||
NULL, redoinfo->text, -1);
|
||||
NULL, redoinfo->text, -1);
|
||||
debug_print("UNDO_ACTION_DELETE %s\n",redoinfo->text);
|
||||
break;
|
||||
case UNDO_ACTION_DELETE:
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text), redoinfo->end_pos);
|
||||
gtk_stext_backward_delete(GTK_STEXT(undostruct->text),
|
||||
redoinfo->end_pos-redoinfo->start_pos);
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text),
|
||||
redoinfo->end_pos);
|
||||
gtk_stext_backward_delete
|
||||
(GTK_STEXT(undostruct->text),
|
||||
redoinfo->end_pos - redoinfo->start_pos);
|
||||
debug_print("UNDO_ACTION_INSERT %d\n",
|
||||
redoinfo->end_pos-redoinfo->start_pos);
|
||||
break;
|
||||
case UNDO_ACTION_REPLACE_DELETE:
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text), redoinfo->end_pos);
|
||||
gtk_stext_backward_delete(GTK_STEXT(undostruct->text),
|
||||
redoinfo->end_pos-redoinfo->start_pos);
|
||||
/* "pull" another data structure from the list */
|
||||
redoinfo = g_list_nth_data(undostruct->redo, 0);
|
||||
g_return_if_fail(redoinfo != NULL);
|
||||
undostruct->undo = g_list_prepend(undostruct->undo, redoinfo);
|
||||
undostruct->redo = g_list_remove(undostruct->redo, redoinfo);
|
||||
g_return_if_fail(redoinfo->action==UNDO_ACTION_REPLACE_INSERT);
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text), redoinfo->start_pos);
|
||||
case UNDO_ACTION_REPLACE_DELETE:
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text),
|
||||
redoinfo->end_pos);
|
||||
gtk_stext_backward_delete
|
||||
(GTK_STEXT(undostruct->text),
|
||||
redoinfo->end_pos - redoinfo->start_pos);
|
||||
/* "pull" another data structure from the list */
|
||||
redoinfo = (UndoInfo *)undostruct->redo->data;
|
||||
g_return_if_fail(redoinfo != NULL);
|
||||
undostruct->undo = g_list_prepend(undostruct->undo, redoinfo);
|
||||
undostruct->redo = g_list_remove(undostruct->redo, redoinfo);
|
||||
g_return_if_fail(redoinfo->action == UNDO_ACTION_REPLACE_INSERT);
|
||||
gtk_stext_set_point(GTK_STEXT(undostruct->text),
|
||||
redoinfo->start_pos);
|
||||
gtk_stext_insert(GTK_STEXT(undostruct->text), NULL, NULL,
|
||||
NULL, redoinfo->text, -1);
|
||||
break;
|
||||
case UNDO_ACTION_REPLACE_INSERT:
|
||||
g_warning("This should not happen. Redo: UNDO_REPLACE_INSERT");
|
||||
break;
|
||||
NULL, redoinfo->text, -1);
|
||||
break;
|
||||
case UNDO_ACTION_REPLACE_INSERT:
|
||||
g_warning("This should not happen. Redo: UNDO_REPLACE_INSERT");
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
|
||||
undostruct->change_func(undostruct, UNDO_STATE_TRUE, UNDO_STATE_UNCHANGED,
|
||||
undostruct->changewidget);
|
||||
|
||||
if (g_list_length(undostruct->redo) == 0)
|
||||
undostruct->change_func(undostruct, UNDO_STATE_UNCHANGED,
|
||||
UNDO_STATE_FALSE, undostruct->changewidget);
|
||||
undostruct->change_state_func(undostruct,
|
||||
UNDO_STATE_TRUE, UNDO_STATE_UNCHANGED,
|
||||
undostruct->change_state_data);
|
||||
|
||||
if (undostruct->redo == NULL)
|
||||
undostruct->change_state_func(undostruct,
|
||||
UNDO_STATE_UNCHANGED,
|
||||
UNDO_STATE_FALSE,
|
||||
undostruct->change_state_data);
|
||||
}
|
||||
|
||||
void undo_insert_text_cb(GtkEditable *editable, gchar *new_text,
|
||||
|
@ -535,22 +537,24 @@ void undo_insert_text_cb(GtkEditable *editable, gchar *new_text,
|
|||
void undo_delete_text_cb(GtkEditable *editable, gint start_pos,
|
||||
gint end_pos, UndoMain *undostruct)
|
||||
{
|
||||
gchar *text_to_delete;
|
||||
gchar *text_to_delete;
|
||||
|
||||
if (prefs_common.undolevels <= 0) return;
|
||||
if (start_pos == end_pos) return;
|
||||
|
||||
text_to_delete = gtk_editable_get_chars(GTK_EDITABLE(editable),
|
||||
text_to_delete = gtk_editable_get_chars(GTK_EDITABLE(editable),
|
||||
start_pos, end_pos);
|
||||
undo_add(text_to_delete, start_pos, end_pos, UNDO_ACTION_DELETE,
|
||||
undostruct);
|
||||
g_free(text_to_delete);
|
||||
}
|
||||
|
||||
void undo_paste_clipboard_cb (GtkEditable *editable, UndoMain *undostruct)
|
||||
void undo_paste_clipboard_cb(GtkEditable *editable, UndoMain *undostruct)
|
||||
{
|
||||
debug_print("befor Paste: %d\n", undostruct->paste);
|
||||
if (prefs_common.undolevels > 0)
|
||||
if (editable->clipboard_text == NULL) return;
|
||||
|
||||
debug_print("before Paste: %d\n", undostruct->paste);
|
||||
if (prefs_common.undolevels > 0)
|
||||
if (undo_get_selection(editable, NULL, NULL))
|
||||
undostruct->paste = TRUE;
|
||||
debug_print("after Paste: %d\n", undostruct->paste);
|
||||
|
@ -568,27 +572,27 @@ void undo_paste_clipboard_cb (GtkEditable *editable, UndoMain *undostruct)
|
|||
**/
|
||||
static gint undo_get_selection(GtkEditable *text, guint *start, guint *end)
|
||||
{
|
||||
guint start_pos, end_pos;
|
||||
guint start_pos, end_pos;
|
||||
|
||||
start_pos = text->selection_start_pos;
|
||||
end_pos = text->selection_end_pos;
|
||||
start_pos = text->selection_start_pos;
|
||||
end_pos = text->selection_end_pos;
|
||||
|
||||
/* The user can select from end to start too. If so, swap it*/
|
||||
if (end_pos < start_pos) {
|
||||
guint swap_pos;
|
||||
swap_pos = end_pos;
|
||||
end_pos = start_pos;
|
||||
start_pos = swap_pos;
|
||||
}
|
||||
/* The user can select from end to start too. If so, swap it*/
|
||||
if (end_pos < start_pos) {
|
||||
guint swap_pos;
|
||||
swap_pos = end_pos;
|
||||
end_pos = start_pos;
|
||||
start_pos = swap_pos;
|
||||
}
|
||||
|
||||
if (start != NULL)
|
||||
*start = start_pos;
|
||||
if (start != NULL)
|
||||
*start = start_pos;
|
||||
|
||||
if (end != NULL)
|
||||
*end = end_pos;
|
||||
if (end != NULL)
|
||||
*end = end_pos;
|
||||
|
||||
if ((start_pos > 0 || end_pos > 0) && (start_pos != end_pos))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
if ((start_pos > 0 || end_pos > 0) && (start_pos != end_pos))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
|
31
src/undo.h
31
src/undo.h
|
@ -44,30 +44,35 @@ typedef enum
|
|||
|
||||
typedef struct _UndoMain UndoMain;
|
||||
|
||||
typedef void (*UndoChangeState) (UndoMain *undostruct,
|
||||
gint undo_state,
|
||||
gint redo_state,
|
||||
GtkWidget *changewidget);
|
||||
typedef void (*UndoChangeStateFunc) (UndoMain *undostruct,
|
||||
gint undo_state,
|
||||
gint redo_state,
|
||||
gpointer data);
|
||||
|
||||
struct _UndoMain
|
||||
{
|
||||
GtkWidget *text;
|
||||
GtkWidget *changewidget;
|
||||
|
||||
GList *undo;
|
||||
GList *redo;
|
||||
UndoChangeState change_func;
|
||||
|
||||
UndoChangeStateFunc change_state_func;
|
||||
gpointer change_state_data;
|
||||
|
||||
gboolean undo_state : 1;
|
||||
gboolean redo_state : 1;
|
||||
|
||||
gint paste;
|
||||
};
|
||||
|
||||
UndoMain *undo_init (GtkWidget *text);
|
||||
void undo_destroy (UndoMain *undostruct);
|
||||
void undo_set_undo_change_funct (UndoMain *undostruct,
|
||||
UndoChangeState func,
|
||||
GtkWidget *changewidget);
|
||||
UndoMain *undo_init (GtkWidget *text);
|
||||
void undo_destroy (UndoMain *undostruct);
|
||||
|
||||
void undo_undo (UndoMain *undostruct);
|
||||
void undo_redo (UndoMain *undostruct);
|
||||
void undo_set_change_state_func (UndoMain *undostruct,
|
||||
UndoChangeStateFunc func,
|
||||
gpointer data);
|
||||
|
||||
void undo_undo (UndoMain *undostruct);
|
||||
void undo_redo (UndoMain *undostruct);
|
||||
|
||||
#endif /* __UNDO_H__ */
|
||||
|
|
196
src/vcard.c
196
src/vcard.c
|
@ -270,10 +270,11 @@ static void vcard_free_lists( GSList *listName, GSList *listAddr, GSList *listRe
|
|||
* Param: cardFile - object.
|
||||
* Param: tagvalue - will be placed into the linked list.
|
||||
*/
|
||||
static gchar *vcard_read_qp( VCardFile *cardFile, char *tagvalue ) {
|
||||
static gchar *vcard_read_qp( VCardFile *cardFile, gchar *tagvalue ) {
|
||||
GSList *listQP = NULL;
|
||||
gint len = 0;
|
||||
gchar *line = tagvalue;
|
||||
|
||||
while( line ) {
|
||||
listQP = g_slist_append( listQP, line );
|
||||
len = strlen( line ) - 1;
|
||||
|
@ -297,10 +298,11 @@ static gchar *vcard_read_qp( VCardFile *cardFile, char *tagvalue ) {
|
|||
* Parse tag name from line buffer.
|
||||
* Return: Buffer containing the tag name, or NULL if no delimiter char found.
|
||||
*/
|
||||
static gchar *vcard_get_tagname( char* line, gchar dlm ) {
|
||||
static gchar *vcard_get_tagname( gchar* line, gchar dlm ) {
|
||||
gint len = 0;
|
||||
gchar *tag = NULL;
|
||||
gchar *lptr = line;
|
||||
|
||||
while( *lptr++ ) {
|
||||
if( *lptr == dlm ) {
|
||||
len = lptr - line;
|
||||
|
@ -467,70 +469,81 @@ static void vcard_read_file( VCardFile *cardFile ) {
|
|||
/* GSList *listQP = NULL; */
|
||||
|
||||
for( ;; ) {
|
||||
gchar *line = vcard_get_line( cardFile );
|
||||
gchar *line;
|
||||
|
||||
line = vcard_get_line( cardFile );
|
||||
if( line == NULL ) break;
|
||||
|
||||
/* fprintf( stdout, "%s\n", line ); */
|
||||
|
||||
/* Parse line */
|
||||
tagtemp = vcard_get_tagname( line, VCARD_SEP_TAG );
|
||||
if( tagtemp ) {
|
||||
/* fprintf( stdout, "\ttemp: %s\n", tagtemp ); */
|
||||
tagvalue = vcard_get_tagvalue( line, VCARD_SEP_TAG );
|
||||
tagname = vcard_get_tagname( tagtemp, VCARD_SEP_TYPE );
|
||||
tagtype = vcard_get_tagvalue( tagtemp, VCARD_SEP_TYPE );
|
||||
if( tagname == NULL ) {
|
||||
tagname = tagtemp;
|
||||
tagtemp = NULL;
|
||||
}
|
||||
|
||||
/* fprintf( stdout, "\tname: %s\n", tagname ); */
|
||||
/* fprintf( stdout, "\ttype: %s\n", tagtype ); */
|
||||
/* fprintf( stdout, "\tvalue: %s\n", tagvalue ); */
|
||||
|
||||
if( tagvalue ) {
|
||||
if( g_strcasecmp( tagtype, VCARD_TYPE_QP ) == 0 ) {
|
||||
/* Quoted-Printable: could span multiple lines */
|
||||
tagvalue = vcard_read_qp( cardFile, tagvalue );
|
||||
vcard_unescape_qp( tagvalue );
|
||||
/* fprintf( stdout, "QUOTED-PRINTABLE !!! final\n>%s<\n", tagvalue ); */
|
||||
}
|
||||
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_START ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
/* fprintf( stdout, "start card\n" ); */
|
||||
vcard_free_lists( listName, listAddress, listRemarks, listID );
|
||||
listName = listAddress = listRemarks = listID = NULL;
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_FULLNAME ) == 0 ) {
|
||||
/* fprintf( stdout, "- full name: %s\n", tagvalue ); */
|
||||
listName = g_slist_append( listName, g_strdup( tagvalue ) );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_EMAIL ) == 0 ) {
|
||||
/* fprintf( stdout, "- address: %s\n", tagvalue ); */
|
||||
listAddress = g_slist_append( listAddress, g_strdup( tagvalue ) );
|
||||
listRemarks = g_slist_append( listRemarks, g_strdup( tagtype ) );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_UID ) == 0 ) {
|
||||
/* fprintf( stdout, "- id: %s\n", tagvalue ); */
|
||||
listID = g_slist_append( listID, g_strdup( tagvalue ) );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_END ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
/* vCard is complete */
|
||||
/* fprintf( stdout, "end card\n--\n" ); */
|
||||
/* vcard_dump_lists( listName, listAddress, listRemarks, listID, stdout ); */
|
||||
vcard_build_items( cardFile, listName, listAddress, listRemarks, listID );
|
||||
vcard_free_lists( listName, listAddress, listRemarks, listID );
|
||||
listName = listAddress = listRemarks = listID = NULL;
|
||||
}
|
||||
g_free( tagvalue );
|
||||
}
|
||||
g_free( tagname );
|
||||
g_free( tagtype );
|
||||
if( tagtemp == NULL ) {
|
||||
g_free( line );
|
||||
continue;
|
||||
}
|
||||
|
||||
/* fprintf( stdout, "\ttemp: %s\n", tagtemp ); */
|
||||
|
||||
tagvalue = vcard_get_tagvalue( line, VCARD_SEP_TAG );
|
||||
if( tagvalue == NULL ) {
|
||||
g_free( tagtemp );
|
||||
g_free( line );
|
||||
continue;
|
||||
}
|
||||
|
||||
tagname = vcard_get_tagname( tagtemp, VCARD_SEP_TYPE );
|
||||
tagtype = vcard_get_tagvalue( tagtemp, VCARD_SEP_TYPE );
|
||||
if( tagname == NULL ) {
|
||||
tagname = tagtemp;
|
||||
tagtemp = NULL;
|
||||
}
|
||||
|
||||
/* fprintf( stdout, "\tname: %s\n", tagname ); */
|
||||
/* fprintf( stdout, "\ttype: %s\n", tagtype ); */
|
||||
/* fprintf( stdout, "\tvalue: %s\n", tagvalue ); */
|
||||
|
||||
if( g_strcasecmp( tagtype, VCARD_TYPE_QP ) == 0 ) {
|
||||
/* Quoted-Printable: could span multiple lines */
|
||||
tagvalue = vcard_read_qp( cardFile, tagvalue );
|
||||
vcard_unescape_qp( tagvalue );
|
||||
/* fprintf( stdout, "QUOTED-PRINTABLE !!! final\n>%s<\n", tagvalue ); */
|
||||
}
|
||||
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_START ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
/* fprintf( stdout, "start card\n" ); */
|
||||
vcard_free_lists( listName, listAddress, listRemarks, listID );
|
||||
listName = listAddress = listRemarks = listID = NULL;
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_FULLNAME ) == 0 ) {
|
||||
/* fprintf( stdout, "- full name: %s\n", tagvalue ); */
|
||||
listName = g_slist_append( listName, g_strdup( tagvalue ) );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_EMAIL ) == 0 ) {
|
||||
/* fprintf( stdout, "- address: %s\n", tagvalue ); */
|
||||
listAddress = g_slist_append( listAddress, g_strdup( tagvalue ) );
|
||||
listRemarks = g_slist_append( listRemarks, g_strdup( tagtype ) );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_UID ) == 0 ) {
|
||||
/* fprintf( stdout, "- id: %s\n", tagvalue ); */
|
||||
listID = g_slist_append( listID, g_strdup( tagvalue ) );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_END ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
/* vCard is complete */
|
||||
/* fprintf( stdout, "end card\n--\n" ); */
|
||||
/* vcard_dump_lists( listName, listAddress, listRemarks, listID, stdout ); */
|
||||
vcard_build_items( cardFile, listName, listAddress, listRemarks, listID );
|
||||
vcard_free_lists( listName, listAddress, listRemarks, listID );
|
||||
listName = listAddress = listRemarks = listID = NULL;
|
||||
}
|
||||
|
||||
g_free( tagname );
|
||||
g_free( tagtype );
|
||||
g_free( tagvalue );
|
||||
g_free( tagtemp );
|
||||
g_free( line );
|
||||
line = NULL;
|
||||
}
|
||||
|
||||
/* Free lists */
|
||||
|
@ -709,37 +722,45 @@ gint vcard_test_read_file( const gchar *fileSpec ) {
|
|||
|
||||
/* Parse line */
|
||||
tagtemp = vcard_get_tagname( line, VCARD_SEP_TAG );
|
||||
if( tagtemp ) {
|
||||
tagvalue = vcard_get_tagvalue( line, VCARD_SEP_TAG );
|
||||
tagname = vcard_get_tagname( tagtemp, VCARD_SEP_TYPE );
|
||||
tagtype = vcard_get_tagvalue( tagtemp, VCARD_SEP_TYPE );
|
||||
if( tagname == NULL ) {
|
||||
tagname = tagtemp;
|
||||
tagtemp = NULL;
|
||||
}
|
||||
|
||||
if( tagvalue ) {
|
||||
if( g_strcasecmp( tagtype, VCARD_TYPE_QP ) == 0 ) {
|
||||
/* Quoted-Printable: could span multiple lines */
|
||||
tagvalue = vcard_read_qp( cardFile, tagvalue );
|
||||
vcard_unescape_qp( tagvalue );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_START ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
haveStart = TRUE;
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_END ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
/* vCard is complete */
|
||||
if( haveStart ) cardFile->retVal = MGU_SUCCESS;
|
||||
}
|
||||
g_free( tagvalue );
|
||||
}
|
||||
g_free( tagname );
|
||||
g_free( tagtype );
|
||||
if( tagtemp == NULL ) {
|
||||
g_free( line );
|
||||
continue;
|
||||
}
|
||||
|
||||
tagvalue = vcard_get_tagvalue( line, VCARD_SEP_TAG );
|
||||
if( tagvalue == NULL ) {
|
||||
g_free( tagtemp );
|
||||
g_free( line );
|
||||
continue;
|
||||
}
|
||||
|
||||
tagname = vcard_get_tagname( tagtemp, VCARD_SEP_TYPE );
|
||||
tagtype = vcard_get_tagvalue( tagtemp, VCARD_SEP_TYPE );
|
||||
if( tagname == NULL ) {
|
||||
tagname = tagtemp;
|
||||
tagtemp = NULL;
|
||||
}
|
||||
|
||||
if( g_strcasecmp( tagtype, VCARD_TYPE_QP ) == 0 ) {
|
||||
/* Quoted-Printable: could span multiple lines */
|
||||
tagvalue = vcard_read_qp( cardFile, tagvalue );
|
||||
vcard_unescape_qp( tagvalue );
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_START ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
haveStart = TRUE;
|
||||
}
|
||||
if( g_strcasecmp( tagname, VCARD_TAG_END ) == 0 &&
|
||||
g_strcasecmp( tagvalue, VCARD_NAME ) == 0 ) {
|
||||
/* vCard is complete */
|
||||
if( haveStart ) cardFile->retVal = MGU_SUCCESS;
|
||||
}
|
||||
|
||||
g_free( tagname );
|
||||
g_free( tagtype );
|
||||
g_free( tagvalue );
|
||||
g_free( tagtemp );
|
||||
g_free( line );
|
||||
line = NULL;
|
||||
}
|
||||
vcard_close_file( cardFile );
|
||||
}
|
||||
|
@ -752,4 +773,3 @@ gint vcard_test_read_file( const gchar *fileSpec ) {
|
|||
/*
|
||||
* End of Source.
|
||||
*/
|
||||
|
||||
|
|
Loading…
Reference in a new issue