comparison gtk3/dw.c @ 1913:5d32be499016

The GTK MDI code is filling up with deprecated calls and it is becoming a hassle to maintain, it still builds just with many warnings... however since MDI is considered deprecated due to lack of support on MacOS X, I am making the GTK MDI code build optional with the --with-deprecated configure switch. MDI code will still be built on Windows and OS/2... With stub code on MacOS X... GTK will require the --with-deprecated switch to build the code.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 19 Jun 2016 18:08:52 +0000
parents 5035750bcc65
children 98579be1198e
comparison
equal deleted inserted replaced
1912:5035750bcc65 1913:5d32be499016
229 #define DW_LEFT 0.0f 229 #define DW_LEFT 0.0f
230 #define DW_RIGHT 1.0f 230 #define DW_RIGHT 1.0f
231 #define DW_TOP 0.0f 231 #define DW_TOP 0.0f
232 #define DW_BOTTOM 1.0f 232 #define DW_BOTTOM 1.0f
233 233
234 #ifdef DW_INCLUDE_DEPRECATED
234 /* MDI Support Code */ 235 /* MDI Support Code */
235 #define GTK_MDI(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_mdi_get_type (), GtkMdi) 236 #define GTK_MDI(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_mdi_get_type (), GtkMdi)
236 #define GTK_MDI_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_mdi_get_type (), GtkMdiClass) 237 #define GTK_MDI_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_mdi_get_type (), GtkMdiClass)
237 #define GTK_IS_MDI(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_mdi_get_type ()) 238 #define GTK_IS_MDI(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_mdi_get_type ())
238 239
1052 return child; 1053 return child;
1053 } 1054 }
1054 1055
1055 return NULL; 1056 return NULL;
1056 } 1057 }
1058 #endif
1057 1059
1058 static void _dw_msleep(long period) 1060 static void _dw_msleep(long period)
1059 { 1061 {
1060 #ifdef __sun__ 1062 #ifdef __sun__
1061 /* usleep() isn't threadsafe on Solaris */ 1063 /* usleep() isn't threadsafe on Solaris */
2294 * handle: The window handle to minimize. 2296 * handle: The window handle to minimize.
2295 */ 2297 */
2296 int dw_window_minimize(HWND handle) 2298 int dw_window_minimize(HWND handle)
2297 { 2299 {
2298 int _locked_by_me = FALSE; 2300 int _locked_by_me = FALSE;
2301 #ifdef DW_INCLUDE_DEPRECATED
2299 GtkWidget *mdi = NULL; 2302 GtkWidget *mdi = NULL;
2303 #endif
2300 2304
2301 if(!handle) 2305 if(!handle)
2302 return 0; 2306 return 0;
2303 2307
2304 DW_MUTEX_LOCK; 2308 DW_MUTEX_LOCK;
2309 #ifdef DW_INCLUDE_DEPRECATED
2305 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) 2310 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2306 { 2311 {
2307 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED); 2312 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED);
2308 } 2313 }
2309 else 2314 else
2315 #endif
2310 { 2316 {
2311 gtk_window_iconify( GTK_WINDOW(handle) ); 2317 gtk_window_iconify( GTK_WINDOW(handle) );
2312 } 2318 }
2313 DW_MUTEX_UNLOCK; 2319 DW_MUTEX_UNLOCK;
2314 return 0; 2320 return 0;
2357 */ 2363 */
2358 int dw_window_show(HWND handle) 2364 int dw_window_show(HWND handle)
2359 { 2365 {
2360 int _locked_by_me = FALSE; 2366 int _locked_by_me = FALSE;
2361 GtkWidget *defaultitem; 2367 GtkWidget *defaultitem;
2368 #ifdef DW_INCLUDE_DEPRECATED
2362 GtkWidget *mdi; 2369 GtkWidget *mdi;
2370 #endif
2363 2371
2364 if (!handle) 2372 if (!handle)
2365 return 0; 2373 return 0;
2366 2374
2367 DW_MUTEX_LOCK; 2375 DW_MUTEX_LOCK;
2368 gtk_widget_show(handle); 2376 gtk_widget_show(handle);
2377 #ifdef DW_INCLUDE_DEPRECATED
2369 if ((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) 2378 if ((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2370 { 2379 {
2371 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_NORMAL); 2380 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_NORMAL);
2372 } 2381 }
2373 else 2382 else
2383 #endif
2374 { 2384 {
2375 GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(handle)); 2385 GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(handle));
2376 if (window && gtk_widget_get_mapped(handle)) 2386 if (window && gtk_widget_get_mapped(handle))
2377 { 2387 {
2378 int width = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_width")); 2388 int width = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_width"));
2419 * handle: The window handle to make visible. 2429 * handle: The window handle to make visible.
2420 */ 2430 */
2421 int dw_window_hide(HWND handle) 2431 int dw_window_hide(HWND handle)
2422 { 2432 {
2423 int _locked_by_me = FALSE; 2433 int _locked_by_me = FALSE;
2434 #ifdef DW_INCLUDE_DEPRECATED
2424 GtkWidget *mdi = NULL; 2435 GtkWidget *mdi = NULL;
2436 #endif
2425 2437
2426 if(!handle) 2438 if(!handle)
2427 return 0; 2439 return 0;
2428 2440
2429 DW_MUTEX_LOCK; 2441 DW_MUTEX_LOCK;
2442 #ifdef DW_INCLUDE_DEPRECATED
2430 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) 2443 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2431 { 2444 {
2432 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED); 2445 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED);
2433 } 2446 }
2434 else 2447 else
2448 #endif
2435 gtk_widget_hide(handle); 2449 gtk_widget_hide(handle);
2436 DW_MUTEX_UNLOCK; 2450 DW_MUTEX_UNLOCK;
2437 return 0; 2451 return 0;
2438 } 2452 }
2439 2453
2443 * handle: The window handle to destroy. 2457 * handle: The window handle to destroy.
2444 */ 2458 */
2445 int dw_window_destroy(HWND handle) 2459 int dw_window_destroy(HWND handle)
2446 { 2460 {
2447 int _locked_by_me = FALSE; 2461 int _locked_by_me = FALSE;
2462 #ifdef DW_INCLUDE_DEPRECATED
2448 GtkWidget *mdi = NULL; 2463 GtkWidget *mdi = NULL;
2464 #endif
2449 2465
2450 if(!handle) 2466 if(!handle)
2451 return 0; 2467 return 0;
2452 2468
2453 DW_MUTEX_LOCK; 2469 DW_MUTEX_LOCK;
2470 #ifdef DW_INCLUDE_DEPRECATED
2454 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) 2471 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2455 { 2472 {
2456 gtk_mdi_remove(GTK_MDI(mdi), handle); 2473 gtk_mdi_remove(GTK_MDI(mdi), handle);
2457 } 2474 }
2475 #endif
2458 if(GTK_IS_WIDGET(handle)) 2476 if(GTK_IS_WIDGET(handle))
2459 { 2477 {
2460 GtkWidget *box, *handle2 = handle; 2478 GtkWidget *box, *handle2 = handle;
2461 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox"); 2479 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox");
2462 2480
2949 GtkWidget *tmp; 2967 GtkWidget *tmp;
2950 int _locked_by_me = FALSE; 2968 int _locked_by_me = FALSE;
2951 int flags = 0; 2969 int flags = 0;
2952 2970
2953 DW_MUTEX_LOCK; 2971 DW_MUTEX_LOCK;
2972 #ifdef DW_INCLUDE_DEPRECATED
2954 if(hwndOwner && GTK_IS_MDI(hwndOwner)) 2973 if(hwndOwner && GTK_IS_MDI(hwndOwner))
2955 { 2974 {
2956 GtkWidget *label; 2975 GtkWidget *label;
2957 2976
2958 tmp = dw_box_new(DW_VERT, 0); 2977 tmp = dw_box_new(DW_VERT, 0);
2964 g_object_set_data(G_OBJECT(tmp), "_dw_mdi", (gpointer)hwndOwner); 2983 g_object_set_data(G_OBJECT(tmp), "_dw_mdi", (gpointer)hwndOwner);
2965 2984
2966 gtk_mdi_put(GTK_MDI(hwndOwner), tmp, 100, 75, label); 2985 gtk_mdi_put(GTK_MDI(hwndOwner), tmp, 100, 75, label);
2967 } 2986 }
2968 else 2987 else
2988 #endif
2969 { 2989 {
2970 GtkWidget *box = dw_box_new(DW_VERT, 0); 2990 GtkWidget *box = dw_box_new(DW_VERT, 0);
2971 GtkWidget *grid = gtk_grid_new(); 2991 GtkWidget *grid = gtk_grid_new();
2972 2992
2973 gtk_widget_show_all(grid); 2993 gtk_widget_show_all(grid);
3163 dw_window_set_font(frame, _DWDefaultFont); 3183 dw_window_set_font(frame, _DWDefaultFont);
3164 DW_MUTEX_UNLOCK; 3184 DW_MUTEX_UNLOCK;
3165 return frame; 3185 return frame;
3166 } 3186 }
3167 3187
3188 #ifdef DW_INCLUDE_DEPRECATED
3168 /* 3189 /*
3169 * Create a new MDI Frame to be packed. 3190 * Create a new MDI Frame to be packed.
3170 * Parameters: 3191 * Parameters:
3171 * id: An ID to be used with dw_window_from_id or 0L. 3192 * id: An ID to be used with dw_window_from_id or 0L.
3172 */ 3193 */
3179 tmp = gtk_mdi_new(); 3200 tmp = gtk_mdi_new();
3180 gtk_widget_show(tmp); 3201 gtk_widget_show(tmp);
3181 DW_MUTEX_UNLOCK; 3202 DW_MUTEX_UNLOCK;
3182 return tmp; 3203 return tmp;
3183 } 3204 }
3205 #endif
3184 3206
3185 /* 3207 /*
3186 * Create a bitmap object to be packed. 3208 * Create a bitmap object to be packed.
3187 * Parameters: 3209 * Parameters:
3188 * id: An ID to be used with dw_window_from_id() or 0L. 3210 * id: An ID to be used with dw_window_from_id() or 0L.
3757 3779
3758 DW_MUTEX_LOCK; 3780 DW_MUTEX_LOCK;
3759 tmp = gtk_label_new(text); 3781 tmp = gtk_label_new(text);
3760 3782
3761 /* Left and centered */ 3783 /* Left and centered */
3762 gtk_misc_set_alignment(GTK_MISC(tmp), 0.0f, 0.5f); 3784 gtk_label_set_xalign(GTK_LABEL(tmp), 0.0f);
3785 gtk_label_set_yalign(GTK_LABEL(tmp), 0.5f);
3763 gtk_widget_show(tmp); 3786 gtk_widget_show(tmp);
3764 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); 3787 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
3765 gtk_misc_set_alignment(GTK_MISC(tmp), DW_LEFT, DW_LEFT);
3766 if(_DWDefaultFont) 3788 if(_DWDefaultFont)
3767 dw_window_set_font(tmp, _DWDefaultFont); 3789 dw_window_set_font(tmp, _DWDefaultFont);
3768 DW_MUTEX_UNLOCK; 3790 DW_MUTEX_UNLOCK;
3769 return tmp; 3791 return tmp;
3770 } 3792 }
3787 gtk_container_add(GTK_CONTAINER(frame), tmp); 3809 gtk_container_add(GTK_CONTAINER(frame), tmp);
3788 gtk_widget_show(tmp); 3810 gtk_widget_show(tmp);
3789 gtk_widget_show(frame); 3811 gtk_widget_show(frame);
3790 3812
3791 /* Left and centered */ 3813 /* Left and centered */
3792 gtk_misc_set_alignment(GTK_MISC(tmp), 0.0f, 0.5f); 3814 gtk_label_set_xalign(GTK_LABEL(tmp), 0.0f);
3815 gtk_label_set_yalign(GTK_LABEL(tmp), 0.5f);
3793 g_object_set_data(G_OBJECT(frame), "_dw_id", GINT_TO_POINTER(id)); 3816 g_object_set_data(G_OBJECT(frame), "_dw_id", GINT_TO_POINTER(id));
3794 g_object_set_data(G_OBJECT(frame), "_dw_label", (gpointer)tmp); 3817 g_object_set_data(G_OBJECT(frame), "_dw_label", (gpointer)tmp);
3795 if(_DWDefaultFont) 3818 if(_DWDefaultFont)
3796 dw_window_set_font(tmp, _DWDefaultFont); 3819 dw_window_set_font(tmp, _DWDefaultFont);
3797 DW_MUTEX_UNLOCK; 3820 DW_MUTEX_UNLOCK;
9331 * y: Y location from the bottom left. 9354 * y: Y location from the bottom left.
9332 */ 9355 */
9333 void dw_window_set_pos(HWND handle, long x, long y) 9356 void dw_window_set_pos(HWND handle, long x, long y)
9334 { 9357 {
9335 int _locked_by_me = FALSE; 9358 int _locked_by_me = FALSE;
9359 #ifdef DW_INCLUDE_DEPRECATED
9336 GtkWidget *mdi; 9360 GtkWidget *mdi;
9361 #endif
9337 9362
9338 if(!handle) 9363 if(!handle)
9339 return; 9364 return;
9340 9365
9341 DW_MUTEX_LOCK; 9366 DW_MUTEX_LOCK;
9367 #ifdef DW_INCLUDE_DEPRECATED
9342 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) 9368 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
9343 { 9369 {
9344 gtk_mdi_move(GTK_MDI(mdi), handle, x, y); 9370 gtk_mdi_move(GTK_MDI(mdi), handle, x, y);
9345 } 9371 }
9346 else 9372 else
9373 #endif
9347 { 9374 {
9348 GdkWindow *window = NULL; 9375 GdkWindow *window = NULL;
9349 9376
9350 if(GTK_IS_WINDOW(handle)) 9377 if(GTK_IS_WINDOW(handle))
9351 { 9378 {
9488 */ 9515 */
9489 void dw_window_get_pos_size(HWND handle, long *x, long *y, ULONG *width, ULONG *height) 9516 void dw_window_get_pos_size(HWND handle, long *x, long *y, ULONG *width, ULONG *height)
9490 { 9517 {
9491 int _locked_by_me = FALSE; 9518 int _locked_by_me = FALSE;
9492 gint gx = 0, gy = 0, gwidth = 0, gheight = 0; 9519 gint gx = 0, gy = 0, gwidth = 0, gheight = 0;
9520 #ifdef DW_INCLUDE_DEPRECATED
9493 GtkWidget *mdi; 9521 GtkWidget *mdi;
9494 9522 #endif
9495 DW_MUTEX_LOCK; 9523
9524 DW_MUTEX_LOCK;
9525 #ifdef DW_INCLUDE_DEPRECATED
9496 /* If it is an MDI window query what we can */ 9526 /* If it is an MDI window query what we can */
9497 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) 9527 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
9498 { 9528 {
9499 gtk_mdi_get_pos(GTK_MDI(mdi), handle, &gx, &gy); 9529 gtk_mdi_get_pos(GTK_MDI(mdi), handle, &gx, &gy);
9500 } 9530 }
9501 else 9531 else
9532 #endif
9502 { 9533 {
9503 GdkWindow *window; 9534 GdkWindow *window;
9504 9535
9505 /* Can only query if the window is realized */ 9536 /* Can only query if the window is realized */
9506 if(handle && (window = gtk_widget_get_window(handle))) 9537 if(handle && (window = gtk_widget_get_window(handle)))
9594 y = DW_CENTER; 9625 y = DW_CENTER;
9595 if ( style & DW_DT_TOP ) 9626 if ( style & DW_DT_TOP )
9596 y = DW_TOP; 9627 y = DW_TOP;
9597 if ( style & DW_DT_BOTTOM ) 9628 if ( style & DW_DT_BOTTOM )
9598 y = DW_BOTTOM; 9629 y = DW_BOTTOM;
9599 gtk_misc_set_alignment( GTK_MISC(handle2), x, y ); 9630 gtk_label_set_xalign(GTK_LABEL(handle2), x);
9631 gtk_label_set_yalign(GTK_LABEL(handle2), y);
9600 if ( style & DW_DT_WORDBREAK ) 9632 if ( style & DW_DT_WORDBREAK )
9601 gtk_label_set_line_wrap( GTK_LABEL(handle), TRUE ); 9633 gtk_label_set_line_wrap( GTK_LABEL(handle), TRUE );
9602 } 9634 }
9603 if ( GTK_IS_CHECK_MENU_ITEM(handle2) && (mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED)) ) 9635 if ( GTK_IS_CHECK_MENU_ITEM(handle2) && (mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED)) )
9604 { 9636 {