X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=request_cbs.pxd;h=e45bc245039e375259d7349e536715b495853b6f;hp=9c7c960f68a31fd234ca9c7c5583f655dcb2e17b;hb=7752e0f4a14a32ede02b8b86c83d9510338a59ed;hpb=5fe506a5d23d5f7ba01599247a58bd03ca9eb7da diff --git a/request_cbs.pxd b/request_cbs.pxd index 9c7c960..e45bc24 100644 --- a/request_cbs.pxd +++ b/request_cbs.pxd @@ -23,92 +23,127 @@ cdef extern from *: ctypedef char const_char "const char" ctypedef int size_t ctypedef void* va_list + char* charptr "char *" + glib.GCallback glibcb "GCallback" + void* va_arg(void *action, void *type) request_cbs = {} -cdef void *request_input (const_char *title, const_char *primary, - const_char *secondary, const_char *default_value, - glib.gboolean multiline, glib.gboolean masked, - glib.gchar *hint, const_char *ok_text, - glib.GCallback ok_cb, const_char *cancel_text, - glib.GCallback cancel_cb, - account.PurpleAccount *account, const_char *who, - conversation.PurpleConversation *conv, - void *user_data): - debug.c_purple_debug_info("request", "%s", "request-input\n") - try: - (request_cbs["request-input"])("request-input: TODO") - except KeyError: - pass - -cdef void *request_choice (const_char *title, const_char *primary, - const_char *secondary, int default_value, - const_char *ok_text, glib.GCallback ok_cb, - const_char *cancel_text, - glib.GCallback cancel_cb, - account.PurpleAccount *account, const_char *who, - conversation.PurpleConversation *conv, - void *user_data, va_list choices): - debug.c_purple_debug_info("request", "%s", "request-choice\n") - try: - (request_cbs["request-choice"])("request-choice: TODO") - except KeyError: - pass - -cdef void *request_action (const_char *title, const_char *primary, - const_char *secondary, int default_action, - account.PurpleAccount *account, const_char *who, - conversation.PurpleConversation *conv, - void *user_data, size_t action_count, - va_list actions): - debug.c_purple_debug_info("request", "%s", "request-action\n") - try: - (request_cbs["request-action"])("request-action: TODo") - except KeyError: - pass - -cdef void *request_fields (const_char *title, const_char *primary, - const_char *secondary, - request.PurpleRequestFields *fields, - const_char *ok_text, glib.GCallback ok_cb, - const_char *cancel_text, glib.GCallback cancel_cb, - account.PurpleAccount *account, const_char *who, - conversation.PurpleConversation *conv, - void *user_data): - debug.c_purple_debug_info("request", "%s", "request-fields\n") - try: - (request_cbs["request-fields"])("request-fields: TODO") - except KeyError: - pass - -cdef void *request_file (const_char *title, const_char *filename, - glib.gboolean savedialog, glib.GCallback ok_cb, - glib.GCallback cancel_cb, - account.PurpleAccount *account, const_char *who, - conversation.PurpleConversation *conv, - void *user_data): - debug.c_purple_debug_info("request", "%s", "request-file\n") - try: - (request_cbs["request-file"])("request-file: TODO") - except KeyError: - pass - -cdef void close_request (request.PurpleRequestType type, void *ui_handle): - debug.c_purple_debug_info("request", "%s", "close-request\n") - try: - (request_cbs["close-request"])("close-request: TODO") - except KeyError: - pass - -cdef void *request_folder (const_char *title, const_char *dirname, - glib.GCallback ok_cb, - glib.GCallback cancel_cb, - account.PurpleAccount *account, - const_char *who, - conversation.PurpleConversation *conv, - void *user_data): - debug.c_purple_debug_info("request", "%s", "request-folder\n") - try: - (request_cbs["request-folder"])("request-folder: TODO") - except KeyError: - pass +cdef request.PurpleRequestActionCb req_actions_cb[10] +cdef object req_actions_list = [] +cdef void *req_action_user_data = NULL + +cdef void *request_input(const_char *title, const_char *primary, \ + const_char *secondary, const_char *default_value, \ + glib.gboolean multiline, glib.gboolean masked, glib.gchar *hint, \ + const_char *ok_text, glib.GCallback ok_cb, const_char *cancel_text, \ + glib.GCallback cancel_cb, \ + account.PurpleAccount *account, const_char *who, \ + conversation.PurpleConversation *conv, void *user_data): + """ + @see purple_request_input(). + """ + debug.purple_debug_info("request", "%s", "request-input\n") + if "request-input" in request_cbs: + ( request_cbs["request-input"])("request-input: TODO") + +cdef void *request_choice(const_char *title, const_char *primary, \ + const_char *secondary, int default_value, const_char *ok_text, \ + glib.GCallback ok_cb, const_char *cancel_text, \ + glib.GCallback cancel_cb, account.PurpleAccount *account, \ + const_char *who, conversation.PurpleConversation *conv, \ + void *user_data, va_list choices): + """ + @see purple_request_choice_varg(). + """ + debug.purple_debug_info("request", "%s", "request-choice\n") + if "request-choice" in request_cbs: + ( request_cbs["request-choice"])("request-choice: TODO") + +cdef void __call_action(int i): + global req_actions_cb + global req_actions_list + global req_action_user_data + + cdef request.PurpleRequestActionCb cb + + if req_actions_list and len(req_actions_list) > i: + cb = req_actions_cb[i] + cb(req_action_user_data, i) + +cdef void *request_action(const_char *title, const_char *primary, \ + const_char *secondary, int default_action, \ + account.PurpleAccount *account, const_char *who, \ + conversation.PurpleConversation *conv, void *user_data, \ + size_t action_count, va_list actions): + """ + @see purple_request_action_varg(). + """ + global req_actions_cb + global req_actions_list + global req_action_user_data + cdef int i + cdef char *btn_txt + cdef void *cb + + i = 0 + + req_action_user_data = user_data + req_actions_list = [] + + #FIXME: i < 10 max size to req_actions_cb + while i < action_count and i < 10: + btn_txt = va_arg(actions, charptr) + req_actions_cb[i] = va_arg(actions, glibcb) + req_actions_list.append(btn_txt) + i = i + 1 + + debug.purple_debug_info("request", "%s", "request-action\n") + if "request-action" in request_cbs: + ( request_cbs["request-action"]) \ + ( title, primary, secondary, \ + default_action, req_actions_list) + +cdef void *request_fields(const_char *title, const_char *primary, \ + const_char *secondary, request.PurpleRequestFields *fields, \ + const_char *ok_text, glib.GCallback ok_cb, const_char *cancel_text, \ + glib.GCallback cancel_cb, account.PurpleAccount *account, \ + const_char *who, conversation.PurpleConversation *conv, \ + void *user_data): + """ + @see purple_request_fields(). + """ + debug.purple_debug_info("request", "%s", "request-fields\n") + if "request-fields" in request_cbs: + ( request_cbs["request-fields"])("request-fields: TODO") + +cdef void *request_file(const_char *title, const_char *filename, \ + glib.gboolean savedialog, glib.GCallback ok_cb, \ + glib.GCallback cancel_cb, account.PurpleAccount *account, \ + const_char *who, conversation.PurpleConversation *conv, \ + void *user_data): + """ + @see purple_request_file(). + """ + debug.purple_debug_info("request", "%s", "request-file\n") + if "request-file" in request_cbs: + ( request_cbs["request-file"])("request-file: TODO") + +cdef void close_request(request.PurpleRequestType type, void *ui_handle): + """ + TODO + """ + debug.purple_debug_info("request", "%s", "close-request\n") + if "close-request" in request_cbs: + ( request_cbs["close-request"])("close-request: TODO") + +cdef void *request_folder(const_char *title, const_char *dirname, \ + glib.GCallback ok_cb, glib.GCallback cancel_cb, \ + account.PurpleAccount *account, const_char *who, \ + conversation.PurpleConversation *conv, void *user_data): + """ + @see purple_request_folder(). + """ + debug.purple_debug_info("request", "%s", "request-folder\n") + if "request-folder" in request_cbs: + ( request_cbs["request-folder"])("request-folder: TODO")