Mercurial > dwindows
comparison gtk/dw.c @ 72:ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 15 Feb 2002 09:30:50 +0000 |
parents | 9510897c0b03 |
children | c629838d9805 |
comparison
equal
deleted
inserted
replaced
71:291c30a92b9b | 72:ab77a22a2a36 |
---|---|
3261 gtk_signal_connect(GTK_OBJECT(clist), "unselect_row", GTK_SIGNAL_FUNC(_unselect_row), NULL); | 3261 gtk_signal_connect(GTK_OBJECT(clist), "unselect_row", GTK_SIGNAL_FUNC(_unselect_row), NULL); |
3262 | 3262 |
3263 gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE); | 3263 gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE); |
3264 gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_SINGLE); | 3264 gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_SINGLE); |
3265 gtk_container_add(GTK_CONTAINER(handle), clist); | 3265 gtk_container_add(GTK_CONTAINER(handle), clist); |
3266 gtk_object_set_data(GTK_OBJECT(clist), "multi", (gpointer)0); | |
3266 gtk_object_set_user_data(GTK_OBJECT(handle), (gpointer)clist); | 3267 gtk_object_set_user_data(GTK_OBJECT(handle), (gpointer)clist); |
3267 gtk_widget_show(clist); | 3268 gtk_widget_show(clist); |
3268 gtk_object_set_data(GTK_OBJECT(clist), "colcount", (gpointer)count); | 3269 gtk_object_set_data(GTK_OBJECT(clist), "colcount", (gpointer)count); |
3269 | 3270 |
3270 if(extra) | 3271 if(extra) |
3346 */ | 3347 */ |
3347 void dw_icon_free(unsigned long handle) | 3348 void dw_icon_free(unsigned long handle) |
3348 { | 3349 { |
3349 } | 3350 } |
3350 | 3351 |
3352 /* Clears a CList selection and associated selection list */ | |
3353 void _dw_unselect(GtkWidget *clist) | |
3354 { | |
3355 GList *list = (GList *)gtk_object_get_data(GTK_OBJECT(clist), "selectlist"); | |
3356 | |
3357 if(list) | |
3358 g_list_free(list); | |
3359 | |
3360 gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL); | |
3361 gtk_clist_unselect_all(GTK_CLIST(clist)); | |
3362 } | |
3363 | |
3351 /* | 3364 /* |
3352 * Allocates memory used to populate a container. | 3365 * Allocates memory used to populate a container. |
3353 * Parameters: | 3366 * Parameters: |
3354 * handle: Handle to the container window (widget). | 3367 * handle: Handle to the container window (widget). |
3355 * rowcount: The number of items to be populated. | 3368 * rowcount: The number of items to be populated. |
3567 * rowcount: The number of rows to be deleted. | 3580 * rowcount: The number of rows to be deleted. |
3568 */ | 3581 */ |
3569 void dw_container_delete(HWND handle, int rowcount) | 3582 void dw_container_delete(HWND handle, int rowcount) |
3570 { | 3583 { |
3571 GtkWidget *clist; | 3584 GtkWidget *clist; |
3572 GList *list; | |
3573 int _locked_by_me = FALSE; | 3585 int _locked_by_me = FALSE; |
3574 | 3586 |
3575 DW_MUTEX_LOCK; | 3587 DW_MUTEX_LOCK; |
3576 clist = (GtkWidget*)gtk_object_get_user_data(GTK_OBJECT(handle)); | 3588 clist = (GtkWidget*)gtk_object_get_user_data(GTK_OBJECT(handle)); |
3577 if(clist && GTK_IS_CLIST(clist)) | 3589 if(clist && GTK_IS_CLIST(clist)) |
3578 { | 3590 { |
3579 int rows, z; | 3591 int rows, z; |
3580 | 3592 |
3581 list = (GList *)gtk_object_get_data(GTK_OBJECT(clist), "selectlist"); | |
3582 rows = (int)gtk_object_get_data(GTK_OBJECT(clist), "rowcount"); | 3593 rows = (int)gtk_object_get_data(GTK_OBJECT(clist), "rowcount"); |
3583 g_list_free(list); | 3594 |
3595 _dw_unselect(clist); | |
3584 | 3596 |
3585 for(z=0;z<rowcount;z++) | 3597 for(z=0;z<rowcount;z++) |
3586 gtk_clist_remove(GTK_CLIST(clist), 0); | 3598 gtk_clist_remove(GTK_CLIST(clist), 0); |
3587 | 3599 |
3588 if(rows - rowcount < 0) | 3600 if(rows - rowcount < 0) |
3589 rows = 0; | 3601 rows = 0; |
3590 else | 3602 else |
3591 rows -= rowcount; | 3603 rows -= rowcount; |
3592 | 3604 |
3593 gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL); | |
3594 gtk_object_set_data(GTK_OBJECT(clist), "rowcount", (gpointer)rows); | 3605 gtk_object_set_data(GTK_OBJECT(clist), "rowcount", (gpointer)rows); |
3595 } | 3606 } |
3596 DW_MUTEX_UNLOCK; | 3607 DW_MUTEX_UNLOCK; |
3597 } | 3608 } |
3598 | 3609 |
3603 * redraw: TRUE to cause the container to redraw immediately. | 3614 * redraw: TRUE to cause the container to redraw immediately. |
3604 */ | 3615 */ |
3605 void dw_container_clear(HWND handle, int redraw) | 3616 void dw_container_clear(HWND handle, int redraw) |
3606 { | 3617 { |
3607 GtkWidget *clist; | 3618 GtkWidget *clist; |
3608 GList *list; | |
3609 int _locked_by_me = FALSE; | 3619 int _locked_by_me = FALSE; |
3610 | 3620 |
3611 DW_MUTEX_LOCK; | 3621 DW_MUTEX_LOCK; |
3612 clist = (GtkWidget*)gtk_object_get_user_data(GTK_OBJECT(handle)); | 3622 clist = (GtkWidget*)gtk_object_get_user_data(GTK_OBJECT(handle)); |
3613 if(clist && GTK_IS_CLIST(clist)) | 3623 if(clist && GTK_IS_CLIST(clist)) |
3614 { | 3624 { |
3615 list = (GList *)gtk_object_get_data(GTK_OBJECT(clist), "selectlist"); | 3625 _dw_unselect(clist); |
3616 g_list_free(list); | |
3617 gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL); | |
3618 gtk_clist_clear(GTK_CLIST(clist)); | 3626 gtk_clist_clear(GTK_CLIST(clist)); |
3619 gtk_object_set_data(GTK_OBJECT(clist), "rowcount", (gpointer)0); | 3627 gtk_object_set_data(GTK_OBJECT(clist), "rowcount", (gpointer)0); |
3620 } | 3628 } |
3621 DW_MUTEX_UNLOCK; | 3629 DW_MUTEX_UNLOCK; |
3622 } | 3630 } |
3809 rowdata = gtk_clist_get_row_data(GTK_CLIST(clist), z); | 3817 rowdata = gtk_clist_get_row_data(GTK_CLIST(clist), z); |
3810 if(rowdata == text) | 3818 if(rowdata == text) |
3811 { | 3819 { |
3812 gfloat pos; | 3820 gfloat pos; |
3813 GtkAdjustment *adj = gtk_clist_get_vadjustment(GTK_CLIST(clist)); | 3821 GtkAdjustment *adj = gtk_clist_get_vadjustment(GTK_CLIST(clist)); |
3822 | |
3823 _dw_unselect(clist); | |
3824 | |
3814 gtk_clist_select_row(GTK_CLIST(clist), z, 0); | 3825 gtk_clist_select_row(GTK_CLIST(clist), z, 0); |
3815 | 3826 |
3816 pos = ((adj->upper - adj->lower) * ((gfloat)z/(gfloat)rowcount)) + adj->lower; | 3827 pos = ((adj->upper - adj->lower) * ((gfloat)z/(gfloat)rowcount)) + adj->lower; |
3817 gtk_adjustment_set_value(adj, pos); | 3828 gtk_adjustment_set_value(adj, pos); |
3818 DW_MUTEX_UNLOCK; | 3829 DW_MUTEX_UNLOCK; |