com gtk/php-gtk: GtkDialog::__construct() GtkDial og::add_buttons() Gtk::icon_size_lookup_f or_settings() GtkEditable::insert_text() Gt kTextView::get_line_yrange() GtkTextView::get _iter_at_position() GtkTextView::get_line_a t_y() GtkTreeViewColumn::cell_get_size() GdkWindow::get_geometry() GdkWindow::get_posi tion() GdkWindow::get_origin() GdkWindow: :get_root_origin() GdkWindow::at_pointer( ) (previously Gdk::window_at_pointer()) GdkDisplay::window_at

[email protected] (David Soria Parra) Sat, 14 Jan 2006 21:49:03 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    c29a24cfa1a0ed8447a8e166dfb42e87e7767286
Author:    Christian Weiske <[email protected]>         Sat, 14 Jan 2006 21:49:03 +0000
Parents:   927f9e9656296abd432b5236d57a5946d62726ac
Branches:  master

Link:       http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=c29a24cfa1a0ed8447a8e166dfb42e87e7767286

Log:
GtkDialog::__construct()
GtkDialog::add_buttons()
Gtk::icon_size_lookup_for_settings()
GtkEditable::insert_text()
GtkTextView::get_line_yrange()
GtkTextView::get_iter_at_position()
GtkTextView::get_line_at_y()
GtkTreeViewColumn::cell_get_size()
GdkWindow::get_geometry()
GdkWindow::get_position()
GdkWindow::get_origin()
GdkWindow::get_root_origin()
GdkWindow::at_pointer() (previously Gdk::window_at_pointer())
GdkDisplay::window_at_pointer()

Changed paths:
  M  ext/gtk+/gdk.overrides
  M  ext/gtk+/gtk.overrides
  M  ext/gtk+/gtktextview.overrides
  M  ext/gtk+/gtktreeview.overrides
diff_c29a24cfa1a0ed8447a8e166dfb42e87e7767286.txt (text/plain, 10.5 KB)
c29a24cfa1a0ed8447a8e166dfb42e87e7767286
diff --git a/ext/gtk+/gdk.overrides b/ext/gtk+/gdk.overrides
index 41572f8..7de3636 100644
--- a/ext/gtk+/gdk.overrides
+++ b/ext/gtk+/gdk.overrides
@@ -42,9 +42,11 @@ ignore
 %%
 ignore
     gdk_gc_new2
+    gdk_string_extents
 
 /* }}} */
 
+
 %% {{{ GdkColor
 
 %%
@@ -276,6 +278,55 @@ PHP_METHOD
 
 %% }}}
 
