+ ctypedef struct PurpleCoreUiOps:
+ void (*ui_prefs_init) ()
+ void (*debug_ui_init) ()
+ void (*ui_init) ()
+ void (*quit) ()
+ GHashTable* (*get_ui_info) ()
+
+ cdef gboolean c_purple_core_init "purple_core_init" (const_char_ptr ui)
+ cdef void c_purple_core_quit "purple_core_quit" ()
+ cdef gboolean c_purple_core_migrate "purple_core_migrate" ()
+ cdef void c_purple_core_set_ui_ops "purple_core_set_ui_ops" (PurpleCoreUiOps *ops)
+
+""" CoreUiOps class """
+__core_uiops = None
+
+cdef void ui_prefs_init():
+ global __core_uiops
+ if __core_uiops and __core_uiops.ui_prefs_init:
+ __core_uiops.ui_prefs_init()
+
+cdef void debug_ui_init():
+ global __core_uiops
+ if __core_uiops and __core_uiops.debug_ui_init:
+ __core_uiops.debug_ui_init()
+
+cdef void ui_init():
+ global __core_uiops
+ if __core_uiops and __core_uiops.ui_init:
+ __core_uiops.ui_init()
+
+cdef void quit():
+ global __core_uiops
+ if __core_uiops and __core_uiops.quit:
+ __core_uiops.quit()
+
+cdef GHashTable *get_ui_info():
+ global __core_uiops
+ if __core_uiops and __core_uiops.get_ui_info:
+ __core_uiops.get_ui_info()
+
+
+class CoreUiOps(object):
+ def __init__(self):
+ self.ui_prefs_init = None
+ self.debug_ui_init = None
+ self.ui_init = None
+ self.quit = None
+ self.get_ui_info = None
+
+
+def core_set_ui_ops(core_uiops):
+ global __core_uiops
+ cdef PurpleCoreUiOps c_core_uiops
+
+ c_core_uiops.ui_prefs_init = ui_prefs_init
+ c_core_uiops.debug_ui_init = debug_ui_init
+ c_core_uiops.ui_init = ui_init
+ c_core_uiops.quit = quit
+ c_core_uiops.get_ui_info = get_ui_info
+
+ __core_uiops = core_uiops
+
+ c_purple_core_set_ui_ops(&c_core_uiops)
+
+def core_init(ui):
+ c_purple_core_init(ui)