Changeset 2698

Show
Ignore:
Timestamp:
09/04/07 18:11:04
Author:
mdoff
Message:

Reorganize the python bindings generation. Check in
the .defs files and move the definition generation outside
of the standard make procedure.

Add definitions for the TnyStatus and TnySessionCamel types.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bindings/python/Makefile.am

    r2501 r2698  
    2525        $(top_builddir)/libtinymail/libtinymail-$(API_VERSION).la  
    2626_tinymail_la_SOURCES = tinymailmodule.c 
    27 nodist__tinymail_la_SOURCES = tinymail-glue.c 
     27nodist__tinymail_la_SOURCES = tinymail-glue.c pytny-status.c 
    2828 
    2929ui_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initui 
     
    5959        $(top_builddir)/$(PLATFORMDIR)/$(PLATFORMDIR)-$(API_VERSION).la \ 
    6060        $(top_builddir)/libtinymail-camel/libtinymail-camel-$(API_VERSION).la 
    61 camel_la_SOURCES = tinymail-camelmodule.c 
     61camel_la_SOURCES = tinymail-camelmodule.c pytny-session-camel.c 
    6262nodist_camel_la_SOURCES = tinymail-camel-glue.c 
    6363 
     64CREATEDEFS = $(PYTHON) $(top_srcdir)/bindings/python/createdefs.py 
    6465 
    6566CLEANFILES = tinymail-glue.c tinymailui-glue.c tinymailui-gtk-glue.c \ 
    6667        tinymail-platform-glue.c platform_include.h tinymail.defs \ 
    67         tinymailui.defs tinymailui-gtk.defs tinymail-platform.defs
     68        tinymailui.defs tinymailui-gtk.defs
    6869        tinymail-camel.defs tinymail-camel-glue.c 
    6970 
     
    7778        tinymail-camel.override 
    7879 
    79 # To update: 
    80 # ls libtinymail/*h | grep -v \\-priv | sed s/^/\\t\$\(top_srcdir\)\\//g | sed s/$/\\\ \\\\/g 
    81 # ls libtinymail/*h | grep -v \\-priv | sed s/^/\\$\(top_srcdir\)\\//g | sed s/$/\\\ \\\\/g 
     80TINYMAIL_DEFS = tinymail-base.defs tinymail-extra.defs 
    8281 
    83 tinymail_h_files = \ 
    84         $(top_srcdir)/libtinymail/tny-account.h \ 
    85         $(top_srcdir)/libtinymail/tny-account-store.h \ 
    86         $(top_srcdir)/libtinymail/tny-combined-account.h \ 
    87         $(top_srcdir)/libtinymail/tny-device.h \ 
    88         $(top_srcdir)/libtinymail/tny-error.h \ 
    89         $(top_srcdir)/libtinymail/tny-folder-change.h \ 
    90         $(top_srcdir)/libtinymail/tny-folder.h \ 
    91         $(top_srcdir)/libtinymail/tny-folder-monitor.h \ 
    92         $(top_srcdir)/libtinymail/tny-folder-observer.h \ 
    93         $(top_srcdir)/libtinymail/tny-folder-stats.h \ 
    94         $(top_srcdir)/libtinymail/tny-folder-store-change.h \ 
    95         $(top_srcdir)/libtinymail/tny-folder-store.h \ 
    96         $(top_srcdir)/libtinymail/tny-folder-store-observer.h \ 
    97         $(top_srcdir)/libtinymail/tny-folder-store-query.h \ 
    98         $(top_srcdir)/libtinymail/tny-fs-stream.h \ 
    99         $(top_srcdir)/libtinymail/tny-header.h \ 
    100         $(top_srcdir)/libtinymail/tny-iterator.h \ 
    101         $(top_srcdir)/libtinymail/tny-list.h \ 
    102         $(top_srcdir)/libtinymail/tny-lockable.h \ 
    103         $(top_srcdir)/libtinymail/tny-merge-folder.h \ 
    104         $(top_srcdir)/libtinymail/tny-mime-part.h \ 
    105         $(top_srcdir)/libtinymail/tny-msg.h \ 
    106         $(top_srcdir)/libtinymail/tny-msg-receive-strategy.h \ 
    107         $(top_srcdir)/libtinymail/tny-msg-remove-strategy.h \ 
    108         $(top_srcdir)/libtinymail/tny-noop-lockable.h \ 
    109         $(top_srcdir)/libtinymail/tny-pair.h \ 
    110         $(top_srcdir)/libtinymail/tny-password-getter.h \ 
    111         $(top_srcdir)/libtinymail/tny-send-queue.h \ 
    112         $(top_srcdir)/libtinymail/tny-shared.h \ 
    113         $(top_srcdir)/libtinymail/tny-signals-marshal.h \ 
    114         $(top_srcdir)/libtinymail/tny-simple-list.h \ 
    115         $(top_srcdir)/libtinymail/tny-status.h \ 
    116         $(top_srcdir)/libtinymail/tny-store-account.h \ 
    117         $(top_srcdir)/libtinymail/tny-stream.h \ 
    118         $(top_srcdir)/libtinymail/tny-transport-account.h 
    119  
    120  
    121 tinymail.defs: $(tinymail_h_files)  
    122         $(PYTHON) $(PYGTK_CODEGENDIR)/h2def.py $(tinymail_h_files) > $@ 
    123  
    124 #       $(PYTHON) $(top_srcdir)/bindings/python/scanvirtuals.py 
    125 #       $(tinymail_h_files) >> $@ 
    126  
    127 tinymailui_h_files = \ 
    128         $(top_srcdir)/libtinymailui/tny-account-store-view.h \ 
    129         $(top_srcdir)/libtinymailui/tny-header-view.h \ 
    130         $(top_srcdir)/libtinymailui/tny-mime-part-saver.h \ 
    131         $(top_srcdir)/libtinymailui/tny-mime-part-save-strategy.h \ 
    132         $(top_srcdir)/libtinymailui/tny-mime-part-view.h \ 
    133         $(top_srcdir)/libtinymailui/tny-msg-view.h \ 
    134         $(top_srcdir)/libtinymailui/tny-msg-window.h \ 
    135         $(top_srcdir)/libtinymailui/tny-platform-factory.h \ 
    136         $(top_srcdir)/libtinymailui/tny-summary-view.h 
    137  
    138 tinymailui.defs: $(tinymailui_h_files) 
    139         $(PYTHON) $(PYGTK_CODEGENDIR)/h2def.py $(tinymailui_h_files) > $@ 
    140  
    141 #       $(PYTHON) $(top_srcdir)/bindings/python/scanvirtuals.py 
    142 #       $(tinymailui_h_files) >> $@ 
    143  
    144  
    145 tinymailui_gtk_h_files = \ 
    146         $(top_srcdir)/libtinymailui-gtk/tny-gtk-account-list-model.h \ 
    147         $(top_srcdir)/libtinymailui-gtk/tny-gtk-attach-list-model.h \ 
    148         $(top_srcdir)/libtinymailui-gtk/tny-gtk-attachment-mime-part-view.h \ 
    149         $(top_srcdir)/libtinymailui-gtk/tny-gtk-folder-store-tree-model.h \ 
    150         $(top_srcdir)/libtinymailui-gtk/tny-gtk-header-list-model.h \ 
    151         $(top_srcdir)/libtinymailui-gtk/tny-gtk-header-view.h \ 
    152         $(top_srcdir)/libtinymailui-gtk/tny-gtk-lockable.h \ 
    153         $(top_srcdir)/libtinymailui-gtk/tny-gtk-mime-part-save-strategy.h \ 
    154         $(top_srcdir)/libtinymailui-gtk/tny-gtk-msg-view.h \ 
    155         $(top_srcdir)/libtinymailui-gtk/tny-gtk-msg-window.h \ 
    156         $(top_srcdir)/libtinymailui-gtk/tny-gtk-password-dialog.h \ 
    157         $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-buffer-stream.h \ 
    158         $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-mime-part-view.h 
    159  
    160 tinymailui-gtk.defs: $(tinymailui_gtk_h_files)  
    161         $(PYTHON) $(PYGTK_CODEGENDIR)/h2def.py $(tinymailui_gtk_h_files) > $@ 
    162  
    163 #       $(PYTHON) $(top_srcdir)/bindings/python/scanvirtuals.py 
    164 #       $(tinymailui_gtk_h_files) >> $@ 
    165  
    166 # tinymail_platform_h_files = `ls $(top_srcdir)/$(PLATFORMDIR)/*h | grep -v \\\-priv | xargs` 
    167  
    168 tinymail-platform.defs : $(tinymail_platform_h_files)  
    169         $(PYTHON) $(PYGTK_CODEGENDIR)/h2def.py \ 
    170         `ls $(top_srcdir)/$(PLATFORMDIR)/*h | grep -v \\\-priv | xargs` > $@ 
    171  
    172 #       $(PYTHON) $(top_srcdir)/bindings/python/scanvirtuals.py 
    173 #       $(tinymail_platform_h_files) >> $@ 
    174  
    175 tinymail_camel_h_files = \ 
    176         $(top_srcdir)/libtinymail-camel/tny-camel-account.h \ 
    177         $(top_srcdir)/libtinymail-camel/tny-camel-folder.h \ 
    178         $(top_srcdir)/libtinymail-camel/tny-camel-full-msg-receive-strategy.h \ 
    179         $(top_srcdir)/libtinymail-camel/tny-camel-header.h \ 
    180         $(top_srcdir)/libtinymail-camel/tny-camel-imap-folder.h \ 
    181         $(top_srcdir)/libtinymail-camel/tny-camel-imap-store-account.h \ 
    182         $(top_srcdir)/libtinymail-camel/tny-camel-mem-stream.h \ 
    183         $(top_srcdir)/libtinymail-camel/tny-camel-mime-part.h \ 
    184         $(top_srcdir)/libtinymail-camel/tny-camel-msg.h \ 
    185         $(top_srcdir)/libtinymail-camel/tny-camel-msg-remove-strategy.h \ 
    186         $(top_srcdir)/libtinymail-camel/tny-camel-nntp-folder.h \ 
    187         $(top_srcdir)/libtinymail-camel/tny-camel-nntp-store-account.h \ 
    188         $(top_srcdir)/libtinymail-camel/tny-camel-partial-msg-receive-strategy.h \ 
    189         $(top_srcdir)/libtinymail-camel/tny-camel-pop-folder.h \ 
    190         $(top_srcdir)/libtinymail-camel/tny-camel-pop-remote-msg-remove-strategy.h \ 
    191         $(top_srcdir)/libtinymail-camel/tny-camel-pop-store-account.h \ 
    192         $(top_srcdir)/libtinymail-camel/tny-camel-send-queue.h \ 
    193         $(top_srcdir)/libtinymail-camel/tny-camel-shared.h \ 
    194         $(top_srcdir)/libtinymail-camel/tny-camel-store-account.h \ 
    195         $(top_srcdir)/libtinymail-camel/tny-camel-stream.h \ 
    196         $(top_srcdir)/libtinymail-camel/tny-camel-transport-account.h \ 
    197         $(top_srcdir)/libtinymail-camel/tny-session-camel.h \ 
    198         $(top_srcdir)/libtinymail-camel/tny-stream-camel.h 
    199  
    200  
    201 tinymail-camel.defs : $(tinymail_camel_h_files) 
    202         $(PYTHON) $(PYGTK_CODEGENDIR)/h2def.py $(tinymail_camel_h_files) > $@ 
    203  
    204 #       $(PYTHON) $(top_srcdir)/bindings/python/scanvirtuals.py 
    205 #       $(tinymail_platform_h_files) >> $@ 
     82tinymail.defs: $(TINYMAIL_DEFS) 
     83        $(CREATEDEFS) $@ $(TINYMAIL_DEFS) 
    20684 
    20785tinymail-glue.c: tinymail.defs tinymail.override 
     
    20987        --override $(top_srcdir)/bindings/python/tinymail.override \ 
    21088        tinymail.defs > $@ 
     89 
     90TINYMAILUI_DEFS = tinymailui-base.defs 
     91 
     92tinymailui.defs: $(TINYMAILUI_DEFS) 
     93        $(CREATEDEFS) $@ $(TINYMAILUI_DEFS) 
    21194 
    21295tinymailui-glue.c: tinymailui.defs tinymailui.override 
     
    21699        tinymailui.defs > $@ 
    217100 
     101TINYMAILUI_GTK_DEFS = tinymailui-gtk-base.defs 
     102 
     103tinymailui-gtk.defs: $(TINYMAILUI_GTK_DEFS) 
     104        $(CREATEDEFS) $@ $(TINYMAILUI_GTK_DEFS) 
     105 
    218106tinymailui-gtk-glue.c: tinymail.defs $(PYGTK_DEFSDIR)/gdk-types.defs $(PYGTK_DEFSDIR)/gtk-types.defs tinymailui-gtk.defs tinymailui-gtk.override 
    219107        $(PYGTK_CODEGEN) --prefix pyuigtk --register $(PYGTK_DEFSDIR)/gdk-types.defs \ 
     
    222110        tinymailui-gtk.defs > $@ 
    223111 
     112TINYMAIL_PLATFORM_DEFS = tinymail-platform-base.defs 
     113 
     114tinymail-platform.defs: $(TINYMAIL_PLATFORM_DEFS) 
     115        $(CREATEDEFS) $@ $(TINYMAIL_PLATFORM_DEFS) 
     116 
    224117platform_include.h: 
    225         ls $(top_srcdir)/$(PLATFORMDIR)/*h | grep -v \\-priv | sed 's/^/\#include\ \"/g' | sed 's/\.h/\.h\"/g' > $@ 
     118        ls $(top_srcdir)/libtinymail-gnome-desktop/*h | grep -v \\-priv | sed 's/^/\#include\ \"/g' | sed 's/\.h/\.h\"/g' > $@ 
    226119 
    227120tinymail-platform-glue.c: tinymail-platform.defs tinymail-platform.override platform_include.h 
     
    233126        tinymail-platform.defs > $@ 
    234127 
     128TINYMAIL_CAMEL_DEFS = tinymail-camel-base.defs tinymail-camel-extra.defs 
     129 
     130tinymail-camel.defs: $(TINYMAIL_CAMEL_DEFS) 
     131        $(CREATEDEFS) $@ $(TINYMAIL_CAMEL_DEFS) 
     132 
    235133tinymail-camel-glue.c: tinymail-camel.defs tinymail-camel.override 
    236134        $(PYGTK_CODEGEN) --prefix pycamel \ 
  • trunk/bindings/python/tinymail-camel.override

    r2335 r2698  
    4949#include <tny-camel-pop-remote-msg-remove-strategy.h> 
    5050 
     51#include "pytny-session-camel.h" 
     52 
    5153#define NO_IMPORT_PYGOBJECT 
    5254#include "pygobject.h" 
     
    7072import tinymail.StoreAccount as PyTnyStoreAccount_Type 
    7173import tinymail.Lockable as PyTnyLockable_Type 
    72 import tinymail.camel.CamelSession as PyCamelSession_Type 
    73 import tinymail.camel.CamelStream as PyCamelStream_Type 
    74  
    75  
  • trunk/bindings/python/tinymail-camelmodule.c

    r1238 r2698  
    1919        
    2020    if (PyErr_Occurred ()) { 
    21         Py_FatalError ("can't initialise module camel"); 
     21       PyErr_Print(); 
    2222    } 
    2323} 
  • trunk/bindings/python/tinymail-platform.override

    r2333 r2698  
    3030 
    3131#include "platform_include.h" 
     32#include "pytny-session-camel.h" 
    3233 
    3334#define NO_IMPORT_PYGOBJECT 
  • trunk/bindings/python/tinymail.override

    r2335 r2698  
    4646#include <tny-device.h> 
    4747 
     48#include "pytny-status.h" 
    4849 
    4950#define NO_IMPORT_PYGOBJECT 
     
    5657ignore-glob 
    5758  *_get_type 
    58  
     59%% 
     60ignore 
     61 tny_status_new_literal  
     62 tny_clear_status 
     63 tny_set_status 
    5964%% 
    6065import gobject.GObject as PyGObject_Type 
     66%% 
     67override tny_account_stop_operation noargs 
     68static PyObject * 
     69_wrap_tny_account_stop_operation(PyGObject *self) 
     70{ 
     71    gboolean result; 
     72 
     73    tny_account_stop_operation(TNY_ACCOUNT(self->obj), &result); 
     74    if(result) 
     75      Py_RETURN_TRUE; 
     76    else 
     77      Py_RETURN_FALSE; 
     78} 
     79%% 
     80override tny_password_getter_get_password args 
     81static PyObject * 
     82_wrap_tny_password_getter_get_password(PyGObject *self, PyObject *args) 
     83{ 
     84    const gchar *aid; 
     85    const gchar *prompt; 
     86    const gchar *password; 
     87    gboolean     cancel;  
     88 
     89    PyObject*    password_object; 
     90 
     91    if (!PyArg_ParseTuple(args, "ss", &aid, &prompt)) 
     92        return NULL; 
     93    password = tny_password_getter_get_password(TNY_PASSWORD_GETTER(self->obj), 
     94                                              aid, prompt, &cancel); 
     95    if(cancel) 
     96    { 
     97        if(!password) 
     98          g_free((gchar*)password); 
     99        Py_RETURN_NONE;  
     100    } 
     101    else 
     102    { 
     103        if(!(password_object = Py_BuildValue("s", password))) 
     104        { 
     105            if(!password) 
     106                g_free((gchar*)password); 
     107            return NULL; 
     108        } 
     109        else 
     110        { 
     111            g_free((gchar*)password); 
     112            return password_object; 
     113        } 
     114    } 
     115} 
     116%% 
     117override tny_status_new kwargs 
     118static int 
     119_wrap_tny_status_new(PyGBoxed *self, PyObject *args, PyObject *kwargs) 
     120{ 
     121    static char *kwlist[] = { "domain", "code", "position", "of_total", "message", NULL }; 
     122    TnyStatus status; 
     123    const gchar *domain_string; 
     124    GQuark domain_quark; 
     125 
     126    status.domain = 0; 
     127    status.code = 0; 
     128    status.position = 0; 
     129    status.of_total = 0; 
     130    status.message = ""; 
     131 
     132    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|iiis:TnyStatus.__init__", kwlist, 
     133                                     domain_string, &status.code, &status.position, 
     134                                     &status.of_total, status.message)) 
     135    { 
     136        return -1; 
     137    } 
     138 
     139    if (!(domain_quark = g_quark_try_string((const gchar*) status.message))) 
     140    { 
     141        PyErr_SetString(PyExc_ValueError, "Domain must match a registered GQuark"); 
     142        return -1; 
     143    } 
     144 
     145    status.domain = domain_quark; 
     146 
     147    self->boxed =  g_boxed_copy(PYTNY_TYPE_STATUS, &status); 
     148    self->free_on_dealloc = TRUE; 
     149    self->gtype = PYTNY_TYPE_STATUS; 
     150     
     151    return 0; 
     152} 
     153%% 
     154override tny_status_matches args 
     155static PyObject * 
     156_wrap_tny_status_matches(PyObject *self, PyObject *args) 
     157{ 
     158    const gchar *domain; 
     159    gint         code; 
     160    GQuark       domain_quark; 
     161 
     162    if (!PyArg_ParseTuple(args, "si", domain, &code)) 
     163        return NULL; 
     164 
     165    domain_quark = g_quark_try_string(domain); 
     166 
     167    if(tny_status_matches(pyg_boxed_get(self, TnyStatus), domain_quark, code)) 
     168      Py_RETURN_TRUE; 
     169    else 
     170      Py_RETURN_FALSE; 
     171} 
     172%% 
     173override tny_folder_change_get_rename noargs 
     174_wrap_tny_folder_change_get_rename (PyGObject *self) 
     175{ 
     176    const gchar *rename, *oldname; 
     177 
     178    rename = tny_folder_change_get_rename(TNY_FOLDER(self->obj), &oldname); 
     179 
     180    return Py_BuildValue("ss", rename, oldname); 
     181} 
     182 
     183     
     184 
     185     
     186 
     187     
     188     
     189 
     190 
     191 
     192 
     193 
     194 
     195 
     196 
    61197%% 
    62198override tny_folder_get_msg_async kwargs 
  • trunk/bindings/python/tinymailmodule.c

    r2536 r2698  
    22  
    33void pytinymail_register_classes (PyObject *d);  
    4 /*void pytinymail_add_constants(PyObject *module, const gchar *strip_prefix);*/ 
     4void pytinymail_add_constants(PyObject *module, const gchar *strip_prefix); 
    55extern PyMethodDef pytinymail_functions[]; 
    66 
     
    1616  
    1717    pytinymail_register_classes (d); 
    18     /*pytinymail_add_constants (m, "TNY_");*/ 
     18    pytinymail_add_constants (m, "TNY_"); 
    1919        
    2020    if (PyErr_Occurred ()) { 
  • trunk/configure.ac

    r2485 r2698  
    505505bindings/Makefile 
    506506bindings/python/Makefile 
     507bindings/python/gendefs/Makefile 
    507508bindings/python/tinymail.pth 
    508509libtinymail/Makefile