Mercurial > dwindows
comparison gtk/dw.c @ 12:26e2130135b9
Many Win32 and GTK fixes.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 06 Jul 2001 13:32:57 +0000 |
parents | 005fa766e8c2 |
children | 176cee043f1b |
comparison
equal
deleted
inserted
replaced
11:cfab3266106f | 12:26e2130135b9 |
---|---|
610 */ | 610 */ |
611 int dw_window_show(HWND handle) | 611 int dw_window_show(HWND handle) |
612 { | 612 { |
613 int _locked_by_me = FALSE; | 613 int _locked_by_me = FALSE; |
614 | 614 |
615 if(!handle) | |
616 return 0; | |
617 | |
615 DW_MUTEX_LOCK; | 618 DW_MUTEX_LOCK; |
616 gtk_widget_show(handle); | 619 gtk_widget_show(handle); |
617 DW_MUTEX_UNLOCK; | 620 DW_MUTEX_UNLOCK; |
618 return 0; | 621 return 0; |
619 } | 622 } |
625 */ | 628 */ |
626 int dw_window_hide(HWND handle) | 629 int dw_window_hide(HWND handle) |
627 { | 630 { |
628 int _locked_by_me = FALSE; | 631 int _locked_by_me = FALSE; |
629 | 632 |
633 if(!handle) | |
634 return 0; | |
635 | |
630 DW_MUTEX_LOCK; | 636 DW_MUTEX_LOCK; |
631 gtk_widget_hide(handle); | 637 gtk_widget_hide(handle); |
632 DW_MUTEX_UNLOCK; | 638 DW_MUTEX_UNLOCK; |
633 return 0; | 639 return 0; |
634 } | 640 } |
639 * handle: The window handle to destroy. | 645 * handle: The window handle to destroy. |
640 */ | 646 */ |
641 int dw_window_destroy(HWND handle) | 647 int dw_window_destroy(HWND handle) |
642 { | 648 { |
643 int _locked_by_me = FALSE; | 649 int _locked_by_me = FALSE; |
650 | |
651 if(!handle) | |
652 return 0; | |
644 | 653 |
645 DW_MUTEX_LOCK; | 654 DW_MUTEX_LOCK; |
646 gtk_widget_destroy(handle); | 655 gtk_widget_destroy(handle); |
647 DW_MUTEX_UNLOCK; | 656 DW_MUTEX_UNLOCK; |
648 return 0; | 657 return 0; |
721 | 730 |
722 gdk_color_alloc(_dw_cmap, &forecolor); | 731 gdk_color_alloc(_dw_cmap, &forecolor); |
723 gdk_color_alloc(_dw_cmap, &backcolor); | 732 gdk_color_alloc(_dw_cmap, &backcolor); |
724 | 733 |
725 style = gtk_widget_get_style(handle); | 734 style = gtk_widget_get_style(handle); |
726 style->fg[0] = forecolor; | 735 style->fg[1] = style->fg[0] = forecolor; |
727 style->bg[0] = backcolor; | 736 style->base[0] = style->base[1] = style->bg[0] = style->bg[1] = backcolor; |
728 gtk_widget_set_style(handle, style); | 737 gtk_widget_set_style(handle, style); |
729 } | 738 } |
730 else | 739 else |
731 { | 740 { |
732 style = gtk_widget_get_style(handle); | 741 style = gtk_widget_get_style(handle); |
733 style->fg[0] = _colors[fore]; | 742 style->fg[1] = style->fg[0] = _colors[fore]; |
734 style->bg[0] = _colors[back]; | 743 style->base[0] = style->base[1] = style->bg[0] = style->bg[1] = _colors[back]; |
735 gtk_widget_set_style(handle, style); | 744 gtk_widget_set_style(handle, style); |
736 } | 745 } |
737 | 746 |
738 return TRUE; | 747 return TRUE; |
739 } | 748 } |
755 { | 764 { |
756 GtkWidget *tmp = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)); | 765 GtkWidget *tmp = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)); |
757 if(tmp) | 766 if(tmp) |
758 handle2 = tmp; | 767 handle2 = tmp; |
759 } | 768 } |
769 else if(GTK_IS_BOX(handle)) | |
770 { | |
771 GtkWidget *tmp = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "mle"); | |
772 if(tmp) | |
773 handle2 = tmp; | |
774 } | |
775 | |
760 | 776 |
761 gtk_object_set_data(GTK_OBJECT(handle2), "fore", (gpointer)fore); | 777 gtk_object_set_data(GTK_OBJECT(handle2), "fore", (gpointer)fore); |
762 gtk_object_set_data(GTK_OBJECT(handle2), "back", (gpointer)back); | 778 gtk_object_set_data(GTK_OBJECT(handle2), "back", (gpointer)back); |
763 | 779 |
764 _set_color(handle2, fore, back); | 780 _set_color(handle2, fore, back); |
1044 */ | 1060 */ |
1045 HWND dw_menu_append_item(HMENUI menu, char *title, unsigned long id, unsigned long flags, int end, int check, HMENUI submenu) | 1061 HWND dw_menu_append_item(HMENUI menu, char *title, unsigned long id, unsigned long flags, int end, int check, HMENUI submenu) |
1046 { | 1062 { |
1047 GtkWidget *tmphandle; | 1063 GtkWidget *tmphandle; |
1048 char accel, *tempbuf = malloc(strlen(title)+1); | 1064 char accel, *tempbuf = malloc(strlen(title)+1); |
1049 int _locked_by_me = FALSE; | 1065 int _locked_by_me = FALSE, submenucount; |
1050 guint tmp_key; | 1066 guint tmp_key; |
1051 GtkAccelGroup *accel_group; | 1067 GtkAccelGroup *accel_group; |
1052 | 1068 |
1053 if(!menu || !menu->menu) | 1069 if(!menu || !menu->menu) |
1054 { | 1070 { |
1058 | 1074 |
1059 DW_MUTEX_LOCK; | 1075 DW_MUTEX_LOCK; |
1060 accel = _removetilde(tempbuf, title); | 1076 accel = _removetilde(tempbuf, title); |
1061 | 1077 |
1062 accel_group = (GtkAccelGroup *)gtk_object_get_data(GTK_OBJECT(menu->menu), "accel"); | 1078 accel_group = (GtkAccelGroup *)gtk_object_get_data(GTK_OBJECT(menu->menu), "accel"); |
1079 submenucount = (int)gtk_object_get_data(GTK_OBJECT(menu->menu), "submenucount"); | |
1063 | 1080 |
1064 if(strlen(tempbuf) == 0) | 1081 if(strlen(tempbuf) == 0) |
1065 tmphandle=gtk_menu_item_new(); | 1082 tmphandle=gtk_menu_item_new(); |
1066 else | 1083 else |
1067 { | 1084 { |
1094 } | 1111 } |
1095 | 1112 |
1096 gtk_widget_show(tmphandle); | 1113 gtk_widget_show(tmphandle); |
1097 | 1114 |
1098 if(submenu) | 1115 if(submenu) |
1116 { | |
1117 char tempbuf[100]; | |
1118 | |
1119 sprintf(tempbuf, "submenu%d", submenucount); | |
1120 submenucount++; | |
1099 gtk_menu_item_set_submenu(GTK_MENU_ITEM(tmphandle), submenu->menu); | 1121 gtk_menu_item_set_submenu(GTK_MENU_ITEM(tmphandle), submenu->menu); |
1122 gtk_object_set_data(GTK_OBJECT(menu->menu), tempbuf, (gpointer)submenu->menu); | |
1123 gtk_object_set_data(GTK_OBJECT(menu->menu), "submenucount", (gpointer)submenucount); | |
1124 } | |
1100 | 1125 |
1101 if(GTK_IS_MENU_BAR(menu->menu)) | 1126 if(GTK_IS_MENU_BAR(menu->menu)) |
1102 gtk_menu_bar_append(GTK_MENU_BAR(menu->menu), tmphandle); | 1127 gtk_menu_bar_append(GTK_MENU_BAR(menu->menu), tmphandle); |
1103 else | 1128 else |
1104 gtk_menu_append(GTK_MENU(menu->menu), tmphandle); | 1129 gtk_menu_append(GTK_MENU(menu->menu), tmphandle); |
1107 free(tempbuf); | 1132 free(tempbuf); |
1108 DW_MUTEX_UNLOCK; | 1133 DW_MUTEX_UNLOCK; |
1109 return tmphandle; | 1134 return tmphandle; |
1110 } | 1135 } |
1111 | 1136 |
1137 GtkWidget *_find_submenu_id(GtkWidget *start, char *name) | |
1138 { | |
1139 GtkWidget *tmp; | |
1140 int z, submenucount = (int)gtk_object_get_data(GTK_OBJECT(start), "submenucount"); | |
1141 | |
1142 if((tmp = gtk_object_get_data(GTK_OBJECT(start), name))) | |
1143 return tmp; | |
1144 | |
1145 for(z=0;z<submenucount;z++) | |
1146 { | |
1147 char tempbuf[100]; | |
1148 GtkWidget *submenu, *menuitem; | |
1149 | |
1150 sprintf(tempbuf, "submenu%d", z); | |
1151 | |
1152 if((submenu = gtk_object_get_data(GTK_OBJECT(start), tempbuf))) | |
1153 { | |
1154 if((menuitem = _find_submenu_id(submenu, name))) | |
1155 return menuitem; | |
1156 } | |
1157 } | |
1158 return NULL; | |
1159 } | |
1160 | |
1112 /* | 1161 /* |
1113 * Sets the state of a menu item check. | 1162 * Sets the state of a menu item check. |
1114 * Parameters: | 1163 * Parameters: |
1115 * menu: The handle the the existing menu. | 1164 * menu: The handle the the existing menu. |
1116 * id: Menuitem id. | 1165 * id: Menuitem id. |
1117 * check: TRUE for checked FALSE for not checked. | 1166 * check: TRUE for checked FALSE for not checked. |
1118 */ | 1167 */ |
1119 void dw_menu_item_set_check(HMENUI menu, int id, int check) | 1168 void dw_menu_item_set_check(HMENUI menu, unsigned long id, int check) |
1120 { | 1169 { |
1121 char numbuf[10]; | 1170 char numbuf[10]; |
1122 GtkWidget *tmphandle; | 1171 GtkWidget *tmphandle; |
1123 int _locked_by_me = FALSE; | 1172 int _locked_by_me = FALSE; |
1124 | 1173 |
1125 if(!menu || !menu->menu) | 1174 if(!menu || !menu->menu) |
1126 return; | 1175 return; |
1127 | 1176 |
1128 DW_MUTEX_LOCK; | 1177 DW_MUTEX_LOCK; |
1129 sprintf(numbuf, "%d", id); | 1178 sprintf(numbuf, "%lu", id); |
1130 tmphandle = gtk_object_get_data(GTK_OBJECT(menu->menu), numbuf); | 1179 tmphandle = _find_submenu_id(menu->menu, numbuf); |
1131 | 1180 |
1132 if(tmphandle) | 1181 if(tmphandle) |
1133 { | 1182 { |
1134 if(GTK_CHECK_MENU_ITEM(tmphandle)->active != check) | 1183 if(GTK_CHECK_MENU_ITEM(tmphandle)->active != check) |
1135 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tmphandle), check); | 1184 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tmphandle), check); |
3220 void dw_window_get_pos_size(HWND handle, ULONG *x, ULONG *y, ULONG *width, ULONG *height) | 3269 void dw_window_get_pos_size(HWND handle, ULONG *x, ULONG *y, ULONG *width, ULONG *height) |
3221 { | 3270 { |
3222 int _locked_by_me = FALSE; | 3271 int _locked_by_me = FALSE; |
3223 gint gx, gy, gwidth, gheight, gdepth; | 3272 gint gx, gy, gwidth, gheight, gdepth; |
3224 | 3273 |
3225 if(handle->window) | 3274 if(handle && handle->window) |
3226 { | 3275 { |
3227 DW_MUTEX_LOCK; | 3276 DW_MUTEX_LOCK; |
3228 gdk_window_get_geometry(handle->window, &gx, &gy, &gwidth, &gheight, &gdepth); | 3277 gdk_window_get_geometry(handle->window, &gx, &gy, &gwidth, &gheight, &gdepth); |
3229 gdk_window_get_root_origin(handle->window, &gx, &gy); | 3278 gdk_window_get_root_origin(handle->window, &gx, &gy); |
3230 if(x) | 3279 if(x) |