comparison gtk/dw.c @ 139:ccf210251c99

Implemented GTK 2.0 tree delete etc. just signal handlers left.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 22 Oct 2002 01:59:52 +0000
parents d22b50184e3b
children e0e73b4372a6
comparison
equal deleted inserted replaced
138:d22b50184e3b 139:ccf210251c99
3194 */ 3194 */
3195 HWND dw_tree_insert_after(HWND handle, HWND item, char *title, unsigned long icon, HWND parent, void *itemdata) 3195 HWND dw_tree_insert_after(HWND handle, HWND item, char *title, unsigned long icon, HWND parent, void *itemdata)
3196 { 3196 {
3197 #if GTK_MAJOR_VERSION > 1 3197 #if GTK_MAJOR_VERSION > 1
3198 GtkWidget *tree; 3198 GtkWidget *tree;
3199 GtkTreeIter *iter; 3199 GtkTreeIter iter;
3200 GtkTreeStore *store; 3200 GtkTreeStore *store;
3201 GdkPixbuf *pixbuf; 3201 GdkPixbuf *pixbuf;
3202 HWND retval = 0; 3202 HWND retval = 0;
3203 int _locked_by_me = FALSE; 3203 int _locked_by_me = FALSE;
3204 3204
3208 DW_MUTEX_LOCK; 3208 DW_MUTEX_LOCK;
3209 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle))) 3209 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
3210 && GTK_IS_TREE_VIEW(tree) && 3210 && GTK_IS_TREE_VIEW(tree) &&
3211 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store"))) 3211 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3212 { 3212 {
3213 iter = malloc(sizeof(GtkTreeIter));
3214 pixbuf = _find_pixbuf(icon); 3213 pixbuf = _find_pixbuf(icon);
3215 3214
3216 gtk_tree_store_insert_after(store, iter, (GtkTreeIter *)parent, (GtkTreeIter *)item); 3215 gtk_tree_store_insert_after(store, &iter, (GtkTreeIter *)parent, (GtkTreeIter *)item);
3217 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, -1); 3216 gtk_tree_store_set (store, &iter, 0, title, 1, pixbuf, -1);
3218 retval = (HWND)iter; 3217 g_object_unref(pixbuf);
3218 retval = (HWND)gtk_tree_iter_copy(&iter);
3219 } 3219 }
3220 DW_MUTEX_UNLOCK; 3220 DW_MUTEX_UNLOCK;
3221 3221
3222 return retval; 3222 return retval;
3223 #else 3223 #else
3318 */ 3318 */
3319 HWND dw_tree_insert(HWND handle, char *title, unsigned long icon, HWND parent, void *itemdata) 3319 HWND dw_tree_insert(HWND handle, char *title, unsigned long icon, HWND parent, void *itemdata)
3320 { 3320 {
3321 #if GTK_MAJOR_VERSION > 1 3321 #if GTK_MAJOR_VERSION > 1
3322 GtkWidget *tree; 3322 GtkWidget *tree;
3323 GtkTreeIter *iter; 3323 GtkTreeIter iter;
3324 GtkTreeStore *store; 3324 GtkTreeStore *store;
3325 GdkPixbuf *pixbuf; 3325 GdkPixbuf *pixbuf;
3326 HWND retval = 0; 3326 HWND retval = 0;
3327 int _locked_by_me = FALSE; 3327 int _locked_by_me = FALSE;
3328 3328
3332 DW_MUTEX_LOCK; 3332 DW_MUTEX_LOCK;
3333 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle))) 3333 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
3334 && GTK_IS_TREE_VIEW(tree) && 3334 && GTK_IS_TREE_VIEW(tree) &&
3335 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store"))) 3335 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3336 { 3336 {
3337 iter = malloc(sizeof(GtkTreeIter));
3338
3339 pixbuf = _find_pixbuf(icon); 3337 pixbuf = _find_pixbuf(icon);
3340 3338
3341 gtk_tree_store_append (store, iter, (GtkTreeIter *)parent); 3339 gtk_tree_store_append (store, &iter, (GtkTreeIter *)parent);
3342 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, -1); 3340 gtk_tree_store_set (store, &iter, 0, title, 1, pixbuf, -1);
3343 retval = (HWND)iter; 3341 g_object_unref(pixbuf);
3342 retval = (HWND)gtk_tree_iter_copy(&iter);
3344 } 3343 }
3345 DW_MUTEX_UNLOCK; 3344 DW_MUTEX_UNLOCK;
3346 3345
3347 return retval; 3346 return retval;
3348 #else 3347 #else
3449 && GTK_IS_TREE_VIEW(tree) && 3448 && GTK_IS_TREE_VIEW(tree) &&
3450 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store"))) 3449 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3451 { 3450 {
3452 pixbuf = _find_pixbuf(icon); 3451 pixbuf = _find_pixbuf(icon);
3453 3452
3454 gtk_tree_store_set (store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1); 3453 gtk_tree_store_set(store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1);
3454 g_object_unref(pixbuf);
3455 } 3455 }
3456 DW_MUTEX_UNLOCK; 3456 DW_MUTEX_UNLOCK;
3457 #else 3457 #else
3458 GtkWidget *label, *hbox, *pixmap; 3458 GtkWidget *label, *hbox, *pixmap;
3459 GdkPixmap *gdkpix; 3459 GdkPixmap *gdkpix;
3516 * item: Handle to the item to be selected. 3516 * item: Handle to the item to be selected.
3517 */ 3517 */
3518 void dw_tree_item_select(HWND handle, HWND item) 3518 void dw_tree_item_select(HWND handle, HWND item)
3519 { 3519 {
3520 #if GTK_MAJOR_VERSION > 1 3520 #if GTK_MAJOR_VERSION > 1
3521 GtkWidget *tree;
3522 GtkTreeStore *store;
3523 int _locked_by_me = FALSE;
3524
3525 if(!handle)
3526 return;
3527
3528 DW_MUTEX_LOCK;
3529 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
3530 && GTK_IS_TREE_VIEW(tree) &&
3531 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3532 {
3533 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
3534 gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree), path, NULL, FALSE);
3535 gtk_tree_path_free(path);
3536 }
3537 DW_MUTEX_UNLOCK;
3521 #else 3538 #else
3522 GtkWidget *lastselect, *tree; 3539 GtkWidget *lastselect, *tree;
3523 int _locked_by_me = FALSE; 3540 int _locked_by_me = FALSE;
3524 3541
3525 if(!handle || !item) 3542 if(!handle || !item)
3543 */ 3560 */
3544 void dw_tree_clear(HWND handle) 3561 void dw_tree_clear(HWND handle)
3545 { 3562 {
3546 #if GTK_MAJOR_VERSION > 1 3563 #if GTK_MAJOR_VERSION > 1
3547 GtkWidget *tree; 3564 GtkWidget *tree;
3565 GtkTreeStore *store;
3548 int _locked_by_me = FALSE; 3566 int _locked_by_me = FALSE;
3549 3567
3550 if(!handle) 3568 if(!handle)
3551 return; 3569 return;
3552 3570
3553 DW_MUTEX_LOCK; 3571 DW_MUTEX_LOCK;
3572 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
3573 && GTK_IS_TREE_VIEW(tree) &&
3574 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3575 gtk_tree_store_clear(store);
3576 DW_MUTEX_UNLOCK;
3577 #else
3578 GtkWidget *tree;
3579 int _locked_by_me = FALSE;
3580
3581 if(!handle)
3582 return;
3583
3584 DW_MUTEX_LOCK;
3554 tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)); 3585 tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle));
3555 if(!tree || !GTK_IS_TREE(tree)) 3586 if(!tree || !GTK_IS_TREE(tree))
3556 { 3587 {
3557 DW_MUTEX_UNLOCK; 3588 DW_MUTEX_UNLOCK;
3558 return; 3589 return;
3570 * item: Handle to node to be expanded. 3601 * item: Handle to node to be expanded.
3571 */ 3602 */
3572 void dw_tree_expand(HWND handle, HWND item) 3603 void dw_tree_expand(HWND handle, HWND item)
3573 { 3604 {
3574 #if GTK_MAJOR_VERSION > 1 3605 #if GTK_MAJOR_VERSION > 1
3606 GtkWidget *tree;
3607 GtkTreeStore *store;
3608 int _locked_by_me = FALSE;
3609
3610 if(!handle)
3611 return;
3612
3613 DW_MUTEX_LOCK;
3614 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
3615 && GTK_IS_TREE_VIEW(tree) &&
3616 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3617 {
3618 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
3619 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), path, FALSE);
3620 gtk_tree_path_free(path);
3621 }
3622 DW_MUTEX_UNLOCK;
3575 #else 3623 #else
3576 int _locked_by_me = FALSE; 3624 int _locked_by_me = FALSE;
3577 3625
3578 if(!handle || !item) 3626 if(!handle || !item)
3579 return; 3627 return;
3592 * item: Handle to node to be collapsed. 3640 * item: Handle to node to be collapsed.
3593 */ 3641 */
3594 void dw_tree_collapse(HWND handle, HWND item) 3642 void dw_tree_collapse(HWND handle, HWND item)
3595 { 3643 {
3596 #if GTK_MAJOR_VERSION > 1 3644 #if GTK_MAJOR_VERSION > 1
3645 GtkWidget *tree;
3646 GtkTreeStore *store;
3647 int _locked_by_me = FALSE;
3648
3649 if(!handle)
3650 return;
3651
3652 DW_MUTEX_LOCK;
3653 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
3654 && GTK_IS_TREE_VIEW(tree) &&
3655 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3656 {
3657 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
3658 gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), path);
3659 gtk_tree_path_free(path);
3660 }
3661 DW_MUTEX_UNLOCK;
3597 #else 3662 #else
3598 int _locked_by_me = FALSE; 3663 int _locked_by_me = FALSE;
3599 3664
3600 if(!handle || !item) 3665 if(!handle || !item)
3601 return; 3666 return;
3614 * item: Handle to node to be deleted. 3679 * item: Handle to node to be deleted.
3615 */ 3680 */
3616 void dw_tree_delete(HWND handle, HWND item) 3681 void dw_tree_delete(HWND handle, HWND item)
3617 { 3682 {
3618 #if GTK_MAJOR_VERSION > 1 3683 #if GTK_MAJOR_VERSION > 1
3684 GtkWidget *tree;
3685 GtkTreeStore *store;
3686 int _locked_by_me = FALSE;
3687
3688 if(!handle)
3689 return;
3690
3691 DW_MUTEX_LOCK;
3692 if((tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)))
3693 && GTK_IS_TREE_VIEW(tree) &&
3694 (store = (GtkTreeStore *)gtk_object_get_data(GTK_OBJECT(tree), "_dw_tree_store")))
3695 {
3696 gtk_tree_store_remove(store, (GtkTreeIter *)item);
3697 gtk_tree_iter_free((GtkTreeIter *)item);
3698 }
3699 DW_MUTEX_UNLOCK;
3619 #else 3700 #else
3620 GtkWidget *tree, *lastselect, *parenttree; 3701 GtkWidget *tree, *lastselect, *parenttree;
3621 int _locked_by_me = FALSE; 3702 int _locked_by_me = FALSE;
3622 3703
3623 if(!handle || !item || !GTK_IS_WIDGET(handle) || !GTK_IS_WIDGET(item)) 3704 if(!handle || !item || !GTK_IS_WIDGET(handle) || !GTK_IS_WIDGET(item))