Generator ~~~~~~~~~ * Pointers * Write handlers for properties * Make property-based constructors use pre-code generated by arg types * gunichar arg type * Fix Boxed_Arg to require explicit CE in php_gtk_parse_args(). Base Functionality ~~~~~~~~~~~~~~~~~~ * Some classes need to be coded in C entirely, see gtk-types.c * Interfaces * Implement __gtype, __doc, and other special properties, if possible * Deal with clone() handler in Zend * Maybe use zend_call_function() instead of call_user_function_ex() to take advantage of function call cache * Construction of arbitrary GObjects() via argument lists * Integration with pkg-config * Fix GdkEventType property handlers to cope with GdkAtom, GdkRegion, GdkNativeWindow and GdkDragContext Classes and Functions ~~~~~~~~~~~~~~~~~~~~~ * GtkAboutDialog method GtkAboutDialog::set_email_hook: unknown type 'GtkAboutDialogActivateLinkFunc' method GtkAboutDialog::set_url_hook: unknown type 'GtkAboutDialogActivateLinkFunc' GtkAboutDialog->set_logo_icon_name seems to find no icons at all (method is generated, need to test this) * GtkCalendar method GtkCalendar::get_date: unknown type 'guint*' * GtkCellView get_size_of_row NTRVNRP * GtkClipboard constructor GtkClipboard::__construct: unknown type 'GdkAtom' method GtkClipboard::request_contents: unknown type 'GdkAtom' method GtkClipboard::request_targets: unknown type 'GtkClipboardTargetsReceivedFunc' method GtkClipboard::request_text: unknown type 'GtkClipboardTextReceivedFunc' method GtkClipboard::set_can_store: unknown type 'const-GtkTargetEntry*' method GtkClipboard::set_with_data: unknown type 'const-GtkTargetEntry*' method GtkClipboard::set_with_owner: unknown type 'const-GtkTargetEntry*' method GtkClipboard::wait_for_contents: unknown type 'GdkAtom' method GtkClipboard::wait_for_targets: unknown type 'GdkAtom**' method GtkClipboard::wait_is_target_available: unknown type 'GdkAtom' * GtkComboBox Default constructor should get optional parameter, and new_with_model() be removed * GtkEntry GtkEntry objects can't be var_dumped, probably something missing * GdkGC implement property access (read/write) * GtkIconInfo get_embedded_rect NTRVNRP * GtkIconTheme method GtkIconTheme::get_icon_sizes: unknown type 'gint*' method GtkIconTheme::get_search_path: unknown type 'gchar**[]' method GtkIconTheme::list_icons: unknown type 'GList*' method GtkIconTheme::set_search_path: unknown type 'const-gchar*[]' * GtkIconView method GtkIconView::get_selected_items: unknown type 'GList*' method GtkIconView::selected_foreach: unknown type 'GtkIconViewForeachFunc' * GtkLabel Would it be good to call GtkLabel::set_ellipsize(PANGO::ELLIPSIZE_END) as part of an override for (left-justifying) GtkLabel::set_width_chars() (optional param)? * GtkListStore method GtkListStore::insert_with_values: varargs methods not supported method GtkListStore::insert_with_valuesv: unknown type 'gint*' method GtkListStore::reorder: unknown type 'gint*' method GtkListStore::set_column_types: unknown type 'GType*' method GtkListStore::set_value: unknown type 'GValue*' * GtkNotebook methods append_page, insert_page and prepend_page have to be merged with their _menu counterparts (so that append_page accepts a third parameter from append_page_menu) * GtkTextBuffer get_iter_at_child_anchor NTRVNRP * GtkTreeModel method GtkTreeModel::get: varargs methods not supported method GtkTreeModel::get_valist: unknown type 'va_list' method GtkTreeModel::rows_reordered: unknown type 'gint*' maybe implement some SPL interfaces? * GtkTreeStore method GtkTreeStore::reorder: unknown type 'gint*' method GtkTreeStore::set_column_types: unknown type 'GType*' method GtkTreeStore::set_value: unknown type 'GValue*' * GtkTreeView method GtkTreeView::enable_model_drag_dest: unknown type 'const-GtkTargetEntry*' method GtkTreeView::enable_model_drag_source: unknown type 'const-GtkTargetEntry*' method GtkTreeView::get_columns: unknown type 'GList*' method GtkTreeView::get_cursor: unknown type 'GtkTreePath**' method GtkTreeView::get_dest_row_at_pos: unknown type 'GtkTreePath**' method GtkTreeView::get_drag_dest_row: unknown type 'GtkTreePath**' method GtkTreeView::get_row_separator_func: unknown type 'GtkTreeViewRowSeparatorFunc' method GtkTreeView::get_search_equal_func: unknown type 'GtkTreeViewSearchEqualFunc' method GtkTreeView::insert_column_with_attributes: varargs methods not supported method GtkTreeView::map_expanded_rows: unknown type 'GtkTreeViewMappingFunc' method GtkTreeView::set_column_drag_function: unknown type 'GtkTreeViewColumnDropFunc' method GtkTreeView::set_destroy_count_func: unknown type 'GtkTreeDestroyCountFunc' method GtkTreeView::set_row_separator_func: unknown type 'GtkTreeViewRowSeparatorFunc' method GtkTreeView::set_search_equal_func: unknown type 'GtkTreeViewSearchEqualFunc' method GtkTreeView::tree_to_widget_coords: unknown type 'gint*' method GtkTreeView::widget_to_tree_coords: unknown type 'gint*' * GtkTextBuffer method GtkTextBuffer::create_tag: varargs methods not supported method GtkTextBuffer::insert_with_tags: varargs methods not supported method GtkTextBuffer::insert_with_tags_by_name: varargs methods not supported GtkTextBuffer::move_mark_by_name('selection_bound', ...) moves both the the insert and select_bound marks (method is generated, need to test this) * GtkTextTagTable method GtkTextTagTable::foreach: unknown type 'GtkTextTagTableForeach' GtkTextTagTable->lookup() is not implemented (method is generated, needs overriding - it's coming out as php_lookup()!) * GdkPixbuf pixbuf_new_from_array() has PyArrayObject as a parameter * GdkPixmap constructor create_from_xpm_d() * GtkPlug/GtkSocket * Support (array) cast for GtkTreeModelRow and possibly unset() Fix ~~~ * StyleHelper does not implement handlers that ZE2 _requires_ right now. Need to change either ZE2 or StyleHelper. * Use phpg_gboxed_check() after receiving boxed parameters. Thoughts on reference counting and wrappers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. We should probably not ref the GtkWindow/GtkInvisible after construction. It leaves a hanging reference around and the window will not get destroyed by Gtk+. The proper way to destroy the toplevel window is via gtk_window/widget_destroy(). Calling gtk::main_quit() is not enough. 2. Since we lack a garbage collector, we need to fake it. We need to override del_ref handler on the object, which will make sure that our wrapper is destroyed only if the referent gobject also has refcount of 1, which we means that only we own it. Otherwise, we need to keep our wrapper from being destroyed and save a pointer to the wrapper in the gobject with notification turned on, so that when gobject is destroyed by Gtk+ our wrapper is destroyed as well. [ * todo - in progress ] NTRVNRP - needs to return value not require parameter