Changeset 2333
- Timestamp:
- 07/01/07 19:11:14
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/bindings/python/Makefile.am (modified) (5 diffs)
- trunk/bindings/python/tinymail-platform.override (modified) (1 diff)
- trunk/bindings/python/tinymail.override (modified) (8 diffs)
- trunk/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c (modified) (4 diffs)
- trunk/libtinymail-camel/tny-camel-folder.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r2328 r2333 1 2007-07-01 Philip Van Hoof <pvanhoof@gnome.org> 2 3 * Fixed/updated the Python bindings 4 * Fixed the gtk-doc API documentation genation process 5 * Updated the online gtk-doc API documentation 6 * Prepared a testing QEmu virtual machine 7 1 8 2007-06-29 Murray Cumming <murrayc@murrayc.com> 2 9 trunk/bindings/python/Makefile.am
r1875 r2333 83 83 84 84 # To update: 85 # ls DIR/*h | grep -v \\-priv | sed s/^/\\t\$\(top_srcdir\)\\//g | sed s/$/\\t\\\\/g 85 # ls libtinymail/*h | grep -v \\-priv | sed s/^/\\t\$\(top_srcdir\)\\//g | sed s/$/\\\ \\\\/g 86 # ls libtinymail/*h | grep -v \\-priv | sed s/^/\\$\(top_srcdir\)\\//g | sed s/$/\\\ \\\\/g 86 87 87 88 tinymail_h_files = \ 88 $(top_srcdir)/libtinymail/tny-error.h \89 89 $(top_srcdir)/libtinymail/tny-account.h \ 90 90 $(top_srcdir)/libtinymail/tny-account-store.h \ 91 $(top_srcdir)/libtinymail/tny-combined-account.h \ 91 92 $(top_srcdir)/libtinymail/tny-device.h \ 93 $(top_srcdir)/libtinymail/tny-enums.h \ 94 $(top_srcdir)/libtinymail/tny-error.h \ 95 $(top_srcdir)/libtinymail/tny-folder-change.h \ 96 $(top_srcdir)/libtinymail/tny-folder.h \ 97 $(top_srcdir)/libtinymail/tny-folder-monitor.h \ 98 $(top_srcdir)/libtinymail/tny-folder-observer.h \ 99 $(top_srcdir)/libtinymail/tny-folder-stats.h \ 100 $(top_srcdir)/libtinymail/tny-folder-store-change.h \ 101 $(top_srcdir)/libtinymail/tny-folder-store.h \ 102 $(top_srcdir)/libtinymail/tny-folder-store-observer.h \ 92 103 $(top_srcdir)/libtinymail/tny-folder-store-query.h \ 93 $(top_srcdir)/libtinymail/tny-folder-store.h \94 $(top_srcdir)/libtinymail/tny-folder.h \95 104 $(top_srcdir)/libtinymail/tny-fs-stream.h \ 96 105 $(top_srcdir)/libtinymail/tny-header.h \ 97 106 $(top_srcdir)/libtinymail/tny-iterator.h \ 98 107 $(top_srcdir)/libtinymail/tny-list.h \ 108 $(top_srcdir)/libtinymail/tny-lockable.h \ 109 $(top_srcdir)/libtinymail/tny-merge-folder.h \ 99 110 $(top_srcdir)/libtinymail/tny-mime-part.h \ 100 111 $(top_srcdir)/libtinymail/tny-msg.h \ 112 $(top_srcdir)/libtinymail/tny-msg-receive-strategy.h \ 113 $(top_srcdir)/libtinymail/tny-msg-remove-strategy.h \ 114 $(top_srcdir)/libtinymail/tny-noop-lockable.h \ 115 $(top_srcdir)/libtinymail/tny-pair.h \ 116 $(top_srcdir)/libtinymail/tny-password-getter.h \ 117 $(top_srcdir)/libtinymail/tny-send-queue.h \ 101 118 $(top_srcdir)/libtinymail/tny-shared.h \ 119 $(top_srcdir)/libtinymail/tny-signals-marshal.h \ 102 120 $(top_srcdir)/libtinymail/tny-simple-list.h \ 121 $(top_srcdir)/libtinymail/tny-status.h \ 103 122 $(top_srcdir)/libtinymail/tny-store-account.h \ 104 123 $(top_srcdir)/libtinymail/tny-stream.h \ 105 $(top_srcdir)/libtinymail/tny-transport-account.h \ 106 $(top_srcdir)/libtinymail/tny-msg-remove-strategy.h \ 107 $(top_srcdir)/libtinymail/tny-msg-receive-strategy.h \ 108 $(top_srcdir)/libtinymail/tny-send-queue.h \ 109 $(top_srcdir)/libtinymail/tny-pair.h \ 110 $(top_srcdir)/libtinymail/tny-lockable.h \ 111 $(top_srcdir)/libtinymail/tny-noop-lockable.h \ 112 $(top_srcdir)/libtinymail/tny-folder-change.h \ 113 $(top_srcdir)/libtinymail/tny-folder-observer.h \ 114 $(top_srcdir)/libtinymail/tny-folder-monitor.h \ 115 $(top_srcdir)/libtinymail/tny-folder-store-observer.h \ 116 $(top_srcdir)/libtinymail/tny-folder-store-change.h \ 117 $(top_srcdir)/libtinymail/tny-folder-stats.h \ 118 $(top_srcdir)/libtinymail/tny-password-getter.h \ 119 $(top_srcdir)/libtinymail/tny-merge-folder.h \ 120 $(top_srcdir)/libtinymail/tny-combined-account.h 124 $(top_srcdir)/libtinymail/tny-transport-account.h 125 121 126 122 127 tinymail.defs: $(tinymail_h_files) tinymail.defs.extra $(top_srcdir)/bindings/python/filter.py … … 132 137 $(top_srcdir)/libtinymailui/tny-account-store-view.h \ 133 138 $(top_srcdir)/libtinymailui/tny-header-view.h \ 139 $(top_srcdir)/libtinymailui/tny-mime-part-saver.h \ 134 140 $(top_srcdir)/libtinymailui/tny-mime-part-save-strategy.h \ 135 $(top_srcdir)/libtinymailui/tny-mime-part-saver.h \136 141 $(top_srcdir)/libtinymailui/tny-mime-part-view.h \ 137 142 $(top_srcdir)/libtinymailui/tny-msg-view.h \ … … 152 157 tinymailui_gtk_h_files = \ 153 158 $(top_srcdir)/libtinymailui-gtk/tny-gtk-account-list-model.h \ 154 $(top_srcdir)/libtinymailui-gtk/tny-gtk-folder-store-tree-model.h \155 159 $(top_srcdir)/libtinymailui-gtk/tny-gtk-attach-list-model.h \ 156 160 $(top_srcdir)/libtinymailui-gtk/tny-gtk-attachment-mime-part-view.h \ 161 $(top_srcdir)/libtinymailui-gtk/tny-gtk-enums.h \ 162 $(top_srcdir)/libtinymailui-gtk/tny-gtk-folder-store-tree-model.h \ 157 163 $(top_srcdir)/libtinymailui-gtk/tny-gtk-header-list-model.h \ 158 164 $(top_srcdir)/libtinymailui-gtk/tny-gtk-header-view.h \ 165 $(top_srcdir)/libtinymailui-gtk/tny-gtk-lockable.h \ 159 166 $(top_srcdir)/libtinymailui-gtk/tny-gtk-mime-part-save-strategy.h \ 160 167 $(top_srcdir)/libtinymailui-gtk/tny-gtk-msg-view.h \ 161 168 $(top_srcdir)/libtinymailui-gtk/tny-gtk-msg-window.h \ 169 $(top_srcdir)/libtinymailui-gtk/tny-gtk-password-dialog.h \ 162 170 $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-buffer-stream.h \ 163 $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-mime-part-view.h \ 164 $(top_srcdir)/libtinymailui-gtk/tny-gtk-lockable.h 171 $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-mime-part-view.h 165 172 166 173 tinymailui-gtk.defs: $(tinymailui_gtk_h_files) tinymailui-gtk.defs.extra $(top_srcdir)/bindings/python/filter.py … … 188 195 $(top_srcdir)/libtinymail-camel/tny-camel-account.h \ 189 196 $(top_srcdir)/libtinymail-camel/tny-camel-folder.h \ 197 $(top_srcdir)/libtinymail-camel/tny-camel-full-msg-receive-strategy.h \ 190 198 $(top_srcdir)/libtinymail-camel/tny-camel-header.h \ 191 199 $(top_srcdir)/libtinymail-camel/tny-camel-imap-folder.h \ 192 200 $(top_srcdir)/libtinymail-camel/tny-camel-imap-store-account.h \ 201 $(top_srcdir)/libtinymail-camel/tny-camel-mem-stream.h \ 193 202 $(top_srcdir)/libtinymail-camel/tny-camel-mime-part.h \ 194 203 $(top_srcdir)/libtinymail-camel/tny-camel-msg.h \ 195 204 $(top_srcdir)/libtinymail-camel/tny-camel-msg-remove-strategy.h \ 196 $(top_srcdir)/libtinymail-camel/tny-camel-full-msg-receive-strategy.h \197 $(top_srcdir)/libtinymail-camel/tny-camel-partial-msg-receive-strategy.h \198 205 $(top_srcdir)/libtinymail-camel/tny-camel-nntp-folder.h \ 199 206 $(top_srcdir)/libtinymail-camel/tny-camel-nntp-store-account.h \ 207 $(top_srcdir)/libtinymail-camel/tny-camel-partial-msg-receive-strategy.h \ 200 208 $(top_srcdir)/libtinymail-camel/tny-camel-pop-folder.h \ 209 $(top_srcdir)/libtinymail-camel/tny-camel-pop-remote-msg-remove-strategy.h \ 201 210 $(top_srcdir)/libtinymail-camel/tny-camel-pop-store-account.h \ 202 211 $(top_srcdir)/libtinymail-camel/tny-camel-send-queue.h \ … … 205 214 $(top_srcdir)/libtinymail-camel/tny-camel-stream.h \ 206 215 $(top_srcdir)/libtinymail-camel/tny-camel-transport-account.h \ 207 $(top_srcdir)/libtinymail-camel/tny-camel-mem-stream.h 216 $(top_srcdir)/libtinymail-camel/tny-session-camel.h \ 217 $(top_srcdir)/libtinymail-camel/tny-stream-camel.h 218 208 219 209 220 tinymail-camel.defs : $(tinymail_camel_h_files) tinymail-camel.defs.extra $(top_srcdir)/bindings/python/filter.py trunk/bindings/python/tinymail-platform.override
r1005 r2333 47 47 import tinymail.Device as PyTnyDevice_Type 48 48 import tinymail.AccountStore as PyTnyAccountStore_Type 49 import tinymail.StoreAccount as PyTnyStoreAccount_Type 50 import tinymail.TransportAccount as PyTnyTransportAccount_Type 51 trunk/bindings/python/tinymail.override
r1875 r2333 52 52 import gobject.GObject as PyGObject_Type 53 53 %% 54 override tny_folder_store_get_folders_async kwargs55 56 static void57 tny_get_folders_cb (TnyFolderStore *self, TnyList *list, GError **err, gpointer user_data)58 {59 PyObject *callback, *args, *ret;60 PyGILState_STATE state;61 62 state = pyg_gil_state_ensure();63 callback = PyTuple_GetItem((PyObject *)user_data, 0);64 args = Py_BuildValue("(NNO)",65 pygobject_new((GObject *)self),66 pygobject_new((GObject *)list),67 PyTuple_GetItem((PyObject *)user_data, 1));68 ret = PyObject_CallObject(callback, args);69 if (!ret)70 PyErr_Print();71 72 pyg_error_check(err);73 74 Py_XDECREF(ret);75 Py_DECREF(args);76 Py_DECREF ((PyObject *)user_data);77 pyg_gil_state_release(state);78 }79 80 81 static PyObject *82 _wrap_tny_folder_store_get_folders_async (PyGObject *self, PyObject *args, PyObject *kwargs)83 {84 static char *kwlist[] = { "list", "get_folders_func", "query", "user_data", NULL };85 PyObject *get_folders_func = Py_None, *user_data = Py_None;86 PyGObject *list = NULL, *query = NULL;87 PyObject *data;88 89 if (!PyArg_ParseTupleAndKeywords(args, kwargs,90 "OO|OO:TnyFolderStore.get_folders_async", kwlist,91 &list, &get_folders_func, &query, &user_data))92 return NULL;93 94 if (!PyCallable_Check(get_folders_func)) {95 PyErr_SetString(PyExc_TypeError, "get_folders_async must be callable");96 return NULL;97 }98 99 data = Py_BuildValue("(OO)", get_folders_func, user_data);100 101 tny_folder_store_get_folders_async (TNY_FOLDER_STORE (self->obj),102 TNY_LIST (list->obj),103 tny_get_folders_cb,104 query!=NULL?TNY_FOLDER_STORE_QUERY (query->obj):NULL,105 data);106 return Py_None;107 }108 %%109 54 override tny_folder_get_msg_async kwargs 110 55 … … 119 64 args = Py_BuildValue("(NNO)", 120 65 pygobject_new((GObject *)self), 121 pygobject_new((GObject *)msg),122 PyTuple_GetItem((PyObject *)user_data, 2));66 pygobject_new((GObject *)msg), 67 PyTuple_GetItem((PyObject *)user_data, 3)); 123 68 ret = PyObject_CallObject(callback, args); 124 69 if (!ret) … … 129 74 Py_DECREF(args); 130 75 Py_DECREF ((PyObject *)user_data); 76 pyg_gil_state_release(state); 77 } 78 79 80 static void 81 tny_get_msg_status_cb (TnyFolder *self, TnyStatus *status, gpointer user_data) 82 { 83 PyObject *callback, *args, *ret; 84 PyGILState_STATE state; 85 86 state = pyg_gil_state_ensure(); 87 callback = PyTuple_GetItem((PyObject *)user_data, 2); 88 args = Py_BuildValue("(NsiiO)", 89 pygobject_new((GObject *)self), 90 status->message, status->position, status->of_total, 91 PyTuple_GetItem((PyObject *)user_data, 3)); 92 ret = PyObject_CallObject(callback, args); 93 if (!ret) 94 PyErr_Print(); 95 Py_XDECREF(ret); 96 Py_DECREF(args); 131 97 pyg_gil_state_release(state); 132 98 } … … 135 101 _wrap_tny_folder_get_msg_async (PyGObject *self, PyObject *args, PyObject *kwargs) 136 102 { 137 static char *kwlist[] = { "header", "get_msg_func", " user_data", NULL };138 PyObject *get_msg_func, * user_data = Py_None;103 static char *kwlist[] = { "header", "get_msg_func", "get_msg_status_func", "user_data", NULL }; 104 PyObject *get_msg_func, *get_msg_status_func, *user_data = Py_None; 139 105 TnyHeader *header; 140 106 PyObject *data; … … 149 115 } 150 116 151 data = Py_BuildValue("(OOO)", header, get_msg_func, user_data); 117 data = Py_BuildValue("(OOOO)", header, get_msg_func, 118 get_msg_status_func, user_data); 152 119 153 120 tny_folder_get_msg_async (TNY_FOLDER (self->obj), header, 154 tny_get_msg_cb, data); 121 tny_get_msg_cb, 122 tny_get_msg_status_cb, data); 123 155 124 return Py_None; 156 125 } … … 184 153 185 154 static void 186 tny_refresh_folder_status_cb (TnyFolder *self, const gchar *what, gint status, gint oftotal, gpointer user_data)155 tny_refresh_folder_status_cb (TnyFolder *self, TnyStatus *status, gpointer user_data) 187 156 { 188 157 PyObject *callback, *args, *ret; … … 193 162 args = Py_BuildValue("(NsiiO)", 194 163 pygobject_new((GObject *)self), 195 what, status, oftotal,164 status->message, status->position, status->of_total, 196 165 PyTuple_GetItem((PyObject *)user_data, 2)); 197 166 ret = PyObject_CallObject(callback, args); … … 229 198 230 199 tny_folder_refresh_async (TNY_FOLDER (self->obj), 231 tny_refresh_folder_cb, tny_refresh_folder_status_cb, 200 tny_refresh_folder_cb, 201 tny_refresh_folder_status_cb, 232 202 data); 233 203 return Py_None; trunk/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c
r2298 r2333 743 743 gboolean clean_quit = TRUE; 744 744 char *buf; 745 gboolean not_ssl = TRUE ;745 gboolean not_ssl = TRUE, no_binary=FALSE, no_uidplus=FALSE; 746 746 747 747 memset (&sockopt, 0, sizeof (CamelSockOptData)); … … 844 844 } 845 845 846 /* Kolumbus requires part numbers in BINARY.PEEK, which is their mis - 847 * interpretation of BINARY imo, so we just ignore its BINARY support. 848 * The server also claims to support UIDPLUS, but doesn't */ 849 850 if (strstr (buf, "kolumbus")) { 851 no_uidplus = TRUE; 852 no_binary = TRUE; 853 } 854 846 855 /* Tinymail hack: always use IMAP4, not IMAP4rev1 (sorry) */ 847 856 /* force_imap4 = TRUE; */ … … 859 868 goto exception; 860 869 } 870 871 if (no_binary) 872 store->capabilities &= ~IMAP_CAPABILITY_BINARY; 873 if (no_uidplus) 874 store->capabilities &= ~IMAP_CAPABILITY_UIDPLUS; 861 875 862 876 if (must_tls && !(store->capabilities & IMAP_CAPABILITY_STARTTLS)) … … 937 951 goto exception; 938 952 } 953 954 if (no_binary) 955 store->capabilities &= ~IMAP_CAPABILITY_BINARY; 956 if (no_uidplus) 957 store->capabilities &= ~IMAP_CAPABILITY_UIDPLUS; 939 958 940 959 if (store->capabilities & IMAP_CAPABILITY_LOGINDISABLED ) { trunk/libtinymail-camel/tny-camel-folder.c
r2327 r2333 2557 2557 priv_src->handle_changes = FALSE; 2558 2558 priv_dst->handle_changes = FALSE; 2559 2560 camel_folder_freeze (cfol_src); 2561 camel_folder_freeze (cfol_dst); 2559 2562 camel_folder_transfer_messages_to (cfol_src, uids, cfol_dst, 2560 2563 &transferred_uids, delete_originals, &ex); 2564 if (delete_originals && uids) { 2565 int i; 2566 for (i = 0; i < uids->len; i++) 2567 camel_folder_set_message_flags (cfol_src, uids->pdata[i], 2568 CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); 2569 } 2570 camel_folder_thaw (cfol_src); 2571 camel_folder_thaw (cfol_dst); 2572 camel_folder_sync (cfol_dst, FALSE, NULL); 2573 2561 2574 priv_src->handle_changes = TRUE; 2562 2575 priv_dst->handle_changes = TRUE;