+
+%% {{{ GdkDisplay
+
+%%
+override gdk_display_get_window_at_pointer
+PHP_METHOD
+{
+    gint x, y;
+    GdkWindow *window;
+    zval *php_window = NULL;
+
+    NO_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    window = gdk_display_get_window_at_pointer(GDK_DISPLAY(PHPG_GOBJECT(this_ptr)), &x, &y);
+
+    if (window != NULL) {
+        phpg_gboxed_new(&php_window, GDK_TYPE_WINDOW, &window, TRUE, TRUE TSRMLS_CC);
+        php_gtk_build_value(&return_value, "(Nii)", php_window, x, y);
+    } else {
+        RETURN_FALSE;
+    }
+}
+
+%% }}}
+
+
+%% {{{ GdkDrawable
+
+%%
+override gdk_drawable_get_size
+PHP_METHOD
+{
+    gint width, height;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    gdk_drawable_get_size(GDK_DRAWABLE(PHPG_GOBJECT(this_ptr)), &width, &height);
+    php_gtk_build_value(&return_value, "(ii)", width, height);
+}
+
+%% }}}
+
+
 %% {{{ GdkEvent
 
 %% {{{ read_property handler
@@ -952,6 +1003,60 @@ PHP_METHOD
 %% {{{ GdkWindow
 
 %%
+override gdk_window_at_pointer
+PHP_METHOD
+{
+    gint x, y;
+    GdkWindow *window;
+    zval *php_window = NULL;
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    window = gdk_window_at_pointer(&x, &y);
+
+    if (window != NULL) {
+        phpg_gboxed_new(&php_window, GDK_TYPE_WINDOW, &window, TRUE, TRUE TSRMLS_CC);
+        php_gtk_build_value(&return_value, "(Nii)", php_window, x, y);
+    } else {
+        RETURN_FALSE;
+    }
+}
+
+
+%%
+override gdk_window_get_geometry
+PHP_METHOD
+{
+    gint x, y, width, height, depth;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    gdk_window_get_geometry(GDK_WINDOW(PHPG_GOBJECT(this_ptr)), &x, &y, &width, &height, &depth);
+    php_gtk_build_value(&return_value, "(iiiii)", x, y, width, height, depth);
+}
+
+
+%%
+override gdk_window_get_origin
+PHP_METHOD
+{
+    gint x, y;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    gdk_window_get_origin(GDK_WINDOW(PHPG_GOBJECT(this_ptr)), &x, &y);
+    php_gtk_build_value(&return_value, "(ii)", x, y);
+}
+
+
+%%
 override gdk_window_get_pointer
 PHP_METHOD(GdkWindow, get_pointer)
 {
@@ -967,6 +1072,38 @@ PHP_METHOD(GdkWindow, get_pointer)
     php_gtk_build_value(&return_value, "(iii)", x, y, mask);
 }
 
+
+%%
+override gdk_window_get_position
+PHP_METHOD
+{
+    gint x, y;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    gdk_window_get_position(GDK_WINDOW(PHPG_GOBJECT(this_ptr)), &x, &y);
+    php_gtk_build_value(&return_value, "(ii)", x, y);
+}
+
+
+%%
+override gdk_window_get_root_origin
+PHP_METHOD
+{
+    gint x, y;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    gdk_window_get_root_origin(GDK_WINDOW(PHPG_GOBJECT(this_ptr)), &x, &y);
+    php_gtk_build_value(&return_value, "(ii)", x, y);
+}
+
 %% }}}
 
 %%
diff --git a/ext/gtk+/gtk.overrides b/ext/gtk+/gtk.overrides
index c447745..2c72d11 100644
--- a/ext/gtk+/gtk.overrides
+++ b/ext/gtk+/gtk.overrides
@@ -558,6 +558,40 @@ PHP_METHOD
     php_gtk_build_value(&return_value, "(ii)", width, height);
 }
 
+
+%%
+add-arginfo Gtk icon_size_lookup_for_settings
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_OBJ_INFO(0, settings, GtkSettings, 0)
+    ZEND_ARG_INFO(0, size)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_icon_size_lookup_for_settings
+PHP_METHOD
+{
+    gint width, height;
+    zval *php_settings;
+    zval *php_size = NULL;
+    GtkSettings settings;
+    GtkIconSize size;
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OV", &php_settings, gtksettings_ce, &php_size))
+        return;
+
+    if (php_size && phpg_gvalue_get_enum(GTK_TYPE_ICON_SIZE, php_size, (gint *)&size) == FAILURE)
+        return;
+
+
+    if (gtk_icon_size_lookup_for_settings(GTK_SETTINGS(PHPG_GOBJECT(php_settings)), size, &width, &height)) {
+        php_gtk_build_value(&return_value, "(ii)", width, height);
+    } else {
+        RETURN_FALSE;
+    }
+}
+
+
 %%
 override gtk_stock_list_ids
 PHP_METHOD
@@ -1057,6 +1091,8 @@ PHP_METHOD
             PHPG_THROW_CONSTRUCT_EXCEPTION(GtkDialog);
         }
 
+        GtkDialog *dialog = GTK_DIALOG(wrapped_obj);
+
         zend_hash_internal_pointer_reset(Z_ARRVAL_P(buttons));
         while (zend_hash_get_current_data(Z_ARRVAL_P(buttons), (void **)&text) == SUCCESS) {
             zend_hash_move_forward(Z_ARRVAL_P(buttons));
@@ -1070,12 +1106,58 @@ PHP_METHOD
                 PHPG_THROW_CONSTRUCT_EXCEPTION(GtkDialog);
             }
 
-            gtk_dialog_add_button(GTK_DIALOG(wrapped_obj), Z_STRVAL_PP(text), Z_LVAL_PP(response));
+            gtk_dialog_add_button(dialog, Z_STRVAL_PP(text), Z_LVAL_PP(response));
         }
     }
 
     phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
 }
+
+
+%%
+add-arginfo GtkDialog add_buttons
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_INFO(0, buttons)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_dialog_add_buttons
+PHP_METHOD
+{
+    zval *buttons = NULL;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &buttons))
+        return;
+
+    zval **text, **response;
+
+    if (zend_hash_num_elements(Z_ARRVAL_P(buttons)) % 2) {
+        php_error(E_WARNING, "%s::%s(): button list has to contain pairs of items",
+                    get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
+        return;
+    }
+
+    GtkDialog *dialog = GTK_DIALOG(PHPG_GOBJECT(this_ptr));
+
+    zend_hash_internal_pointer_reset(Z_ARRVAL_P(buttons));
+    while (zend_hash_get_current_data(Z_ARRVAL_P(buttons), (void **)&text) == SUCCESS) {
+        zend_hash_move_forward(Z_ARRVAL_P(buttons));
+        zend_hash_get_current_data(Z_ARRVAL_P(buttons), (void **)&response); /* safe */
+        zend_hash_move_forward(Z_ARRVAL_P(buttons));
+
+        if (Z_TYPE_PP(text) != IS_STRING || Z_TYPE_PP(response) != IS_LONG) {
+            php_error(E_WARNING, "%s::%s(): each pair in button list has to be string/number",
+                        get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
+            return;
+        }
+
+        gtk_dialog_add_button(dialog, Z_STRVAL_PP(text), Z_LVAL_PP(response));
+    }
+}
+
 %% }}}
 
 
