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)