com gtk/php-gtk: Fixed NTRVTRP methods GtkTreeModelSort::co nvert_iter_to_child_iter GtkTreeModelSort::conver t_child_iter_to_iter: TODO2 ext/gtk+/gtktreevie w.overrides test/unittests/GtkTreeModelSortTest.php
[email protected] (David Soria Parra)
| Newsgroups | php.gtk.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: 94d463291926ece9b07d1dae2b1d61d94998ae9c Author: Christian Weiske <[email protected]> Sat, 1 Jul 2006 10:39:02 +0000 Parents: 33623929708c2d883e8b311712106902f91505b3 Branches: master Link: http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=94d463291926ece9b07d1dae2b1d61d94998ae9c Log: Fixed NTRVTRP methods GtkTreeModelSort::convert_iter_to_child_iter GtkTreeModelSort::convert_child_iter_to_iter The script leaks memory, but this is because of http://bugzilla.gnome.org/show_bug.cgi?id=346341 Changed paths: M TODO2 M ext/gtk+/gtktreeview.overrides M test/unittests/GtkTreeModelSortTest.php Diff: 94d463291926ece9b07d1dae2b1d61d94998ae9c diff --git a/TODO2 b/TODO2 index 85f383d..81abbff 100644 --- a/TODO2 +++ b/TODO2 @@ -64,9 +64,6 @@ Classes and Functions * GtkTreeModelFilter memleak when using get_property('virtual-root') second constructor parameter doesn't work (see unit test) -* GtkTreeModelSort - NTRVNRP: convert_child_iter_to_iter(GtkTreeIter sort_iter, GtkTreeIter child_iter) - NTRVNRP: convert_iter_to_child_iter(GtkTreeIter child_iter, GtkTreeIter sorted_iter); * GtkTreeStore method GtkTreeStore::reorder: unknown type 'gint*' method GtkTreeStore::set_column_types: unknown type 'GType*' diff --git a/ext/gtk+/gtktreeview.overrides b/ext/gtk+/gtktreeview.overrides index 06ac1fb..aafe928 100644 --- a/ext/gtk+/gtktreeview.overrides +++ b/ext/gtk+/gtktreeview.overrides @@ -1556,6 +1556,74 @@ PHP_METHOD %% }}} +%% {{{ GtkTreeModelSort + +%% +add-arginfo GtkTreeModelSort convert_child_iter_to_iter +static +ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0) + ZEND_ARG_OBJ_INFO(0, child_iter, GtkTreeIter, 1) +ZEND_END_ARG_INFO(); + +%% +override gtk_tree_model_sort_convert_child_iter_to_iter +PHP_METHOD +{ + GtkTreeIter sort_iter, *child_iter = NULL; + zval *php_child_iter; + + NOT_STATIC_METHOD(); + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_child_iter, gboxed_ce)) + return; + + if (phpg_gboxed_check(php_child_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) { + child_iter = (GtkTreeIter *) PHPG_GBOXED(php_child_iter); + } else { + php_error(E_WARNING, "%s::%s() expects child_iter argument to be a valid GtkTreeIter object", + get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); + return; + } + + gtk_tree_model_sort_convert_child_iter_to_iter(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)), &sort_iter, child_iter); + + phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &sort_iter, TRUE, TRUE TSRMLS_CC); +} + +%% +add-arginfo GtkTreeModelSort convert_iter_to_child_iter +static +ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0) + ZEND_ARG_OBJ_INFO(0, sort_iter, GtkTreeIter, 1) +ZEND_END_ARG_INFO(); + +%% +override gtk_tree_model_sort_convert_iter_to_child_iter +PHP_METHOD +{ + GtkTreeIter child_iter, *sort_iter = NULL; + zval *php_sort_iter; + + NOT_STATIC_METHOD(); + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_sort_iter, gboxed_ce)) + return; + + if (phpg_gboxed_check(php_sort_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) { + sort_iter = (GtkTreeIter *) PHPG_GBOXED(php_sort_iter); + } else { + php_error(E_WARNING, "%s::%s() expects sort_iter argument to be a valid GtkTreeIter object", + get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); + return; + } + + gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)), &child_iter, sort_iter); + + phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &child_iter, TRUE, TRUE TSRMLS_CC); +} + +%% }}} + %% {{{ GtkTreeSelection %% diff --git a/test/unittests/GtkTreeModelSortTest.php b/test/unittests/GtkTreeModelSortTest.php index 8b3978c..b804146 100644 --- a/test/unittests/GtkTreeModelSortTest.php +++ b/test/unittests/GtkTreeModelSortTest.php @@ -37,6 +37,14 @@ class GtkTreeModelSortTest extends PHPUnit2_Framework_TestCase { * @access protected */ protected function setUp() { + $this->mod = new GtkTreeStore(Gtk::TYPE_STRING); + $this->a = $this->mod->append(null, array('a')); + $this->b = $this->mod->append(null, array('b')); + $this->c = $this->mod->append(null, array('c')); + + $this->tms = new GtkTreeModelSort($this->mod); + $this->tms->set_default_sort_func(array($this, 'sortCallback')); + $this->tms->set_sort_column_id(0, Gtk::SORT_ASCENDING); } /** @@ -48,6 +56,10 @@ class GtkTreeModelSortTest extends PHPUnit2_Framework_TestCase { protected function tearDown() { } + public function sortCallback($model, $iter1, $iter2) { + var_dump($model, $iter1, $iter2); + } + /** * @todo Implement testClear_cache(). */ @@ -57,11 +69,21 @@ class GtkTreeModelSortTest extends PHPUnit2_Framework_TestCase { } /** - * @todo Implement testConvert_child_iter_to_iter(). + * */ public function testConvert_child_iter_to_iter() { - // Remove the following line when you implement this test. - throw new PHPUnit2_Framework_IncompleteTestError; + $child_a = $this->mod->get_iter_first(); + $this->assertNotNull($child_a); + $this->assertType('GtkTreeIter', $child_a); + + $sort_a = $this->tms->convert_child_iter_to_iter($child_a); + $this->assertNotNull($sort_a); + $this->assertType('GtkTreeIter', $sort_a); + + $this->assertEquals( + $this->mod->get_value($child_a, 0), + $this->tms->get_value($sort_a, 0) + ); } /** @@ -73,11 +95,21 @@ class GtkTreeModelSortTest extends PHPUnit2_Framework_TestCase { } /** - * @todo Implement testConvert_iter_to_child_iter(). + * */ public function testConvert_iter_to_child_iter() { - // Remove the following line when you implement this test. - throw new PHPUnit2_Framework_IncompleteTestError; + $sort_a = $this->tms->get_iter_first(); + $this->assertNotNull($sort_a); + $this->assertType('GtkTreeIter', $sort_a); + + $child_a = $this->tms->convert_iter_to_child_iter($sort_a); + $this->assertNotNull($child_a); + $this->assertType('GtkTreeIter', $child_a); + + $this->assertEquals( + $this->tms->get_value($sort_a, 0), + $this->mod->get_value($child_a, 0) + ); } /**