@@ -1099,6 +1181,36 @@ PHP_METHOD
     }
 }
 
+
+%%
+add-arginfo GtkEditable insert_text
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_INFO(0, text)
+    ZEND_ARG_INFO(0, position)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_editable_insert_text
+PHP_METHOD
+{
+    char *text;
+    gint pos;
+    int text_len;
+    zend_bool free_text;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iu#", &pos, &text, &text_len, &free_text))
+        return;
+
+    gtk_editable_insert_text(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), text, text_len, &pos);
+
+    if (free_text) g_free(text);
+
+    RETURN_LONG(pos);
+}
+
 %% }}}
 
 
diff --git a/ext/gtk+/gtktextview.overrides b/ext/gtk+/gtktextview.overrides
index b98d2b9..a4ed52d 100644
--- a/ext/gtk+/gtktextview.overrides
+++ b/ext/gtk+/gtktextview.overrides
@@ -188,6 +188,92 @@ PHP_METHOD
 
 
 %%
+add-arginfo GtkTextView get_iter_at_position
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_INFO(0, x)
+    ZEND_ARG_INFO(0, y)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_text_view_get_iter_at_position
+PHP_METHOD
+{
+    gint x, y, trailing;
+    zval *php_iter = NULL;
+    GtkTextIter iter;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &x, &y))
+        return;
+
+    gtk_text_view_get_iter_at_position(GTK_TEXT_VIEW(PHPG_GOBJECT(this_ptr)), &iter, &trailing, x, y);
+
+    phpg_gboxed_new(&php_iter, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
+
+    php_gtk_build_value(&return_value, "(Ni)", php_iter, trailing);
+}
+
+
+%%
+add-arginfo GtkTextView get_line_at_y
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_INFO(0, y)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_text_view_get_line_at_y
+PHP_METHOD
+{
+    gint y, line_top;
+    zval *php_iter = NULL;
+    GtkTextIter iter;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &y))
+        return;
+
+    gtk_text_view_get_line_at_y(GTK_TEXT_VIEW(PHPG_GOBJECT(this_ptr)), &iter, y, &line_top);
+
+    phpg_gboxed_new(&php_iter, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
+
+    php_gtk_build_value(&return_value, "(Ni)", php_iter, line_top);
+}
+
+
+%%
+add-arginfo GtkTextView get_line_yrange
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 0)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_text_view_get_line_yrange
+PHP_METHOD
+{
+    zval *php_iter = NULL;
+    GtkTextIter *iter = NULL;
+    gint y, height;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gtktextiter_ce))
+        return;
+
+    if (php_iter && IS_OBJECT == Z_TYPE_P(php_iter)) {
+        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
+    }
+
+    gtk_text_view_get_line_yrange(GTK_TEXT_VIEW(PHPG_GOBJECT(this_ptr)), iter, &y, &height);
+    php_gtk_build_value(&return_value, "(ii)", y, height);
+}
+
+
+%%
 add-arginfo GtkTextView window_to_buffer_coords
 static
 ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
diff --git a/ext/gtk+/gtktreeview.overrides b/ext/gtk+/gtktreeview.overrides
index 28081ba..c8c755c 100644
--- a/ext/gtk+/gtktreeview.overrides
+++ b/ext/gtk+/gtktreeview.overrides
@@ -1076,6 +1076,28 @@ PHP_METHOD
 
 
 %%
+override gtk_tree_view_column_cell_get_size
+PHP_METHOD
+{
+    gint x_offset, y_offset, width, height;
+    GdkRectangle cell_area;
+    zval *php_cell_area = NULL;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
+        return;
+    }
+
+    gtk_tree_view_column_cell_get_size(GTK_TREE_VIEW_COLUMN(PHPG_GOBJECT(this_ptr)), &cell_area, &x_offset, &y_offset, &width, &height);
+
+    phpg_gboxed_new(&php_cell_area, GDK_TYPE_RECTANGLE, &cell_area, TRUE, TRUE TSRMLS_CC);
+
+    php_gtk_build_value(&return_value, "(Niiii)", php_cell_area, x_offset, y_offset, width, height);
+}
+
+
+%%
 add-arginfo GtkTreeViewColumn set_cell_data_func
 static
 ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)